@impartner/design-components 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/esm2022/lib/badge/badge.component.mjs +17 -1
- package/esm2022/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.mjs +105 -0
- package/esm2022/lib/datetime-picker/components/datepicker-nav/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.mjs +30 -0
- package/esm2022/lib/datetime-picker/components/datepicker-template-host/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +370 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.mjs +367 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker-input/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.mjs +68 -0
- package/esm2022/lib/datetime-picker/components/datetime-picker-input-footer/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/components/index.mjs +6 -0
- package/esm2022/lib/datetime-picker/constants/datetime-picker-defaults.mjs +12 -0
- package/esm2022/lib/datetime-picker/constants/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/datetime-picker.module.mjs +22 -0
- package/esm2022/lib/datetime-picker/index.mjs +4 -0
- package/esm2022/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.mjs +40 -0
- package/esm2022/lib/datetime-picker/services/datetime-formatter/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/services/index.mjs +2 -0
- package/esm2022/lib/datetime-picker/types/datetime-picker-value.interface.mjs +2 -0
- package/esm2022/lib/datetime-picker/types/index.mjs +2 -0
- package/esm2022/lib/design-components.module.mjs +20 -7
- package/esm2022/lib/form-field/component/directives/corner-hint.directive.mjs +15 -0
- package/esm2022/lib/form-field/component/directives/error.directive.mjs +27 -0
- package/esm2022/lib/form-field/component/directives/form-root.directive.mjs +93 -0
- package/esm2022/lib/form-field/component/directives/hint.directive.mjs +25 -0
- package/esm2022/lib/form-field/component/directives/index.mjs +25 -0
- package/esm2022/lib/form-field/component/directives/label.directive.mjs +15 -0
- package/esm2022/lib/form-field/component/directives/prefix.directive.mjs +25 -0
- package/esm2022/lib/form-field/component/directives/suffix.directive.mjs +25 -0
- package/esm2022/lib/form-field/component/form-field.component.mjs +131 -0
- package/esm2022/lib/form-field/component/form-field.module.mjs +24 -0
- package/esm2022/lib/form-field/component/index.mjs +4 -0
- package/esm2022/lib/form-field/controls/checkbox/checkbox.component.mjs +14 -6
- package/esm2022/lib/form-field/controls/checkbox/checkbox.module.mjs +4 -7
- package/esm2022/lib/form-field/controls/index.mjs +2 -1
- package/esm2022/lib/form-field/controls/input/input.directive.mjs +4 -3
- package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +6 -4
- package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +4 -3
- package/esm2022/lib/form-field/controls/radio/radio.module.mjs +4 -7
- package/esm2022/lib/form-field/controls/select/index.mjs +6 -3
- package/esm2022/lib/form-field/controls/select/interfaces/index.mjs +2 -0
- package/esm2022/lib/form-field/controls/select/interfaces/select-option.interface.mjs +2 -0
- package/esm2022/lib/form-field/controls/select/option/index.mjs +2 -2
- package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +33 -128
- package/esm2022/lib/form-field/controls/select/option-display/index.mjs +2 -0
- package/esm2022/lib/form-field/controls/select/option-display/select-option-display.component.mjs +162 -0
- package/esm2022/lib/form-field/controls/select/option-group/index.mjs +2 -0
- package/esm2022/lib/form-field/controls/select/option-group/select-option-group.component.mjs +35 -0
- package/esm2022/lib/form-field/controls/select/option-parent.mjs +2 -1
- package/esm2022/lib/form-field/controls/select/select.component.mjs +348 -148
- package/esm2022/lib/form-field/controls/select/select.module.mjs +20 -13
- package/esm2022/lib/form-field/controls/select/value-tags-display/index.mjs +2 -0
- package/esm2022/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.mjs +91 -0
- package/esm2022/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +3 -3
- package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +19 -3
- package/esm2022/lib/form-field/controls/shared/toggle/toggle.module.mjs +4 -6
- package/esm2022/lib/form-field/controls/tag-select/index.mjs +2 -0
- package/esm2022/lib/form-field/controls/tag-select/tag-select.component.mjs +146 -0
- package/esm2022/lib/form-field/impdc-forms.mjs +2 -3
- package/esm2022/lib/form-field/impdc-forms.module.mjs +32 -47
- package/esm2022/lib/form-field/shared/error-state.mixin.mjs +1 -1
- package/esm2022/lib/icon/icon.component.mjs +12 -5
- package/esm2022/lib/index.mjs +3 -1
- package/esm2022/lib/pagination/pagination.component.mjs +6 -6
- package/esm2022/lib/select-icon/select-icon.component.mjs +6 -6
- package/esm2022/lib/select-icon/select-icon.module.mjs +5 -1
- package/esm2022/lib/table/containers/table.component.mjs +3 -3
- package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +1 -1
- package/esm2022/lib/tag/index.mjs +2 -0
- package/esm2022/lib/tag/tag.component.mjs +104 -0
- package/esm2022/lib/text-highlight/text-highlight.component.mjs +52 -37
- package/esm2022/lib/text-highlight/text-highlight.module.mjs +4 -6
- package/fesm2022/impartner-design-components.mjs +5620 -3983
- package/fesm2022/impartner-design-components.mjs.map +1 -1
- package/lib/badge/badge.component.d.ts +15 -1
- package/lib/datetime-picker/components/datepicker-nav/datepicker-nav.component.d.ts +31 -0
- package/lib/datetime-picker/components/datepicker-nav/index.d.ts +1 -0
- package/lib/datetime-picker/components/datepicker-template-host/datepicker-template-host.component.d.ts +14 -0
- package/lib/datetime-picker/components/datepicker-template-host/index.d.ts +1 -0
- package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +157 -0
- package/lib/datetime-picker/components/datetime-picker/index.d.ts +1 -0
- package/lib/datetime-picker/components/datetime-picker-input/datetime-picker-input.component.d.ts +160 -0
- package/lib/datetime-picker/components/datetime-picker-input/index.d.ts +1 -0
- package/lib/datetime-picker/components/datetime-picker-input-footer/datetime-picker-input-footer.component.d.ts +24 -0
- package/lib/datetime-picker/components/datetime-picker-input-footer/index.d.ts +1 -0
- package/lib/datetime-picker/components/index.d.ts +5 -0
- package/lib/datetime-picker/constants/datetime-picker-defaults.d.ts +4 -0
- package/lib/datetime-picker/constants/index.d.ts +1 -0
- package/lib/datetime-picker/datetime-picker.module.d.ts +8 -0
- package/lib/datetime-picker/index.d.ts +4 -0
- package/lib/datetime-picker/services/datetime-formatter/datetime-formatter.service.d.ts +20 -0
- package/lib/datetime-picker/services/datetime-formatter/index.d.ts +1 -0
- package/lib/datetime-picker/services/index.d.ts +1 -0
- package/lib/datetime-picker/types/datetime-picker-value.interface.d.ts +5 -0
- package/lib/datetime-picker/types/index.d.ts +1 -0
- package/lib/design-components.module.d.ts +14 -12
- package/lib/form-field/{directives → component/directives}/corner-hint.directive.d.ts +1 -1
- package/lib/form-field/{directives → component/directives}/error.directive.d.ts +1 -1
- package/lib/form-field/{directives → component/directives}/form-root.directive.d.ts +2 -2
- package/lib/form-field/{directives → component/directives}/hint.directive.d.ts +1 -1
- package/lib/form-field/component/directives/index.d.ts +15 -0
- package/lib/form-field/{directives → component/directives}/label.directive.d.ts +1 -1
- package/lib/form-field/{directives → component/directives}/prefix.directive.d.ts +1 -1
- package/lib/form-field/{directives → component/directives}/suffix.directive.d.ts +1 -1
- package/lib/form-field/{form-field.component.d.ts → component/form-field.component.d.ts} +3 -5
- package/lib/form-field/component/form-field.module.d.ts +14 -0
- package/lib/form-field/component/index.d.ts +3 -0
- package/lib/form-field/controls/checkbox/checkbox.component.d.ts +6 -2
- package/lib/form-field/controls/checkbox/checkbox.module.d.ts +1 -3
- package/lib/form-field/controls/index.d.ts +1 -0
- package/lib/form-field/controls/input/input.directive.d.ts +2 -2
- package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
- package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +2 -2
- package/lib/form-field/controls/radio/radio.module.d.ts +1 -3
- package/lib/form-field/controls/select/index.d.ts +6 -2
- package/lib/form-field/controls/select/interfaces/index.d.ts +1 -0
- package/lib/form-field/controls/select/interfaces/select-option.interface.d.ts +6 -0
- package/lib/form-field/controls/select/option/index.d.ts +1 -1
- package/lib/form-field/controls/select/option/select-option.component.d.ts +10 -49
- package/lib/form-field/controls/select/option-display/index.d.ts +1 -0
- package/lib/form-field/controls/select/option-display/select-option-display.component.d.ts +64 -0
- package/lib/form-field/controls/select/option-group/index.d.ts +1 -0
- package/lib/form-field/controls/select/option-group/select-option-group.component.d.ts +11 -0
- package/lib/form-field/controls/select/option-parent.d.ts +12 -1
- package/lib/form-field/controls/select/select.component.d.ts +113 -51
- package/lib/form-field/controls/select/select.module.d.ts +5 -6
- package/lib/form-field/controls/select/value-tags-display/index.d.ts +1 -0
- package/lib/form-field/controls/select/value-tags-display/select-value-tags-display.component.d.ts +46 -0
- package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
- package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +4 -1
- package/lib/form-field/controls/shared/toggle/toggle.module.d.ts +1 -2
- package/lib/form-field/controls/tag-select/index.d.ts +1 -0
- package/lib/form-field/controls/tag-select/tag-select.component.d.ts +43 -0
- package/lib/form-field/impdc-forms.d.ts +1 -2
- package/lib/form-field/impdc-forms.module.d.ts +8 -14
- package/lib/form-field/shared/error-state.mixin.d.ts +4 -4
- package/lib/icon/icon.component.d.ts +5 -3
- package/lib/index.d.ts +2 -0
- package/lib/select-icon/select-icon.module.d.ts +4 -3
- package/lib/table/interfaces/table-row-action.interface.d.ts +1 -1
- package/lib/tag/index.d.ts +1 -0
- package/lib/tag/tag.component.d.ts +54 -0
- package/lib/text-highlight/text-highlight.component.d.ts +12 -6
- package/lib/text-highlight/text-highlight.module.d.ts +1 -2
- package/package.json +2 -2
- package/esm2022/lib/form-field/directives/corner-hint.directive.mjs +0 -14
- package/esm2022/lib/form-field/directives/error.directive.mjs +0 -26
- package/esm2022/lib/form-field/directives/form-root.directive.mjs +0 -91
- package/esm2022/lib/form-field/directives/hint.directive.mjs +0 -24
- package/esm2022/lib/form-field/directives/index.mjs +0 -8
- package/esm2022/lib/form-field/directives/label.directive.mjs +0 -14
- package/esm2022/lib/form-field/directives/prefix.directive.mjs +0 -24
- package/esm2022/lib/form-field/directives/suffix.directive.mjs +0 -24
- package/esm2022/lib/form-field/form-field.component.mjs +0 -132
- package/lib/form-field/directives/index.d.ts +0 -7
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, InjectionToken, ViewChild } from '@angular/core';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { merge, Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import { IMPDC_ERROR, IMPDC_PREFIX, IMPDC_SUFFIX } from './directives';
|
|
5
|
+
import { getImpdcFormFieldMissingControlError } from '../form-field-errors';
|
|
6
|
+
import { ImpdcFormFieldControl } from '../shared/form-field-control';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
export const IMPDC_FORM_FIELD = new InjectionToken('FormFieldComponent');
|
|
11
|
+
export class FormFieldComponent {
|
|
12
|
+
get _control() {
|
|
13
|
+
return this._explicitFormFieldControl || this._formFieldControl;
|
|
14
|
+
}
|
|
15
|
+
set _control(value) {
|
|
16
|
+
this._explicitFormFieldControl = value;
|
|
17
|
+
}
|
|
18
|
+
constructor(_elementRef, _changeDetectorRef) {
|
|
19
|
+
this._elementRef = _elementRef;
|
|
20
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
21
|
+
this._destroyedSubject = new Subject();
|
|
22
|
+
this._hasTextPrefix = false;
|
|
23
|
+
this._hasTextSuffix = false;
|
|
24
|
+
this._isFocused = null;
|
|
25
|
+
this._labelId = `impdc-form-field-label-${nanoid()}`;
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
this._updateFocusState();
|
|
29
|
+
this._changeDetectorRef.detectChanges();
|
|
30
|
+
}
|
|
31
|
+
ngAfterContentInit() {
|
|
32
|
+
this._assertFormFieldControl();
|
|
33
|
+
this._initializeControl();
|
|
34
|
+
this._initializePrefixAndSuffix();
|
|
35
|
+
}
|
|
36
|
+
ngAfterContentChecked() {
|
|
37
|
+
this._assertFormFieldControl();
|
|
38
|
+
}
|
|
39
|
+
_showErrors() {
|
|
40
|
+
return !!(this._errorChildren &&
|
|
41
|
+
this._errorChildren.length > 0 &&
|
|
42
|
+
this._control.errorState);
|
|
43
|
+
}
|
|
44
|
+
_shouldForwardControlState(prop) {
|
|
45
|
+
const ngControl = this._control ? this._control.ngControl : null;
|
|
46
|
+
return ngControl && ngControl[prop];
|
|
47
|
+
}
|
|
48
|
+
_initializeControl() {
|
|
49
|
+
const control = this._control;
|
|
50
|
+
if (control.controlType) {
|
|
51
|
+
this._elementRef.nativeElement.classList.add(`impdc-form-field-type-${control.controlType}`);
|
|
52
|
+
}
|
|
53
|
+
control.stateChanges
|
|
54
|
+
.pipe(takeUntil(this._destroyedSubject))
|
|
55
|
+
.subscribe(() => {
|
|
56
|
+
this._updateFocusState();
|
|
57
|
+
this._changeDetectorRef.markForCheck();
|
|
58
|
+
});
|
|
59
|
+
if (control.ngControl && control.ngControl.valueChanges) {
|
|
60
|
+
control.ngControl.valueChanges
|
|
61
|
+
.pipe(takeUntil(this._destroyedSubject))
|
|
62
|
+
.subscribe(() => {
|
|
63
|
+
this._changeDetectorRef.markForCheck();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
_assertFormFieldControl() {
|
|
68
|
+
if (!this._control) {
|
|
69
|
+
throw getImpdcFormFieldMissingControlError();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_updateFocusState() {
|
|
73
|
+
if (this._control.focused && !this._isFocused) {
|
|
74
|
+
this._isFocused = true;
|
|
75
|
+
}
|
|
76
|
+
else if (!this._control.focused &&
|
|
77
|
+
(this._isFocused || this._isFocused === null)) {
|
|
78
|
+
this._isFocused = false;
|
|
79
|
+
}
|
|
80
|
+
this._inputArea.nativeElement.classList.toggle('impdc-form-field-control--focused', this._control.focused);
|
|
81
|
+
}
|
|
82
|
+
_checkPrefixAndSuffixTypes() {
|
|
83
|
+
this._hasTextPrefix = !!this._prefixChildren.find(p => p.isText);
|
|
84
|
+
this._hasTextSuffix = !!this._suffixChildren.find(s => s.isText);
|
|
85
|
+
}
|
|
86
|
+
/** Initializes the prefix and suffix containers. */
|
|
87
|
+
_initializePrefixAndSuffix() {
|
|
88
|
+
this._checkPrefixAndSuffixTypes();
|
|
89
|
+
// Mark the form field as dirty whenever the prefix or suffix children change. This
|
|
90
|
+
// is necessary because we conditionally display the prefix/suffix containers based
|
|
91
|
+
// on whether there is projected content.
|
|
92
|
+
merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {
|
|
93
|
+
this._checkPrefixAndSuffixTypes();
|
|
94
|
+
this._changeDetectorRef.markForCheck();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: FormFieldComponent, isStandalone: true, selector: "impdc-form-field", host: { properties: { "class.impdc-form-field-focused": "_control.focused", "class.impdc-form-field-invalid": "_control.errorState", "class.impdc-form-field-disabled": "_control.disabled", "class.ng-untouched": "_shouldForwardControlState(\"untouched\")", "class.ng-touched": "_shouldForwardControlState(\"touched\")", "class.ng-pristine": "_shouldForwardControlState(\"pristine\")", "class.ng-dirty": "_shouldForwardControlState(\"dirty\")", "class.ng-valid": "_shouldForwardControlState(\"valid\")", "class.ng-invalid": "_shouldForwardControlState(\"invalid\")", "class.ng-pending": "_shouldForwardControlState(\"pending\")" }, classAttribute: "impdc-form-field" }, providers: [{ provide: IMPDC_FORM_FIELD, useExisting: FormFieldComponent }], queries: [{ propertyName: "_formFieldControl", first: true, predicate: ImpdcFormFieldControl, descendants: true }, { propertyName: "_prefixChildren", predicate: IMPDC_PREFIX, descendants: true }, { propertyName: "_suffixChildren", predicate: IMPDC_SUFFIX, descendants: true }, { propertyName: "_errorChildren", predicate: IMPDC_ERROR, descendants: true }], viewQueries: [{ propertyName: "_inputArea", first: true, predicate: ["inputArea"], descendants: true }], exportAs: ["impdcFormField"], ngImport: i0, template: "<ng-template #labelTemplate>\n <label\n class=\"form-label\"\n [id]=\"_labelId\"\n [attr.for]=\"_formFieldControl.id\"\n [attr.aria-owns]=\"_formFieldControl.id\">\n <ng-content select=\"impdc-label\"></ng-content>\n </label>\n</ng-template>\n\n<ng-template #cornerHintTemplate>\n <div class=\"flex-shrink-1 text-gray-400 fw-medium text-end\">\n <ng-content select=\"impdc-corner-hint\"></ng-content>\n </div>\n</ng-template>\n\n<div class=\"d-flex justify-content-between gap-4\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"cornerHintTemplate\"></ng-template>\n</div>\n\n<div\n #inputArea\n class=\"impdc-form-field-wrapper\"\n [class.input-group]=\"_control.supportsAffixes\"\n [class.impdc-form-field--text]=\"_control.supportsAffixes\"\n [class.impdc-form-field--focused]=\"_control.focused\"\n [class.impdc-form-field--disabled]=\"_control.disabled\"\n [class.impdc-form-field--invalid]=\"_control.errorState\"\n [class.impdc-form-field--text--has-text-prefix]=\"_hasTextPrefix\"\n [class.impdc-form-field--text--has-text-suffix]=\"_hasTextSuffix\">\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcPrefix]\"></ng-content>\n <ng-content select=\"[impdcTextPrefix]\"></ng-content>\n </ng-container>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcTextSuffix]\"></ng-content>\n <ng-content select=\"[impdcSuffix]\"></ng-content>\n </ng-container>\n</div>\n\n<div\n class=\"impdc-form-field-feedback\"\n [class.impdc-form-field-feedback--disabled]=\"false\">\n <div class=\"impdc-form-field-hint-wrapper\">\n <ng-content select=\"impdc-hint\"></ng-content>\n </div>\n <div *ngIf=\"_showErrors()\" class=\"impdc-form-field-error-wrapper\">\n <ng-content select=\"impdc-error, [impdc-error]\"></ng-content>\n </div>\n</div>\n", styles: [":host{font-size:var(--impd-font-size-sm, 1.4rem)}.impdc-form-field-wrapper{--impdc-form-field-focus-color: var(--impd-color-motion-blue-500)}.impdc-form-field-wrapper.impdc-form-field--disabled{--impartner-hex-input-opacity: .5;--impartner-hex-input-group-bg: var(--impd-color-gray-100)}.impdc-form-field-wrapper.impdc-form-field--text{background-color:var(--impartner-hex-input-group-bg, var(--impd-color-white));border:1px solid var(--impartner-hex-gray-400);border-radius:var(--impd-border-radius-md);overflow-x:hidden}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--focused{border-color:var(--impdc-form-field-focus-color)}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--invalid{--impdc-form-field-focus-color: var(--impd-color-red-600);border-color:var(--impd-color-red-600)}.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input::-webkit-outer-spin-button,.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input[type=number]{-moz-appearance:textfield}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control{border-radius:0;border-top:none;border-bottom:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:first-child{border-left:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:last-child{border-right:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:focus{box-shadow:none}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep [impdcTextSuffix],.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep [impdcTextPrefix]{opacity:var(--impartner-hex-input-opacity, 1);color:var(--impd-color-gray-500);display:flex;align-items:center;padding:.8rem .2rem;font-size:1.4rem;text-align:center;white-space:nowrap}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep [impdcTextPrefix]{padding-left:1.2rem}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep .impdc-form-field-control{border-left:none}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep [impdcTextSuffix]{padding-right:1.2rem}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep .impdc-form-field-control{border-right:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text.inset{background-color:unset;padding-left:8px;padding-right:8px;border:none}.impdc-form-field-feedback{font-size:1.4rem;margin-top:.4rem}.impdc-form-field--disabled+.impdc-form-field-feedback{opacity:.5}.impdc-form-field-feedback .impdc-form-field-error-wrapper{color:var(--impd-color-red-600)}.impdc-form-field-feedback .impdc-form-field-hint-wrapper{color:var(--impd-color-gray-500)}.impdc-form-field-feedback .impdc-form-field-error-wrapper ::ng-deep>*,.impdc-form-field-feedback .impdc-form-field-hint-wrapper ::ng-deep>*{display:block}.impdc-form-field-feedback .impdc-form-field-error-wrapper ::ng-deep>*+*,.impdc-form-field-feedback .impdc-form-field-hint-wrapper ::ng-deep>*+*{margin-top:.4rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'impdc-form-field', exportAs: 'impdcFormField', standalone: true, imports: [CommonModule], host: {
|
|
103
|
+
class: 'impdc-form-field',
|
|
104
|
+
'[class.impdc-form-field-focused]': '_control.focused',
|
|
105
|
+
'[class.impdc-form-field-invalid]': '_control.errorState',
|
|
106
|
+
'[class.impdc-form-field-disabled]': '_control.disabled',
|
|
107
|
+
'[class.ng-untouched]': '_shouldForwardControlState("untouched")',
|
|
108
|
+
'[class.ng-touched]': '_shouldForwardControlState("touched")',
|
|
109
|
+
'[class.ng-pristine]': '_shouldForwardControlState("pristine")',
|
|
110
|
+
'[class.ng-dirty]': '_shouldForwardControlState("dirty")',
|
|
111
|
+
'[class.ng-valid]': '_shouldForwardControlState("valid")',
|
|
112
|
+
'[class.ng-invalid]': '_shouldForwardControlState("invalid")',
|
|
113
|
+
'[class.ng-pending]': '_shouldForwardControlState("pending")'
|
|
114
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: IMPDC_FORM_FIELD, useExisting: FormFieldComponent }], template: "<ng-template #labelTemplate>\n <label\n class=\"form-label\"\n [id]=\"_labelId\"\n [attr.for]=\"_formFieldControl.id\"\n [attr.aria-owns]=\"_formFieldControl.id\">\n <ng-content select=\"impdc-label\"></ng-content>\n </label>\n</ng-template>\n\n<ng-template #cornerHintTemplate>\n <div class=\"flex-shrink-1 text-gray-400 fw-medium text-end\">\n <ng-content select=\"impdc-corner-hint\"></ng-content>\n </div>\n</ng-template>\n\n<div class=\"d-flex justify-content-between gap-4\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"cornerHintTemplate\"></ng-template>\n</div>\n\n<div\n #inputArea\n class=\"impdc-form-field-wrapper\"\n [class.input-group]=\"_control.supportsAffixes\"\n [class.impdc-form-field--text]=\"_control.supportsAffixes\"\n [class.impdc-form-field--focused]=\"_control.focused\"\n [class.impdc-form-field--disabled]=\"_control.disabled\"\n [class.impdc-form-field--invalid]=\"_control.errorState\"\n [class.impdc-form-field--text--has-text-prefix]=\"_hasTextPrefix\"\n [class.impdc-form-field--text--has-text-suffix]=\"_hasTextSuffix\">\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcPrefix]\"></ng-content>\n <ng-content select=\"[impdcTextPrefix]\"></ng-content>\n </ng-container>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"_control.supportsAffixes\">\n <ng-content select=\"[impdcTextSuffix]\"></ng-content>\n <ng-content select=\"[impdcSuffix]\"></ng-content>\n </ng-container>\n</div>\n\n<div\n class=\"impdc-form-field-feedback\"\n [class.impdc-form-field-feedback--disabled]=\"false\">\n <div class=\"impdc-form-field-hint-wrapper\">\n <ng-content select=\"impdc-hint\"></ng-content>\n </div>\n <div *ngIf=\"_showErrors()\" class=\"impdc-form-field-error-wrapper\">\n <ng-content select=\"impdc-error, [impdc-error]\"></ng-content>\n </div>\n</div>\n", styles: [":host{font-size:var(--impd-font-size-sm, 1.4rem)}.impdc-form-field-wrapper{--impdc-form-field-focus-color: var(--impd-color-motion-blue-500)}.impdc-form-field-wrapper.impdc-form-field--disabled{--impartner-hex-input-opacity: .5;--impartner-hex-input-group-bg: var(--impd-color-gray-100)}.impdc-form-field-wrapper.impdc-form-field--text{background-color:var(--impartner-hex-input-group-bg, var(--impd-color-white));border:1px solid var(--impartner-hex-gray-400);border-radius:var(--impd-border-radius-md);overflow-x:hidden}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--focused{border-color:var(--impdc-form-field-focus-color)}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--invalid{--impdc-form-field-focus-color: var(--impd-color-red-600);border-color:var(--impd-color-red-600)}.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input::-webkit-outer-spin-button,.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.impdc-form-field-wrapper.impdc-form-field--text ::ng-deep>input[type=number]{-moz-appearance:textfield}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control{border-radius:0;border-top:none;border-bottom:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:first-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:first-child{border-left:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:last-child,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:last-child{border-right:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-control:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .form-select:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .btn:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text:focus,.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .impdc-form-field-control:focus{box-shadow:none}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep [impdcTextSuffix],.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep [impdcTextPrefix]{opacity:var(--impartner-hex-input-opacity, 1);color:var(--impd-color-gray-500);display:flex;align-items:center;padding:.8rem .2rem;font-size:1.4rem;text-align:center;white-space:nowrap}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep [impdcTextPrefix]{padding-left:1.2rem}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-prefix>::ng-deep .impdc-form-field-control{border-left:none}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep [impdcTextSuffix]{padding-right:1.2rem}.impdc-form-field-wrapper.impdc-form-field--text.impdc-form-field--text--has-text-suffix>::ng-deep .impdc-form-field-control{border-right:none}.impdc-form-field-wrapper.impdc-form-field--text>::ng-deep .input-group-text.inset{background-color:unset;padding-left:8px;padding-right:8px;border:none}.impdc-form-field-feedback{font-size:1.4rem;margin-top:.4rem}.impdc-form-field--disabled+.impdc-form-field-feedback{opacity:.5}.impdc-form-field-feedback .impdc-form-field-error-wrapper{color:var(--impd-color-red-600)}.impdc-form-field-feedback .impdc-form-field-hint-wrapper{color:var(--impd-color-gray-500)}.impdc-form-field-feedback .impdc-form-field-error-wrapper ::ng-deep>*,.impdc-form-field-feedback .impdc-form-field-hint-wrapper ::ng-deep>*{display:block}.impdc-form-field-feedback .impdc-form-field-error-wrapper ::ng-deep>*+*,.impdc-form-field-feedback .impdc-form-field-hint-wrapper ::ng-deep>*+*{margin-top:.4rem}\n"] }]
|
|
115
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { _inputArea: [{
|
|
116
|
+
type: ViewChild,
|
|
117
|
+
args: ['inputArea']
|
|
118
|
+
}], _formFieldControl: [{
|
|
119
|
+
type: ContentChild,
|
|
120
|
+
args: [ImpdcFormFieldControl]
|
|
121
|
+
}], _prefixChildren: [{
|
|
122
|
+
type: ContentChildren,
|
|
123
|
+
args: [IMPDC_PREFIX, { descendants: true }]
|
|
124
|
+
}], _suffixChildren: [{
|
|
125
|
+
type: ContentChildren,
|
|
126
|
+
args: [IMPDC_SUFFIX, { descendants: true }]
|
|
127
|
+
}], _errorChildren: [{
|
|
128
|
+
type: ContentChildren,
|
|
129
|
+
args: [IMPDC_ERROR, { descendants: true }]
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29tcG9uZW50L2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbXBvbmVudC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsY0FBYyxFQUVkLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFFWixZQUFZLEVBRWIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFL0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQ2hELG9CQUFvQixDQUNyQixDQUFDO0FBMEJGLE1BQU0sT0FBTyxrQkFBa0I7SUF3QjdCLElBQWMsUUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQWMsUUFBUSxDQUFDLEtBQUs7UUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFDbUIsV0FBdUIsRUFDdkIsa0JBQXFDO1FBRHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFqQnZDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFtQixJQUFJLENBQUM7UUFHdkIsYUFBUSxHQUFHLDBCQUEwQixNQUFNLEVBQUUsRUFBRSxDQUFDO0lBWWhFLENBQUM7SUFFRyxlQUFlO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJLENBQUMsY0FBYztZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVTLDBCQUEwQixDQUNsQyxJQUFvQztRQUVwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRWpFLE9BQU8sU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFOUIsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQzFDLHlCQUF5QixPQUFPLENBQUMsV0FBVyxFQUFFLENBQy9DLENBQUM7U0FDSDtRQUVELE9BQU8sQ0FBQyxZQUFZO2FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDdkMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtZQUN2RCxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVk7aUJBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7aUJBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sb0NBQW9DLEVBQUUsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7YUFBTSxJQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQ3RCLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxFQUM3QztZQUNBLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDNUMsbUNBQW1DLEVBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsb0RBQW9EO0lBQzVDLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxtRkFBbUY7UUFDbkYsbUZBQW1GO1FBQ25GLHlDQUF5QztRQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3pFLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBbklVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJ0QkFGbEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyx5RUFRN0QscUJBQXFCLHFFQUdsQixZQUFZLHFFQUVaLFlBQVksb0VBRVosV0FBVyx1TEN0RTlCLDA1REFzREEsK2tKRGpCWSxZQUFZOzsyRkFvQlgsa0JBQWtCO2tCQXhCOUIsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEIsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFFBSWpCO3dCQUNKLEtBQUssRUFBRSxrQkFBa0I7d0JBQ3pCLGtDQUFrQyxFQUFFLGtCQUFrQjt3QkFDdEQsa0NBQWtDLEVBQUUscUJBQXFCO3dCQUN6RCxtQ0FBbUMsRUFBRSxtQkFBbUI7d0JBQ3hELHNCQUFzQixFQUFFLHlDQUF5Qzt3QkFDakUsb0JBQW9CLEVBQUUsdUNBQXVDO3dCQUM3RCxxQkFBcUIsRUFBRSx3Q0FBd0M7d0JBQy9ELGtCQUFrQixFQUFFLHFDQUFxQzt3QkFDekQsa0JBQWtCLEVBQUUscUNBQXFDO3dCQUN6RCxvQkFBb0IsRUFBRSx1Q0FBdUM7d0JBQzdELG9CQUFvQixFQUFFLHVDQUF1QztxQkFDOUQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLG9CQUFvQixFQUFFLENBQUM7K0dBTWpFLFVBQVU7c0JBRG5CLFNBQVM7dUJBQUMsV0FBVztnQkFJWixpQkFBaUI7c0JBRDFCLFlBQVk7dUJBQUMscUJBQXFCO2dCQUl6QixlQUFlO3NCQUR4QixlQUFlO3VCQUFDLFlBQVksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRzFDLGVBQWU7c0JBRHhCLGVBQWU7dUJBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFHMUMsY0FBYztzQkFEdkIsZUFBZTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRXJyb3JEaXJlY3RpdmUsXG4gIElNUERDX0VSUk9SLFxuICBJTVBEQ19QUkVGSVgsXG4gIFByZWZpeERpcmVjdGl2ZSxcbiAgSU1QRENfU1VGRklYLFxuICBTdWZmaXhEaXJlY3RpdmVcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IGdldEltcGRjRm9ybUZpZWxkTWlzc2luZ0NvbnRyb2xFcnJvciB9IGZyb20gJy4uL2Zvcm0tZmllbGQtZXJyb3JzJztcbmltcG9ydCB7IEltcGRjRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJy4uL3NoYXJlZC9mb3JtLWZpZWxkLWNvbnRyb2wnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IElNUERDX0ZPUk1fRklFTEQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9ybUZpZWxkQ29tcG9uZW50PihcbiAgJ0Zvcm1GaWVsZENvbXBvbmVudCdcbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLWZvcm0tZmllbGQnLFxuICBleHBvcnRBczogJ2ltcGRjRm9ybUZpZWxkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaW1wZGMtZm9ybS1maWVsZCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLWZvY3VzZWRdJzogJ19jb250cm9sLmZvY3VzZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1pbnZhbGlkXSc6ICdfY29udHJvbC5lcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtZGlzYWJsZWRdJzogJ19jb250cm9sLmRpc2FibGVkJyxcbiAgICAnW2NsYXNzLm5nLXVudG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmRDb250cm9sU3RhdGUoXCJ1bnRvdWNoZWRcIiknLFxuICAgICdbY2xhc3MubmctdG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmRDb250cm9sU3RhdGUoXCJ0b3VjaGVkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXByaXN0aW5lXSc6ICdfc2hvdWxkRm9yd2FyZENvbnRyb2xTdGF0ZShcInByaXN0aW5lXCIpJyxcbiAgICAnW2NsYXNzLm5nLWRpcnR5XSc6ICdfc2hvdWxkRm9yd2FyZENvbnRyb2xTdGF0ZShcImRpcnR5XCIpJyxcbiAgICAnW2NsYXNzLm5nLXZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZENvbnRyb2xTdGF0ZShcInZhbGlkXCIpJyxcbiAgICAnW2NsYXNzLm5nLWludmFsaWRdJzogJ19zaG91bGRGb3J3YXJkQ29udHJvbFN0YXRlKFwiaW52YWxpZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1wZW5kaW5nXSc6ICdfc2hvdWxkRm9yd2FyZENvbnRyb2xTdGF0ZShcInBlbmRpbmdcIiknXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElNUERDX0ZPUk1fRklFTEQsIHVzZUV4aXN0aW5nOiBGb3JtRmllbGRDb21wb25lbnQgfV1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZFxue1xuICBAVmlld0NoaWxkKCdpbnB1dEFyZWEnKVxuICBwcm90ZWN0ZWQgX2lucHV0QXJlYSE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoSW1wZGNGb3JtRmllbGRDb250cm9sKVxuICBwcm90ZWN0ZWQgX2Zvcm1GaWVsZENvbnRyb2whOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8dW5rbm93bj47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJTVBEQ19QUkVGSVgsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIF9wcmVmaXhDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxQcmVmaXhEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKElNUERDX1NVRkZJWCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgX3N1ZmZpeENoaWxkcmVuITogUXVlcnlMaXN0PFN1ZmZpeERpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oSU1QRENfRVJST1IsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIF9lcnJvckNoaWxkcmVuPzogUXVlcnlMaXN0PEVycm9yRGlyZWN0aXZlPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIF9oYXNUZXh0UHJlZml4ID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfaGFzVGV4dFN1ZmZpeCA9IGZhbHNlO1xuICBwcml2YXRlIF9pc0ZvY3VzZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZXhwbGljaXRGb3JtRmllbGRDb250cm9sOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9sYWJlbElkID0gYGltcGRjLWZvcm0tZmllbGQtbGFiZWwtJHtuYW5vaWQoKX1gO1xuXG4gIHByb3RlY3RlZCBnZXQgX2NvbnRyb2woKTogSW1wZGNGb3JtRmllbGRDb250cm9sPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sIHx8IHRoaXMuX2Zvcm1GaWVsZENvbnRyb2w7XG4gIH1cbiAgcHJvdGVjdGVkIHNldCBfY29udHJvbCh2YWx1ZSkge1xuICAgIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlRm9jdXNTdGF0ZSgpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0Rm9ybUZpZWxkQ29udHJvbCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemVDb250cm9sKCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3Nob3dFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5fZXJyb3JDaGlsZHJlbiAmJlxuICAgICAgdGhpcy5fZXJyb3JDaGlsZHJlbi5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLl9jb250cm9sLmVycm9yU3RhdGVcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zaG91bGRGb3J3YXJkQ29udHJvbFN0YXRlKFxuICAgIHByb3A6IGtleW9mIEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZVxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLl9jb250cm9sID8gdGhpcy5fY29udHJvbC5uZ0NvbnRyb2wgOiBudWxsO1xuXG4gICAgcmV0dXJuIG5nQ29udHJvbCAmJiBuZ0NvbnRyb2xbcHJvcF07XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplQ29udHJvbCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcbiAgICAgICAgYGltcGRjLWZvcm0tZmllbGQtdHlwZS0ke2NvbnRyb2wuY29udHJvbFR5cGV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb250cm9sLnN0YXRlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZFN1YmplY3QpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGlmIChjb250cm9sLm5nQ29udHJvbCAmJiBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXMpIHtcbiAgICAgIGNvbnRyb2wubmdDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkU3ViamVjdCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udHJvbCkge1xuICAgICAgdGhyb3cgZ2V0SW1wZGNGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRm9jdXNTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udHJvbC5mb2N1c2VkICYmICF0aGlzLl9pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX2lzRm9jdXNlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLl9jb250cm9sLmZvY3VzZWQgJiZcbiAgICAgICh0aGlzLl9pc0ZvY3VzZWQgfHwgdGhpcy5faXNGb2N1c2VkID09PSBudWxsKVxuICAgICkge1xuICAgICAgdGhpcy5faXNGb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRBcmVhLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShcbiAgICAgICdpbXBkYy1mb3JtLWZpZWxkLWNvbnRyb2wtLWZvY3VzZWQnLFxuICAgICAgdGhpcy5fY29udHJvbC5mb2N1c2VkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKSB7XG4gICAgdGhpcy5faGFzVGV4dFByZWZpeCA9ICEhdGhpcy5fcHJlZml4Q2hpbGRyZW4uZmluZChwID0+IHAuaXNUZXh0KTtcbiAgICB0aGlzLl9oYXNUZXh0U3VmZml4ID0gISF0aGlzLl9zdWZmaXhDaGlsZHJlbi5maW5kKHMgPT4gcy5pc1RleHQpO1xuICB9XG5cbiAgLyoqIEluaXRpYWxpemVzIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBjb250YWluZXJzLiAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplUHJlZml4QW5kU3VmZml4KCkge1xuICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAvLyBNYXJrIHRoZSBmb3JtIGZpZWxkIGFzIGRpcnR5IHdoZW5ldmVyIHRoZSBwcmVmaXggb3Igc3VmZml4IGNoaWxkcmVuIGNoYW5nZS4gVGhpc1xuICAgIC8vIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGNvbmRpdGlvbmFsbHkgZGlzcGxheSB0aGUgcHJlZml4L3N1ZmZpeCBjb250YWluZXJzIGJhc2VkXG4gICAgLy8gb24gd2hldGhlciB0aGVyZSBpcyBwcm9qZWN0ZWQgY29udGVudC5cbiAgICBtZXJnZSh0aGlzLl9wcmVmaXhDaGlsZHJlbi5jaGFuZ2VzLCB0aGlzLl9zdWZmaXhDaGlsZHJlbi5jaGFuZ2VzKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICA8bGFiZWxcbiAgICBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgIFtpZF09XCJfbGFiZWxJZFwiXG4gICAgW2F0dHIuZm9yXT1cIl9mb3JtRmllbGRDb250cm9sLmlkXCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwiX2Zvcm1GaWVsZENvbnRyb2wuaWRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbXBkYy1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgPC9sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29ybmVySGludFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMSB0ZXh0LWdyYXktNDAwIGZ3LW1lZGl1bSB0ZXh0LWVuZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImltcGRjLWNvcm5lci1oaW50XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTRcIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29ybmVySGludFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48ZGl2XG4gICNpbnB1dEFyZWFcbiAgY2xhc3M9XCJpbXBkYy1mb3JtLWZpZWxkLXdyYXBwZXJcIlxuICBbY2xhc3MuaW5wdXQtZ3JvdXBdPVwiX2NvbnRyb2wuc3VwcG9ydHNBZmZpeGVzXCJcbiAgW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtLXRleHRdPVwiX2NvbnRyb2wuc3VwcG9ydHNBZmZpeGVzXCJcbiAgW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtLWZvY3VzZWRdPVwiX2NvbnRyb2wuZm9jdXNlZFwiXG4gIFtjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLS1kaXNhYmxlZF09XCJfY29udHJvbC5kaXNhYmxlZFwiXG4gIFtjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLS1pbnZhbGlkXT1cIl9jb250cm9sLmVycm9yU3RhdGVcIlxuICBbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC0tdGV4dC0taGFzLXRleHQtcHJlZml4XT1cIl9oYXNUZXh0UHJlZml4XCJcbiAgW2NsYXNzLmltcGRjLWZvcm0tZmllbGQtLXRleHQtLWhhcy10ZXh0LXN1ZmZpeF09XCJfaGFzVGV4dFN1ZmZpeFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2NvbnRyb2wuc3VwcG9ydHNBZmZpeGVzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ltcGRjUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaW1wZGNUZXh0UHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfY29udHJvbC5zdXBwb3J0c0FmZml4ZXNcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaW1wZGNUZXh0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaW1wZGNTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwiaW1wZGMtZm9ybS1maWVsZC1mZWVkYmFja1wiXG4gIFtjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLWZlZWRiYWNrLS1kaXNhYmxlZF09XCJmYWxzZVwiPlxuICA8ZGl2IGNsYXNzPVwiaW1wZGMtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbXBkYy1oaW50XCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIl9zaG93RXJyb3JzKClcIiBjbGFzcz1cImltcGRjLWZvcm0tZmllbGQtZXJyb3Itd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImltcGRjLWVycm9yLCBbaW1wZGMtZXJyb3JdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FormFieldComponent } from './form-field.component';
|
|
3
|
+
import { FORM_FIELD_DIRECTIVES } from './directives';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./directives/corner-hint.directive";
|
|
6
|
+
import * as i2 from "./directives/error.directive";
|
|
7
|
+
import * as i3 from "./directives/form-root.directive";
|
|
8
|
+
import * as i4 from "./directives/hint.directive";
|
|
9
|
+
import * as i5 from "./directives/label.directive";
|
|
10
|
+
import * as i6 from "./directives/prefix.directive";
|
|
11
|
+
import * as i7 from "./directives/suffix.directive";
|
|
12
|
+
export class FormFieldModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: FormFieldModule, imports: [FormFieldComponent, i1.CornerHintDirective, i2.ErrorDirective, i3.RootFormGroupDirective, i3.RootNgFormDirective, i4.HintDirective, i5.LabelDirective, i6.PrefixDirective, i7.SuffixDirective], exports: [FormFieldComponent, i1.CornerHintDirective, i2.ErrorDirective, i3.RootFormGroupDirective, i3.RootNgFormDirective, i4.HintDirective, i5.LabelDirective, i6.PrefixDirective, i7.SuffixDirective] }); }
|
|
15
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FormFieldModule, imports: [FormFieldComponent] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FormFieldModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES],
|
|
21
|
+
exports: [FormFieldComponent, ...FORM_FIELD_DIRECTIVES]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29tcG9uZW50L2Zvcm0tZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFNckQsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLFlBSGhCLGtCQUFrQix3TEFDbEIsa0JBQWtCOytHQUVqQixlQUFlLFlBSGhCLGtCQUFrQjs7MkZBR2pCLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztvQkFDdkQsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztpQkFDeEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGT1JNX0ZJRUxEX0RJUkVDVElWRVMgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRm9ybUZpZWxkQ29tcG9uZW50LCAuLi5GT1JNX0ZJRUxEX0RJUkVDVElWRVNdLFxuICBleHBvcnRzOiBbRm9ybUZpZWxkQ29tcG9uZW50LCAuLi5GT1JNX0ZJRUxEX0RJUkVDVElWRVNdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './directives';
|
|
2
|
+
export * from './form-field.component';
|
|
3
|
+
export * from './form-field.module';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29tcG9uZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC5tb2R1bGUnO1xuIl19
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Attribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild } from '@angular/core';
|
|
2
3
|
import { Validators } from '@angular/forms';
|
|
3
4
|
import { nanoid } from 'nanoid';
|
|
4
5
|
import { Subject } from 'rxjs';
|
|
5
6
|
import { coerceBooleanPropertyValue } from '../../../../utilities';
|
|
6
|
-
import { IMPDC_FORM_ROOT } from '../../
|
|
7
|
+
import { IMPDC_FORM_ROOT } from '../../component';
|
|
7
8
|
import { ImpdcFormFieldControl, mixinErrorState, mixinTabIndex } from '../../shared';
|
|
9
|
+
import { ToggleModule } from '../shared';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "../../services";
|
|
10
12
|
import * as i2 from "@angular/forms";
|
|
@@ -102,6 +104,10 @@ export class CheckboxComponent extends _CheckboxComponentMixinBase {
|
|
|
102
104
|
* Whether or not the checkbox displays inline.
|
|
103
105
|
*/
|
|
104
106
|
this.inline = false;
|
|
107
|
+
/**
|
|
108
|
+
* Opt to display the checkbox control before the label (`'check-start'`) or after the label (`'check-end'`)
|
|
109
|
+
*/
|
|
110
|
+
this.layout = 'check-start';
|
|
105
111
|
this._indeterminate = false;
|
|
106
112
|
this._disabled = false;
|
|
107
113
|
/**
|
|
@@ -265,16 +271,16 @@ export class CheckboxComponent extends _CheckboxComponentMixinBase {
|
|
|
265
271
|
}
|
|
266
272
|
}
|
|
267
273
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: CheckboxComponent, selector: "impdc-checkbox", inputs: { tabIndex: "tabIndex", id: "id", label: "label", description: "description", isSwitch: "isSwitch", switchIcons: "switchIcons", inline: "inline", checked: "checked", indeterminate: "indeterminate", disabled: "disabled", errorStateMatcher: "errorStateMatcher", required: "required" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "attr.id": "id", "attr.tabindex": "null", "class.impdc-checkbox--required": "required", "class.impdc-checkbox--disabled": "disabled", "class.impdc-checkbox--invalid": "errorState", "class.impdc-checkbox--inline": "inline" }, classAttribute: "impdc-checkbox" }, providers: [
|
|
274
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: CheckboxComponent, isStandalone: true, selector: "impdc-checkbox", inputs: { tabIndex: "tabIndex", id: "id", label: "label", description: "description", isSwitch: "isSwitch", switchIcons: "switchIcons", inline: "inline", layout: "layout", checked: "checked", indeterminate: "indeterminate", disabled: "disabled", errorStateMatcher: "errorStateMatcher", required: "required" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "attr.id": "id", "attr.tabindex": "null", "class.impdc-checkbox--required": "required", "class.impdc-checkbox--disabled": "disabled", "class.impdc-checkbox--invalid": "errorState", "class.impdc-checkbox--inline": "inline" }, classAttribute: "impdc-checkbox" }, providers: [
|
|
269
275
|
{
|
|
270
276
|
provide: ImpdcFormFieldControl,
|
|
271
277
|
useExisting: CheckboxComponent
|
|
272
278
|
}
|
|
273
|
-
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], exportAs: ["impdcCheckControl"], usesInheritance: true, ngImport: i0, template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"], dependencies: [{ kind: "component", type: i3.ToggleComponent, selector: "impdc-toggle", inputs: ["isSwitch", "label", "description", "inline", "switchIcons"] }, { kind: "component", type: i4.ToggleInputComponent, selector: "input[impdc-toggle-input]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
279
|
+
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], exportAs: ["impdcCheckControl"], usesInheritance: true, ngImport: i0, template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n [layout]=\"layout\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5;pointer-events:none}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i3.ToggleComponent, selector: "impdc-toggle", inputs: ["isSwitch", "label", "description", "inline", "switchIcons", "layout"] }, { kind: "component", type: i4.ToggleInputComponent, selector: "input[impdc-toggle-input]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
274
280
|
}
|
|
275
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
276
282
|
type: Component,
|
|
277
|
-
args: [{ selector: 'impdc-checkbox', host: {
|
|
283
|
+
args: [{ selector: 'impdc-checkbox', standalone: true, imports: [CommonModule, ToggleModule], host: {
|
|
278
284
|
class: 'impdc-checkbox',
|
|
279
285
|
'[attr.id]': 'id',
|
|
280
286
|
'[attr.tabindex]': 'null',
|
|
@@ -287,7 +293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
287
293
|
provide: ImpdcFormFieldControl,
|
|
288
294
|
useExisting: CheckboxComponent
|
|
289
295
|
}
|
|
290
|
-
], template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"] }]
|
|
296
|
+
], template: "<impdc-toggle\n [label]=\"label\"\n [description]=\"description\"\n [isSwitch]=\"isSwitch\"\n [switchIcons]=\"switchIcons\"\n [inline]=\"inline\"\n [layout]=\"layout\"\n (click)=\"_preventBubblingFromLabel($event)\">\n <input\n #nativeInput\n impdc-toggle-input\n type=\"checkbox\"\n class=\"impdc-checkbox__native-control\"\n [class.is-invalid]=\"errorState\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [indeterminate]=\"indeterminate\"\n (change)=\"_onInteractionEvent($event)\"\n (click)=\"_handleCheckClick()\"\n (blur)=\"_onBlur()\"\n (focus)=\"_onFocus()\" />\n</impdc-toggle>\n", styles: [":host{display:block;opacity:var(--impartner-hex-input-opacity, 1)}:host.impdc-checkbox--inline{display:inline-block}:host.impdc-checkbox--inline:not(:last-of-type){margin-right:4rem}:host:not(.impdc-checkbox--inline):not(:last-of-type){margin-bottom:1.6rem}:host.impdc-checkbox--disabled{--impartner-hex-input-opacity: .5;pointer-events:none}:host.impdc-checkbox--invalid ::ng-deep .form-check-label{color:var(--impd-color-red-600)}\n"] }]
|
|
291
297
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
292
298
|
type: Attribute,
|
|
293
299
|
args: ['tabindex']
|
|
@@ -319,6 +325,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
319
325
|
type: Input
|
|
320
326
|
}], inline: [{
|
|
321
327
|
type: Input
|
|
328
|
+
}], layout: [{
|
|
329
|
+
type: Input
|
|
322
330
|
}], checked: [{
|
|
323
331
|
type: Input
|
|
324
332
|
}], indeterminate: [{
|
|
@@ -334,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
334
342
|
}], required: [{
|
|
335
343
|
type: Input
|
|
336
344
|
}] } });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBT0wsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFFTCwwQkFBMEIsRUFDM0IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxFLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBRXRCLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7SUFDRSwwQ0FBMEM7SUFDMUIsTUFBeUI7SUFDekMsc0ZBQXNGO0lBQ3RFLE9BQWdCO1FBRmhCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBRXpCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDL0IsQ0FBQztDQUNMO0FBRUQsTUFBZSxxQkFBcUI7SUFLbEMsWUFDUyx5QkFBNEMsRUFDNUMsU0FBd0IsRUFDeEIsV0FBbUIsRUFDbkIsZ0JBQW9DLEVBQ3BDLFNBQTJCO1FBSjNCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBbUI7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBVHBCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVVoRCxDQUFDO0NBQ0w7QUFFRCxNQUFNLDJCQUEyQixHQUFHLGFBQWEsQ0FDL0MsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQ3ZDLENBQUM7QUFFRjs7OztHQUlHO0FBMEJILE1BQU0sT0FBTyxpQkFDWCxTQUFRLDJCQUEyQjtJQW1EbkM7O09BRUc7SUFDSCxJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFXLGFBQWEsQ0FBQyxLQUFtQjtRQUMxQyxNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxZQUFZLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztRQUVuQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUdELElBQ1csUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQW1CO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQXFCRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUNtQixlQUFrQyxFQUM1QixRQUFnQixFQUN2Qyx3QkFBMkMsRUFDTixRQUF1QixFQUNoRCxVQUFrQixFQUNsQixlQUFtQyxFQUMzQixTQUEyQjtRQUUvQyxLQUFLLENBQ0gsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixVQUFVLEVBQ1YsZUFBZSxFQUNmLFNBQVMsQ0FDVixDQUFDO1FBZGUsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBNUdwQyxTQUFJLEdBQVcsa0JBQWtCLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDckQsaUJBQVksR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzlDLGtCQUFhLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBTTFCLE9BQUUsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRTlCOztXQUVHO1FBRUksVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVsQjs7V0FFRztRQUVJLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXhCOztXQUVHO1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUVJLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRTNCOztXQUVHO1FBRUksV0FBTSxHQUFHLEtBQUssQ0FBQztRQThCZCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQWVyQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBSzVCOztXQUVHO1FBR2EsV0FBTSxHQUNwQixJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUxQzs7V0FFRztRQUVhLHdCQUFtQixHQUNqQyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBK0R0QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQTRCVCxnQkFBVyxHQUFXLGFBQWEsQ0FBQztRQUNwQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQTFFL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLEdBQUcsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxjQUFjO0lBQ1AsU0FBUztRQUNkLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFakMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ1AsV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCwyQkFBMkI7SUFFM0IsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFXLEtBQUssQ0FBQyxLQUFtQjtRQUNsQyxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUNXLFFBQVE7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkI7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXRFLE9BQU8sV0FBVyxJQUFJLGVBQWUsQ0FBQztTQUN2QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQW1CO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBTUQsMEJBQTBCO0lBRTFCLGNBQWM7SUFDUCxVQUFVLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNQLGdCQUFnQixDQUFDLEVBQXdCO1FBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjO0lBQ1AsaUJBQWlCLENBQUMsRUFBWTtRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNQLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGVBQWU7SUFFZixjQUFjO0lBQ1AsUUFBUTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNuRCxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBRUQsZUFBZTtJQUNMLGVBQWU7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFUyxPQUFPO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIseUZBQXlGO1FBQ3pGLDJGQUEyRjtRQUMzRixvRkFBb0Y7UUFDcEYscUZBQXFGO1FBQ3JGLG9FQUFvRTtRQUNwRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFFBQVE7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFUyxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFN0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBWTtRQUN4QywwREFBMEQ7UUFDMUQseUVBQXlFO1FBQ3pFLGdEQUFnRDtRQUNoRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUU5RCxtRkFBbUY7UUFDbkYscUZBQXFGO1FBQ3JGLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN6RDtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyx5QkFBeUIsQ0FBQyxLQUFpQjtRQUNuRCxJQUNFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUNwQixDQUFFLEtBQUssQ0FBQyxNQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUN6RTtZQUNBLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7OEdBblVVLGlCQUFpQixtREF5SGYsVUFBVSwrREFFRCxlQUFlO2tHQTNIMUIsaUJBQWlCLG1yQkFQakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixXQUFXLEVBQUUsaUJBQWlCO2FBQy9CO1NBQ0YsbUhBa0JpQyxVQUFVLHFGQ25IOUMsbXhCQTBCQTs7MkZEeUVhLGlCQUFpQjtrQkF6QjdCLFNBQVM7K0JBQ0UsZ0JBQWdCLFFBSXBCO3dCQUNKLEtBQUssRUFBRSxnQkFBZ0I7d0JBQ3ZCLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixpQkFBaUIsRUFBRSxNQUFNO3dCQUN6QixrQ0FBa0MsRUFBRSxVQUFVO3dCQUM5QyxrQ0FBa0MsRUFBRSxVQUFVO3dCQUM5QyxpQ0FBaUMsRUFBRSxZQUFZO3dCQUMvQyxnQ0FBZ0MsRUFBRSxRQUFRO3FCQUMzQyxVQUVPLENBQUMsVUFBVSxDQUFDLFlBQ1YsbUJBQW1CLG1CQUNaLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsV0FBVyxtQkFBbUI7eUJBQy9CO3FCQUNGOzswQkEySEUsU0FBUzsyQkFBQyxVQUFVOzswQkFFcEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzswQkFDbEMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQUksUUFBUTt5Q0E3R1QsYUFBYTtzQkFEdEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl2QyxFQUFFO3NCQURSLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQU9LLE9BQU87c0JBRGpCLEtBQUs7Z0JBYUssYUFBYTtzQkFEdkIsS0FBSztnQkFnQkssUUFBUTtzQkFEbEIsS0FBSztnQkFnQlUsaUJBQWlCO3NCQURoQyxLQUFLO2dCQVFVLE1BQU07c0JBRnJCLE1BQU07Z0JBU1MsbUJBQW1CO3NCQURsQyxNQUFNO2dCQTZFSSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IEltcGRjRm9ybVJvb3QsIElNUERDX0ZPUk1fUk9PVCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBIYXNUYWJJbmRleCxcbiAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gIElIYXNFcnJvclN0YXRlLFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIG1peGluRXJyb3JTdGF0ZSxcbiAgbWl4aW5UYWJJbmRleFxufSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDaGFuZ2VFdmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgc3BlY2lmaWMgY2hlY2tib3ggdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IENoZWNrYm94Q29tcG9uZW50LFxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGFuZ2VkIGNoZWNrYm94IHdhcyBjaGVja2VkIG9yIHVuY2hlY2tlZCBhdCB0aGUgdGltZSBvZiB0aGUgZXZlbnQuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrZWQ6IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5hYnN0cmFjdCBjbGFzcyBDaGVja2JveENvbXBvbmVudEJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgKSB7fVxufVxuXG5jb25zdCBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2UgPSBtaXhpblRhYkluZGV4KFxuICBtaXhpbkVycm9yU3RhdGUoQ2hlY2tib3hDb21wb25lbnRCYXNlKVxuKTtcblxuLyoqXG4gKiBUaGUgYENoZWNrYm94Q29tcG9uZW50YCAoYDxpbXBkYy1jaGVja2JveGApIGlzIGFuIGlucHV0IHdpdGggYSBzaW1wbGUgYm9vbGVhbiB2YWx1ZSBhcyBhIGNoZWNrYm94IG9yIHRvZ2dsZSBzd2l0Y2guXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB3aXRoaW4gYSBgRm9ybUZpZWxkQ29tcG9uZW50YCAoYDxpbXBkYy1mb3JtLWZpZWxkYCkuXG4gKiBUbyB1c2UsIGltcG9ydCBgQ2hlY2tib3hNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaW1wZGMtY2hlY2tib3gnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnbnVsbCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1jaGVja2JveC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLWNoZWNrYm94LS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWlubGluZV0nOiAnaW5saW5lJ1xuICB9LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsndGFiSW5kZXgnXSxcbiAgZXhwb3J0QXM6ICdpbXBkY0NoZWNrQ29udHJvbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnRcbiAgZXh0ZW5kcyBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2VcbiAgaW1wbGVtZW50c1xuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvcixcbiAgICBIYXNUYWJJbmRleCxcbiAgICBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8Ym9vbGVhbj4sXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGVcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkOiBzdHJpbmcgPSBgaW1wZGMtY2hlY2tib3gtJHtuYW5vaWQoKX1gO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZCgnbmF0aXZlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJvdGVjdGVkIF9pbnB1dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gdGhpcy5fdWlkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBsYWJlbCB0ZXh0IGZvciB0aGUgY2hlY2tib3ggY29udHJvbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIHByb3ZpZGUgYWRkaXRpb25hbCBkZXNjcmlwdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY2hlY2tib3ggY29udHJvbC4gRG9lcyBub3QgZGlzcGxheSB3aGVuIGBpbmxpbmVgIGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZGlzcGxheXMgYXMgYSB0b2dnbGUgc3dpdGNoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlzU3dpdGNoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZW4gYGlzU3dpdGNoYCBpcyBgdHJ1ZWAsIHNldHMgd2hldGhlciBvciBub3QgdGhlIHRvZ2dsZSBzd2l0Y2ggdXNlcyBpY29ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzd2l0Y2hJY29ucyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hlY2tib3ggZGlzcGxheXMgaW5saW5lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlubGluZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hlY2tib3ggaW5wdXQgaXMgY2hlY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IGNoZWNrZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hlY2tib3ggaW5wdXQgaXMgaW4gYW4gYGluZGV0ZXJtaW5hdGVgIHN0YXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmRldGVybWluYXRlO1xuICB9XG4gIHB1YmxpYyBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IGlzQ2hhbmdlID0gY29lcmNlZFZhbHVlICE9PSB0aGlzLl9pbmRldGVybWluYXRlO1xuICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBjb2VyY2VkVmFsdWU7XG5cbiAgICBpZiAoaXNDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9pbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgbmV3RGlzYWJsZWRTdGF0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuZXdEaXNhYmxlZFN0YXRlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdEaXNhYmxlZFN0YXRlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZXJyb3JTdGF0ZU1hdGNoZXIhOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuZXZlciB0aGUgY2hlY2tlZG5lc3Mgb2YgdGhlIGlucHV0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveENoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxDaGVja2JveENoYW5nZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW5ldmVyIHRoZSBjb250cm9sIGVudGVycyBvciBsZWF2ZXMgYW4gYGluZGV0ZXJtaW5hdGVgIHN0YXRlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLl91aWR9LWlucHV0YDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIHRhYkluZGV4OiBzdHJpbmcsXG4gICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElNUERDX0ZPUk1fUk9PVCkgZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgZm9ybVJvb3QsXG4gICAgICBwYXJlbnRGb3JtLFxuICAgICAgcGFyZW50Rm9ybUdyb3VwLFxuICAgICAgbmdDb250cm9sXG4gICAgKTtcblxuICAgIHRoaXMudGFiSW5kZXggPSBwYXJzZUludCh0YWJJbmRleCkgfHwgMDtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sPy5hZGRWYWxpZGF0b3JzKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICBpZiAoIW5nQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wgKi9cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWUgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWQ7XG4gIH1cbiAgcHJpdmF0ZSBfZm9jdXNlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCByZXF1aXJlZG5lc3Mgb2YgY29udHJvbCBpbiBhIHRlbXBsYXRlLWJhc2VkIG1hbm5lcjsgbm90IG5lY2Vzc2FyeSB3aGVuIHVzaW5nIHRoZVxuICAgKiBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIEFQSSBhbmQgJ3JlcXVpcmVkJyBvciBgcmVxdWlyZWRUcnVlYCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fcmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbDtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29uc3QgaGFzUmVxdWlyZWQgPSBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIGNvbnN0IGhhc1JlcXVpcmVkVHJ1ZSA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcblxuICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkIHx8IGhhc1JlcXVpcmVkVHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ltcGRjLWNoZWNrJztcbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQWZmaXhlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAhIXZhbHVlO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qIFZhbGlkYXRvciAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWVcbiAgICAgID8geyByZXF1aXJlZDogdHJ1ZSB9XG4gICAgICA6IG51bGw7XG4gIH1cblxuICAvKiBJbnRlcm5hbHMgKi9cbiAgcHJvdGVjdGVkIF9nZXRBcmlhQ2hlY2tlZCgpOiAndHJ1ZScgfCAnZmFsc2UnIHwgJ21peGVkJyB7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgcmV0dXJuICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbmRldGVybWluYXRlID8gJ21peGVkJyA6ICdmYWxzZSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG4gICAgLy8gV2hlbiBhIGZvY3VzZWQgZWxlbWVudCBiZWNvbWVzIGRpc2FibGVkLCB0aGUgYnJvd3NlciAqaW1tZWRpYXRlbHkqIGZpcmVzIGEgYmx1ciBldmVudC5cbiAgICAvLyBBbmd1bGFyIGRvZXMgbm90IGV4cGVjdCBldmVudHMgdG8gYmUgcmFpc2VkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyBhbnkgc3RhdGUgY2hhbmdlXG4gICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE3NzkzLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBkZWZlclxuICAgIC8vIHRlbGxpbmcgdGhlIGZvcm0gY29udHJvbCBpdCBoYXMgYmVlbiB0b3VjaGVkIHVudGlsIHRoZSBuZXh0IHRpY2suXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVDaGVja0NsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG5cbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxuICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3IENoZWNrYm94Q2hhbmdlRXZlbnQodGhpcywgdGhpcy5jaGVja2VkKSk7XG5cbiAgICAvLyBBc3NpZ25pbmcgdGhlIHZhbHVlIGFnYWluIGhlcmUgaXMgcmVkdW5kYW50LCBidXQgd2UgaGF2ZSB0byBkbyBpdCBpbiBjYXNlIGl0IHdhc1xuICAgIC8vIGNoYW5nZWQgaW5zaWRlIHRoZSBgY2hhbmdlYCBsaXN0ZW5lciB3aGljaCB3aWxsIGNhdXNlIHRoZSBpbnB1dCB0byBiZSBvdXQgb2Ygc3luYy5cbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgUHJldmVudCBjbGljayBldmVudHMgdGhhdCBjb21lIGZyb20gdGhlIGA8bGFiZWwvPmAgZWxlbWVudCBmcm9tIGJ1YmJsaW5nLiBUaGlzIHByZXZlbnRzIHRoZVxuICAgKiAgY2xpY2sgaGFuZGxlciBvbiB0aGUgaG9zdCBmcm9tIHRyaWdnZXJpbmcgdHdpY2Ugd2hlbiBjbGlja2luZyBvbiB0aGUgYDxsYWJlbC8+YCBlbGVtZW50LiBBZnRlclxuICAgKiAgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgPGxhYmVsLz5gIHByb3BhZ2F0ZXMsIHRoZSBicm93c2VycyBkaXNwYXRjaGVzIGNsaWNrIG9uIHRoZSBhc3NvY2lhdGVkXG4gICAqICBgPGlucHV0Lz5gLiBCeSBwcmV2ZW50aW5nIGNsaWNrcyBvbiB0aGUgbGFiZWwgYnkgYnViYmxpbmcsIHdlIGVuc3VyZSBvbmx5IG9uZSBjbGljayBldmVudFxuICAgKiAgYnViYmxlcyB3aGVuIHRoZSBsYWJlbCBpcyBjbGlja2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9wcmV2ZW50QnViYmxpbmdGcm9tTGFiZWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhIWV2ZW50LnRhcmdldCAmJlxuICAgICAgISF0aGlzLl9pbnB1dEVsZW1lbnQgJiZcbiAgICAgICEoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyh0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIiwiPGltcGRjLXRvZ2dsZVxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIlxuICBbaXNTd2l0Y2hdPVwiaXNTd2l0Y2hcIlxuICBbc3dpdGNoSWNvbnNdPVwic3dpdGNoSWNvbnNcIlxuICBbaW5saW5lXT1cImlubGluZVwiXG4gIChjbGljayk9XCJfcHJldmVudEJ1YmJsaW5nRnJvbUxhYmVsKCRldmVudClcIj5cbiAgPGlucHV0XG4gICAgI25hdGl2ZUlucHV0XG4gICAgaW1wZGMtdG9nZ2xlLWlucHV0XG4gICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICBjbGFzcz1cImltcGRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbFwiXG4gICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZXJyb3JTdGF0ZVwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJfZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlXCJcbiAgICAoY2hhbmdlKT1cIl9vbkludGVyYWN0aW9uRXZlbnQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIl9oYW5kbGVDaGVja0NsaWNrKClcIlxuICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgKGZvY3VzKT1cIl9vbkZvY3VzKClcIiAvPlxuPC9pbXBkYy10b2dnbGU+XG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU9MLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUwsMEJBQTBCLEVBQzNCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFpQixlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxPQUFPLEVBSUwscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixhQUFhLEVBQ2QsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBRXpDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7SUFDRSwwQ0FBMEM7SUFDMUIsTUFBeUI7SUFDekMsc0ZBQXNGO0lB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RUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcsbUJBQW1CO3lCQUMvQjtxQkFDRjs7MEJBaUlFLFNBQVM7MkJBQUMsVUFBVTs7MEJBRXBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLElBQUk7OzBCQUFJLFFBQVE7eUNBbkhULGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJdkMsRUFBRTtzQkFEUixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxNQUFNO3NCQURaLEtBQUs7Z0JBT0ssT0FBTztzQkFEakIsS0FBSztnQkFhSyxhQUFhO3NCQUR2QixLQUFLO2dCQWdCSyxRQUFRO3NCQURsQixLQUFLO2dCQWdCVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBUVUsTUFBTTtzQkFGckIsTUFBTTtnQkFTUyxtQkFBbUI7c0JBRGxDLE1BQU07Z0JBNkVJLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEJvb2xlYW5JbnB1dCxcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IEltcGRjRm9ybVJvb3QsIElNUERDX0ZPUk1fUk9PVCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIEhhc1RhYkluZGV4LFxuICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgSUhhc0Vycm9yU3RhdGUsXG4gIEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgbWl4aW5FcnJvclN0YXRlLFxuICBtaXhpblRhYkluZGV4XG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQnO1xuXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDaGFuZ2VFdmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUaGUgc3BlY2lmaWMgY2hlY2tib3ggdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IENoZWNrYm94Q29tcG9uZW50LFxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGFuZ2VkIGNoZWNrYm94IHdhcyBjaGVja2VkIG9yIHVuY2hlY2tlZCBhdCB0aGUgdGltZSBvZiB0aGUgZXZlbnQuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrZWQ6IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5hYnN0cmFjdCBjbGFzcyBDaGVja2JveENvbXBvbmVudEJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgKSB7fVxufVxuXG5jb25zdCBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2UgPSBtaXhpblRhYkluZGV4KFxuICBtaXhpbkVycm9yU3RhdGUoQ2hlY2tib3hDb21wb25lbnRCYXNlKVxuKTtcblxuLyoqXG4gKiBUaGUgYENoZWNrYm94Q29tcG9uZW50YCAoYDxpbXBkYy1jaGVja2JveGApIGlzIGFuIGlucHV0IHdpdGggYSBzaW1wbGUgYm9vbGVhbiB2YWx1ZSBhcyBhIGNoZWNrYm94IG9yIHRvZ2dsZSBzd2l0Y2guXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB3aXRoaW4gYSBgRm9ybUZpZWxkQ29tcG9uZW50YCAoYDxpbXBkYy1mb3JtLWZpZWxkYCkuXG4gKiBUbyB1c2UsIGltcG9ydCBgQ2hlY2tib3hNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtY2hlY2tib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUb2dnbGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnaW1wZGMtY2hlY2tib3gnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnbnVsbCcsXG4gICAgJ1tjbGFzcy5pbXBkYy1jaGVja2JveC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLWNoZWNrYm94LS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtY2hlY2tib3gtLWlubGluZV0nOiAnaW5saW5lJ1xuICB9LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsndGFiSW5kZXgnXSxcbiAgZXhwb3J0QXM6ICdpbXBkY0NoZWNrQ29udHJvbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogQ2hlY2tib3hDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnRcbiAgZXh0ZW5kcyBfQ2hlY2tib3hDb21wb25lbnRNaXhpbkJhc2VcbiAgaW1wbGVtZW50c1xuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvcixcbiAgICBIYXNUYWJJbmRleCxcbiAgICBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8Ym9vbGVhbj4sXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGVcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkOiBzdHJpbmcgPSBgaW1wZGMtY2hlY2tib3gtJHtuYW5vaWQoKX1gO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZCgnbmF0aXZlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJvdGVjdGVkIF9pbnB1dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gdGhpcy5fdWlkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBsYWJlbCB0ZXh0IGZvciB0aGUgY2hlY2tib3ggY29udHJvbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIHByb3ZpZGUgYWRkaXRpb25hbCBkZXNjcmlwdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY2hlY2tib3ggY29udHJvbC4gRG9lcyBub3QgZGlzcGxheSB3aGVuIGBpbmxpbmVgIGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZGlzcGxheXMgYXMgYSB0b2dnbGUgc3dpdGNoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlzU3dpdGNoID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZW4gYGlzU3dpdGNoYCBpcyBgdHJ1ZWAsIHNldHMgd2hldGhlciBvciBub3QgdGhlIHRvZ2dsZSBzd2l0Y2ggdXNlcyBpY29ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzd2l0Y2hJY29ucyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hlY2tib3ggZGlzcGxheXMgaW5saW5lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlubGluZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBPcHQgdG8gZGlzcGxheSB0aGUgY2hlY2tib3ggY29udHJvbCBiZWZvcmUgdGhlIGxhYmVsIChgJ2NoZWNrLXN0YXJ0J2ApIG9yIGFmdGVyIHRoZSBsYWJlbCAoYCdjaGVjay1lbmQnYClcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYXlvdXQ6ICdjaGVjay1zdGFydCcgfCAnY2hlY2stZW5kJyA9ICdjaGVjay1zdGFydCc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBjaGVja2JveCBpbnB1dCBpcyBjaGVja2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBjaGVja2JveCBpbnB1dCBpcyBpbiBhbiBgaW5kZXRlcm1pbmF0ZWAgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gIH1cbiAgcHVibGljIHNldCBpbmRldGVybWluYXRlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgY29uc3QgaXNDaGFuZ2UgPSBjb2VyY2VkVmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGNvZXJjZWRWYWx1ZTtcblxuICAgIGlmIChpc0NoYW5nZSkge1xuICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICBjb25zdCBuZXdEaXNhYmxlZFN0YXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5ld0Rpc2FibGVkU3RhdGUgIT09IHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IG5ld0Rpc2FibGVkU3RhdGU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBlcnJvclN0YXRlTWF0Y2hlciE6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW5ldmVyIHRoZSBjaGVja2VkbmVzcyBvZiB0aGUgaW5wdXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPENoZWNrYm94Q2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPENoZWNrYm94Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGNvbnRyb2wgZW50ZXJzIG9yIGxlYXZlcyBhbiBgaW5kZXRlcm1pbmF0ZWAgc3RhdGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGluZGV0ZXJtaW5hdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBnZXQgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkIHx8IHRoaXMuX3VpZH0taW5wdXRgO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBBdHRyaWJ1dGUoJ3RhYmluZGV4JykgdGFiSW5kZXg6IHN0cmluZyxcbiAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBmb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBmb3JtUm9vdCxcbiAgICAgIHBhcmVudEZvcm0sXG4gICAgICBwYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgdGhpcy50YWJJbmRleCA9IHBhcnNlSW50KHRhYkluZGV4KSB8fCAwO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/LmFkZFZhbGlkYXRvcnMoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLm5nQ29udHJvbDtcblxuICAgIGlmICghbmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qIEltcGRjRm9ybUZpZWxkQ29udHJvbCAqL1xuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF92YWx1ZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZDtcbiAgfVxuICBwcml2YXRlIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHJlcXVpcmVkbmVzcyBvZiBjb250cm9sIGluIGEgdGVtcGxhdGUtYmFzZWQgbWFubmVyOyBub3QgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgdGhlXG4gICAqIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgQVBJIGFuZCAncmVxdWlyZWQnIG9yIGByZXF1aXJlZFRydWVgIHZhbGlkYXRvcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sPy5jb250cm9sO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb25zdCBoYXNSZXF1aXJlZCA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgY29uc3QgaGFzUmVxdWlyZWRUcnVlID0gY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xuXG4gICAgICByZXR1cm4gaGFzUmVxdWlyZWQgfHwgaGFzUmVxdWlyZWRUcnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xUeXBlOiBzdHJpbmcgPSAnaW1wZGMtY2hlY2snO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNBZmZpeGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICEhdmFsdWU7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyogVmFsaWRhdG9yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5yZXF1aXJlZCAmJiAhdGhpcy52YWx1ZVxuICAgICAgPyB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIC8qIEludGVybmFscyAqL1xuICBwcm90ZWN0ZWQgX2dldEFyaWFDaGVja2VkKCk6ICd0cnVlJyB8ICdmYWxzZScgfCAnbWl4ZWQnIHtcbiAgICBpZiAodGhpcy5jaGVja2VkKSB7XG4gICAgICByZXR1cm4gJ3RydWUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluZGV0ZXJtaW5hdGUgPyAnbWl4ZWQnIDogJ2ZhbHNlJztcbiAgfVxuXG4gIHByb3RlY3RlZCBfb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcbiAgICAvLyBXaGVuIGEgZm9jdXNlZCBlbGVtZW50IGJlY29tZXMgZGlzYWJsZWQsIHRoZSBicm93c2VyICppbW1lZGlhdGVseSogZmlyZXMgYSBibHVyIGV2ZW50LlxuICAgIC8vIEFuZ3VsYXIgZG9lcyBub3QgZXhwZWN0IGV2ZW50cyB0byBiZSByYWlzZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24sIHNvIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAvLyAoc3VjaCBhcyBhIGZvcm0gY29udHJvbCdzICduZy10b3VjaGVkJykgd2lsbCBjYXVzZSBhIGNoYW5nZWQtYWZ0ZXItY2hlY2tlZCBlcnJvci5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTc3OTMuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGRlZmVyXG4gICAgLy8gdGVsbGluZyB0aGUgZm9ybSBjb250cm9sIGl0IGhhcyBiZWVuIHRvdWNoZWQgdW50aWwgdGhlIG5leHQgdGljay5cbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2N2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZUNoZWNrQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcblxuICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25JbnRlcmFjdGlvbkV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRvIHN0b3AgcHJvcGFnYXRpb24gb24gdGhlIGNoYW5nZSBldmVudC5cbiAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgLy8gZW1pdCBpdHMgZXZlbnQgb2JqZWN0IHRvIHRoZSBgY2hhbmdlYCBvdXRwdXQuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0Q2hhbmdlRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlKHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChuZXcgQ2hlY2tib3hDaGFuZ2VFdmVudCh0aGlzLCB0aGlzLmNoZWNrZWQpKTtcblxuICAgIC8vIEFzc2lnbmluZyB0aGUgdmFsdWUgYWdhaW4gaGVyZSBpcyByZWR1bmRhbnQsIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGluIGNhc2UgaXQgd2FzXG4gICAgLy8gY2hhbmdlZCBpbnNpZGUgdGhlIGBjaGFuZ2VgIGxpc3RlbmVyIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGlucHV0IHRvIGJlIG91dCBvZiBzeW5jLlxuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBQcmV2ZW50IGNsaWNrIGV2ZW50cyB0aGF0IGNvbWUgZnJvbSB0aGUgYDxsYWJlbC8+YCBlbGVtZW50IGZyb20gYnViYmxpbmcuIFRoaXMgcHJldmVudHMgdGhlXG4gICAqICBjbGljayBoYW5kbGVyIG9uIHRoZSBob3N0IGZyb20gdHJpZ2dlcmluZyB0d2ljZSB3aGVuIGNsaWNraW5nIG9uIHRoZSBgPGxhYmVsLz5gIGVsZW1lbnQuIEFmdGVyXG4gICAqICB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGA8bGFiZWwvPmAgcHJvcGFnYXRlcywgdGhlIGJyb3dzZXJzIGRpc3BhdGNoZXMgY2xpY2sgb24gdGhlIGFzc29jaWF0ZWRcbiAgICogIGA8aW5wdXQvPmAuIEJ5IHByZXZlbnRpbmcgY2xpY2tzIG9uIHRoZSBsYWJlbCBieSBidWJibGluZywgd2UgZW5zdXJlIG9ubHkgb25lIGNsaWNrIGV2ZW50XG4gICAqICBidWJibGVzIHdoZW4gdGhlIGxhYmVsIGlzIGNsaWNrZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3ByZXZlbnRCdWJibGluZ0Zyb21MYWJlbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChcbiAgICAgICEhZXZlbnQudGFyZ2V0ICYmXG4gICAgICAhIXRoaXMuX2lucHV0RWxlbWVudCAmJlxuICAgICAgIShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iLCI8aW1wZGMtdG9nZ2xlXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiXG4gIFtpc1N3aXRjaF09XCJpc1N3aXRjaFwiXG4gIFtzd2l0Y2hJY29uc109XCJzd2l0Y2hJY29uc1wiXG4gIFtpbmxpbmVdPVwiaW5saW5lXCJcbiAgW2xheW91dF09XCJsYXlvdXRcIlxuICAoY2xpY2spPVwiX3ByZXZlbnRCdWJibGluZ0Zyb21MYWJlbCgkZXZlbnQpXCI+XG4gIDxpbnB1dFxuICAgICNuYXRpdmVJbnB1dFxuICAgIGltcGRjLXRvZ2dsZS1pbnB1dFxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgY2xhc3M9XCJpbXBkYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2xcIlxuICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImVycm9yU3RhdGVcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiX2dldEFyaWFDaGVja2VkKClcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgKGNoYW5nZSk9XCJfb25JbnRlcmFjdGlvbkV2ZW50KCRldmVudClcIlxuICAgIChjbGljayk9XCJfaGFuZGxlQ2hlY2tDbGljaygpXCJcbiAgICAoYmx1cik9XCJfb25CbHVyKClcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1cygpXCIgLz5cbjwvaW1wZGMtdG9nZ2xlPlxuIl19
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
1
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { ToggleModule } from '../shared';
|
|
4
2
|
import { CheckboxComponent } from './checkbox.component';
|
|
5
3
|
import * as i0 from "@angular/core";
|
|
6
4
|
export class CheckboxModule {
|
|
7
5
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule,
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule, imports: [
|
|
6
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule, imports: [CheckboxComponent], exports: [CheckboxComponent] }); }
|
|
7
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule, imports: [CheckboxComponent] }); }
|
|
10
8
|
}
|
|
11
9
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CheckboxModule, decorators: [{
|
|
12
10
|
type: NgModule,
|
|
13
11
|
args: [{
|
|
14
|
-
|
|
15
|
-
imports: [CommonModule, ToggleModule],
|
|
12
|
+
imports: [CheckboxComponent],
|
|
16
13
|
exports: [CheckboxComponent]
|
|
17
14
|
}]
|
|
18
15
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU16RCxNQUFNLE9BQU8sY0FBYzs4R0FBZCxjQUFjOytHQUFkLGNBQWMsWUFIZixpQkFBaUIsYUFDakIsaUJBQWlCOytHQUVoQixjQUFjLFlBSGYsaUJBQWlCOzsyRkFHaEIsY0FBYztrQkFKMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ2hlY2tib3hDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQ2hlY2tib3hDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94TW9kdWxlIHt9XG4iXX0=
|
|
@@ -2,4 +2,5 @@ export * from './checkbox';
|
|
|
2
2
|
export * from './input';
|
|
3
3
|
export * from './radio';
|
|
4
4
|
export * from './select';
|
|
5
|
-
|
|
5
|
+
export * from './tag-select';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29udHJvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoZWNrYm94JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9yYWRpbyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3RhZy1zZWxlY3QnO1xuIl19
|