@angular/material-experimental 14.0.0-next.2 → 14.0.0-next.5
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/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-module.mjs +13 -13
- package/esm2020/column-resize/overlay-handle.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/default-enabled-resizable.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/resizable.mjs +4 -4
- package/esm2020/column-resize/resize-strategy.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-origin.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-trigger.mjs +6 -5
- package/esm2020/mdc-autocomplete/autocomplete.mjs +4 -4
- package/esm2020/mdc-autocomplete/module.mjs +5 -5
- package/esm2020/mdc-button/button-base.mjs +7 -7
- package/esm2020/mdc-button/button.mjs +7 -7
- package/esm2020/mdc-button/fab.mjs +13 -13
- package/esm2020/mdc-button/icon-button.mjs +7 -7
- package/esm2020/mdc-button/module.mjs +5 -5
- package/esm2020/mdc-card/card.mjs +44 -44
- package/esm2020/mdc-card/module.mjs +5 -5
- package/esm2020/mdc-checkbox/checkbox.mjs +6 -4
- package/esm2020/mdc-checkbox/module.mjs +5 -5
- package/esm2020/mdc-chips/chip-action.mjs +4 -4
- package/esm2020/mdc-chips/chip-edit-input.mjs +4 -4
- package/esm2020/mdc-chips/chip-grid.mjs +17 -9
- package/esm2020/mdc-chips/chip-icons.mjs +10 -10
- package/esm2020/mdc-chips/chip-input.mjs +4 -4
- package/esm2020/mdc-chips/chip-listbox.mjs +6 -9
- package/esm2020/mdc-chips/chip-option.mjs +4 -4
- package/esm2020/mdc-chips/chip-row.mjs +4 -4
- package/esm2020/mdc-chips/chip-set.mjs +11 -11
- package/esm2020/mdc-chips/chip.mjs +4 -4
- package/esm2020/mdc-chips/module.mjs +5 -5
- package/esm2020/mdc-chips/testing/public-api.mjs +2 -1
- package/esm2020/mdc-core/option/index.mjs +5 -5
- package/esm2020/mdc-core/option/optgroup.mjs +4 -4
- package/esm2020/mdc-core/option/option.mjs +4 -4
- package/esm2020/mdc-dialog/dialog-container.mjs +6 -6
- package/esm2020/mdc-dialog/dialog-content-directives.mjs +27 -15
- package/esm2020/mdc-dialog/dialog.mjs +4 -4
- package/esm2020/mdc-dialog/module.mjs +5 -5
- package/esm2020/mdc-form-field/directives/error.mjs +4 -4
- package/esm2020/mdc-form-field/directives/floating-label.mjs +5 -10
- package/esm2020/mdc-form-field/directives/hint.mjs +4 -4
- package/esm2020/mdc-form-field/directives/label.mjs +4 -4
- package/esm2020/mdc-form-field/directives/line-ripple.mjs +4 -4
- package/esm2020/mdc-form-field/directives/notched-outline.mjs +4 -4
- package/esm2020/mdc-form-field/directives/prefix.mjs +4 -4
- package/esm2020/mdc-form-field/directives/suffix.mjs +4 -4
- package/esm2020/mdc-form-field/form-field.mjs +47 -38
- package/esm2020/mdc-form-field/module.mjs +5 -5
- package/esm2020/mdc-input/input.mjs +4 -4
- package/esm2020/mdc-input/module.mjs +5 -5
- package/esm2020/mdc-list/action-list.mjs +5 -5
- package/esm2020/mdc-list/interactive-list-base.mjs +4 -4
- package/esm2020/mdc-list/list-base.mjs +7 -7
- package/esm2020/mdc-list/list-item-sections.mjs +19 -19
- package/esm2020/mdc-list/list-option.mjs +4 -4
- package/esm2020/mdc-list/list.mjs +20 -8
- package/esm2020/mdc-list/module.mjs +5 -5
- package/esm2020/mdc-list/nav-list.mjs +4 -4
- package/esm2020/mdc-list/selection-list.mjs +4 -4
- package/esm2020/mdc-list/subheader.mjs +4 -4
- package/esm2020/mdc-menu/directives.mjs +7 -7
- package/esm2020/mdc-menu/menu-item.mjs +4 -4
- package/esm2020/mdc-menu/menu.mjs +9 -9
- package/esm2020/mdc-menu/module.mjs +5 -5
- package/esm2020/mdc-paginator/module.mjs +5 -5
- package/esm2020/mdc-paginator/paginator.mjs +5 -5
- package/esm2020/mdc-paginator/public-api.mjs +1 -1
- package/esm2020/mdc-progress-bar/module.mjs +5 -5
- package/esm2020/mdc-progress-bar/progress-bar.mjs +5 -5
- package/esm2020/mdc-progress-spinner/module.mjs +5 -5
- package/esm2020/mdc-progress-spinner/progress-spinner.mjs +7 -4
- package/esm2020/mdc-radio/module.mjs +5 -5
- package/esm2020/mdc-radio/radio.mjs +7 -7
- package/esm2020/mdc-select/module.mjs +5 -5
- package/esm2020/mdc-select/select.mjs +9 -9
- package/esm2020/mdc-slide-toggle/module.mjs +5 -5
- package/esm2020/mdc-slide-toggle/slide-toggle.mjs +4 -4
- package/esm2020/mdc-slider/global-change-and-input-listener.mjs +4 -4
- package/esm2020/mdc-slider/module.mjs +5 -5
- package/esm2020/mdc-slider/slider.mjs +11 -11
- package/esm2020/mdc-snack-bar/module.mjs +5 -5
- package/esm2020/mdc-snack-bar/simple-snack-bar.mjs +4 -4
- package/esm2020/mdc-snack-bar/snack-bar-container.mjs +5 -5
- package/esm2020/mdc-snack-bar/snack-bar-content.mjs +10 -10
- package/esm2020/mdc-snack-bar/snack-bar.mjs +4 -4
- package/esm2020/mdc-table/cell.mjs +22 -22
- package/esm2020/mdc-table/module.mjs +5 -5
- package/esm2020/mdc-table/row.mjs +22 -22
- package/esm2020/mdc-table/table.mjs +9 -9
- package/esm2020/mdc-table/text-column.mjs +4 -4
- package/esm2020/mdc-tabs/module.mjs +5 -5
- package/esm2020/mdc-tabs/tab-body.mjs +7 -7
- package/esm2020/mdc-tabs/tab-content.mjs +4 -4
- package/esm2020/mdc-tabs/tab-group.mjs +4 -4
- package/esm2020/mdc-tabs/tab-header.mjs +5 -5
- package/esm2020/mdc-tabs/tab-label-wrapper.mjs +4 -4
- package/esm2020/mdc-tabs/tab-label.mjs +4 -4
- package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +11 -11
- package/esm2020/mdc-tabs/tab.mjs +4 -4
- package/esm2020/mdc-tooltip/module.mjs +5 -5
- package/esm2020/mdc-tooltip/tooltip.mjs +9 -8
- package/esm2020/menubar/menubar-item.mjs +4 -4
- package/esm2020/menubar/menubar-module.mjs +5 -5
- package/esm2020/menubar/menubar.mjs +4 -4
- package/esm2020/popover-edit/lens-directives.mjs +10 -10
- package/esm2020/popover-edit/popover-edit-module.mjs +5 -5
- package/esm2020/popover-edit/table-directives.mjs +13 -13
- package/esm2020/selection/row-selection.mjs +4 -4
- package/esm2020/selection/select-all.mjs +4 -4
- package/esm2020/selection/selection-column.mjs +4 -4
- package/esm2020/selection/selection-module.mjs +5 -5
- package/esm2020/selection/selection-toggle.mjs +4 -4
- package/esm2020/selection/selection.mjs +4 -4
- package/esm2020/version.mjs +1 -1
- package/fesm2015/column-resize.mjs +36 -36
- package/fesm2015/column-resize.mjs.map +1 -1
- package/fesm2015/material-experimental.mjs +1 -1
- package/fesm2015/material-experimental.mjs.map +1 -1
- package/fesm2015/mdc-autocomplete.mjs +15 -14
- package/fesm2015/mdc-autocomplete.mjs.map +1 -1
- package/fesm2015/mdc-button.mjs +34 -34
- package/fesm2015/mdc-button.mjs.map +1 -1
- package/fesm2015/mdc-card.mjs +47 -47
- package/fesm2015/mdc-card.mjs.map +1 -1
- package/fesm2015/mdc-checkbox.mjs +9 -7
- package/fesm2015/mdc-checkbox.mjs.map +1 -1
- package/fesm2015/mdc-chips/testing.mjs +2 -2
- package/fesm2015/mdc-chips/testing.mjs.map +1 -1
- package/fesm2015/mdc-chips.mjs +61 -57
- package/fesm2015/mdc-chips.mjs.map +1 -1
- package/fesm2015/mdc-core.mjs +10 -10
- package/fesm2015/mdc-core.mjs.map +1 -1
- package/fesm2015/mdc-dialog.mjs +38 -26
- package/fesm2015/mdc-dialog.mjs.map +1 -1
- package/fesm2015/mdc-form-field.mjs +76 -72
- package/fesm2015/mdc-form-field.mjs.map +1 -1
- package/fesm2015/mdc-input.mjs +7 -7
- package/fesm2015/mdc-input.mjs.map +1 -1
- package/fesm2015/mdc-list.mjs +64 -53
- package/fesm2015/mdc-list.mjs.map +1 -1
- package/fesm2015/mdc-menu.mjs +20 -20
- package/fesm2015/mdc-menu.mjs.map +1 -1
- package/fesm2015/mdc-paginator.mjs +8 -8
- package/fesm2015/mdc-paginator.mjs.map +1 -1
- package/fesm2015/mdc-progress-bar.mjs +8 -8
- package/fesm2015/mdc-progress-bar.mjs.map +1 -1
- package/fesm2015/mdc-progress-spinner.mjs +10 -7
- package/fesm2015/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2015/mdc-radio.mjs +10 -10
- package/fesm2015/mdc-radio.mjs.map +1 -1
- package/fesm2015/mdc-select.mjs +12 -12
- package/fesm2015/mdc-select.mjs.map +1 -1
- package/fesm2015/mdc-slide-toggle.mjs +7 -7
- package/fesm2015/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2015/mdc-slider.mjs +17 -17
- package/fesm2015/mdc-slider.mjs.map +1 -1
- package/fesm2015/mdc-snack-bar.mjs +23 -23
- package/fesm2015/mdc-snack-bar.mjs.map +1 -1
- package/fesm2015/mdc-table.mjs +57 -57
- package/fesm2015/mdc-table.mjs.map +1 -1
- package/fesm2015/mdc-tabs.mjs +39 -39
- package/fesm2015/mdc-tabs.mjs.map +1 -1
- package/fesm2015/mdc-tooltip.mjs +12 -11
- package/fesm2015/mdc-tooltip.mjs.map +1 -1
- package/fesm2015/menubar.mjs +10 -10
- package/fesm2015/menubar.mjs.map +1 -1
- package/fesm2015/popover-edit.mjs +25 -25
- package/fesm2015/popover-edit.mjs.map +1 -1
- package/fesm2015/selection.mjs +19 -19
- package/fesm2015/selection.mjs.map +1 -1
- package/fesm2020/column-resize.mjs +36 -36
- package/fesm2020/column-resize.mjs.map +1 -1
- package/fesm2020/material-experimental.mjs +1 -1
- package/fesm2020/material-experimental.mjs.map +1 -1
- package/fesm2020/mdc-autocomplete.mjs +15 -14
- package/fesm2020/mdc-autocomplete.mjs.map +1 -1
- package/fesm2020/mdc-button.mjs +34 -34
- package/fesm2020/mdc-button.mjs.map +1 -1
- package/fesm2020/mdc-card.mjs +47 -47
- package/fesm2020/mdc-card.mjs.map +1 -1
- package/fesm2020/mdc-checkbox.mjs +9 -7
- package/fesm2020/mdc-checkbox.mjs.map +1 -1
- package/fesm2020/mdc-chips/testing.mjs +1 -1
- package/fesm2020/mdc-chips/testing.mjs.map +1 -1
- package/fesm2020/mdc-chips.mjs +61 -57
- package/fesm2020/mdc-chips.mjs.map +1 -1
- package/fesm2020/mdc-core.mjs +10 -10
- package/fesm2020/mdc-core.mjs.map +1 -1
- package/fesm2020/mdc-dialog.mjs +38 -26
- package/fesm2020/mdc-dialog.mjs.map +1 -1
- package/fesm2020/mdc-form-field.mjs +75 -71
- package/fesm2020/mdc-form-field.mjs.map +1 -1
- package/fesm2020/mdc-input.mjs +7 -7
- package/fesm2020/mdc-input.mjs.map +1 -1
- package/fesm2020/mdc-list.mjs +64 -53
- package/fesm2020/mdc-list.mjs.map +1 -1
- package/fesm2020/mdc-menu.mjs +20 -20
- package/fesm2020/mdc-menu.mjs.map +1 -1
- package/fesm2020/mdc-paginator.mjs +8 -8
- package/fesm2020/mdc-paginator.mjs.map +1 -1
- package/fesm2020/mdc-progress-bar.mjs +8 -8
- package/fesm2020/mdc-progress-bar.mjs.map +1 -1
- package/fesm2020/mdc-progress-spinner.mjs +10 -7
- package/fesm2020/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2020/mdc-radio.mjs +10 -10
- package/fesm2020/mdc-radio.mjs.map +1 -1
- package/fesm2020/mdc-select.mjs +12 -12
- package/fesm2020/mdc-select.mjs.map +1 -1
- package/fesm2020/mdc-slide-toggle.mjs +7 -7
- package/fesm2020/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2020/mdc-slider.mjs +17 -17
- package/fesm2020/mdc-slider.mjs.map +1 -1
- package/fesm2020/mdc-snack-bar.mjs +23 -23
- package/fesm2020/mdc-snack-bar.mjs.map +1 -1
- package/fesm2020/mdc-table.mjs +57 -57
- package/fesm2020/mdc-table.mjs.map +1 -1
- package/fesm2020/mdc-tabs.mjs +39 -39
- package/fesm2020/mdc-tabs.mjs.map +1 -1
- package/fesm2020/mdc-tooltip.mjs +12 -11
- package/fesm2020/mdc-tooltip.mjs.map +1 -1
- package/fesm2020/menubar.mjs +10 -10
- package/fesm2020/menubar.mjs.map +1 -1
- package/fesm2020/popover-edit.mjs +25 -25
- package/fesm2020/popover-edit.mjs.map +1 -1
- package/fesm2020/selection.mjs +19 -19
- package/fesm2020/selection.mjs.map +1 -1
- package/mdc-button/_button-theme.scss +5 -2
- package/mdc-button/_icon-button-theme.scss +2 -1
- package/mdc-chips/chip-grid.d.ts +18 -5
- package/mdc-chips/chip-listbox.d.ts +1 -2
- package/mdc-chips/chip-set.d.ts +3 -1
- package/mdc-chips/testing/public-api.d.ts +1 -0
- package/mdc-dialog/dialog-content-directives.d.ts +5 -1
- package/mdc-form-field/_form-field-density.scss +2 -2
- package/mdc-form-field/_form-field-high-contrast.scss +14 -5
- package/mdc-form-field/_form-field-theme.scss +1 -1
- package/mdc-form-field/_mdc-text-field-structure-overrides.scss +2 -2
- package/mdc-form-field/directives/floating-label.d.ts +1 -3
- package/mdc-form-field/form-field.d.ts +17 -8
- package/mdc-list/_list-theme.scss +9 -0
- package/mdc-list/list.d.ts +5 -1
- package/mdc-menu/menu.d.ts +1 -1
- package/mdc-paginator/public-api.d.ts +1 -1
- package/mdc-select/_select-theme.scss +1 -1
- package/mdc-table/_table-theme.scss +2 -9
- package/mdc-tabs/_tabs-common.scss +9 -0
- package/mdc-theming/prebuilt/deeppurple-amber.css +1 -1
- package/mdc-theming/prebuilt/indigo-pink.css +1 -1
- package/mdc-theming/prebuilt/pink-bluegrey.css +1 -1
- package/mdc-theming/prebuilt/purple-green.css +1 -1
- package/package.json +8 -16
- package/esm2020/mdc-sidenav/index.mjs +0 -9
- package/esm2020/mdc-sidenav/mdc-sidenav_public_index.mjs +0 -5
- package/esm2020/mdc-sidenav/module.mjs +0 -23
- package/esm2020/mdc-sidenav/public-api.mjs +0 -9
- package/fesm2015/mdc-sidenav.mjs +0 -46
- package/fesm2015/mdc-sidenav.mjs.map +0 -1
- package/fesm2020/mdc-sidenav.mjs +0 -46
- package/fesm2020/mdc-sidenav.mjs.map +0 -1
- package/mdc-sidenav/_sidenav-theme.import.scss +0 -5
- package/mdc-sidenav/_sidenav-theme.scss +0 -28
- package/mdc-sidenav/index.d.ts +0 -8
- package/mdc-sidenav/mdc-sidenav_public_index.d.ts +0 -4
- package/mdc-sidenav/module.d.ts +0 -7
- package/mdc-sidenav/package.json +0 -9
- package/mdc-sidenav/public-api.d.ts +0 -8
|
@@ -38,9 +38,12 @@ import * as i8 from "./directives/hint";
|
|
|
38
38
|
*/
|
|
39
39
|
export const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');
|
|
40
40
|
let nextUniqueId = 0;
|
|
41
|
-
/** Default appearance used by the form
|
|
41
|
+
/** Default appearance used by the form field. */
|
|
42
42
|
const DEFAULT_APPEARANCE = 'fill';
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Whether the label for form fields should by default float `always`,
|
|
45
|
+
* `never`, or `auto`.
|
|
46
|
+
*/
|
|
44
47
|
const DEFAULT_FLOAT_LABEL = 'auto';
|
|
45
48
|
/** Default way that the subscript element height is set. */
|
|
46
49
|
const DEFAULT_SUBSCRIPT_SIZING = 'fixed';
|
|
@@ -66,7 +69,8 @@ export class MatFormField {
|
|
|
66
69
|
this._defaults = _defaults;
|
|
67
70
|
this._animationMode = _animationMode;
|
|
68
71
|
this._document = _document;
|
|
69
|
-
|
|
72
|
+
this._hideRequiredMarker = false;
|
|
73
|
+
/** The color palette for the form field. */
|
|
70
74
|
this.color = 'primary';
|
|
71
75
|
this._appearance = DEFAULT_APPEARANCE;
|
|
72
76
|
this._subscriptSizing = null;
|
|
@@ -96,7 +100,7 @@ export class MatFormField {
|
|
|
96
100
|
// MDC text-field will call this method on focus, blur and value change. It expects us
|
|
97
101
|
// to update the floating label state accordingly. Though we make this a noop because we
|
|
98
102
|
// want to react to floating label state changes through change detection. Relying on this
|
|
99
|
-
// adapter method would mean that the label would not update if the custom form
|
|
103
|
+
// adapter method would mean that the label would not update if the custom form field control
|
|
100
104
|
// sets "shouldLabelFloat" to true, or if the "floatLabel" input binding changes to "always".
|
|
101
105
|
floatLabel: () => { },
|
|
102
106
|
// Label shaking is not supported yet. It will require a new API for form field
|
|
@@ -108,7 +112,7 @@ export class MatFormField {
|
|
|
108
112
|
// closed. This works fine in the standard MDC text-field, but not in Angular where the
|
|
109
113
|
// floating label could change through interpolation. We want to be able to update the
|
|
110
114
|
// notched outline whenever the label content changes. Additionally, relying on focus or
|
|
111
|
-
// blur to open and close the notch does not work for us since abstract form
|
|
115
|
+
// blur to open and close the notch does not work for us since abstract form field controls
|
|
112
116
|
// have the ability to control the floating label state (i.e. `shouldLabelFloat`), and we
|
|
113
117
|
// want to update the notch whenever the `_shouldLabelFloat()` value changes.
|
|
114
118
|
getLabelWidth: () => 0,
|
|
@@ -123,25 +127,25 @@ export class MatFormField {
|
|
|
123
127
|
deactivateLineRipple: () => this._lineRipple && this._lineRipple.deactivate(),
|
|
124
128
|
// The foundation tries to register events on the input. This is not matching
|
|
125
129
|
// our concept of abstract form field controls. We handle each event manually
|
|
126
|
-
// in "stateChanges" based on the form
|
|
130
|
+
// in "stateChanges" based on the form field control state. The following events
|
|
127
131
|
// need to be handled: focus, blur. We do not handle the "input" event since
|
|
128
132
|
// that one is only needed for the text-field character count, which we do
|
|
129
|
-
// not implement as part of the form
|
|
133
|
+
// not implement as part of the form field, but should be implemented manually
|
|
130
134
|
// by consumers using template bindings.
|
|
131
135
|
registerInputInteractionHandler: () => { },
|
|
132
136
|
deregisterInputInteractionHandler: () => { },
|
|
133
137
|
// We do not have a reference to the native input since we work with abstract form field
|
|
134
138
|
// controls. MDC needs a reference to the native input optionally to handle character
|
|
135
139
|
// counting and value updating. These are both things we do not handle from within the
|
|
136
|
-
// form
|
|
140
|
+
// form field, so we can just return null.
|
|
137
141
|
getNativeInput: () => null,
|
|
138
142
|
// This method will never be called since we do not have the ability to add event listeners
|
|
139
143
|
// to the native input. This is because the form control is not necessarily an input, and
|
|
140
144
|
// the form field deals with abstract form controls of any type.
|
|
141
145
|
setLineRippleTransformOrigin: () => { },
|
|
142
|
-
// The foundation tries to register click and keyboard events on the form
|
|
146
|
+
// The foundation tries to register click and keyboard events on the form field to figure out
|
|
143
147
|
// if the input value changes through user interaction. Based on that, the foundation tries
|
|
144
|
-
// to focus the input. Since we do not handle the input value as part of the form
|
|
148
|
+
// to focus the input. Since we do not handle the input value as part of the form field, nor
|
|
145
149
|
// it's guaranteed to be an input (see adapter methods above), this is a noop.
|
|
146
150
|
deregisterTextFieldInteractionHandler: () => { },
|
|
147
151
|
registerTextFieldInteractionHandler: () => { },
|
|
@@ -156,10 +160,15 @@ export class MatFormField {
|
|
|
156
160
|
setInputAttr: () => undefined,
|
|
157
161
|
removeInputAttr: () => undefined,
|
|
158
162
|
};
|
|
159
|
-
if (_defaults
|
|
160
|
-
|
|
163
|
+
if (_defaults) {
|
|
164
|
+
if (_defaults.appearance) {
|
|
165
|
+
this.appearance = _defaults.appearance;
|
|
166
|
+
}
|
|
167
|
+
this._hideRequiredMarker = Boolean(_defaults?.hideRequiredMarker);
|
|
168
|
+
if (_defaults.color) {
|
|
169
|
+
this.color = _defaults.color;
|
|
170
|
+
}
|
|
161
171
|
}
|
|
162
|
-
this._hideRequiredMarker = _defaults?.hideRequiredMarker ?? false;
|
|
163
172
|
}
|
|
164
173
|
/** Whether the required marker should be hidden. */
|
|
165
174
|
get hideRequiredMarker() {
|
|
@@ -175,20 +184,20 @@ export class MatFormField {
|
|
|
175
184
|
set floatLabel(value) {
|
|
176
185
|
if (value !== this._floatLabel) {
|
|
177
186
|
this._floatLabel = value;
|
|
178
|
-
// For backwards compatibility. Custom form
|
|
179
|
-
// the "floatLabel" input and expect the form
|
|
187
|
+
// For backwards compatibility. Custom form field controls or directives might set
|
|
188
|
+
// the "floatLabel" input and expect the form field view to be updated automatically.
|
|
180
189
|
// e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just
|
|
181
190
|
// emit the "stateChanges" observable. TODO(devversion): consider removing.
|
|
182
191
|
this._changeDetectorRef.markForCheck();
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
|
-
/** The form
|
|
194
|
+
/** The form field appearance style. */
|
|
186
195
|
get appearance() {
|
|
187
196
|
return this._appearance;
|
|
188
197
|
}
|
|
189
198
|
set appearance(value) {
|
|
190
199
|
const oldValue = this._appearance;
|
|
191
|
-
this._appearance = value ||
|
|
200
|
+
this._appearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;
|
|
192
201
|
if (this._appearance === 'outline' && this._appearance !== oldValue) {
|
|
193
202
|
this._refreshOutlineNotchWidth();
|
|
194
203
|
// If the appearance has been switched to `outline`, the label offset needs to be updated.
|
|
@@ -227,7 +236,7 @@ export class MatFormField {
|
|
|
227
236
|
this._foundation = new MDCTextFieldFoundation(this._adapter);
|
|
228
237
|
// MDC uses the "shouldFloat" getter to know whether the label is currently floating. This
|
|
229
238
|
// does not match our implementation of when the label floats because we support more cases.
|
|
230
|
-
// For example, consumers can set "@Input floatLabel" to always, or the custom form
|
|
239
|
+
// For example, consumers can set "@Input floatLabel" to always, or the custom form field
|
|
231
240
|
// control can set "MatFormFieldControl#shouldLabelFloat" to true. To ensure that MDC knows
|
|
232
241
|
// when the label is floating, we overwrite the property to be based on the method we use to
|
|
233
242
|
// determine the current state of the floating label.
|
|
@@ -237,10 +246,10 @@ export class MatFormField {
|
|
|
237
246
|
// By default, the foundation determines the validity of the text-field from the
|
|
238
247
|
// specified native input. Since we don't pass a native input to the foundation because
|
|
239
248
|
// abstract form controls are not necessarily consisting of an input, we handle the
|
|
240
|
-
// text-field validity through the abstract form
|
|
249
|
+
// text-field validity through the abstract form field control state.
|
|
241
250
|
this._foundation.isValid = () => !this._control.errorState;
|
|
242
251
|
// Initial focus state sync. This happens rarely, but we want to account for
|
|
243
|
-
// it in case the form
|
|
252
|
+
// it in case the form field control has "focused" set to true on init.
|
|
244
253
|
this._updateFocusState();
|
|
245
254
|
// Initial notch width update. This is needed in case the text-field label floats
|
|
246
255
|
// on initialization, and renders inside of the notched outline.
|
|
@@ -288,7 +297,7 @@ export class MatFormField {
|
|
|
288
297
|
return this._hasFloatingLabel() ? this._labelId : null;
|
|
289
298
|
}
|
|
290
299
|
/**
|
|
291
|
-
* Gets an ElementRef for the element that a overlay attached to the form
|
|
300
|
+
* Gets an ElementRef for the element that a overlay attached to the form field
|
|
292
301
|
* should be positioned relative to.
|
|
293
302
|
*/
|
|
294
303
|
getConnectedOverlayOrigin() {
|
|
@@ -296,19 +305,19 @@ export class MatFormField {
|
|
|
296
305
|
}
|
|
297
306
|
/** Animates the placeholder up and locks it in position. */
|
|
298
307
|
_animateAndLockLabel() {
|
|
299
|
-
// This is for backwards compatibility only. Consumers of the form
|
|
308
|
+
// This is for backwards compatibility only. Consumers of the form field might use
|
|
300
309
|
// this method. e.g. the autocomplete trigger. This method has been added to the non-MDC
|
|
301
|
-
// form
|
|
310
|
+
// form field because setting "floatLabel" to "always" caused the label to float without
|
|
302
311
|
// animation. This is different in MDC where the label always animates, so this method
|
|
303
312
|
// is no longer necessary. There doesn't seem any benefit in adding logic to allow changing
|
|
304
313
|
// the floating label state without animations. The non-MDC implementation was inconsistent
|
|
305
314
|
// because it always animates if "floatLabel" is set away from "always".
|
|
306
|
-
// TODO(devversion): consider removing this method when releasing the MDC form
|
|
315
|
+
// TODO(devversion): consider removing this method when releasing the MDC form field.
|
|
307
316
|
if (this._hasFloatingLabel()) {
|
|
308
317
|
this.floatLabel = 'always';
|
|
309
318
|
}
|
|
310
319
|
}
|
|
311
|
-
/** Initializes the registered form
|
|
320
|
+
/** Initializes the registered form field control. */
|
|
312
321
|
_initializeControl() {
|
|
313
322
|
const control = this._control;
|
|
314
323
|
if (control.controlType) {
|
|
@@ -336,7 +345,7 @@ export class MatFormField {
|
|
|
336
345
|
/** Initializes the prefix and suffix containers. */
|
|
337
346
|
_initializePrefixAndSuffix() {
|
|
338
347
|
this._checkPrefixAndSuffixTypes();
|
|
339
|
-
// Mark the form
|
|
348
|
+
// Mark the form field as dirty whenever the prefix or suffix children change. This
|
|
340
349
|
// is necessary because we conditionally display the prefix/suffix containers based
|
|
341
350
|
// on whether there is projected content.
|
|
342
351
|
merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {
|
|
@@ -346,7 +355,7 @@ export class MatFormField {
|
|
|
346
355
|
}
|
|
347
356
|
/**
|
|
348
357
|
* Initializes the subscript by validating hints and synchronizing "aria-describedby" ids
|
|
349
|
-
* with the custom form
|
|
358
|
+
* with the custom form field control. Also subscribes to hint and error changes in order
|
|
350
359
|
* to be able to validate and synchronize ids on change.
|
|
351
360
|
*/
|
|
352
361
|
_initializeSubscript() {
|
|
@@ -373,9 +382,9 @@ export class MatFormField {
|
|
|
373
382
|
_updateFocusState() {
|
|
374
383
|
// Usually the MDC foundation would call "activateFocus" and "deactivateFocus" whenever
|
|
375
384
|
// certain DOM events are emitted. This is not possible in our implementation of the
|
|
376
|
-
// form
|
|
377
|
-
// of type input, nor do we have a reference to a native form
|
|
378
|
-
// we handle the focus by checking if the abstract form
|
|
385
|
+
// form field because we support abstract form field controls which are not necessarily
|
|
386
|
+
// of type input, nor do we have a reference to a native form field control element. Instead
|
|
387
|
+
// we handle the focus by checking if the abstract form field control focused state changes.
|
|
379
388
|
if (this._control.focused && !this._isFocused) {
|
|
380
389
|
this._isFocused = true;
|
|
381
390
|
this._foundation.activateFocus();
|
|
@@ -388,7 +397,7 @@ export class MatFormField {
|
|
|
388
397
|
/**
|
|
389
398
|
* The floating label in the docked state needs to account for prefixes. The horizontal offset
|
|
390
399
|
* is calculated whenever the appearance changes to `outline`, the prefixes change, or when the
|
|
391
|
-
* form
|
|
400
|
+
* form field is added to the DOM. This method sets up all subscriptions which are needed to
|
|
392
401
|
* trigger the label offset update. In general, we want to avoid performing measurements often,
|
|
393
402
|
* so we rely on the `NgZone` as indicator when the offset should be recalculated, instead of
|
|
394
403
|
* checking every change detection cycle.
|
|
@@ -420,7 +429,7 @@ export class MatFormField {
|
|
|
420
429
|
/**
|
|
421
430
|
* Whether the label should display in the infix. Labels in the outline appearance are
|
|
422
431
|
* displayed as part of the notched-outline and are horizontally offset to account for
|
|
423
|
-
* form
|
|
432
|
+
* form field prefix content. This won't work in server side rendering since we cannot
|
|
424
433
|
* measure the width of the prefix container. To make the docked label appear as if the
|
|
425
434
|
* right offset has been calculated, we forcibly render the label inside the infix. Since
|
|
426
435
|
* the label is part of the infix, the label cannot overflow the prefix content.
|
|
@@ -541,7 +550,7 @@ export class MatFormField {
|
|
|
541
550
|
floatingLabel.style.transform = '';
|
|
542
551
|
return;
|
|
543
552
|
}
|
|
544
|
-
// If the form
|
|
553
|
+
// If the form field is not attached to the DOM yet (e.g. in a tab), we defer
|
|
545
554
|
// the label offset update until the zone stabilizes.
|
|
546
555
|
if (!this._isAttachedToDom()) {
|
|
547
556
|
this._needsOutlineLabelOffsetUpdateOnStable = true;
|
|
@@ -576,9 +585,9 @@ export class MatFormField {
|
|
|
576
585
|
return document.documentElement.contains(element);
|
|
577
586
|
}
|
|
578
587
|
}
|
|
579
|
-
MatFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
580
|
-
MatFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: MatFormField, selector: "mat-form-field", inputs: { hideRequiredMarker: "hideRequiredMarker", color: "color", floatLabel: "floatLabel", appearance: "appearance", subscriptSizing: "subscriptSizing", hintLabel: "hintLabel" }, host: { properties: { "class.mat-mdc-form-field-label-always-float": "_shouldAlwaysFloat()", "class.mat-mdc-form-field-has-icon-prefix": "_hasIconPrefix", "class.mat-mdc-form-field-has-icon-suffix": "_hasIconSuffix", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-form-field-no-animations": "_animationMode === \"NoopAnimations\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-hide-placeholder": "_hasFloatingLabel() && !_shouldLabelFloat()", "class.mat-focused": "_control.focused", "class.mat-primary": "color !== \"accent\" && color !== \"warn\"", "class.mat-accent": "color === \"accent\"", "class.mat-warn": "color === \"warn\"", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")" }, classAttribute: "mat-mdc-form-field" }, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], queries: [{ propertyName: "_labelChildNonStatic", first: true, predicate: MatLabel, descendants: true }, { propertyName: "_labelChildStatic", first: true, predicate: MatLabel, descendants: true, static: true }, { propertyName: "_formFieldControl", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "_prefixChildren", predicate: MAT_PREFIX, descendants: true }, { propertyName: "_suffixChildren", predicate: MAT_SUFFIX, descendants: true }, { propertyName: "_errorChildren", predicate: MAT_ERROR, descendants: true }, { propertyName: "_hintChildren", predicate: MatHint, descendants: true }], viewQueries: [{ propertyName: "_textField", first: true, predicate: ["textField"], descendants: true }, { propertyName: "_iconPrefixContainer", first: true, predicate: ["iconPrefixContainer"], descendants: true }, { propertyName: "_textPrefixContainer", first: true, predicate: ["textPrefixContainer"], descendants: true }, { propertyName: "_floatingLabel", first: true, predicate: MatFormFieldFloatingLabel, descendants: true }, { propertyName: "_notchedOutline", first: true, predicate: MatFormFieldNotchedOutline, descendants: true }, { propertyName: "_lineRipple", first: true, predicate: MatFormFieldLineRipple, descendants: true }], exportAs: ["matFormField"], ngImport: i0, template: "<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n\n *Note*: We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM.\n -->\n <label matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n [required]=\"!hideRequiredMarker && _control.required\"\n *ngIf=\"_hasFloatingLabel()\"\n (cdkObserveContent)=\"_refreshOutlineNotchWidth()\"\n [cdkObserveContentDisabled]=\"!_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\">\n <ng-content select=\"mat-label\"></ng-content>\n </label>\n</ng-template>\n\n<div class=\"mat-mdc-text-field-wrapper mdc-text-field\" #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n <div class=\"mat-mdc-form-field-focus-overlay\" *ngIf=\"!_hasOutline() && !_control.disabled\"></div>\n <div class=\"mat-mdc-form-field-flex\">\n <div *ngIf=\"_hasOutline()\" matFormFieldNotchedOutline\n [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\"\n [matFormFieldNotchedOutlineWidth]=\"_outlineNotchWidth\">\n <ng-template [ngIf]=\"!_forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n </div>\n\n <div class=\"mat-mdc-form-field-icon-prefix\" *ngIf=\"_hasIconPrefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-text-prefix\" *ngIf=\"_hasTextPrefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-infix\">\n <ng-template [ngIf]=\"!_hasOutline() || _forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-text-suffix\" *ngIf=\"_hasTextSuffix\">\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-icon-suffix\" *ngIf=\"_hasIconSuffix\">\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n </div>\n\n <div matFormFieldLineRipple *ngIf=\"!_hasOutline()\"></div>\n</div>\n\n<div class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div class=\"mat-mdc-form-field-error-wrapper\" *ngSwitchCase=\"'error'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <mat-hint *ngIf=\"hintLabel\" [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</div>\n", styles: [".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: 0%){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:transparent}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\"\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px;z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;border:none}.mat-mdc-form-field .mdc-floating-label.mdc-floating-label{line-height:normal}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:transparent;display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;right:0;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}\n"], components: [{ type: i3.MatFormFieldNotchedOutline, selector: "div[matFormFieldNotchedOutline]", inputs: ["matFormFieldNotchedOutlineWidth", "matFormFieldNotchedOutlineOpen"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatFormFieldFloatingLabel, selector: "label[matFormFieldFloatingLabel]", inputs: ["floating", "required"] }, { type: i6.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.MatFormFieldLineRipple, selector: "div[matFormFieldLineRipple]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
588
|
+
MatFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.4", ngImport: i0, type: MatFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.Directionality }, { token: i2.Platform }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
589
|
+
MatFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.4", type: MatFormField, selector: "mat-form-field", inputs: { hideRequiredMarker: "hideRequiredMarker", color: "color", floatLabel: "floatLabel", appearance: "appearance", subscriptSizing: "subscriptSizing", hintLabel: "hintLabel" }, host: { properties: { "class.mat-mdc-form-field-label-always-float": "_shouldAlwaysFloat()", "class.mat-mdc-form-field-has-icon-prefix": "_hasIconPrefix", "class.mat-mdc-form-field-has-icon-suffix": "_hasIconSuffix", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-form-field-no-animations": "_animationMode === \"NoopAnimations\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-hide-placeholder": "_hasFloatingLabel() && !_shouldLabelFloat()", "class.mat-focused": "_control.focused", "class.mat-primary": "color !== \"accent\" && color !== \"warn\"", "class.mat-accent": "color === \"accent\"", "class.mat-warn": "color === \"warn\"", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")" }, classAttribute: "mat-mdc-form-field" }, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], queries: [{ propertyName: "_labelChildNonStatic", first: true, predicate: MatLabel, descendants: true }, { propertyName: "_labelChildStatic", first: true, predicate: MatLabel, descendants: true, static: true }, { propertyName: "_formFieldControl", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "_prefixChildren", predicate: MAT_PREFIX, descendants: true }, { propertyName: "_suffixChildren", predicate: MAT_SUFFIX, descendants: true }, { propertyName: "_errorChildren", predicate: MAT_ERROR, descendants: true }, { propertyName: "_hintChildren", predicate: MatHint, descendants: true }], viewQueries: [{ propertyName: "_textField", first: true, predicate: ["textField"], descendants: true }, { propertyName: "_iconPrefixContainer", first: true, predicate: ["iconPrefixContainer"], descendants: true }, { propertyName: "_textPrefixContainer", first: true, predicate: ["textPrefixContainer"], descendants: true }, { propertyName: "_floatingLabel", first: true, predicate: MatFormFieldFloatingLabel, descendants: true }, { propertyName: "_notchedOutline", first: true, predicate: MatFormFieldNotchedOutline, descendants: true }, { propertyName: "_lineRipple", first: true, predicate: MatFormFieldLineRipple, descendants: true }], exportAs: ["matFormField"], ngImport: i0, template: "<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n\n *Note*: We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM.\n -->\n <label matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n *ngIf=\"_hasFloatingLabel()\"\n (cdkObserveContent)=\"_refreshOutlineNotchWidth()\"\n [cdkObserveContentDisabled]=\"!_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\">\n <ng-content select=\"mat-label\"></ng-content>\n <!--\n We set the required marker as a separate element, in order to make it easier to target if\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\n pick it up.\n -->\n <span\n *ngIf=\"!hideRequiredMarker && _control.required\"\n aria-hidden=\"true\"\n class=\"mat-mdc-form-field-required-marker mdc-floating-label--required\"></span>\n </label>\n</ng-template>\n\n<div class=\"mat-mdc-text-field-wrapper mdc-text-field\" #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n <div class=\"mat-mdc-form-field-focus-overlay\" *ngIf=\"!_hasOutline() && !_control.disabled\"></div>\n <div class=\"mat-mdc-form-field-flex\">\n <div *ngIf=\"_hasOutline()\" matFormFieldNotchedOutline\n [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\"\n [matFormFieldNotchedOutlineWidth]=\"_outlineNotchWidth\">\n <ng-template [ngIf]=\"!_forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n </div>\n\n <div class=\"mat-mdc-form-field-icon-prefix\" *ngIf=\"_hasIconPrefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-text-prefix\" *ngIf=\"_hasTextPrefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-infix\">\n <ng-template [ngIf]=\"!_hasOutline() || _forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-text-suffix\" *ngIf=\"_hasTextSuffix\">\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-icon-suffix\" *ngIf=\"_hasIconSuffix\">\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n </div>\n\n <div matFormFieldLineRipple *ngIf=\"!_hasOutline()\"></div>\n</div>\n\n<div class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div class=\"mat-mdc-form-field-error-wrapper\" *ngSwitchCase=\"'error'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <mat-hint *ngIf=\"hintLabel\" [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</div>\n", styles: [".mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: 0%){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:transparent}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\"\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px;z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:transparent;display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;right:0;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}\n"], components: [{ type: i3.MatFormFieldNotchedOutline, selector: "div[matFormFieldNotchedOutline]", inputs: ["matFormFieldNotchedOutlineWidth", "matFormFieldNotchedOutlineOpen"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatFormFieldFloatingLabel, selector: "label[matFormFieldFloatingLabel]", inputs: ["floating"] }, { type: i6.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.MatFormFieldLineRipple, selector: "div[matFormFieldLineRipple]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
590
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.4", ngImport: i0, type: MatFormField, decorators: [{
|
|
582
591
|
type: Component,
|
|
583
592
|
args: [{ selector: 'mat-form-field', exportAs: 'matFormField', animations: [matFormFieldAnimations.transitionMessages], host: {
|
|
584
593
|
'class': 'mat-mdc-form-field',
|
|
@@ -606,7 +615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
606
615
|
'[class.ng-valid]': '_shouldForward("valid")',
|
|
607
616
|
'[class.ng-invalid]': '_shouldForward("invalid")',
|
|
608
617
|
'[class.ng-pending]': '_shouldForward("pending")',
|
|
609
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], template: "<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n\n *Note*: We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM.\n -->\n <label matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n [required]=\"!hideRequiredMarker && _control.required\"\n *ngIf=\"_hasFloatingLabel()\"\n (cdkObserveContent)=\"_refreshOutlineNotchWidth()\"\n [cdkObserveContentDisabled]=\"!_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\">\n <ng-content select=\"mat-label\"></ng-content>\n </label>\n</ng-template>\n\n<div class=\"mat-mdc-text-field-wrapper mdc-text-field\" #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n <div class=\"mat-mdc-form-field-focus-overlay\" *ngIf=\"!_hasOutline() && !_control.disabled\"></div>\n <div class=\"mat-mdc-form-field-flex\">\n <div *ngIf=\"_hasOutline()\" matFormFieldNotchedOutline\n [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\"\n [matFormFieldNotchedOutlineWidth]=\"_outlineNotchWidth\">\n <ng-template [ngIf]=\"!_forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n </div>\n\n <div class=\"mat-mdc-form-field-icon-prefix\" *ngIf=\"_hasIconPrefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-text-prefix\" *ngIf=\"_hasTextPrefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-infix\">\n <ng-template [ngIf]=\"!_hasOutline() || _forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-text-suffix\" *ngIf=\"_hasTextSuffix\">\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-icon-suffix\" *ngIf=\"_hasIconSuffix\">\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n </div>\n\n <div matFormFieldLineRipple *ngIf=\"!_hasOutline()\"></div>\n</div>\n\n<div class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div class=\"mat-mdc-form-field-error-wrapper\" *ngSwitchCase=\"'error'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <mat-hint *ngIf=\"hintLabel\" [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</div>\n", styles: [".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: 0%){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:transparent}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\"\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px;z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;border:none}.mat-mdc-form-field .mdc-floating-label.mdc-floating-label{line-height:normal}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:transparent;display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;right:0;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}\n"] }]
|
|
618
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], template: "<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n\n *Note*: We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n read if it comes before the control in the DOM.\n -->\n <label matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n *ngIf=\"_hasFloatingLabel()\"\n (cdkObserveContent)=\"_refreshOutlineNotchWidth()\"\n [cdkObserveContentDisabled]=\"!_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.id\"\n [attr.aria-owns]=\"_control.id\">\n <ng-content select=\"mat-label\"></ng-content>\n <!--\n We set the required marker as a separate element, in order to make it easier to target if\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\n pick it up.\n -->\n <span\n *ngIf=\"!hideRequiredMarker && _control.required\"\n aria-hidden=\"true\"\n class=\"mat-mdc-form-field-required-marker mdc-floating-label--required\"></span>\n </label>\n</ng-template>\n\n<div class=\"mat-mdc-text-field-wrapper mdc-text-field\" #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick && _control.onContainerClick($event)\">\n <div class=\"mat-mdc-form-field-focus-overlay\" *ngIf=\"!_hasOutline() && !_control.disabled\"></div>\n <div class=\"mat-mdc-form-field-flex\">\n <div *ngIf=\"_hasOutline()\" matFormFieldNotchedOutline\n [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\"\n [matFormFieldNotchedOutlineWidth]=\"_outlineNotchWidth\">\n <ng-template [ngIf]=\"!_forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n </div>\n\n <div class=\"mat-mdc-form-field-icon-prefix\" *ngIf=\"_hasIconPrefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-text-prefix\" *ngIf=\"_hasTextPrefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-infix\">\n <ng-template [ngIf]=\"!_hasOutline() || _forceDisplayInfixLabel()\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </ng-template>\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-text-suffix\" *ngIf=\"_hasTextSuffix\">\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n <div class=\"mat-mdc-form-field-icon-suffix\" *ngIf=\"_hasIconSuffix\">\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n </div>\n\n <div matFormFieldLineRipple *ngIf=\"!_hasOutline()\"></div>\n</div>\n\n<div class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n [ngSwitch]=\"_getDisplayedMessages()\">\n <div class=\"mat-mdc-form-field-error-wrapper\" *ngSwitchCase=\"'error'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <ng-content select=\"mat-error\"></ng-content>\n </div>\n\n <div class=\"mat-mdc-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\"\n [@transitionMessages]=\"_subscriptAnimationState\">\n <mat-hint *ngIf=\"hintLabel\" [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</div>\n", styles: [".mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: 0%){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: 0%){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: 0%){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: 0%){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:transparent}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\"\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px;z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\"\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:transparent;display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;right:0;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}\n"] }]
|
|
610
619
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.Directionality }, { type: i2.Platform }, { type: undefined, decorators: [{
|
|
611
620
|
type: Optional
|
|
612
621
|
}, {
|
|
@@ -672,4 +681,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
672
681
|
}], hintLabel: [{
|
|
673
682
|
type: Input
|
|
674
683
|
}] } });
|
|
675
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUlMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLE9BQU8sSUFBSSxtQkFBbUIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZC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O2dCQXdCRixlQUFlO3NCQURsQixLQUFLO2dCQVdGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1RoZW1lUGFsZXR0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtZXhwZXJpbWVudGFsL21kYy1jb3JlJztcbmltcG9ydCB7XG4gIGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IsXG4gIGdldE1hdEZvcm1GaWVsZE1pc3NpbmdDb250cm9sRXJyb3IsXG4gIE1BVF9GT1JNX0ZJRUxELFxuICBtYXRGb3JtRmllbGRBbmltYXRpb25zLFxuICBNYXRGb3JtRmllbGRDb250cm9sLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7QU5JTUFUSU9OX01PRFVMRV9UWVBFfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgTURDVGV4dEZpZWxkQWRhcHRlcixcbiAgTURDVGV4dEZpZWxkRm91bmRhdGlvbixcbiAgbnVtYmVycyBhcyBtZGNUZXh0RmllbGROdW1iZXJzLFxufSBmcm9tICdAbWF0ZXJpYWwvdGV4dGZpZWxkJztcbmltcG9ydCB7bWVyZ2UsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TUFUX0VSUk9SLCBNYXRFcnJvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL2Vycm9yJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkRmxvYXRpbmdMYWJlbH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Zsb2F0aW5nLWxhYmVsJztcbmltcG9ydCB7TWF0SGludH0gZnJvbSAnLi9kaXJlY3RpdmVzL2hpbnQnO1xuaW1wb3J0IHtNYXRMYWJlbH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xhYmVsJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTGluZVJpcHBsZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2xpbmUtcmlwcGxlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmV9IGZyb20gJy4vZGlyZWN0aXZlcy9ub3RjaGVkLW91dGxpbmUnO1xuaW1wb3J0IHtNQVRfUFJFRklYLCBNYXRQcmVmaXh9IGZyb20gJy4vZGlyZWN0aXZlcy9wcmVmaXgnO1xuaW1wb3J0IHtNQVRfU1VGRklYLCBNYXRTdWZmaXh9IGZyb20gJy4vZGlyZWN0aXZlcy9zdWZmaXgnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbi8qKiBUeXBlIGZvciB0aGUgYXZhaWxhYmxlIGZsb2F0TGFiZWwgdmFsdWVzLiAqL1xuZXhwb3J0IHR5cGUgRmxvYXRMYWJlbFR5cGUgPSAnYWx3YXlzJyB8ICdhdXRvJztcblxuLyoqIFBvc3NpYmxlIGFwcGVhcmFuY2Ugc3R5bGVzIGZvciB0aGUgZm9ybSBmaWVsZC4gKi9cbmV4cG9ydCB0eXBlIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnZmlsbCcgfCAnb3V0bGluZSc7XG5cbi8qKiBCZWhhdmlvcnMgZm9yIGhvdyB0aGUgc3Vic2NyaXB0IGhlaWdodCBpcyBzZXQuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRTaXppbmcgPSAnZml4ZWQnIHwgJ2R5bmFtaWMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGZvcm0gZmllbGQgdGhhdCBjYW4gYmUgY29uZmlndXJlZFxuICogdXNpbmcgdGhlIGBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlNgIGluamVjdGlvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyB7XG4gIGFwcGVhcmFuY2U/OiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBoaWRlUmVxdWlyZWRNYXJrZXI/OiBib29sZWFuO1xuICBmbG9hdExhYmVsPzogRmxvYXRMYWJlbFR5cGU7XG4gIHN1YnNjcmlwdFNpemluZz86IFN1YnNjcmlwdFNpemluZztcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlXG4gKiBkZWZhdWx0IG9wdGlvbnMgZm9yIGFsbCBmb3JtIGZpZWxkIHdpdGhpbiBhbiBhcHAuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnM+KFxuICAnTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TJyxcbik7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKiogRGVmYXVsdCBhcHBlYXJhbmNlIHVzZWQgYnkgdGhlIGZvcm0tZmllbGQuICovXG5jb25zdCBERUZBVUxUX0FQUEVBUkFOQ0U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnZmlsbCc7XG5cbi8qKiBEZWZhdWx0IGFwcGVhcmFuY2UgdXNlZCBieSB0aGUgZm9ybS1maWVsZC4gKi9cbmNvbnN0IERFRkFVTFRfRkxPQVRfTEFCRUw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuXG4vKiogRGVmYXVsdCB3YXkgdGhhdCB0aGUgc3Vic2NyaXB0IGVsZW1lbnQgaGVpZ2h0IGlzIHNldC4gKi9cbmNvbnN0IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORzogU3Vic2NyaXB0U2l6aW5nID0gJ2ZpeGVkJztcblxuLyoqXG4gKiBEZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscyBpbiBhIE1EQyB0ZXh0LWZpZWxkLiBUaGlzIHZhbHVlIGhhcyBiZWVuXG4gKiBleHRyYWN0ZWQgZnJvbSB0aGUgTURDIHRleHQtZmllbGQgc3R5bGVzIGJlY2F1c2Ugd2UgcHJvZ3JhbW1hdGljYWxseSBtb2RpZnkgdGhlIGRvY2tlZFxuICogbGFiZWwgdHJhbnNmb3JtLCBidXQgZG8gbm90IHdhbnQgdG8gYWNjaWRlbnRhbGx5IGRpc2NhcmQgdGhlIGRlZmF1bHQgbGFiZWwgdHJhbnNmb3JtLlxuICovXG5jb25zdCBGTE9BVElOR19MQUJFTF9ERUZBVUxUX0RPQ0tFRF9UUkFOU0ZPUk0gPSBgdHJhbnNsYXRlWSgtNTAlKWA7XG5cbi8qKlxuICogSG9yaXpvbnRhbCBwYWRkaW5nIGluIHBpeGVscyB1c2VkIGJ5IHRoZSBNREMgZm9yIHRoZSB3cmFwcGVyIGNvbnRhaW5pbmcgaW5maXguXG4gKiBUaGlzIHZhbHVlIGlzIGV4dHJhY3RlZCBmcm9tIE1EQydzIFNhc3MgdmFyaWFibGVzLiBTZWUgYCRwYWRkaW5nLWhvcml6b250YWxgLlxuICovXG5jb25zdCBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA9IDE2O1xuXG4vKiogQ29udGFpbmVyIGZvciBmb3JtIGNvbnRyb2xzIHRoYXQgYXBwbGllcyBNYXRlcmlhbCBEZXNpZ24gc3R5bGluZyBhbmQgYmVoYXZpb3IuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybS1maWVsZCcsXG4gIGV4cG9ydEFzOiAnbWF0Rm9ybUZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQuY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFttYXRGb3JtRmllbGRBbmltYXRpb25zLnRyYW5zaXRpb25NZXNzYWdlc10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LW1kYy1mb3JtLWZpZWxkJyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1sYWJlbC1hbHdheXMtZmxvYXRdJzogJ19zaG91bGRBbHdheXNGbG9hdCgpJyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1oYXMtaWNvbi1wcmVmaXhdJzogJ19oYXNJY29uUHJlZml4JyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1oYXMtaWNvbi1zdWZmaXhdJzogJ19oYXNJY29uU3VmZml4JyxcblxuICAgIC8vIE5vdGUgdGhhdCB0aGVzZSBjbGFzc2VzIHJldXNlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBub24tTURDIHZlcnNpb24sIGJlY2F1c2UgdGhleSBjYW4gYmVcbiAgICAvLyBjb25zaWRlcmVkIGEgcHVibGljIEFQSSBzaW5jZSBjdXN0b20gZm9ybSBjb250cm9scyBtYXkgdXNlIHRoZW0gdG8gc3R5bGUgdGhlbXNlbHZlcy5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzIwNTAyI2Rpc2N1c3Npb25fcjQ4NjEyNDkwMS5cbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdJzogJ19jb250cm9sLmVycm9yU3RhdGUnLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdJzogJ19jb250cm9sLmRpc2FibGVkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWRdJzogJ19jb250cm9sLmF1dG9maWxsZWQnLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtbm8tYW5pbWF0aW9uc10nOiAnX2FuaW1hdGlvbk1vZGUgPT09IFwiTm9vcEFuaW1hdGlvbnNcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdJzogJ2FwcGVhcmFuY2UgPT0gXCJmaWxsXCInLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSc6ICdhcHBlYXJhbmNlID09IFwib3V0bGluZVwiJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdJzogJ19oYXNGbG9hdGluZ0xhYmVsKCkgJiYgIV9zaG91bGRMYWJlbEZsb2F0KCknLFxuICAgICdbY2xhc3MubWF0LWZvY3VzZWRdJzogJ19jb250cm9sLmZvY3VzZWQnLFxuICAgICdbY2xhc3MubWF0LXByaW1hcnldJzogJ2NvbG9yICE9PSBcImFjY2VudFwiICYmIGNvbG9yICE9PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5tYXQtYWNjZW50XSc6ICdjb2xvciA9PT0gXCJhY2NlbnRcIicsXG4gICAgJ1tjbGFzcy5tYXQtd2Fybl0nOiAnY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAnW2NsYXNzLm5nLXVudG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ1bnRvdWNoZWRcIiknLFxuICAgICdbY2xhc3MubmctdG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ0b3VjaGVkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXByaXN0aW5lXSc6ICdfc2hvdWxkRm9yd2FyZChcInByaXN0aW5lXCIpJyxcbiAgICAnW2NsYXNzLm5nLWRpcnR5XSc6ICdfc2hvdWxkRm9yd2FyZChcImRpcnR5XCIpJyxcbiAgICAnW2NsYXNzLm5nLXZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcInZhbGlkXCIpJyxcbiAgICAnW2NsYXNzLm5nLWludmFsaWRdJzogJ19zaG91bGRGb3J3YXJkKFwiaW52YWxpZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1wZW5kaW5nXSc6ICdfc2hvdWxkRm9yd2FyZChcInBlbmRpbmdcIiknLFxuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE1BVF9GT1JNX0ZJRUxELCB1c2VFeGlzdGluZzogTWF0Rm9ybUZpZWxkfV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEZvcm1GaWVsZFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBAVmlld0NoaWxkKCd0ZXh0RmllbGQnKSBfdGV4dEZpZWxkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaWNvblByZWZpeENvbnRhaW5lcicpIF9pY29uUHJlZml4Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGV4dFByZWZpeENvbnRhaW5lcicpIF90ZXh0UHJlZml4Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsKSBfZmxvYXRpbmdMYWJlbDogTWF0Rm9ybUZpZWxkRmxvYXRpbmdMYWJlbCB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZSkgX25vdGNoZWRPdXRsaW5lOiBNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZSB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGRMaW5lUmlwcGxlKSBfbGluZVJpcHBsZTogTWF0Rm9ybUZpZWxkTGluZVJpcHBsZSB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKE1hdExhYmVsKSBfbGFiZWxDaGlsZE5vblN0YXRpYzogTWF0TGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBDb250ZW50Q2hpbGQoTWF0TGFiZWwsIHtzdGF0aWM6IHRydWV9KSBfbGFiZWxDaGlsZFN0YXRpYzogTWF0TGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBDb250ZW50Q2hpbGQoTWF0Rm9ybUZpZWxkQ29udHJvbCkgX2Zvcm1GaWVsZENvbnRyb2w6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNQVRfUFJFRklYLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfcHJlZml4Q2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRQcmVmaXg+O1xuICBAQ29udGVudENoaWxkcmVuKE1BVF9TVUZGSVgsIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9zdWZmaXhDaGlsZHJlbjogUXVlcnlMaXN0PE1hdFN1ZmZpeD47XG4gIEBDb250ZW50Q2hpbGRyZW4oTUFUX0VSUk9SLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfZXJyb3JDaGlsZHJlbjogUXVlcnlMaXN0PE1hdEVycm9yPjtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRIaW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfaGludENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0SGludD47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHJlcXVpcmVkIG1hcmtlciBzaG91bGQgYmUgaGlkZGVuLiAqL1xuICBASW5wdXQoKVxuICBnZXQgaGlkZVJlcXVpcmVkTWFya2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI7XG4gIH1cbiAgc2V0IGhpZGVSZXF1aXJlZE1hcmtlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9oaWRlUmVxdWlyZWRNYXJrZXI6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBjb2xvciBwYWxldHRlIGZvciB0aGUgZm9ybS1maWVsZC4gKi9cbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBmbG9hdCBhcyB0aGUgdXNlciB0eXBlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGZsb2F0TGFiZWwoKTogRmxvYXRMYWJlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9mbG9hdExhYmVsIHx8IHRoaXMuX2RlZmF1bHRzPy5mbG9hdExhYmVsIHx8IERFRkFVTFRfRkxPQVRfTEFCRUw7XG4gIH1cbiAgc2V0IGZsb2F0TGFiZWwodmFsdWU6IEZsb2F0TGFiZWxUeXBlKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9mbG9hdExhYmVsKSB7XG4gICAgICB0aGlzLl9mbG9hdExhYmVsID0gdmFsdWU7XG4gICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIEN1c3RvbSBmb3JtLWZpZWxkIGNvbnRyb2xzIG9yIGRpcmVjdGl2ZXMgbWlnaHQgc2V0XG4gICAgICAvLyB0aGUgXCJmbG9hdExhYmVsXCIgaW5wdXQgYW5kIGV4cGVjdCB0aGUgZm9ybS1maWVsZCB2aWV3IHRvIGJlIHVwZGF0ZWQgYXV0b21hdGljYWxseS5cbiAgICAgIC8vIGUuZy4gYXV0b2NvbXBsZXRlIHRyaWdnZXIuIElkZWFsbHkgd2UnZCBnZXQgcmlkIG9mIHRoaXMgYW5kIHRoZSBjb25zdW1lcnMgd291bGQganVzdFxuICAgICAgLy8gZW1pdCB0aGUgXCJzdGF0ZUNoYW5nZXNcIiBvYnNlcnZhYmxlLiBUT0RPKGRldnZlcnNpb24pOiBjb25zaWRlciByZW1vdmluZy5cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9mbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcblxuICAvKiogVGhlIGZvcm0tZmllbGQgYXBwZWFyYW5jZSBzdHlsZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGFwcGVhcmFuY2UoKTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVhcmFuY2U7XG4gIH1cbiAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX2FwcGVhcmFuY2U7XG4gICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlIHx8ICh0aGlzLl9kZWZhdWx0cyAmJiB0aGlzLl9kZWZhdWx0cy5hcHBlYXJhbmNlKSB8fCBERUZBVUxUX0FQUEVBUkFOQ0U7XG4gICAgaWYgKHRoaXMuX2FwcGVhcmFuY2UgPT09ICdvdXRsaW5lJyAmJiB0aGlzLl9hcHBlYXJhbmNlICE9PSBvbGRWYWx1ZSkge1xuICAgICAgdGhpcy5fcmVmcmVzaE91dGxpbmVOb3RjaFdpZHRoKCk7XG5cbiAgICAgIC8vIElmIHRoZSBhcHBlYXJhbmNlIGhhcyBiZWVuIHN3aXRjaGVkIHRvIGBvdXRsaW5lYCwgdGhlIGxhYmVsIG9mZnNldCBuZWVkcyB0byBiZSB1cGRhdGVkLlxuICAgICAgLy8gVGhlIHVwZGF0ZSBjYW4gaGFwcGVuIG9uY2UgdGhlIHZpZXcgaGFzIGJlZW4gcmUtY2hlY2tlZCwgYnV0IG5vdCBpbW1lZGlhdGVseSBiZWNhdXNlXG4gICAgICAvLyB0aGUgdmlldyBoYXMgbm90IGJlZW4gdXBkYXRlZCBhbmQgdGhlIG5vdGNoZWQtb3V0bGluZSBmbG9hdGluZyBsYWJlbCBpcyBub3QgcHJlc2VudC5cbiAgICAgIHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9hcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gREVGQVVMVF9BUFBFQVJBTkNFO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb3JtIGZpZWxkIHNob3VsZCByZXNlcnZlIHNwYWNlIGZvciBvbmUgbGluZSBvZiBoaW50L2Vycm9yIHRleHQgKGRlZmF1bHQpXG4gICAqIG9yIHRvIGhhdmUgdGhlIHNwYWNpbmcgZ3JvdyBmcm9tIDBweCBhcyBuZWVkZWQgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIGhpbnQvZXJyb3IgY29udGVudC5cbiAgICogTm90ZSB0aGF0IHdoZW4gdXNpbmcgZHluYW1pYyBzaXppbmcsIGxheW91dCBzaGlmdHMgd2lsbCBvY2N1ciB3aGVuIGhpbnQvZXJyb3IgdGV4dCBjaGFuZ2VzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHN1YnNjcmlwdFNpemluZygpOiBTdWJzY3JpcHRTaXppbmcge1xuICAgIHJldHVybiB0aGlzLl9zdWJzY3JpcHRTaXppbmcgfHwgdGhpcy5fZGVmYXVsdHM/LnN1YnNjcmlwdFNpemluZyB8fCBERUZBVUxUX1NVQlNDUklQVF9TSVpJTkc7XG4gIH1cbiAgc2V0IHN1YnNjcmlwdFNpemluZyh2YWx1ZTogU3Vic2NyaXB0U2l6aW5nKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0U2l6aW5nID0gdmFsdWUgfHwgdGhpcy5fZGVmYXVsdHM/LnN1YnNjcmlwdFNpemluZyB8fCBERUZBVUxUX1NVQlNDUklQVF9TSVpJTkc7XG4gIH1cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmcgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGV4dCBmb3IgdGhlIGZvcm0gZmllbGQgaGludC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGhpbnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9oaW50TGFiZWw7XG4gIH1cbiAgc2V0IGhpbnRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faGludExhYmVsID0gdmFsdWU7XG4gICAgdGhpcy5fcHJvY2Vzc0hpbnRzKCk7XG4gIH1cbiAgcHJpdmF0ZSBfaGludExhYmVsID0gJyc7XG5cbiAgX2hhc0ljb25QcmVmaXggPSBmYWxzZTtcbiAgX2hhc1RleHRQcmVmaXggPSBmYWxzZTtcbiAgX2hhc0ljb25TdWZmaXggPSBmYWxzZTtcbiAgX2hhc1RleHRTdWZmaXggPSBmYWxzZTtcblxuICAvLyBVbmlxdWUgaWQgZm9yIHRoZSBpbnRlcm5hbCBmb3JtIGZpZWxkIGxhYmVsLlxuICByZWFkb25seSBfbGFiZWxJZCA9IGBtYXQtbWRjLWZvcm0tZmllbGQtbGFiZWwtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gIC8vIFVuaXF1ZSBpZCBmb3IgdGhlIGhpbnQgbGFiZWwuXG4gIHJlYWRvbmx5IF9oaW50TGFiZWxJZCA9IGBtYXQtbWRjLWhpbnQtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gIC8qKiBTdGF0ZSBvZiB0aGUgbWF0LWhpbnQgYW5kIG1hdC1lcnJvciBhbmltYXRpb25zLiAqL1xuICBfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUgPSAnJztcblxuICAvKiogV2lkdGggb2YgdGhlIG91dGxpbmUgbm90Y2guICovXG4gIF9vdXRsaW5lTm90Y2hXaWR0aCA9IDA7XG5cbiAgLyoqIEdldHMgdGhlIGN1cnJlbnQgZm9ybSBmaWVsZCBjb250cm9sICovXG4gIGdldCBfY29udHJvbCgpOiBNYXRGb3JtRmllbGRDb250cm9sPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2wgfHwgdGhpcy5fZm9ybUZpZWxkQ29udHJvbDtcbiAgfVxuICBzZXQgX2NvbnRyb2wodmFsdWUpIHtcbiAgICB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2lzRm9jdXNlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2w6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcbiAgcHJpdmF0ZSBfZm91bmRhdGlvbjogTURDVGV4dEZpZWxkRm91bmRhdGlvbjtcbiAgcHJpdmF0ZSBfbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9hZGFwdGVyOiBNRENUZXh0RmllbGRBZGFwdGVyID0ge1xuICAgIGFkZENsYXNzOiBjbGFzc05hbWUgPT4gdGhpcy5fdGV4dEZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpLFxuICAgIHJlbW92ZUNsYXNzOiBjbGFzc05hbWUgPT4gdGhpcy5fdGV4dEZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpLFxuICAgIGhhc0NsYXNzOiBjbGFzc05hbWUgPT4gdGhpcy5fdGV4dEZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSksXG5cbiAgICBoYXNMYWJlbDogKCkgPT4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpLFxuICAgIGlzRm9jdXNlZDogKCkgPT4gdGhpcy5fY29udHJvbC5mb2N1c2VkLFxuICAgIGhhc091dGxpbmU6ICgpID0+IHRoaXMuX2hhc091dGxpbmUoKSxcblxuICAgIC8vIE1EQyB0ZXh0LWZpZWxkIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCBvbiBmb2N1cywgYmx1ciBhbmQgdmFsdWUgY2hhbmdlLiBJdCBleHBlY3RzIHVzXG4gICAgLy8gdG8gdXBkYXRlIHRoZSBmbG9hdGluZyBsYWJlbCBzdGF0ZSBhY2NvcmRpbmdseS4gVGhvdWdoIHdlIG1ha2UgdGhpcyBhIG5vb3AgYmVjYXVzZSB3ZVxuICAgIC8vIHdhbnQgdG8gcmVhY3QgdG8gZmxvYXRpbmcgbGFiZWwgc3RhdGUgY2hhbmdlcyB0aHJvdWdoIGNoYW5nZSBkZXRlY3Rpb24uIFJlbHlpbmcgb24gdGhpc1xuICAgIC8vIGFkYXB0ZXIgbWV0aG9kIHdvdWxkIG1lYW4gdGhhdCB0aGUgbGFiZWwgd291bGQgbm90IHVwZGF0ZSBpZiB0aGUgY3VzdG9tIGZvcm0tZmllbGQgY29udHJvbFxuICAgIC8vIHNldHMgXCJzaG91bGRMYWJlbEZsb2F0XCIgdG8gdHJ1ZSwgb3IgaWYgdGhlIFwiZmxvYXRMYWJlbFwiIGlucHV0IGJpbmRpbmcgY2hhbmdlcyB0byBcImFsd2F5c1wiLlxuICAgIGZsb2F0TGFiZWw6ICgpID0+IHt9LFxuXG4gICAgLy8gTGFiZWwgc2hha2luZyBpcyBub3Qgc3VwcG9ydGVkIHlldC4gSXQgd2lsbCByZXF1aXJlIGEgbmV3IEFQSSBmb3IgZm9ybSBmaWVsZFxuICAgIC8vIGNvbnRyb2xzIHRvIHRyaWdnZXIgdGhlIHNoYWtpbmcuIFRoaXMgY2FuIGJlIGEgZmVhdHVyZSBpbiB0aGUgZnV0dXJlLlxuICAgIC8vIFRPRE8oZGV2dmVyc2lvbik6IGV4cGxvcmUgb3B0aW9ucyBvbiBob3cgdG8gaW50ZWdyYXRlIGxhYmVsIHNoYWtpbmcuXG4gICAgc2hha2VMYWJlbDogKCkgPT4ge30sXG5cbiAgICAvLyBNREMgYnkgZGVmYXVsdCB1cGRhdGVzIHRoZSBub3RjaGVkLW91dGxpbmUgd2hlbmV2ZXIgdGhlIHRleHQtZmllbGQgcmVjZWl2ZXMgZm9jdXMsIG9yXG4gICAgLy8gaXMgYmVpbmcgYmx1cnJlZC4gSXQgYWxzbyBjb21wdXRlcyB0aGUgbGFiZWwgd2lkdGggZXZlcnkgdGltZSB0aGUgbm90Y2ggaXMgb3BlbmVkIG9yXG4gICAgLy8gY2xvc2VkLiBUaGlzIHdvcmtzIGZpbmUgaW4gdGhlIHN0YW5kYXJkIE1EQyB0ZXh0LWZpZWxkLCBidXQgbm90IGluIEFuZ3VsYXIgd2hlcmUgdGhlXG4gICAgLy8gZmxvYXRpbmcgbGFiZWwgY291bGQgY2hhbmdlIHRocm91Z2ggaW50ZXJwb2xhdGlvbi4gV2Ugd2FudCB0byBiZSBhYmxlIHRvIHVwZGF0ZSB0aGVcbiAgICAvLyBub3RjaGVkIG91dGxpbmUgd2hlbmV2ZXIgdGhlIGxhYmVsIGNvbnRlbnQgY2hhbmdlcy4gQWRkaXRpb25hbGx5LCByZWx5aW5nIG9uIGZvY3VzIG9yXG4gICAgLy8gYmx1ciB0byBvcGVuIGFuZCBjbG9zZSB0aGUgbm90Y2ggZG9lcyBub3Qgd29yayBmb3IgdXMgc2luY2UgYWJzdHJhY3QgZm9ybS1maWVsZCBjb250cm9sc1xuICAgIC8vIGhhdmUgdGhlIGFiaWxpdHkgdG8gY29udHJvbCB0aGUgZmxvYXRpbmcgbGFiZWwgc3RhdGUgKGkuZS4gYHNob3VsZExhYmVsRmxvYXRgKSwgYW5kIHdlXG4gICAgLy8gd2FudCB0byB1cGRhdGUgdGhlIG5vdGNoIHdoZW5ldmVyIHRoZSBgX3Nob3VsZExhYmVsRmxvYXQoKWAgdmFsdWUgY2hhbmdlcy5cbiAgICBnZXRMYWJlbFdpZHRoOiAoKSA9PiAwLFxuXG4gICAgLy8gV2UgZG9uJ3QgdXNlIGBzZXRMYWJlbFJlcXVpcmVkYCBhcyBpdCByZWxpZXMgb24gYSBtdXRhdGlvbiBvYnNlcnZlciBmb3IgZGV0ZXJtaW5pbmdcbiAgICAvLyB3aGVuIHRoZSBgcmVxdWlyZWRgIHN0YXRlIGNoYW5nZXMuIFRoaXMgaXMgbm90IHJlbGlhYmxlIGFuZCBmbGV4aWJsZSBlbm91Z2ggZm9yXG4gICAgLy8gb3VyIGZvcm0gZmllbGQsIGFzIHdlIHN1cHBvcnQgY3VzdG9tIGNvbnRyb2xzIGFuZCBkZXRlY3QgdGhlIHJlcXVpcmVkIHN0YXRlIHRocm91Z2hcbiAgICAvLyBhIHB1YmxpYyBwcm9wZXJ0eSBpbiB0aGUgYWJzdHJhY3QgZm9ybSBjb250cm9sLlxuICAgIHNldExhYmVsUmVxdWlyZWQ6ICgpID0+IHt9LFxuICAgIG5vdGNoT3V0bGluZTogKCkgPT4ge30sXG4gICAgY2xvc2VPdXRsaW5lOiAoKSA9PiB7fSxcblxuICAgIGFjdGl2YXRlTGluZVJpcHBsZTogKCkgPT4gdGhpcy5fbGluZVJpcHBsZSAmJiB0aGlzLl9saW5lUmlwcGxlLmFjdGl2YXRlKCksXG4gICAgZGVhY3RpdmF0ZUxpbmVSaXBwbGU6ICgpID0+IHRoaXMuX2xpbmVSaXBwbGUgJiYgdGhpcy5fbGluZVJpcHBsZS5kZWFjdGl2YXRlKCksXG5cbiAgICAvLyBUaGUgZm91bmRhdGlvbiB0cmllcyB0byByZWdpc3RlciBldmVudHMgb24gdGhlIGlucHV0LiBUaGlzIGlzIG5vdCBtYXRjaGluZ1xuICAgIC8vIG91ciBjb25jZXB0IG9mIGFic3RyYWN0IGZvcm0gZmllbGQgY29udHJvbHMuIFdlIGhhbmRsZSBlYWNoIGV2ZW50IG1hbnVhbGx5XG4gICAgLy8gaW4gXCJzdGF0ZUNoYW5nZXNcIiBiYXNlZCBvbiB0aGUgZm9ybS1maWVsZCBjb250cm9sIHN0YXRlLiBUaGUgZm9sbG93aW5nIGV2ZW50c1xuICAgIC8vIG5lZWQgdG8gYmUgaGFuZGxlZDogZm9jdXMsIGJsdXIuIFdlIGRvIG5vdCBoYW5kbGUgdGhlIFwiaW5wdXRcIiBldmVudCBzaW5jZVxuICAgIC8vIHRoYXQgb25lIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgdGV4dC1maWVsZCBjaGFyYWN0ZXIgY291bnQsIHdoaWNoIHdlIGRvXG4gICAgLy8gbm90IGltcGxlbWVudCBhcyBwYXJ0IG9mIHRoZSBmb3JtLWZpZWxkLCBidXQgc2hvdWxkIGJlIGltcGxlbWVudGVkIG1hbnVhbGx5XG4gICAgLy8gYnkgY29uc3VtZXJzIHVzaW5nIHRlbXBsYXRlIGJpbmRpbmdzLlxuICAgIHJlZ2lzdGVySW5wdXRJbnRlcmFjdGlvbkhhbmRsZXI6ICgpID0+IHt9LFxuICAgIGRlcmVnaXN0ZXJJbnB1dEludGVyYWN0aW9uSGFuZGxlcjogKCkgPT4ge30sXG5cbiAgICAvLyBXZSBkbyBub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmF0aXZlIGlucHV0IHNpbmNlIHdlIHdvcmsgd2l0aCBhYnN0cmFjdCBmb3JtIGZpZWxkXG4gICAgLy8gY29udHJvbHMuIE1EQyBuZWVkcyBhIHJlZmVyZW5jZSB0byB0aGUgbmF0aXZlIGlucHV0IG9wdGlvbmFsbHkgdG8gaGFuZGxlIGNoYXJhY3RlclxuICAgIC8vIGNvdW50aW5nIGFuZCB2YWx1ZSB1cGRhdGluZy4gVGhlc2UgYXJlIGJvdGggdGhpbmdzIHdlIGRvIG5vdCBoYW5kbGUgZnJvbSB3aXRoaW4gdGhlXG4gICAgLy8gZm9ybS1maWVsZCwgc28gd2UgY2FuIGp1c3QgcmV0dXJuIG51bGwuXG4gICAgZ2V0TmF0aXZlSW5wdXQ6ICgpID0+IG51bGwsXG5cbiAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBzaW5jZSB3ZSBkbyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBhZGQgZXZlbnQgbGlzdGVuZXJzXG4gICAgLy8gdG8gdGhlIG5hdGl2ZSBpbnB1dC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBmb3JtIGNvbnRyb2wgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGlucHV0LCBhbmRcbiAgICAvLyB0aGUgZm9ybSBmaWVsZCBkZWFscyB3aXRoIGFic3RyYWN0IGZvcm0gY29udHJvbHMgb2YgYW55IHR5cGUuXG4gICAgc2V0TGluZVJpcHBsZVRyYW5zZm9ybU9yaWdpbjogKCkgPT4ge30sXG5cbiAgICAvLyBUaGUgZm91bmRhdGlvbiB0cmllcyB0byByZWdpc3RlciBjbGljayBhbmQga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBmb3JtLWZpZWxkIHRvIGZpZ3VyZSBvdXRcbiAgICAvLyBpZiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcyB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEJhc2VkIG9uIHRoYXQsIHRoZSBmb3VuZGF0aW9uIHRyaWVzXG4gICAgLy8gdG8gZm9jdXMgdGhlIGlucHV0LiBTaW5jZSB3ZSBkbyBub3QgaGFuZGxlIHRoZSBpbnB1dCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSBmb3JtLWZpZWxkLCBub3JcbiAgICAvLyBpdCdzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW5wdXQgKHNlZSBhZGFwdGVyIG1ldGhvZHMgYWJvdmUpLCB0aGlzIGlzIGEgbm9vcC5cbiAgICBkZXJlZ2lzdGVyVGV4dEZpZWxkSW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcbiAgICByZWdpc3RlclRleHRGaWVsZEludGVyYWN0aW9uSGFuZGxlcjogKCkgPT4ge30sXG5cbiAgICAvLyBUaGUgZm91bmRhdGlvbiB0cmllcyB0byBzZXR1cCBhIFwiTXV0YXRpb25PYnNlcnZlclwiIGluIG9yZGVyIHRvIHdhdGNoIGZvciBhdHRyaWJ1dGVzXG4gICAgLy8gbGlrZSBcIm1heGxlbmd0aFwiIG9yIFwicGF0dGVyblwiIHRvIGNoYW5nZS4gVGhlIGZvdW5kYXRpb24gd2lsbCB1cGRhdGUgdGhlIHZhbGlkaXR5IHN0YXRlXG4gICAgLy8gYmFzZWQgb24gdGhhdC4gV2UgZG8gbm90IG5lZWQgdGhpcyBsb2dpYyBzaW5jZSB3ZSBoYW5kbGUgdGhlIHZhbGlkaXR5IHRocm91Z2ggdGhlXG4gICAgLy8gYWJzdHJhY3QgZm9ybSBjb250cm9sIGluc3RhbmNlLlxuICAgIGRlcmVnaXN0ZXJWYWxpZGF0aW9uQXR0cmlidXRlQ2hhbmdlSGFuZGxlcjogKCkgPT4ge30sXG4gICAgcmVnaXN0ZXJWYWxpZGF0aW9uQXR0cmlidXRlQ2hhbmdlSGFuZGxlcjogKCkgPT4gbnVsbCBhcyBhbnksXG5cbiAgICAvLyBVc2VkIGJ5IGZvdW5kYXRpb24gdG8gZHluYW1pY2FsbHkgcmVtb3ZlIGFyaWEtZGVzY3JpYmVkYnkgd2hlbiB0aGUgaGludCB0ZXh0XG4gICAgLy8gaXMgc2hvd24gb25seSBvbiBpbnZhbGlkIHN0YXRlLCB3aGljaCBzaG91bGQgbm90IGJlIGFwcGxpY2FibGUgaGVyZS5cbiAgICBzZXRJbnB1dEF0dHI6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZW1vdmVJbnB1dEF0dHI6ICgpID0+IHVuZGVmaW5lZCxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKVxuICAgIHByaXZhdGUgX2RlZmF1bHRzPzogTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBTklNQVRJT05fTU9EVUxFX1RZUEUpIHB1YmxpYyBfYW5pbWF0aW9uTW9kZT86IHN0cmluZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudD86IGFueSxcbiAgKSB7XG4gICAgaWYgKF9kZWZhdWx0cyAmJiBfZGVmYXVsdHMuYXBwZWFyYW5jZSkge1xuICAgICAgdGhpcy5hcHBlYXJhbmNlID0gX2RlZmF1bHRzLmFwcGVhcmFuY2U7XG4gICAgfVxuXG4gICAgdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyID0gX2RlZmF1bHRzPy5oaWRlUmVxdWlyZWRNYXJrZXIgPz8gZmFsc2U7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbiA9IG5ldyBNRENUZXh0RmllbGRGb3VuZGF0aW9uKHRoaXMuX2FkYXB0ZXIpO1xuXG4gICAgLy8gTURDIHVzZXMgdGhlIFwic2hvdWxkRmxvYXRcIiBnZXR0ZXIgdG8ga25vdyB3aGV0aGVyIHRoZSBsYWJlbCBpcyBjdXJyZW50bHkgZmxvYXRpbmcuIFRoaXNcbiAgICAvLyBkb2VzIG5vdCBtYXRjaCBvdXIgaW1wbGVtZW50YXRpb24gb2Ygd2hlbiB0aGUgbGFiZWwgZmxvYXRzIGJlY2F1c2Ugd2Ugc3VwcG9ydCBtb3JlIGNhc2VzLlxuICAgIC8vIEZvciBleGFtcGxlLCBjb25zdW1lcnMgY2FuIHNldCBcIkBJbnB1dCBmbG9hdExhYmVsXCIgdG8gYWx3YXlzLCBvciB0aGUgY3VzdG9tIGZvcm0tZmllbGRcbiAgICAvLyBjb250cm9sIGNhbiBzZXQgXCJNYXRGb3JtRmllbGRDb250cm9sI3Nob3VsZExhYmVsRmxvYXRcIiB0byB0cnVlLiBUbyBlbnN1cmUgdGhhdCBNREMga25vd3NcbiAgICAvLyB3aGVuIHRoZSBsYWJlbCBpcyBmbG9hdGluZywgd2Ugb3ZlcndyaXRlIHRoZSBwcm9wZXJ0eSB0byBiZSBiYXNlZCBvbiB0aGUgbWV0aG9kIHdlIHVzZSB0b1xuICAgIC8vIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuX2ZvdW5kYXRpb24sICdzaG91bGRGbG9hdCcsIHtcbiAgICAgIGdldDogKCkgPT4gdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpLFxuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZvdW5kYXRpb24gZGV0ZXJtaW5lcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHRleHQtZmllbGQgZnJvbSB0aGVcbiAgICAvLyBzcGVjaWZpZWQgbmF0aXZlIGlucHV0LiBTaW5jZSB3ZSBkb24ndCBwYXNzIGEgbmF0aXZlIGlucHV0IHRvIHRoZSBmb3VuZGF0aW9uIGJlY2F1c2VcbiAgICAvLyBhYnN0cmFjdCBmb3JtIGNvbnRyb2xzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lzdGluZyBvZiBhbiBpbnB1dCwgd2UgaGFuZGxlIHRoZVxuICAgIC8vIHRleHQtZmllbGQgdmFsaWRpdHkgdGhyb3VnaCB0aGUgYWJzdHJhY3QgZm9ybS1maWVsZCBjb250cm9sIHN0YXRlLlxuICAgIHRoaXMuX2ZvdW5kYXRpb24uaXNWYWxpZCA9ICgpID0+ICF0aGlzLl9jb250cm9sLmVycm9yU3RhdGU7XG5cbiAgICAvLyBJbml0aWFsIGZvY3VzIHN0YXRlIHN5bmMuIFRoaXMgaGFwcGVucyByYXJlbHksIGJ1dCB3ZSB3YW50IHRvIGFjY291bnQgZm9yXG4gICAgLy8gaXQgaW4gY2FzZSB0aGUgZm9ybS1maWVsZCBjb250cm9sIGhhcyBcImZvY3VzZWRcIiBzZXQgdG8gdHJ1ZSBvbiBpbml0LlxuICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAvLyBJbml0aWFsIG5vdGNoIHdpZHRoIHVwZGF0ZS4gVGhpcyBpcyBuZWVkZWQgaW4gY2FzZSB0aGUgdGV4dC1maWVsZCBsYWJlbCBmbG9hdHNcbiAgICAvLyBvbiBpbml0aWFsaXphdGlvbiwgYW5kIHJlbmRlcnMgaW5zaWRlIG9mIHRoZSBub3RjaGVkIG91dGxpbmUuXG4gICAgdGhpcy5fcmVmcmVzaE91dGxpbmVOb3RjaFdpZHRoKCk7XG4gICAgLy8gTWFrZSBzdXJlIGZvbnRzIGFyZSBsb2FkZWQgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSB3aWR0aC5cbiAgICAvLyB6b25lLmpzIGN1cnJlbnRseSBkb2Vzbid0IHBhdGNoIHRoZSBGb250RmFjZVNldCBBUEkgc28gdHdvIGNhbGxzIHRvXG4gICAgLy8gX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCBpcyBuZWVkZWQgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseSBpbiBhc3luYyB0ZXN0cy5cbiAgICAvLyBGdXJ0aGVybW9yZSBpZiB0aGUgZm9udCB0YWtlcyBhIGxvbmcgdGltZSB0byBsb2FkIHdlIHdhbnQgdGhlIG91dGxpbmUgbm90Y2ggdG8gYmUgY2xvc2VcbiAgICAvLyB0byB0aGUgY29ycmVjdCB3aWR0aCBmcm9tIHRoZSBzdGFydCB0aGVuIGNvcnJlY3QgaXRzZWxmIHdoZW4gdGhlIGZvbnRzIGxvYWQuXG4gICAgaWYgKHRoaXMuX2RvY3VtZW50Py5mb250cz8ucmVhZHkpIHtcbiAgICAgIHRoaXMuX2RvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9udEZhY2VTZXQgaXMgbm90IHN1cHBvcnRlZCBpbiBJRVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSwgMTAwKTtcbiAgICB9XG4gICAgLy8gRW5hYmxlIGFuaW1hdGlvbnMgbm93LiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgYW5pbWF0ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICB0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgLy8gQmVjYXVzZSB0aGUgYWJvdmUgY2hhbmdlcyBhIHZhbHVlIHVzZWQgaW4gdGhlIHRlbXBsYXRlIGFmdGVyIGl0IHdhcyBjaGVja2VkLCB3ZSBuZWVkXG4gICAgLy8gdG8gdHJpZ2dlciBDRCBvciB0aGUgY2hhbmdlIG1pZ2h0IG5vdCBiZSByZWZsZWN0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgQ0Qgc2NoZWR1bGVkLlxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZUNvbnRyb2woKTtcbiAgICB0aGlzLl9pbml0aWFsaXplU3Vic2NyaXB0KCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgdGhpcy5fYXNzZXJ0Rm9ybUZpZWxkQ29udHJvbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbj8uZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaWQgb2YgdGhlIGxhYmVsIGVsZW1lbnQuIElmIG5vIGxhYmVsIGlzIHByZXNlbnQsIHJldHVybnMgYG51bGxgLlxuICAgKi9cbiAgZ2V0TGFiZWxJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpID8gdGhpcy5fbGFiZWxJZCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBFbGVtZW50UmVmIGZvciB0aGUgZWxlbWVudCB0aGF0IGEgb3ZlcmxheSBhdHRhY2hlZCB0byB0aGUgZm9ybS1maWVsZFxuICAgKiBzaG91bGQgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0by5cbiAgICovXG4gIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRGaWVsZCB8fCB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqIEFuaW1hdGVzIHRoZSBwbGFjZWhvbGRlciB1cCBhbmQgbG9ja3MgaXQgaW4gcG9zaXRpb24uICovXG4gIF9hbmltYXRlQW5kTG9ja0xhYmVsKCk6IHZvaWQge1xuICAgIC8vIFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuIENvbnN1bWVycyBvZiB0aGUgZm9ybS1maWVsZCBtaWdodCB1c2VcbiAgICAvLyB0aGlzIG1ldGhvZC4gZS5nLiB0aGUgYXV0b2NvbXBsZXRlIHRyaWdnZXIuIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBub24tTURDXG4gICAgLy8gZm9ybS1maWVsZCBiZWNhdXNlIHNldHRpbmcgXCJmbG9hdExhYmVsXCIgdG8gXCJhbHdheXNcIiBjYXVzZWQgdGhlIGxhYmVsIHRvIGZsb2F0IHdpdGhvdXRcbiAgICAvLyBhbmltYXRpb24uIFRoaXMgaXMgZGlmZmVyZW50IGluIE1EQyB3aGVyZSB0aGUgbGFiZWwgYWx3YXlzIGFuaW1hdGVzLCBzbyB0aGlzIG1ldGhvZFxuICAgIC8vIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuIFRoZXJlIGRvZXNuJ3Qgc2VlbSBhbnkgYmVuZWZpdCBpbiBhZGRpbmcgbG9naWMgdG8gYWxsb3cgY2hhbmdpbmdcbiAgICAvLyB0aGUgZmxvYXRpbmcgbGFiZWwgc3RhdGUgd2l0aG91dCBhbmltYXRpb25zLiBUaGUgbm9uLU1EQyBpbXBsZW1lbnRhdGlvbiB3YXMgaW5jb25zaXN0ZW50XG4gICAgLy8gYmVjYXVzZSBpdCBhbHdheXMgYW5pbWF0ZXMgaWYgXCJmbG9hdExhYmVsXCIgaXMgc2V0IGF3YXkgZnJvbSBcImFsd2F5c1wiLlxuICAgIC8vIFRPRE8oZGV2dmVyc2lvbik6IGNvbnNpZGVyIHJlbW92aW5nIHRoaXMgbWV0aG9kIHdoZW4gcmVsZWFzaW5nIHRoZSBNREMgZm9ybS1maWVsZC5cbiAgICBpZiAodGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpKSB7XG4gICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICB9XG4gIH1cblxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIHJlZ2lzdGVyZWQgZm9ybS1maWVsZCBjb250cm9sLiAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplQ29udHJvbCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcbiAgICAgICAgYG1hdC1tZGMtZm9ybS1maWVsZC10eXBlLSR7Y29udHJvbC5jb250cm9sVHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgY2hpbGQgY29udHJvbCBzdGF0ZSBpbiBvcmRlciB0byB1cGRhdGUgdGhlIGZvcm0gZmllbGQgVUkuXG4gICAgY29udHJvbC5zdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBSdW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICBpZiAoY29udHJvbC5uZ0NvbnRyb2wgJiYgY29udHJvbC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzKSB7XG4gICAgICBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKSB7XG4gICAgdGhpcy5faGFzSWNvblByZWZpeCA9ICEhdGhpcy5fcHJlZml4Q2hpbGRyZW4uZmluZChwID0+ICFwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc1RleHRQcmVmaXggPSAhIXRoaXMuX3ByZWZpeENoaWxkcmVuLmZpbmQocCA9PiBwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc0ljb25TdWZmaXggPSAhIXRoaXMuX3N1ZmZpeENoaWxkcmVuLmZpbmQocyA9PiAhcy5faXNUZXh0KTtcbiAgICB0aGlzLl9oYXNUZXh0U3VmZml4ID0gISF0aGlzLl9zdWZmaXhDaGlsZHJlbi5maW5kKHMgPT4gcy5faXNUZXh0KTtcbiAgfVxuXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgcHJlZml4IGFuZCBzdWZmaXggY29udGFpbmVycy4gKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpIHtcbiAgICB0aGlzLl9jaGVja1ByZWZpeEFuZFN1ZmZpeFR5cGVzKCk7XG4gICAgLy8gTWFyayB0aGUgZm9ybS1maWVsZCBhcyBkaXJ0eSB3aGVuZXZlciB0aGUgcHJlZml4IG9yIHN1ZmZpeCBjaGlsZHJlbiBjaGFuZ2UuIFRoaXNcbiAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjb25kaXRpb25hbGx5IGRpc3BsYXkgdGhlIHByZWZpeC9zdWZmaXggY29udGFpbmVycyBiYXNlZFxuICAgIC8vIG9uIHdoZXRoZXIgdGhlcmUgaXMgcHJvamVjdGVkIGNvbnRlbnQuXG4gICAgbWVyZ2UodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcywgdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBzdWJzY3JpcHQgYnkgdmFsaWRhdGluZyBoaW50cyBhbmQgc3luY2hyb25pemluZyBcImFyaWEtZGVzY3JpYmVkYnlcIiBpZHNcbiAgICogd2l0aCB0aGUgY3VzdG9tIGZvcm0tZmllbGQgY29udHJvbC4gQWxzbyBzdWJzY3JpYmVzIHRvIGhpbnQgYW5kIGVycm9yIGNoYW5nZXMgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byB2YWxpZGF0ZSBhbmQgc3luY2hyb25pemUgaWRzIG9uIGNoYW5nZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVTdWJzY3JpcHQoKSB7XG4gICAgLy8gUmUtdmFsaWRhdGUgd2hlbiB0aGUgbnVtYmVyIG9mIGhpbnRzIGNoYW5nZXMuXG4gICAgdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3Byb2Nlc3NIaW50cygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGFyaWEtZGVzY3JpYmVkIGJ5IHdoZW4gdGhlIG51bWJlciBvZiBlcnJvcnMgY2hhbmdlcy5cbiAgICB0aGlzLl9lcnJvckNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsIG1hdC1oaW50IHZhbGlkYXRpb24gYW5kIHN1YnNjcmlwdCBkZXNjcmliZWRCeUlkcyBzeW5jLlxuICAgIHRoaXMuX3ZhbGlkYXRlSGludHMoKTtcbiAgICB0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKTtcbiAgfVxuXG4gIC8qKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGZvcm0gZmllbGQncyBjb250cm9sIGlzIG1pc3NpbmcuICovXG4gIHByaXZhdGUgX2Fzc2VydEZvcm1GaWVsZENvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLl9jb250cm9sICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRm9jdXNTdGF0ZSgpIHtcbiAgICAvLyBVc3VhbGx5IHRoZSBNREMgZm91bmRhdGlvbiB3b3VsZCBjYWxsIFwiYWN0aXZhdGVGb2N1c1wiIGFuZCBcImRlYWN0aXZhdGVGb2N1c1wiIHdoZW5ldmVyXG4gICAgLy8gY2VydGFpbiBET00gZXZlbnRzIGFyZSBlbWl0dGVkLiBUaGlzIGlzIG5vdCBwb3NzaWJsZSBpbiBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlXG4gICAgLy8gZm9ybS1maWVsZCBiZWNhdXNlIHdlIHN1cHBvcnQgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9scyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5XG4gICAgLy8gb2YgdHlwZSBpbnB1dCwgbm9yIGRvIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYSBuYXRpdmUgZm9ybS1maWVsZCBjb250cm9sIGVsZW1lbnQuIEluc3RlYWRcbiAgICAvLyB3ZSBoYW5kbGUgdGhlIGZvY3VzIGJ5IGNoZWNraW5nIGlmIHRoZSBhYnN0cmFjdCBmb3JtLWZpZWxkIGNvbnRyb2wgZm9jdXNlZCBzdGF0ZSBjaGFuZ2VzLlxuICAgIGlmICh0aGlzLl9jb250cm9sLmZvY3VzZWQgJiYgIXRoaXMuX2lzRm9jdXNlZCkge1xuICAgICAgdGhpcy5faXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2ZvdW5kYXRpb24uYWN0aXZhdGVGb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NvbnRyb2wuZm9jdXNlZCAmJiAodGhpcy5faXNGb2N1c2VkIHx8IHRoaXMuX2lzRm9jdXNlZCA9PT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuX2lzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fZm91bmRhdGlvbi5kZWFjdGl2YXRlRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZsb2F0aW5nIGxhYmVsIGluIHRoZSBkb2NrZWQgc3RhdGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgcHJlZml4ZXMuIFRoZSBob3Jpem9udGFsIG9mZnNldFxuICAgKiBpcyBjYWxjdWxhdGVkIHdoZW5ldmVyIHRoZSBhcHBlYXJhbmNlIGNoYW5nZXMgdG8gYG91dGxpbmVgLCB0aGUgcHJlZml4ZXMgY2hhbmdlLCBvciB3aGVuIHRoZVxuICAgKiBmb3JtLWZpZWxkIGlzIGFkZGVkIHRvIHRoZSBET00uIFRoaXMgbWV0aG9kIHNldHMgdXAgYWxsIHN1YnNjcmlwdGlvbnMgd2hpY2ggYXJlIG5lZWRlZCB0b1xuICAgKiB0cmlnZ2VyIHRoZSBsYWJlbCBvZmZzZXQgdXBkYXRlLiBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIGF2b2lkIHBlcmZvcm1pbmcgbWVhc3VyZW1lbnRzIG9mdGVuLFxuICAgKiBzbyB3ZSByZWx5IG9uIHRoZSBgTmdab25lYCBhcyBpbmRpY2F0b3Igd2hlbiB0aGUgb2Zmc2V0IHNob3VsZCBiZSByZWNhbGN1bGF0ZWQsIGluc3RlYWQgb2ZcbiAgICogY2hlY2tpbmcgZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCkge1xuICAgIC8vIFdoZW5ldmVyIHRoZSBwcmVmaXggY2hhbmdlcywgc2NoZWR1bGUgYW4gdXBkYXRlIG9mIHRoZSBsYWJlbCBvZmZzZXQuXG4gICAgdGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWUpLFxuICAgICk7XG5cbiAgICAvLyBOb3RlIHRoYXQgd2UgaGF2ZSB0byBydW4gb3V0c2lkZSBvZiB0aGUgYE5nWm9uZWAgZXhwbGljaXRseSwgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyB0aHJvd2luZyB1c2VycyBpbnRvIGFuIGluZmluaXRlIGxvb3AgaWYgYHpvbmUtcGF0Y2gtcnhqc2AgaXMgaW5jbHVkZWQuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSkge1xuICAgICAgICAgIHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXIuY2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSB0cnVlKSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZmxvYXRpbmcgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBub3QuICovXG4gIF9zaG91bGRBbHdheXNGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdExhYmVsID09PSAnYWx3YXlzJztcbiAgfVxuXG4gIF9oYXNPdXRsaW5lKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVhcmFuY2UgPT09ICdvdXRsaW5lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZGlzcGxheSBpbiB0aGUgaW5maXguIExhYmVscyBpbiB0aGUgb3V0bGluZSBhcHBlYXJhbmNlIGFyZVxuICAgKiBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGUgbm90Y2hlZC1vdXRsaW5lIGFuZCBhcmUgaG9yaXpvbnRhbGx5IG9mZnNldCB0byBhY2NvdW50IGZvclxuICAgKiBmb3JtLWZpZWxkIHByZWZpeCBjb250ZW50LiBUaGlzIHdvbid0IHdvcmsgaW4gc2VydmVyIHNpZGUgcmVuZGVyaW5nIHNpbmNlIHdlIGNhbm5vdFxuICAgKiBtZWFzdXJlIHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVG8gbWFrZSB0aGUgZG9ja2VkIGxhYmVsIGFwcGVhciBhcyBpZiB0aGVcbiAgICogcmlnaHQgb2Zmc2V0IGhhcyBiZWVuIGNhbGN1bGF0ZWQsIHdlIGZvcmNpYmx5IHJlbmRlciB0aGUgbGFiZWwgaW5zaWRlIHRoZSBpbmZpeC4gU2luY2VcbiAgICogdGhlIGxhYmVsIGlzIHBhcnQgb2YgdGhlIGluZml4LCB0aGUgbGFiZWwgY2Fubm90IG92ZXJmbG93IHRoZSBwcmVmaXggY29udGVudC5cbiAgICovXG4gIF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKCkge1xuICAgIHJldHVybiAhdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyICYmIHRoaXMuX3ByZWZpeENoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpO1xuICB9XG5cbiAgX2hhc0Zsb2F0aW5nTGFiZWwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fbGFiZWxDaGlsZE5vblN0YXRpYyB8fCAhIXRoaXMuX2xhYmVsQ2hpbGRTdGF0aWM7XG4gIH1cblxuICBfc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0IHx8IHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCk7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xhc3MgZnJvbSB0aGUgTmdDb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgX3Nob3VsZEZvcndhcmQocHJvcDoga2V5b2YgTmdDb250cm9sKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5fY29udHJvbCA/IHRoaXMuX2NvbnRyb2wubmdDb250cm9sIDogbnVsbDtcbiAgICByZXR1cm4gbmdDb250cm9sICYmIG5nQ29udHJvbFtwcm9wXTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBoaW50cyBvciBlcnJvcnMuICovXG4gIF9nZXREaXNwbGF5ZWRNZXNzYWdlcygpOiAnZXJyb3InIHwgJ2hpbnQnIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiAmJiB0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgdGhpcy5fY29udHJvbC5lcnJvclN0YXRlXG4gICAgICA/ICdlcnJvcidcbiAgICAgIDogJ2hpbnQnO1xuICB9XG5cbiAgLyoqIFJlZnJlc2hlcyB0aGUgd2lkdGggb2YgdGhlIG91dGxpbmUtbm90Y2gsIGlmIHByZXNlbnQuICovXG4gIF9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNPdXRsaW5lKCkgfHwgIXRoaXMuX2Zsb2F0aW5nTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIG91dGxpbmUgbm90Y2ggc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBsYWJlbCB3aWR0aCwgYnV0IG5lZWRzIHRvIHJlc3BlY3QgdGhlIHNjYWxpbmdcbiAgICAvLyBhcHBsaWVkIHRvIHRoZSBsYWJlbCBpZiBpdCBhY3RpdmVseSBmbG9hdHMuIFNpbmNlIHRoZSBsYWJlbCBhbHdheXMgZmxvYXRzIHdoZW4gdGhlIG5vdGNoXG4gICAgLy8gaXMgb3BlbiwgdGhlIE1EQyB0ZXh0LWZpZWxkIGZsb2F0aW5nIGxhYmVsIHNjYWxpbmcgaXMgcmVzcGVjdGVkIGluIG5vdGNoIHdpZHRoIGNhbGN1bGF0aW9uLlxuICAgIHRoaXMuX291dGxpbmVOb3RjaFdpZHRoID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5nZXRXaWR0aCgpICogbWRjVGV4dEZpZWxkTnVtYmVycy5MQUJFTF9TQ0FMRTtcbiAgfVxuXG4gIC8qKiBEb2VzIGFueSBleHRyYSBwcm9jZXNzaW5nIHRoYXQgaXMgcmVxdWlyZWQgd2hlbiBoYW5kbGluZyB0aGUgaGludHMuICovXG4gIHByaXZhdGUgX3Byb2Nlc3NIaW50cygpIHtcbiAgICB0aGlzLl92YWxpZGF0ZUhpbnRzKCk7XG4gICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBtYXhpbXVtIG9mIG9uZSBvZiBlYWNoIFwibWF0LWhpbnRcIiBhbGlnbm1lbnQgc3BlY2lmaWVkLiBUaGUgaGludFxuICAgKiBsYWJlbCBzcGVjaWZpZWQgc2V0IHRocm91Z2ggdGhlIGlucHV0IGlzIGJlaW5nIGNvbnNpZGVyZWQgYXMgXCJzdGFydFwiIGFsaWduZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGEgbm9vcCBpZiBBbmd1bGFyIHJ1bnMgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVIaW50cygpIHtcbiAgICBpZiAodGhpcy5faGludENoaWxkcmVuICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICBsZXQgc3RhcnRIaW50OiBNYXRIaW50O1xuICAgICAgbGV0IGVuZEhpbnQ6IE1hdEhpbnQ7XG4gICAgICB0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgoaGludDogTWF0SGludCkgPT4ge1xuICAgICAgICBpZiAoaGludC5hbGlnbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGlmIChzdGFydEhpbnQgfHwgdGhpcy5oaW50TGFiZWwpIHtcbiAgICAgICAgICAgIHRocm93IGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IoJ3N0YXJ0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXJ0SGludCA9IGhpbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaGludC5hbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpZiAoZW5kSGludCkge1xuICAgICAgICAgICAgdGhyb3cgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcignZW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZEhpbnQgPSBoaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlzdCBvZiBlbGVtZW50IElEcyB0aGF0IGRlc2NyaWJlIHRoZSBjaGlsZCBjb250cm9sLiBUaGlzIGFsbG93cyB0aGUgY29udHJvbCB0byB1cGRhdGVcbiAgICogaXRzIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwcml2YXRlIF9zeW5jRGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIC8vIFRPRE8od2FnbmVybWFjaWVsKTogUmVtb3ZlIHRoZSB0eXBlIGNoZWNrIHdoZW4gd2UgZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGJ1Zy5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5ICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgaWRzLnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCcgJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSA9PT0gJ2hpbnQnKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnc3RhcnQnKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgZW5kSGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnZW5kJylcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHN0YXJ0SGludCkge1xuICAgICAgICAgIGlkcy5wdXNoKHN0YXJ0SGludC5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faGludExhYmVsKSB7XG4gICAgICAgICAgaWRzLnB1c2godGhpcy5faGludExhYmVsSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVuZEhpbnQpIHtcbiAgICAgICAgICBpZHMucHVzaChlbmRIaW50LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9lcnJvckNoaWxkcmVuKSB7XG4gICAgICAgIGlkcy5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKGVycm9yID0+IGVycm9yLmlkKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIGxhYmVsIGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuIEluIHRoZSBvdXRsaW5lXG4gICAqIGFwcGVhcmFuY2UsIHRoZSBub3RjaGVkLW91dGxpbmUgYW5kIGxhYmVsIGFyZSBub3QgcmVsYXRpdmUgdG8gdGhlIGluZml4IGNvbnRhaW5lciBiZWNhdXNlXG4gICAqIHRoZSBvdXRsaW5lIGludGVuZHMgdG8gc3Vycm91bmQgcHJlZml4ZXMsIHN1ZmZpeGVzIGFuZCB0aGUgaW5maXguIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogZmxvYXRpbmcgbGFiZWwgYnkgZGVmYXVsdCBvdmVybGFwcyBwcmVmaXhlcyBpbiB0aGUgZG9ja2VkIHN0YXRlLiBUbyBhdm9pZCB0aGlzLCB3ZSBuZWVkIHRvXG4gICAqIGhvcml6b250YWxseSBvZmZzZXQgdGhlIGxhYmVsIGJ5IHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVGhlIE1EQyB0ZXh0LWZpZWxkIGRvZXNcbiAgICogbm90IG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZXkgdXNlIGEgZml4ZWQgd2lkdGggZm9yIHByZWZpeGVzLiBIZW5jZSwgdGhleSBjYW4gc2ltcGx5XG4gICAqIGluY29ycG9yYXRlIHRoZSBob3Jpem9udGFsIG9mZnNldCBpbnRvIHRoZWlyIGRlZmF1bHQgdGV4dC1maWVsZCBzdHlsZXMuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIgfHwgIXRoaXMuX2hhc091dGxpbmUoKSB8fCAhdGhpcy5fZmxvYXRpbmdMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9hdGluZ0xhYmVsID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5lbGVtZW50O1xuICAgIC8vIElmIG5vIHByZWZpeCBpcyBkaXNwbGF5ZWQsIHJlc2V0IHRoZSBvdXRsaW5lIGxhYmVsIG9mZnNldCBmcm9tIHBvdGVudGlhbFxuICAgIC8vIHByZXZpb3VzIGxhYmVsIG9mZnNldCB1cGRhdGVzLlxuICAgIGlmICghKHRoaXMuX2ljb25QcmVmaXhDb250YWluZXIgfHwgdGhpcy5fdGV4dFByZWZpeENvbnRhaW5lcikpIHtcbiAgICAgIGZsb2F0aW5nTGFiZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIElmIHRoZSBmb3JtLWZpZWxkIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgRE9NIHlldCAoZS5nLiBpbiBhIHRhYiksIHdlIGRlZmVyXG4gICAgLy8gdGhlIGxhYmVsIG9mZnNldCB1cGRhdGUgdW50aWwgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICBpZiAoIXRoaXMuX2lzQXR0YWNoZWRUb0RvbSgpKSB7XG4gICAgICB0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lciA9IHRoaXMuX2ljb25QcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dFByZWZpeENvbnRhaW5lciA9IHRoaXMuX3RleHRQcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lcldpZHRoID0gaWNvblByZWZpeENvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICBjb25zdCB0ZXh0UHJlZml4Q29udGFpbmVyV2lkdGggPSB0ZXh0UHJlZml4Q29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgIC8vIElmIHRoZSBkaXJlY3Rpb25hbGl0eSBpcyBSVEwsIHRoZSB4LWF4aXMgdHJhbnNmb3JtIG5lZWRzIHRvIGJlIGludmVydGVkLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSBgdHJhbnNmb3JtWGAgZG9lcyBub3QgY2hhbmdlIGJhc2VkIG9uIHRoZSBwYWdlIGRpcmVjdGlvbmFsaXR5LlxuICAgIGNvbnN0IGxhYmVsSG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAodGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/IC0xIDogMSkgKlxuICAgICAgLy8gSWYgdGhlcmUncyBhbiBpY29uIHByZWZpeCwgd2Ugc3VidHJhY3QgdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nIGFzIHdlXG4gICAgICAvLyByZXNldCB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIGluIENTUyB0b28uXG4gICAgICAoKGljb25QcmVmaXhDb250YWluZXIgPyBpY29uUHJlZml4Q29udGFpbmVyV2lkdGggLSBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA6IDApICtcbiAgICAgICAgdGV4dFByZWZpeENvbnRhaW5lcldpZHRoKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNmb3JtIHRoZSBmbG9hdGluZyBsYWJlbCB0byBhY2NvdW50IGZvciB0aGUgcHJlZml4IGNvbnRhaW5lci4gTm90ZVxuICAgIC8vIHRoYXQgd2UgZG8gbm90IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscy5cbiAgICBmbG9hdGluZ0xhYmVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke0ZMT0FUSU5HX0xBQkVMX0RFRkFVTFRfRE9DS0VEX1RSQU5TRk9STX0gdHJhbnNsYXRlWCgke2xhYmVsSG9yaXpvbnRhbE9mZnNldH1weClgO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2lzQXR0YWNoZWRUb0RvbSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudC5nZXRSb290Tm9kZSkge1xuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbnNpZGUgdGhlIERPTSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgZWl0aGVyIHRoZSBkb2N1bWVudFxuICAgICAgLy8gb3IgdGhlIGNsb3Nlc3Qgc2hhZG93IHJvb3QsIG90aGVyd2lzZSBpdCdsbCBiZSB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgJiYgcm9vdE5vZGUgIT09IGVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSBmYWxsIGJhY2sgdG8gY2hlY2tpbmcgaWYgaXQncyBpbiB0aGUgZG9jdW1lbnQuIFRoaXMgZG9lc24ndCBhY2NvdW50IGZvclxuICAgIC8vIHNoYWRvdyBET00sIGhvd2V2ZXIgYnJvd3NlciB0aGF0IHN1cHBvcnQgc2hhZG93IERPTSBzaG91bGQgc3VwcG9ydCBgZ2V0Um9vdE5vZGVgIGFzIHdlbGwuXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCEuY29udGFpbnMoZWxlbWVudCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPCEtLVxuICAgIE1EQyByZWNvbW1lbmRzIHRoYXQgdGhlIHRleHQtZmllbGQgaXMgYSBgPGxhYmVsPmAgZWxlbWVudC4gVGhpcyByYXRoZXIgY29tcGxpY2F0ZXMgdGhlXG4gICAgc2V0dXAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGV2ZXJ5IGZvcm0tZmllbGQgY29udHJvbCB0byBleHBsaWNpdGx5IHNldCBgYXJpYS1sYWJlbGxlZGJ5YC5cbiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGA8bGFiZWw+YCBpdHNlbGYgY29udGFpbnMgbW9yZSB0aGFuIHRoZSBhY3R1YWwgbGFiZWwgKGUuZy4gcHJlZml4LCBzdWZmaXhcbiAgICBvciBvdGhlciBwcm9qZWN0ZWQgY29udGVudCksIGFuZCBzY3JlZW4gcmVhZGVycyBjb3VsZCBwb3RlbnRpYWxseSByZWFkIG91dCB1bmRlc2lyZWQgY29udGVudC5cbiAgICBFeGNsdWRpbmcgZWxlbWVudHMgZnJvbSBiZWluZyBwcmludGVkIG91dCByZXF1aXJlcyB0aGVtIHRvIGJlIG1hcmtlZCB3aXRoIGBhcmlhLWhpZGRlbmAsIG9yXG4gICAgdGhlIGZvcm0gY29udHJvbCBpcyBzZXQgdG8gYSBzY29wZWQgZWxlbWVudCBmb3IgdGhlIGxhYmVsICh1c2luZyBgYXJpYS1sYWJlbGxlZGJ5YCkuIEJvdGggb2ZcbiAgICB0aGVzZSBvcHRpb25zIHNlZW0gdG8gY29tcGxpY2F0ZSB0aGUgc2V0dXAgYmVjYXVzZSB3ZSBrbm93IGV4YWN0bHkgd2hhdCBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgYXMgcGFydCBvZiB0aGUgbGFiZWwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHNwZW5kIHJlc291cmNlcyBvbiB3YWxraW5nIHRocm91Z2ggcHJvamVjdGVkIGNvbnRlbnRcbiAgICB0byBzZXQgYGFyaWEtaGlkZGVuYC4gTm9yIGRvIHdlIHdhbnQgdG8gc2V0IGBhcmlhLWxhYmVsbGVkYnlgIG9uIGV2ZXJ5IGZvcm0gY29udHJvbCBpZiB3ZSBjb3VsZFxuICAgIHNpbXBseSBsaW5rIHRoZSBsYWJlbCB0byB0aGUgY29udHJvbCB1c2luZyB0aGUgbGFiZWwgYGZvcmAgYXR0cmlidXRlLlxuXG4gICAgKk5vdGUqOiBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG4gICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS5cbiAgLS0+XG4gIDxsYWJlbCBtYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsXG4gICAgICAgICBbZmxvYXRpbmddPVwiX3Nob3VsZExhYmVsRmxvYXQoKVwiXG4gICAgICAgICBbcmVxdWlyZWRdPVwiIWhpZGVSZXF1aXJlZE1hcmtlciAmJiBfY29udHJvbC5yZXF1aXJlZFwiXG4gICAgICAgICAqbmdJZj1cIl9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT1cIl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKVwiXG4gICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgICAgICBbaWRdPVwiX2xhYmVsSWRcIlxuICAgICAgICAgW2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcbiAgICAgICAgIFthdHRyLmFyaWEtb3duc109XCJfY29udHJvbC5pZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgPC9sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgY2xhc3M9XCJtYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlciBtZGMtdGV4dC1maWVsZFwiICN0ZXh0RmllbGRcbiAgICAgW2NsYXNzLm1kYy10ZXh0LWZpZWxkLS1maWxsZWRdPVwiIV9oYXNPdXRsaW5lKClcIlxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLW91dGxpbmVkXT1cIl9oYXNPdXRsaW5lKClcIlxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLW5vLWxhYmVsXT1cIiFfaGFzRmxvYXRpbmdMYWJlbCgpXCJcbiAgICAgW2NsYXNzLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZF09XCJfY29udHJvbC5kaXNhYmxlZFwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0taW52YWxpZF09XCJfY29udHJvbC5lcnJvclN0YXRlXCJcbiAgICAgKGNsaWNrKT1cIl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2sgJiYgX2NvbnRyb2wub25Db250YWluZXJDbGljaygkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtZm9jdXMtb3ZlcmxheVwiICpuZ0lmPVwiIV9oYXNPdXRsaW5lKCkgJiYgIV9jb250cm9sLmRpc2FibGVkXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtZmxleFwiPlxuICAgIDxkaXYgKm5nSWY9XCJfaGFzT3V0bGluZSgpXCIgbWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmVcbiAgICAgICAgIFttYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZU9wZW5dPVwiX3Nob3VsZExhYmVsRmxvYXQoKVwiXG4gICAgICAgICBbbWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmVXaWR0aF09XCJfb3V0bGluZU5vdGNoV2lkdGhcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhX2ZvcmNlRGlzcGxheUluZml4TGFiZWwoKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1pY29uLXByZWZpeFwiICpuZ0lmPVwiX2hhc0ljb25QcmVmaXhcIiAjaWNvblByZWZpeENvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdLCBbbWF0SWNvblByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC10ZXh0LXByZWZpeFwiICpuZ0lmPVwiX2hhc1RleHRQcmVmaXhcIiAjdGV4dFByZWZpeENvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRUZXh0UHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaW5maXhcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhX2hhc091dGxpbmUoKSB8fCBfZm9yY2VEaXNwbGF5SW5maXhMYWJlbCgpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtdGV4dC1zdWZmaXhcIiAqbmdJZj1cIl9oYXNUZXh0U3VmZml4XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0VGV4dFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1pY29uLXN1ZmZpeFwiICpuZ0lmPVwiX2hhc0ljb25TdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdLCBbbWF0SWNvblN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgbWF0Rm9ybUZpZWxkTGluZVJpcHBsZSAqbmdJZj1cIiFfaGFzT3V0bGluZSgpXCI+PC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciBtYXQtbWRjLWZvcm0tZmllbGQtYm90dG9tLWFsaWduXCJcbiAgICAgW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtZHluYW1pYy1zaXplXT1cInN1YnNjcmlwdFNpemluZyA9PT0gJ2R5bmFtaWMnXCJcbiAgICAgW25nU3dpdGNoXT1cIl9nZXREaXNwbGF5ZWRNZXNzYWdlcygpXCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtZXJyb3Itd3JhcHBlclwiICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCJcbiAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGVcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaGludC13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidoaW50J1wiXG4gICAgICAgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPVwiX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCI+XG4gICAgPG1hdC1oaW50ICpuZ0lmPVwiaGludExhYmVsXCIgW2lkXT1cIl9oaW50TGFiZWxJZFwiPnt7aGludExhYmVsfX08L21hdC1oaW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyXCI+PC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnRbYWxpZ249J2VuZCddXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
684
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUlMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLE9BQU8sSUFBSSxtQkFBbUIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZC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QUFJLEVBQUM7Z0JBSXpDLGtCQUFrQjtzQkFEckIsS0FBSztnQkFVRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUYsVUFBVTtzQkFEYixLQUFLO2dCQWtCRixVQUFVO3NCQURiLEtBQUs7Z0JBd0JGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBV0YsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNvcmUnO1xuaW1wb3J0IHtcbiAgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcixcbiAgZ2V0TWF0Rm9ybUZpZWxkTWlzc2luZ0NvbnRyb2xFcnJvcixcbiAgTUFUX0ZPUk1fRklFTEQsXG4gIG1hdEZvcm1GaWVsZEFuaW1hdGlvbnMsXG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtBTklNQVRJT05fTU9EVUxFX1RZUEV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBNRENUZXh0RmllbGRBZGFwdGVyLFxuICBNRENUZXh0RmllbGRGb3VuZGF0aW9uLFxuICBudW1iZXJzIGFzIG1kY1RleHRGaWVsZE51bWJlcnMsXG59IGZyb20gJ0BtYXRlcmlhbC90ZXh0ZmllbGQnO1xuaW1wb3J0IHttZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNQVRfRVJST1IsIE1hdEVycm9yfSBmcm9tICcuL2RpcmVjdGl2ZXMvZXJyb3InO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmxvYXRpbmctbGFiZWwnO1xuaW1wb3J0IHtNYXRIaW50fSBmcm9tICcuL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQge01hdExhYmVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGFiZWwnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRMaW5lUmlwcGxlfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGluZS1yaXBwbGUnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZX0gZnJvbSAnLi9kaXJlY3RpdmVzL25vdGNoZWQtb3V0bGluZSc7XG5pbXBvcnQge01BVF9QUkVGSVgsIE1hdFByZWZpeH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ByZWZpeCc7XG5pbXBvcnQge01BVF9TVUZGSVgsIE1hdFN1ZmZpeH0gZnJvbSAnLi9kaXJlY3RpdmVzL3N1ZmZpeCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqIFR5cGUgZm9yIHRoZSBhdmFpbGFibGUgZmxvYXRMYWJlbCB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBGbG9hdExhYmVsVHlwZSA9ICdhbHdheXMnIHwgJ2F1dG8nO1xuXG4vKiogUG9zc2libGUgYXBwZWFyYW5jZSBzdHlsZXMgZm9yIHRoZSBmb3JtIGZpZWxkLiAqL1xuZXhwb3J0IHR5cGUgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdmaWxsJyB8ICdvdXRsaW5lJztcblxuLyoqIEJlaGF2aW9ycyBmb3IgaG93IHRoZSBzdWJzY3JpcHQgaGVpZ2h0IGlzIHNldC4gKi9cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdFNpemluZyA9ICdmaXhlZCcgfCAnZHluYW1pYyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgZm9ybSBmaWVsZCB0aGF0IGNhbiBiZSBjb25maWd1cmVkXG4gKiB1c2luZyB0aGUgYE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OU2AgaW5qZWN0aW9uIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zIHtcbiAgLyoqIERlZmF1bHQgZm9ybSBmaWVsZCBhcHBlYXJhbmNlIHN0eWxlLiAqL1xuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgLyoqIERlZmF1bHQgY29sb3Igb2YgdGhlIGZvcm0gZmllbGQuICovXG4gIGNvbG9yPzogVGhlbWVQYWxldHRlO1xuICAvKiogV2hldGhlciB0aGUgcmVxdWlyZWQgbWFya2VyIHNob3VsZCBiZSBoaWRkZW4gYnkgZGVmYXVsdC4gKi9cbiAgaGlkZVJlcXVpcmVkTWFya2VyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxhYmVsIGZvciBmb3JtIGZpZWxkcyBzaG91bGQgYnkgZGVmYXVsdCBmbG9hdCBgYWx3YXlzYCxcbiAgICogYG5ldmVyYCwgb3IgYGF1dG9gIChvbmx5IHdoZW4gbmVjZXNzYXJ5KS5cbiAgICovXG4gIGZsb2F0TGFiZWw/OiBGbG9hdExhYmVsVHlwZTtcbiAgLyoqIFdoZXRoZXIgdGhlIGZvcm0gZmllbGQgc2hvdWxkIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBsaW5lIGJ5IGRlZmF1bHQuICovXG4gIHN1YnNjcmlwdFNpemluZz86IFN1YnNjcmlwdFNpemluZztcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlXG4gKiBkZWZhdWx0IG9wdGlvbnMgZm9yIGFsbCBmb3JtIGZpZWxkIHdpdGhpbiBhbiBhcHAuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnM+KFxuICAnTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TJyxcbik7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKiogRGVmYXVsdCBhcHBlYXJhbmNlIHVzZWQgYnkgdGhlIGZvcm0gZmllbGQuICovXG5jb25zdCBERUZBVUxUX0FQUEVBUkFOQ0U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnZmlsbCc7XG5cbi8qKlxuICogV2hldGhlciB0aGUgbGFiZWwgZm9yIGZvcm0gZmllbGRzIHNob3VsZCBieSBkZWZhdWx0IGZsb2F0IGBhbHdheXNgLFxuICogYG5ldmVyYCwgb3IgYGF1dG9gLlxuICovXG5jb25zdCBERUZBVUxUX0ZMT0FUX0xBQkVMOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcblxuLyoqIERlZmF1bHQgd2F5IHRoYXQgdGhlIHN1YnNjcmlwdCBlbGVtZW50IGhlaWdodCBpcyBzZXQuICovXG5jb25zdCBERUZBVUxUX1NVQlNDUklQVF9TSVpJTkc6IFN1YnNjcmlwdFNpemluZyA9ICdmaXhlZCc7XG5cbi8qKlxuICogRGVmYXVsdCB0cmFuc2Zvcm0gZm9yIGRvY2tlZCBmbG9hdGluZyBsYWJlbHMgaW4gYSBNREMgdGV4dC1maWVsZC4gVGhpcyB2YWx1ZSBoYXMgYmVlblxuICogZXh0cmFjdGVkIGZyb20gdGhlIE1EQyB0ZXh0LWZpZWxkIHN0eWxlcyBiZWNhdXNlIHdlIHByb2dyYW1tYXRpY2FsbHkgbW9kaWZ5IHRoZSBkb2NrZWRcbiAqIGxhYmVsIHRyYW5zZm9ybSwgYnV0IGRvIG5vdCB3YW50IHRvIGFjY2lkZW50YWxseSBkaXNjYXJkIHRoZSBkZWZhdWx0IGxhYmVsIHRyYW5zZm9ybS5cbiAqL1xuY29uc3QgRkxPQVRJTkdfTEFCRUxfREVGQVVMVF9ET0NLRURfVFJBTlNGT1JNID0gYHRyYW5zbGF0ZVkoLTUwJSlgO1xuXG4vKipcbiAqIEhvcml6b250YWwgcGFkZGluZyBpbiBwaXhlbHMgdXNlZCBieSB0aGUgTURDIGZvciB0aGUgd3JhcHBlciBjb250YWluaW5nIGluZml4LlxuICogVGhpcyB2YWx1ZSBpcyBleHRyYWN0ZWQgZnJvbSBNREMncyBTYXNzIHZhcmlhYmxlcy4gU2VlIGAkcGFkZGluZy1ob3Jpem9udGFsYC5cbiAqL1xuY29uc3QgV1JBUFBFUl9IT1JJWk9OVEFMX1BBRERJTkcgPSAxNjtcblxuLyoqIENvbnRhaW5lciBmb3IgZm9ybSBjb250cm9scyB0aGF0IGFwcGxpZXMgTWF0ZXJpYWwgRGVzaWduIHN0eWxpbmcgYW5kIGJlaGF2aW9yLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWZvcm0tZmllbGQnLFxuICBleHBvcnRBczogJ21hdEZvcm1GaWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLmNzcyddLFxuICBhbmltYXRpb25zOiBbbWF0Rm9ybUZpZWxkQW5pbWF0aW9ucy50cmFuc2l0aW9uTWVzc2FnZXNdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1tZGMtZm9ybS1maWVsZCcsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtbGFiZWwtYWx3YXlzLWZsb2F0XSc6ICdfc2hvdWxkQWx3YXlzRmxvYXQoKScsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtaGFzLWljb24tcHJlZml4XSc6ICdfaGFzSWNvblByZWZpeCcsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtaGFzLWljb24tc3VmZml4XSc6ICdfaGFzSWNvblN1ZmZpeCcsXG5cbiAgICAvLyBOb3RlIHRoYXQgdGhlc2UgY2xhc3NlcyByZXVzZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgbm9uLU1EQyB2ZXJzaW9uLCBiZWNhdXNlIHRoZXkgY2FuIGJlXG4gICAgLy8gY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkgc2luY2UgY3VzdG9tIGZvcm0gY29udHJvbHMgbWF5IHVzZSB0aGVtIHRvIHN0eWxlIHRoZW1zZWx2ZXMuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8yMDUwMiNkaXNjdXNzaW9uX3I0ODYxMjQ5MDEuXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXSc6ICdfY29udHJvbC5lcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXSc6ICdfY29udHJvbC5kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSc6ICdfY29udHJvbC5hdXRvZmlsbGVkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLW5vLWFuaW1hdGlvbnNdJzogJ19hbmltYXRpb25Nb2RlID09PSBcIk5vb3BBbmltYXRpb25zXCInLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsXSc6ICdhcHBlYXJhbmNlID09IFwiZmlsbFwiJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZV0nOiAnYXBwZWFyYW5jZSA9PSBcIm91dGxpbmVcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyXSc6ICdfaGFzRmxvYXRpbmdMYWJlbCgpICYmICFfc2hvdWxkTGFiZWxGbG9hdCgpJyxcbiAgICAnW2NsYXNzLm1hdC1mb2N1c2VkXSc6ICdfY29udHJvbC5mb2N1c2VkJyxcbiAgICAnW2NsYXNzLm1hdC1wcmltYXJ5XSc6ICdjb2xvciAhPT0gXCJhY2NlbnRcIiAmJiBjb2xvciAhPT0gXCJ3YXJuXCInLFxuICAgICdbY2xhc3MubWF0LWFjY2VudF0nOiAnY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ2NvbG9yID09PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidW50b3VjaGVkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidG91Y2hlZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1wcmlzdGluZV0nOiAnX3Nob3VsZEZvcndhcmQoXCJwcmlzdGluZVwiKScsXG4gICAgJ1tjbGFzcy5uZy1kaXJ0eV0nOiAnX3Nob3VsZEZvcndhcmQoXCJkaXJ0eVwiKScsXG4gICAgJ1tjbGFzcy5uZy12YWxpZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ2YWxpZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1pbnZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcImludmFsaWRcIiknLFxuICAgICdbY2xhc3MubmctcGVuZGluZ10nOiAnX3Nob3VsZEZvcndhcmQoXCJwZW5kaW5nXCIpJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfRk9STV9GSUVMRCwgdXNlRXhpc3Rpbmc6IE1hdEZvcm1GaWVsZH1dLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRGb3JtRmllbGRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndGV4dEZpZWxkJykgX3RleHRGaWVsZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2ljb25QcmVmaXhDb250YWluZXInKSBfaWNvblByZWZpeENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RleHRQcmVmaXhDb250YWluZXInKSBfdGV4dFByZWZpeENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkRmxvYXRpbmdMYWJlbCkgX2Zsb2F0aW5nTGFiZWw6IE1hdEZvcm1GaWVsZEZsb2F0aW5nTGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmUpIF9ub3RjaGVkT3V0bGluZTogTWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmUgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkTGluZVJpcHBsZSkgX2xpbmVSaXBwbGU6IE1hdEZvcm1GaWVsZExpbmVSaXBwbGUgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChNYXRMYWJlbCkgX2xhYmVsQ2hpbGROb25TdGF0aWM6IE1hdExhYmVsIHwgdW5kZWZpbmVkO1xuICBAQ29udGVudENoaWxkKE1hdExhYmVsLCB7c3RhdGljOiB0cnVlfSkgX2xhYmVsQ2hpbGRTdGF0aWM6IE1hdExhYmVsIHwgdW5kZWZpbmVkO1xuICBAQ29udGVudENoaWxkKE1hdEZvcm1GaWVsZENvbnRyb2wpIF9mb3JtRmllbGRDb250cm9sOiBNYXRGb3JtRmllbGRDb250cm9sPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTUFUX1BSRUZJWCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX3ByZWZpeENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0UHJlZml4PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNQVRfU1VGRklYLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfc3VmZml4Q2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRTdWZmaXg+O1xuICBAQ29udGVudENoaWxkcmVuKE1BVF9FUlJPUiwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2Vycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRFcnJvcj47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SGludCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2hpbnRDaGlsZHJlbjogUXVlcnlMaXN0PE1hdEhpbnQ+O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBtYXJrZXIgc2hvdWxkIGJlIGhpZGRlbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGhpZGVSZXF1aXJlZE1hcmtlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyO1xuICB9XG4gIHNldCBoaWRlUmVxdWlyZWRNYXJrZXIodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfaGlkZVJlcXVpcmVkTWFya2VyID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBjb2xvciBwYWxldHRlIGZvciB0aGUgZm9ybSBmaWVsZC4gKi9cbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBmbG9hdCBhcyB0aGUgdXNlciB0eXBlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGZsb2F0TGFiZWwoKTogRmxvYXRMYWJlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9mbG9hdExhYmVsIHx8IHRoaXMuX2RlZmF1bHRzPy5mbG9hdExhYmVsIHx8IERFRkFVTFRfRkxPQVRfTEFCRUw7XG4gIH1cbiAgc2V0IGZsb2F0TGFiZWwodmFsdWU6IEZsb2F0TGFiZWxUeXBlKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9mbG9hdExhYmVsKSB7XG4gICAgICB0aGlzLl9mbG9hdExhYmVsID0gdmFsdWU7XG4gICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIEN1c3RvbSBmb3JtIGZpZWxkIGNvbnRyb2xzIG9yIGRpcmVjdGl2ZXMgbWlnaHQgc2V0XG4gICAgICAvLyB0aGUgXCJmbG9hdExhYmVsXCIgaW5wdXQgYW5kIGV4cGVjdCB0aGUgZm9ybSBmaWVsZCB2aWV3IHRvIGJlIHVwZGF0ZWQgYXV0b21hdGljYWxseS5cbiAgICAgIC8vIGUuZy4gYXV0b2NvbXBsZXRlIHRyaWdnZXIuIElkZWFsbHkgd2UnZCBnZXQgcmlkIG9mIHRoaXMgYW5kIHRoZSBjb25zdW1lcnMgd291bGQganVzdFxuICAgICAgLy8gZW1pdCB0aGUgXCJzdGF0ZUNoYW5nZXNcIiBvYnNlcnZhYmxlLiBUT0RPKGRldnZlcnNpb24pOiBjb25zaWRlciByZW1vdmluZy5cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9mbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcblxuICAvKiogVGhlIGZvcm0gZmllbGQgYXBwZWFyYW5jZSBzdHlsZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGFwcGVhcmFuY2UoKTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVhcmFuY2U7XG4gIH1cbiAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX2FwcGVhcmFuY2U7XG4gICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlIHx8IHRoaXMuX2RlZmF1bHRzPy5hcHBlYXJhbmNlIHx8IERFRkFVTFRfQVBQRUFSQU5DRTtcbiAgICBpZiAodGhpcy5fYXBwZWFyYW5jZSA9PT0gJ291dGxpbmUnICYmIHRoaXMuX2FwcGVhcmFuY2UgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcblxuICAgICAgLy8gSWYgdGhlIGFwcGVhcmFuY2UgaGFzIGJlZW4gc3dpdGNoZWQgdG8gYG91dGxpbmVgLCB0aGUgbGFiZWwgb2Zmc2V0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuXG4gICAgICAvLyBUaGUgdXBkYXRlIGNhbiBoYXBwZW4gb25jZSB0aGUgdmlldyBoYXMgYmVlbiByZS1jaGVja2VkLCBidXQgbm90IGltbWVkaWF0ZWx5IGJlY2F1c2VcbiAgICAgIC8vIHRoZSB2aWV3IGhhcyBub3QgYmVlbiB1cGRhdGVkIGFuZCB0aGUgbm90Y2hlZC1vdXRsaW5lIGZsb2F0aW5nIGxhYmVsIGlzIG5vdCBwcmVzZW50LlxuICAgICAgdGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2FwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSBERUZBVUxUX0FQUEVBUkFOQ0U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvcm0gZmllbGQgc2hvdWxkIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBsaW5lIG9mIGhpbnQvZXJyb3IgdGV4dCAoZGVmYXVsdClcbiAgICogb3IgdG8gaGF2ZSB0aGUgc3BhY2luZyBncm93IGZyb20gMHB4IGFzIG5lZWRlZCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgaGludC9lcnJvciBjb250ZW50LlxuICAgKiBOb3RlIHRoYXQgd2hlbiB1c2luZyBkeW5hbWljIHNpemluZywgbGF5b3V0IHNoaWZ0cyB3aWxsIG9jY3VyIHdoZW4gaGludC9lcnJvciB0ZXh0IGNoYW5nZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc3Vic2NyaXB0U2l6aW5nKCk6IFN1YnNjcmlwdFNpemluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnNjcmlwdFNpemluZyB8fCB0aGlzLl9kZWZhdWx0cz8uc3Vic2NyaXB0U2l6aW5nIHx8IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgfVxuICBzZXQgc3Vic2NyaXB0U2l6aW5nKHZhbHVlOiBTdWJzY3JpcHRTaXppbmcpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRTaXppbmcgPSB2YWx1ZSB8fCB0aGlzLl9kZWZhdWx0cz8uc3Vic2NyaXB0U2l6aW5nIHx8IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgfVxuICBwcml2YXRlIF9zdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUZXh0IGZvciB0aGUgZm9ybSBmaWVsZCBoaW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgaGludExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2hpbnRMYWJlbDtcbiAgfVxuICBzZXQgaGludExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9oaW50TGFiZWwgPSB2YWx1ZTtcbiAgICB0aGlzLl9wcm9jZXNzSGludHMoKTtcbiAgfVxuICBwcml2YXRlIF9oaW50TGFiZWwgPSAnJztcblxuICBfaGFzSWNvblByZWZpeCA9IGZhbHNlO1xuICBfaGFzVGV4dFByZWZpeCA9IGZhbHNlO1xuICBfaGFzSWNvblN1ZmZpeCA9IGZhbHNlO1xuICBfaGFzVGV4dFN1ZmZpeCA9IGZhbHNlO1xuXG4gIC8vIFVuaXF1ZSBpZCBmb3IgdGhlIGludGVybmFsIGZvcm0gZmllbGQgbGFiZWwuXG4gIHJlYWRvbmx5IF9sYWJlbElkID0gYG1hdC1tZGMtZm9ybS1maWVsZC1sYWJlbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgLy8gVW5pcXVlIGlkIGZvciB0aGUgaGludCBsYWJlbC5cbiAgcmVhZG9ubHkgX2hpbnRMYWJlbElkID0gYG1hdC1tZGMtaGludC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgLyoqIFN0YXRlIG9mIHRoZSBtYXQtaGludCBhbmQgbWF0LWVycm9yIGFuaW1hdGlvbnMuICovXG4gIF9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICcnO1xuXG4gIC8qKiBXaWR0aCBvZiB0aGUgb3V0bGluZSBub3RjaC4gKi9cbiAgX291dGxpbmVOb3RjaFdpZHRoID0gMDtcblxuICAvKiogR2V0cyB0aGUgY3VycmVudCBmb3JtIGZpZWxkIGNvbnRyb2wgKi9cbiAgZ2V0IF9jb250cm9sKCk6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbCB8fCB0aGlzLl9mb3JtRmllbGRDb250cm9sO1xuICB9XG4gIHNldCBfY29udHJvbCh2YWx1ZSkge1xuICAgIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfaXNGb2N1c2VkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbDogTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+O1xuICBwcml2YXRlIF9mb3VuZGF0aW9uOiBNRENUZXh0RmllbGRGb3VuZGF0aW9uO1xuICBwcml2YXRlIF9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2FkYXB0ZXI6IE1EQ1RleHRGaWVsZEFkYXB0ZXIgPSB7XG4gICAgYWRkQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSksXG4gICAgcmVtb3ZlQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSksXG4gICAgaGFzQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSxcblxuICAgIGhhc0xhYmVsOiAoKSA9PiB0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCksXG4gICAgaXNGb2N1c2VkOiAoKSA9PiB0aGlzLl9jb250cm9sLmZvY3VzZWQsXG4gICAgaGFzT3V0bGluZTogKCkgPT4gdGhpcy5faGFzT3V0bGluZSgpLFxuXG4gICAgLy8gTURDIHRleHQtZmllbGQgd2lsbCBjYWxsIHRoaXMgbWV0aG9kIG9uIGZvY3VzLCBibHVyIGFuZCB2YWx1ZSBjaGFuZ2UuIEl0IGV4cGVjdHMgdXNcbiAgICAvLyB0byB1cGRhdGUgdGhlIGZsb2F0aW5nIGxhYmVsIHN0YXRlIGFjY29yZGluZ2x5LiBUaG91Z2ggd2UgbWFrZSB0aGlzIGEgbm9vcCBiZWNhdXNlIHdlXG4gICAgLy8gd2FudCB0byByZWFjdCB0byBmbG9hdGluZyBsYWJlbCBzdGF0ZSBjaGFuZ2VzIHRocm91Z2ggY2hhbmdlIGRldGVjdGlvbi4gUmVseWluZyBvbiB0aGlzXG4gICAgLy8gYWRhcHRlciBtZXRob2Qgd291bGQgbWVhbiB0aGF0IHRoZSBsYWJlbCB3b3VsZCBub3QgdXBkYXRlIGlmIHRoZSBjdXN0b20gZm9ybSBmaWVsZCBjb250cm9sXG4gICAgLy8gc2V0cyBcInNob3VsZExhYmVsRmxvYXRcIiB0byB0cnVlLCBvciBpZiB0aGUgXCJmbG9hdExhYmVsXCIgaW5wdXQgYmluZGluZyBjaGFuZ2VzIHRvIFwiYWx3YXlzXCIuXG4gICAgZmxvYXRMYWJlbDogKCkgPT4ge30sXG5cbiAgICAvLyBMYWJlbCBzaGFraW5nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiBJdCB3aWxsIHJlcXVpcmUgYSBuZXcgQVBJIGZvciBmb3JtIGZpZWxkXG4gICAgLy8gY29udHJvbHMgdG8gdHJpZ2dlciB0aGUgc2hha2luZy4gVGhpcyBjYW4gYmUgYSBmZWF0dXJlIGluIHRoZSBmdXR1cmUuXG4gICAgLy8gVE9ETyhkZXZ2ZXJzaW9uKTogZXhwbG9yZSBvcHRpb25zIG9uIGhvdyB0byBpbnRlZ3JhdGUgbGFiZWwgc2hha2luZy5cbiAgICBzaGFrZUxhYmVsOiAoKSA9PiB7fSxcblxuICAgIC8vIE1EQyBieSBkZWZhdWx0IHVwZGF0ZXMgdGhlIG5vdGNoZWQtb3V0bGluZSB3aGVuZXZlciB0aGUgdGV4dC1maWVsZCByZWNlaXZlcyBmb2N1cywgb3JcbiAgICAvLyBpcyBiZWluZyBibHVycmVkLiBJdCBhbHNvIGNvbXB1dGVzIHRoZSBsYWJlbCB3aWR0aCBldmVyeSB0aW1lIHRoZSBub3RjaCBpcyBvcGVuZWQgb3JcbiAgICAvLyBjbG9zZWQuIFRoaXMgd29ya3MgZmluZSBpbiB0aGUgc3RhbmRhcmQgTURDIHRleHQtZmllbGQsIGJ1dCBub3QgaW4gQW5ndWxhciB3aGVyZSB0aGVcbiAgICAvLyBmbG9hdGluZyBsYWJlbCBjb3VsZCBjaGFuZ2UgdGhyb3VnaCBpbnRlcnBvbGF0aW9uLiBXZSB3YW50IHRvIGJlIGFibGUgdG8gdXBkYXRlIHRoZVxuICAgIC8vIG5vdGNoZWQgb3V0bGluZSB3aGVuZXZlciB0aGUgbGFiZWwgY29udGVudCBjaGFuZ2VzLiBBZGRpdGlvbmFsbHksIHJlbHlpbmcgb24gZm9jdXMgb3JcbiAgICAvLyBibHVyIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBub3RjaCBkb2VzIG5vdCB3b3JrIGZvciB1cyBzaW5jZSBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2xzXG4gICAgLy8gaGF2ZSB0aGUgYWJpbGl0eSB0byBjb250cm9sIHRoZSBmbG9hdGluZyBsYWJlbCBzdGF0ZSAoaS5lLiBgc2hvdWxkTGFiZWxGbG9hdGApLCBhbmQgd2VcbiAgICAvLyB3YW50IHRvIHVwZGF0ZSB0aGUgbm90Y2ggd2hlbmV2ZXIgdGhlIGBfc2hvdWxkTGFiZWxGbG9hdCgpYCB2YWx1ZSBjaGFuZ2VzLlxuICAgIGdldExhYmVsV2lkdGg6ICgpID0+IDAsXG5cbiAgICAvLyBXZSBkb24ndCB1c2UgYHNldExhYmVsUmVxdWlyZWRgIGFzIGl0IHJlbGllcyBvbiBhIG11dGF0aW9uIG9ic2VydmVyIGZvciBkZXRlcm1pbmluZ1xuICAgIC8vIHdoZW4gdGhlIGByZXF1aXJlZGAgc3RhdGUgY2hhbmdlcy4gVGhpcyBpcyBub3QgcmVsaWFibGUgYW5kIGZsZXhpYmxlIGVub3VnaCBmb3JcbiAgICAvLyBvdXIgZm9ybSBmaWVsZCwgYXMgd2Ugc3VwcG9ydCBjdXN0b20gY29udHJvbHMgYW5kIGRldGVjdCB0aGUgcmVxdWlyZWQgc3RhdGUgdGhyb3VnaFxuICAgIC8vIGEgcHVibGljIHByb3BlcnR5IGluIHRoZSBhYnN0cmFjdCBmb3JtIGNvbnRyb2wuXG4gICAgc2V0TGFiZWxSZXF1aXJlZDogKCkgPT4ge30sXG4gICAgbm90Y2hPdXRsaW5lOiAoKSA9PiB7fSxcbiAgICBjbG9zZU91dGxpbmU6ICgpID0+IHt9LFxuXG4gICAgYWN0aXZhdGVMaW5lUmlwcGxlOiAoKSA9PiB0aGlzLl9saW5lUmlwcGxlICYmIHRoaXMuX2xpbmVSaXBwbGUuYWN0aXZhdGUoKSxcbiAgICBkZWFjdGl2YXRlTGluZVJpcHBsZTogKCkgPT4gdGhpcy5fbGluZVJpcHBsZSAmJiB0aGlzLl9saW5lUmlwcGxlLmRlYWN0aXZhdGUoKSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHJlZ2lzdGVyIGV2ZW50cyBvbiB0aGUgaW5wdXQuIFRoaXMgaXMgbm90IG1hdGNoaW5nXG4gICAgLy8gb3VyIGNvbmNlcHQgb2YgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9scy4gV2UgaGFuZGxlIGVhY2ggZXZlbnQgbWFudWFsbHlcbiAgICAvLyBpbiBcInN0YXRlQ2hhbmdlc1wiIGJhc2VkIG9uIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgc3RhdGUuIFRoZSBmb2xsb3dpbmcgZXZlbnRzXG4gICAgLy8gbmVlZCB0byBiZSBoYW5kbGVkOiBmb2N1cywgYmx1ci4gV2UgZG8gbm90IGhhbmRsZSB0aGUgXCJpbnB1dFwiIGV2ZW50IHNpbmNlXG4gICAgLy8gdGhhdCBvbmUgaXMgb25seSBuZWVkZWQgZm9yIHRoZSB0ZXh0LWZpZWxkIGNoYXJhY3RlciBjb3VudCwgd2hpY2ggd2UgZG9cbiAgICAvLyBub3QgaW1wbGVtZW50IGFzIHBhcnQgb2YgdGhlIGZvcm0gZmllbGQsIGJ1dCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgbWFudWFsbHlcbiAgICAvLyBieSBjb25zdW1lcnMgdXNpbmcgdGVtcGxhdGUgYmluZGluZ3MuXG4gICAgcmVnaXN0ZXJJbnB1dEludGVyYWN0aW9uSGFuZGxlcjogKCkgPT4ge30sXG4gICAgZGVyZWdpc3RlcklucHV0SW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcblxuICAgIC8vIFdlIGRvIG5vdCBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgaW5wdXQgc2luY2Ugd2Ugd29yayB3aXRoIGFic3RyYWN0IGZvcm0gZmllbGRcbiAgICAvLyBjb250cm9scy4gTURDIG5lZWRzIGEgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgaW5wdXQgb3B0aW9uYWxseSB0byBoYW5kbGUgY2hhcmFjdGVyXG4gICAgLy8gY291bnRpbmcgYW5kIHZhbHVlIHVwZGF0aW5nLiBUaGVzZSBhcmUgYm90aCB0aGluZ3Mgd2UgZG8gbm90IGhhbmRsZSBmcm9tIHdpdGhpbiB0aGVcbiAgICAvLyBmb3JtIGZpZWxkLCBzbyB3ZSBjYW4ganVzdCByZXR1cm4gbnVsbC5cbiAgICBnZXROYXRpdmVJbnB1dDogKCkgPT4gbnVsbCxcblxuICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIHNpbmNlIHdlIGRvIG5vdCBoYXZlIHRoZSBhYmlsaXR5IHRvIGFkZCBldmVudCBsaXN0ZW5lcnNcbiAgICAvLyB0byB0aGUgbmF0aXZlIGlucHV0LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGZvcm0gY29udHJvbCBpcyBub3QgbmVjZXNzYXJpbHkgYW4gaW5wdXQsIGFuZFxuICAgIC8vIHRoZSBmb3JtIGZpZWxkIGRlYWxzIHdpdGggYWJzdHJhY3QgZm9ybSBjb250cm9scyBvZiBhbnkgdHlwZS5cbiAgICBzZXRMaW5lUmlwcGxlVHJhbnNmb3JtT3JpZ2luOiAoKSA9PiB7fSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHJlZ2lzdGVyIGNsaWNrIGFuZCBrZXlib2FyZCBldmVudHMgb24gdGhlIGZvcm0gZmllbGQgdG8gZmlndXJlIG91dFxuICAgIC8vIGlmIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQmFzZWQgb24gdGhhdCwgdGhlIGZvdW5kYXRpb24gdHJpZXNcbiAgICAvLyB0byBmb2N1cyB0aGUgaW5wdXQuIFNpbmNlIHdlIGRvIG5vdCBoYW5kbGUgdGhlIGlucHV0IHZhbHVlIGFzIHBhcnQgb2YgdGhlIGZvcm0gZmllbGQsIG5vclxuICAgIC8vIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnB1dCAoc2VlIGFkYXB0ZXIgbWV0aG9kcyBhYm92ZSksIHRoaXMgaXMgYSBub29wLlxuICAgIGRlcmVnaXN0ZXJUZXh0RmllbGRJbnRlcmFjdGlvbkhhbmRsZXI6ICgpID0+IHt9LFxuICAgIHJlZ2lzdGVyVGV4dEZpZWxkSW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHNldHVwIGEgXCJNdXRhdGlvbk9ic2VydmVyXCIgaW4gb3JkZXIgdG8gd2F0Y2ggZm9yIGF0dHJpYnV0ZXNcbiAgICAvLyBsaWtlIFwibWF4bGVuZ3RoXCIgb3IgXCJwYXR0ZXJuXCIgdG8gY2hhbmdlLiBUaGUgZm91bmRhdGlvbiB3aWxsIHVwZGF0ZSB0aGUgdmFsaWRpdHkgc3RhdGVcbiAgICAvLyBiYXNlZCBvbiB0aGF0LiBXZSBkbyBub3QgbmVlZCB0aGlzIGxvZ2ljIHNpbmNlIHdlIGhhbmRsZSB0aGUgdmFsaWRpdHkgdGhyb3VnaCB0aGVcbiAgICAvLyBhYnN0cmFjdCBmb3JtIGNvbnRyb2wgaW5zdGFuY2UuXG4gICAgZGVyZWdpc3RlclZhbGlkYXRpb25BdHRyaWJ1dGVDaGFuZ2VIYW5kbGVyOiAoKSA9PiB7fSxcbiAgICByZWdpc3RlclZhbGlkYXRpb25BdHRyaWJ1dGVDaGFuZ2VIYW5kbGVyOiAoKSA9PiBudWxsIGFzIGFueSxcblxuICAgIC8vIFVzZWQgYnkgZm91bmRhdGlvbiB0byBkeW5hbWljYWxseSByZW1vdmUgYXJpYS1kZXNjcmliZWRieSB3aGVuIHRoZSBoaW50IHRleHRcbiAgICAvLyBpcyBzaG93biBvbmx5IG9uIGludmFsaWQgc3RhdGUsIHdoaWNoIHNob3VsZCBub3QgYmUgYXBwbGljYWJsZSBoZXJlLlxuICAgIHNldElucHV0QXR0cjogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlbW92ZUlucHV0QXR0cjogKCkgPT4gdW5kZWZpbmVkLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdHM/OiBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgcHVibGljIF9hbmltYXRpb25Nb2RlPzogc3RyaW5nLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50PzogYW55LFxuICApIHtcbiAgICBpZiAoX2RlZmF1bHRzKSB7XG4gICAgICBpZiAoX2RlZmF1bHRzLmFwcGVhcmFuY2UpIHtcbiAgICAgICAgdGhpcy5hcHBlYXJhbmNlID0gX2RlZmF1bHRzLmFwcGVhcmFuY2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXIgPSBCb29sZWFuKF9kZWZhdWx0cz8uaGlkZVJlcXVpcmVkTWFya2VyKTtcbiAgICAgIGlmIChfZGVmYXVsdHMuY29sb3IpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IF9kZWZhdWx0cy5jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbiA9IG5ldyBNRENUZXh0RmllbGRGb3VuZGF0aW9uKHRoaXMuX2FkYXB0ZXIpO1xuXG4gICAgLy8gTURDIHVzZXMgdGhlIFwic2hvdWxkRmxvYXRcIiBnZXR0ZXIgdG8ga25vdyB3aGV0aGVyIHRoZSBsYWJlbCBpcyBjdXJyZW50bHkgZmxvYXRpbmcuIFRoaXNcbiAgICAvLyBkb2VzIG5vdCBtYXRjaCBvdXIgaW1wbGVtZW50YXRpb24gb2Ygd2hlbiB0aGUgbGFiZWwgZmxvYXRzIGJlY2F1c2Ugd2Ugc3VwcG9ydCBtb3JlIGNhc2VzLlxuICAgIC8vIEZvciBleGFtcGxlLCBjb25zdW1lcnMgY2FuIHNldCBcIkBJbnB1dCBmbG9hdExhYmVsXCIgdG8gYWx3YXlzLCBvciB0aGUgY3VzdG9tIGZvcm0gZmllbGRcbiAgICAvLyBjb250cm9sIGNhbiBzZXQgXCJNYXRGb3JtRmllbGRDb250cm9sI3Nob3VsZExhYmVsRmxvYXRcIiB0byB0cnVlLiBUbyBlbnN1cmUgdGhhdCBNREMga25vd3NcbiAgICAvLyB3aGVuIHRoZSBsYWJlbCBpcyBmbG9hdGluZywgd2Ugb3ZlcndyaXRlIHRoZSBwcm9wZXJ0eSB0byBiZSBiYXNlZCBvbiB0aGUgbWV0aG9kIHdlIHVzZSB0b1xuICAgIC8vIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuX2ZvdW5kYXRpb24sICdzaG91bGRGbG9hdCcsIHtcbiAgICAgIGdldDogKCkgPT4gdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpLFxuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZvdW5kYXRpb24gZGV0ZXJtaW5lcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHRleHQtZmllbGQgZnJvbSB0aGVcbiAgICAvLyBzcGVjaWZpZWQgbmF0aXZlIGlucHV0LiBTaW5jZSB3ZSBkb24ndCBwYXNzIGEgbmF0aXZlIGlucHV0IHRvIHRoZSBmb3VuZGF0aW9uIGJlY2F1c2VcbiAgICAvLyBhYnN0cmFjdCBmb3JtIGNvbnRyb2xzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lzdGluZyBvZiBhbiBpbnB1dCwgd2UgaGFuZGxlIHRoZVxuICAgIC8vIHRleHQtZmllbGQgdmFsaWRpdHkgdGhyb3VnaCB0aGUgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9sIHN0YXRlLlxuICAgIHRoaXMuX2ZvdW5kYXRpb24uaXNWYWxpZCA9ICgpID0+ICF0aGlzLl9jb250cm9sLmVycm9yU3RhdGU7XG5cbiAgICAvLyBJbml0aWFsIGZvY3VzIHN0YXRlIHN5bmMuIFRoaXMgaGFwcGVucyByYXJlbHksIGJ1dCB3ZSB3YW50IHRvIGFjY291bnQgZm9yXG4gICAgLy8gaXQgaW4gY2FzZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGhhcyBcImZvY3VzZWRcIiBzZXQgdG8gdHJ1ZSBvbiBpbml0LlxuICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAvLyBJbml0aWFsIG5vdGNoIHdpZHRoIHVwZGF0ZS4gVGhpcyBpcyBuZWVkZWQgaW4gY2FzZSB0aGUgdGV4dC1maWVsZCBsYWJlbCBmbG9hdHNcbiAgICAvLyBvbiBpbml0aWFsaXphdGlvbiwgYW5kIHJlbmRlcnMgaW5zaWRlIG9mIHRoZSBub3RjaGVkIG91dGxpbmUuXG4gICAgdGhpcy5fcmVmcmVzaE91dGxpbmVOb3RjaFdpZHRoKCk7XG4gICAgLy8gTWFrZSBzdXJlIGZvbnRzIGFyZSBsb2FkZWQgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSB3aWR0aC5cbiAgICAvLyB6b25lLmpzIGN1cnJlbnRseSBkb2Vzbid0IHBhdGNoIHRoZSBGb250RmFjZVNldCBBUEkgc28gdHdvIGNhbGxzIHRvXG4gICAgLy8gX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCBpcyBuZWVkZWQgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseSBpbiBhc3luYyB0ZXN0cy5cbiAgICAvLyBGdXJ0aGVybW9yZSBpZiB0aGUgZm9udCB0YWtlcyBhIGxvbmcgdGltZSB0byBsb2FkIHdlIHdhbnQgdGhlIG91dGxpbmUgbm90Y2ggdG8gYmUgY2xvc2VcbiAgICAvLyB0byB0aGUgY29ycmVjdCB3aWR0aCBmcm9tIHRoZSBzdGFydCB0aGVuIGNvcnJlY3QgaXRzZWxmIHdoZW4gdGhlIGZvbnRzIGxvYWQuXG4gICAgaWYgKHRoaXMuX2RvY3VtZW50Py5mb250cz8ucmVhZHkpIHtcbiAgICAgIHRoaXMuX2RvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9udEZhY2VTZXQgaXMgbm90IHN1cHBvcnRlZCBpbiBJRVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSwgMTAwKTtcbiAgICB9XG4gICAgLy8gRW5hYmxlIGFuaW1hdGlvbnMgbm93LiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgYW5pbWF0ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICB0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgLy8gQmVjYXVzZSB0aGUgYWJvdmUgY2hhbmdlcyBhIHZhbHVlIHVzZWQgaW4gdGhlIHRlbXBsYXRlIGFmdGVyIGl0IHdhcyBjaGVja2VkLCB3ZSBuZWVkXG4gICAgLy8gdG8gdHJpZ2dlciBDRCBvciB0aGUgY2hhbmdlIG1pZ2h0IG5vdCBiZSByZWZsZWN0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgQ0Qgc2NoZWR1bGVkLlxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZUNvbnRyb2woKTtcbiAgICB0aGlzLl9pbml0aWFsaXplU3Vic2NyaXB0KCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgdGhpcy5fYXNzZXJ0Rm9ybUZpZWxkQ29udHJvbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbj8uZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaWQgb2YgdGhlIGxhYmVsIGVsZW1lbnQuIElmIG5vIGxhYmVsIGlzIHByZXNlbnQsIHJldHVybnMgYG51bGxgLlxuICAgKi9cbiAgZ2V0TGFiZWxJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpID8gdGhpcy5fbGFiZWxJZCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBFbGVtZW50UmVmIGZvciB0aGUgZWxlbWVudCB0aGF0IGEgb3ZlcmxheSBhdHRhY2hlZCB0byB0aGUgZm9ybSBmaWVsZFxuICAgKiBzaG91bGQgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0by5cbiAgICovXG4gIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRGaWVsZCB8fCB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqIEFuaW1hdGVzIHRoZSBwbGFjZWhvbGRlciB1cCBhbmQgbG9ja3MgaXQgaW4gcG9zaXRpb24uICovXG4gIF9hbmltYXRlQW5kTG9ja0xhYmVsKCk6IHZvaWQge1xuICAgIC8vIFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuIENvbnN1bWVycyBvZiB0aGUgZm9ybSBmaWVsZCBtaWdodCB1c2VcbiAgICAvLyB0aGlzIG1ldGhvZC4gZS5nLiB0aGUgYXV0b2NvbXBsZXRlIHRyaWdnZXIuIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBub24tTURDXG4gICAgLy8gZm9ybSBmaWVsZCBiZWNhdXNlIHNldHRpbmcgXCJmbG9hdExhYmVsXCIgdG8gXCJhbHdheXNcIiBjYXVzZWQgdGhlIGxhYmVsIHRvIGZsb2F0IHdpdGhvdXRcbiAgICAvLyBhbmltYXRpb24uIFRoaXMgaXMgZGlmZmVyZW50IGluIE1EQyB3aGVyZSB0aGUgbGFiZWwgYWx3YXlzIGFuaW1hdGVzLCBzbyB0aGlzIG1ldGhvZFxuICAgIC8vIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuIFRoZXJlIGRvZXNuJ3Qgc2VlbSBhbnkgYmVuZWZpdCBpbiBhZGRpbmcgbG9naWMgdG8gYWxsb3cgY2hhbmdpbmdcbiAgICAvLyB0aGUgZmxvYXRpbmcgbGFiZWwgc3RhdGUgd2l0aG91dCBhbmltYXRpb25zLiBUaGUgbm9uLU1EQyBpbXBsZW1lbnRhdGlvbiB3YXMgaW5jb25zaXN0ZW50XG4gICAgLy8gYmVjYXVzZSBpdCBhbHdheXMgYW5pbWF0ZXMgaWYgXCJmbG9hdExhYmVsXCIgaXMgc2V0IGF3YXkgZnJvbSBcImFsd2F5c1wiLlxuICAgIC8vIFRPRE8oZGV2dmVyc2lvbik6IGNvbnNpZGVyIHJlbW92aW5nIHRoaXMgbWV0aG9kIHdoZW4gcmVsZWFzaW5nIHRoZSBNREMgZm9ybSBmaWVsZC5cbiAgICBpZiAodGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpKSB7XG4gICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICB9XG4gIH1cblxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIHJlZ2lzdGVyZWQgZm9ybSBmaWVsZCBjb250cm9sLiAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplQ29udHJvbCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcbiAgICAgICAgYG1hdC1tZGMtZm9ybS1maWVsZC10eXBlLSR7Y29udHJvbC5jb250cm9sVHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgY2hpbGQgY29udHJvbCBzdGF0ZSBpbiBvcmRlciB0byB1cGRhdGUgdGhlIGZvcm0gZmllbGQgVUkuXG4gICAgY29udHJvbC5zdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBSdW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICBpZiAoY29udHJvbC5uZ0NvbnRyb2wgJiYgY29udHJvbC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzKSB7XG4gICAgICBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKSB7XG4gICAgdGhpcy5faGFzSWNvblByZWZpeCA9ICEhdGhpcy5fcHJlZml4Q2hpbGRyZW4uZmluZChwID0+ICFwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc1RleHRQcmVmaXggPSAhIXRoaXMuX3ByZWZpeENoaWxkcmVuLmZpbmQocCA9PiBwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc0ljb25TdWZmaXggPSAhIXRoaXMuX3N1ZmZpeENoaWxkcmVuLmZpbmQocyA9PiAhcy5faXNUZXh0KTtcbiAgICB0aGlzLl9oYXNUZXh0U3VmZml4ID0gISF0aGlzLl9zdWZmaXhDaGlsZHJlbi5maW5kKHMgPT4gcy5faXNUZXh0KTtcbiAgfVxuXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgcHJlZml4IGFuZCBzdWZmaXggY29udGFpbmVycy4gKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpIHtcbiAgICB0aGlzLl9jaGVja1ByZWZpeEFuZFN1ZmZpeFR5cGVzKCk7XG4gICAgLy8gTWFyayB0aGUgZm9ybSBmaWVsZCBhcyBkaXJ0eSB3aGVuZXZlciB0aGUgcHJlZml4IG9yIHN1ZmZpeCBjaGlsZHJlbiBjaGFuZ2UuIFRoaXNcbiAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjb25kaXRpb25hbGx5IGRpc3BsYXkgdGhlIHByZWZpeC9zdWZmaXggY29udGFpbmVycyBiYXNlZFxuICAgIC8vIG9uIHdoZXRoZXIgdGhlcmUgaXMgcHJvamVjdGVkIGNvbnRlbnQuXG4gICAgbWVyZ2UodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcywgdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBzdWJzY3JpcHQgYnkgdmFsaWRhdGluZyBoaW50cyBhbmQgc3luY2hyb25pemluZyBcImFyaWEtZGVzY3JpYmVkYnlcIiBpZHNcbiAgICogd2l0aCB0aGUgY3VzdG9tIGZvcm0gZmllbGQgY29udHJvbC4gQWxzbyBzdWJzY3JpYmVzIHRvIGhpbnQgYW5kIGVycm9yIGNoYW5nZXMgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byB2YWxpZGF0ZSBhbmQgc3luY2hyb25pemUgaWRzIG9uIGNoYW5nZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVTdWJzY3JpcHQoKSB7XG4gICAgLy8gUmUtdmFsaWRhdGUgd2hlbiB0aGUgbnVtYmVyIG9mIGhpbnRzIGNoYW5nZXMuXG4gICAgdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3Byb2Nlc3NIaW50cygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGFyaWEtZGVzY3JpYmVkIGJ5IHdoZW4gdGhlIG51bWJlciBvZiBlcnJvcnMgY2hhbmdlcy5cbiAgICB0aGlzLl9lcnJvckNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsIG1hdC1oaW50IHZhbGlkYXRpb24gYW5kIHN1YnNjcmlwdCBkZXNjcmliZWRCeUlkcyBzeW5jLlxuICAgIHRoaXMuX3ZhbGlkYXRlSGludHMoKTtcbiAgICB0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKTtcbiAgfVxuXG4gIC8qKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGZvcm0gZmllbGQncyBjb250cm9sIGlzIG1pc3NpbmcuICovXG4gIHByaXZhdGUgX2Fzc2VydEZvcm1GaWVsZENvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLl9jb250cm9sICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRm9jdXNTdGF0ZSgpIHtcbiAgICAvLyBVc3VhbGx5IHRoZSBNREMgZm91bmRhdGlvbiB3b3VsZCBjYWxsIFwiYWN0aXZhdGVGb2N1c1wiIGFuZCBcImRlYWN0aXZhdGVGb2N1c1wiIHdoZW5ldmVyXG4gICAgLy8gY2VydGFpbiBET00gZXZlbnRzIGFyZSBlbWl0dGVkLiBUaGlzIGlzIG5vdCBwb3NzaWJsZSBpbiBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlXG4gICAgLy8gZm9ybSBmaWVsZCBiZWNhdXNlIHdlIHN1cHBvcnQgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9scyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5XG4gICAgLy8gb2YgdHlwZSBpbnB1dCwgbm9yIGRvIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYSBuYXRpdmUgZm9ybSBmaWVsZCBjb250cm9sIGVsZW1lbnQuIEluc3RlYWRcbiAgICAvLyB3ZSBoYW5kbGUgdGhlIGZvY3VzIGJ5IGNoZWNraW5nIGlmIHRoZSBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2wgZm9jdXNlZCBzdGF0ZSBjaGFuZ2VzLlxuICAgIGlmICh0aGlzLl9jb250cm9sLmZvY3VzZWQgJiYgIXRoaXMuX2lzRm9jdXNlZCkge1xuICAgICAgdGhpcy5faXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2ZvdW5kYXRpb24uYWN0aXZhdGVGb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NvbnRyb2wuZm9jdXNlZCAmJiAodGhpcy5faXNGb2N1c2VkIHx8IHRoaXMuX2lzRm9jdXNlZCA9PT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuX2lzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fZm91bmRhdGlvbi5kZWFjdGl2YXRlRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZsb2F0aW5nIGxhYmVsIGluIHRoZSBkb2NrZWQgc3RhdGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgcHJlZml4ZXMuIFRoZSBob3Jpem9udGFsIG9mZnNldFxuICAgKiBpcyBjYWxjdWxhdGVkIHdoZW5ldmVyIHRoZSBhcHBlYXJhbmNlIGNoYW5nZXMgdG8gYG91dGxpbmVgLCB0aGUgcHJlZml4ZXMgY2hhbmdlLCBvciB3aGVuIHRoZVxuICAgKiBmb3JtIGZpZWxkIGlzIGFkZGVkIHRvIHRoZSBET00uIFRoaXMgbWV0aG9kIHNldHMgdXAgYWxsIHN1YnNjcmlwdGlvbnMgd2hpY2ggYXJlIG5lZWRlZCB0b1xuICAgKiB0cmlnZ2VyIHRoZSBsYWJlbCBvZmZzZXQgdXBkYXRlLiBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIGF2b2lkIHBlcmZvcm1pbmcgbWVhc3VyZW1lbnRzIG9mdGVuLFxuICAgKiBzbyB3ZSByZWx5IG9uIHRoZSBgTmdab25lYCBhcyBpbmRpY2F0b3Igd2hlbiB0aGUgb2Zmc2V0IHNob3VsZCBiZSByZWNhbGN1bGF0ZWQsIGluc3RlYWQgb2ZcbiAgICogY2hlY2tpbmcgZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCkge1xuICAgIC8vIFdoZW5ldmVyIHRoZSBwcmVmaXggY2hhbmdlcywgc2NoZWR1bGUgYW4gdXBkYXRlIG9mIHRoZSBsYWJlbCBvZmZzZXQuXG4gICAgdGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWUpLFxuICAgICk7XG5cbiAgICAvLyBOb3RlIHRoYXQgd2UgaGF2ZSB0byBydW4gb3V0c2lkZSBvZiB0aGUgYE5nWm9uZWAgZXhwbGljaXRseSwgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyB0aHJvd2luZyB1c2VycyBpbnRvIGFuIGluZmluaXRlIGxvb3AgaWYgYHpvbmUtcGF0Y2gtcnhqc2AgaXMgaW5jbHVkZWQuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSkge1xuICAgICAgICAgIHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXIuY2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSB0cnVlKSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZmxvYXRpbmcgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBub3QuICovXG4gIF9zaG91bGRBbHdheXNGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdExhYmVsID09PSAnYWx3YXlzJztcbiAgfVxuXG4gIF9oYXNPdXRsaW5lKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVhcmFuY2UgPT09ICdvdXRsaW5lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZGlzcGxheSBpbiB0aGUgaW5maXguIExhYmVscyBpbiB0aGUgb3V0bGluZSBhcHBlYXJhbmNlIGFyZVxuICAgKiBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGUgbm90Y2hlZC1vdXRsaW5lIGFuZCBhcmUgaG9yaXpvbnRhbGx5IG9mZnNldCB0byBhY2NvdW50IGZvclxuICAgKiBmb3JtIGZpZWxkIHByZWZpeCBjb250ZW50LiBUaGlzIHdvbid0IHdvcmsgaW4gc2VydmVyIHNpZGUgcmVuZGVyaW5nIHNpbmNlIHdlIGNhbm5vdFxuICAgKiBtZWFzdXJlIHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVG8gbWFrZSB0aGUgZG9ja2VkIGxhYmVsIGFwcGVhciBhcyBpZiB0aGVcbiAgICogcmlnaHQgb2Zmc2V0IGhhcyBiZWVuIGNhbGN1bGF0ZWQsIHdlIGZvcmNpYmx5IHJlbmRlciB0aGUgbGFiZWwgaW5zaWRlIHRoZSBpbmZpeC4gU2luY2VcbiAgICogdGhlIGxhYmVsIGlzIHBhcnQgb2YgdGhlIGluZml4LCB0aGUgbGFiZWwgY2Fubm90IG92ZXJmbG93IHRoZSBwcmVmaXggY29udGVudC5cbiAgICovXG4gIF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKCkge1xuICAgIHJldHVybiAhdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyICYmIHRoaXMuX3ByZWZpeENoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpO1xuICB9XG5cbiAgX2hhc0Zsb2F0aW5nTGFiZWwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fbGFiZWxDaGlsZE5vblN0YXRpYyB8fCAhIXRoaXMuX2xhYmVsQ2hpbGRTdGF0aWM7XG4gIH1cblxuICBfc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0IHx8IHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCk7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xhc3MgZnJvbSB0aGUgTmdDb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgX3Nob3VsZEZvcndhcmQocHJvcDoga2V5b2YgTmdDb250cm9sKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5fY29udHJvbCA/IHRoaXMuX2NvbnRyb2wubmdDb250cm9sIDogbnVsbDtcbiAgICByZXR1cm4gbmdDb250cm9sICYmIG5nQ29udHJvbFtwcm9wXTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBoaW50cyBvciBlcnJvcnMuICovXG4gIF9nZXREaXNwbGF5ZWRNZXNzYWdlcygpOiAnZXJyb3InIHwgJ2hpbnQnIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiAmJiB0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgdGhpcy5fY29udHJvbC5lcnJvclN0YXRlXG4gICAgICA/ICdlcnJvcidcbiAgICAgIDogJ2hpbnQnO1xuICB9XG5cbiAgLyoqIFJlZnJlc2hlcyB0aGUgd2lkdGggb2YgdGhlIG91dGxpbmUtbm90Y2gsIGlmIHByZXNlbnQuICovXG4gIF9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNPdXRsaW5lKCkgfHwgIXRoaXMuX2Zsb2F0aW5nTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIG91dGxpbmUgbm90Y2ggc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBsYWJlbCB3aWR0aCwgYnV0IG5lZWRzIHRvIHJlc3BlY3QgdGhlIHNjYWxpbmdcbiAgICAvLyBhcHBsaWVkIHRvIHRoZSBsYWJlbCBpZiBpdCBhY3RpdmVseSBmbG9hdHMuIFNpbmNlIHRoZSBsYWJlbCBhbHdheXMgZmxvYXRzIHdoZW4gdGhlIG5vdGNoXG4gICAgLy8gaXMgb3BlbiwgdGhlIE1EQyB0ZXh0LWZpZWxkIGZsb2F0aW5nIGxhYmVsIHNjYWxpbmcgaXMgcmVzcGVjdGVkIGluIG5vdGNoIHdpZHRoIGNhbGN1bGF0aW9uLlxuICAgIHRoaXMuX291dGxpbmVOb3RjaFdpZHRoID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5nZXRXaWR0aCgpICogbWRjVGV4dEZpZWxkTnVtYmVycy5MQUJFTF9TQ0FMRTtcbiAgfVxuXG4gIC8qKiBEb2VzIGFueSBleHRyYSBwcm9jZXNzaW5nIHRoYXQgaXMgcmVxdWlyZWQgd2hlbiBoYW5kbGluZyB0aGUgaGludHMuICovXG4gIHByaXZhdGUgX3Byb2Nlc3NIaW50cygpIHtcbiAgICB0aGlzLl92YWxpZGF0ZUhpbnRzKCk7XG4gICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBtYXhpbXVtIG9mIG9uZSBvZiBlYWNoIFwibWF0LWhpbnRcIiBhbGlnbm1lbnQgc3BlY2lmaWVkLiBUaGUgaGludFxuICAgKiBsYWJlbCBzcGVjaWZpZWQgc2V0IHRocm91Z2ggdGhlIGlucHV0IGlzIGJlaW5nIGNvbnNpZGVyZWQgYXMgXCJzdGFydFwiIGFsaWduZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGEgbm9vcCBpZiBBbmd1bGFyIHJ1bnMgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVIaW50cygpIHtcbiAgICBpZiAodGhpcy5faGludENoaWxkcmVuICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICBsZXQgc3RhcnRIaW50OiBNYXRIaW50O1xuICAgICAgbGV0IGVuZEhpbnQ6IE1hdEhpbnQ7XG4gICAgICB0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgoaGludDogTWF0SGludCkgPT4ge1xuICAgICAgICBpZiAoaGludC5hbGlnbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGlmIChzdGFydEhpbnQgfHwgdGhpcy5oaW50TGFiZWwpIHtcbiAgICAgICAgICAgIHRocm93IGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IoJ3N0YXJ0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXJ0SGludCA9IGhpbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaGludC5hbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpZiAoZW5kSGludCkge1xuICAgICAgICAgICAgdGhyb3cgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcignZW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZEhpbnQgPSBoaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlzdCBvZiBlbGVtZW50IElEcyB0aGF0IGRlc2NyaWJlIHRoZSBjaGlsZCBjb250cm9sLiBUaGlzIGFsbG93cyB0aGUgY29udHJvbCB0byB1cGRhdGVcbiAgICogaXRzIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwcml2YXRlIF9zeW5jRGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIC8vIFRPRE8od2FnbmVybWFjaWVsKTogUmVtb3ZlIHRoZSB0eXBlIGNoZWNrIHdoZW4gd2UgZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGJ1Zy5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5ICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgaWRzLnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCcgJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSA9PT0gJ2hpbnQnKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnc3RhcnQnKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgZW5kSGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnZW5kJylcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHN0YXJ0SGludCkge1xuICAgICAgICAgIGlkcy5wdXNoKHN0YXJ0SGludC5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faGludExhYmVsKSB7XG4gICAgICAgICAgaWRzLnB1c2godGhpcy5faGludExhYmVsSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVuZEhpbnQpIHtcbiAgICAgICAgICBpZHMucHVzaChlbmRIaW50LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9lcnJvckNoaWxkcmVuKSB7XG4gICAgICAgIGlkcy5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKGVycm9yID0+IGVycm9yLmlkKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIGxhYmVsIGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuIEluIHRoZSBvdXRsaW5lXG4gICAqIGFwcGVhcmFuY2UsIHRoZSBub3RjaGVkLW91dGxpbmUgYW5kIGxhYmVsIGFyZSBub3QgcmVsYXRpdmUgdG8gdGhlIGluZml4IGNvbnRhaW5lciBiZWNhdXNlXG4gICAqIHRoZSBvdXRsaW5lIGludGVuZHMgdG8gc3Vycm91bmQgcHJlZml4ZXMsIHN1ZmZpeGVzIGFuZCB0aGUgaW5maXguIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogZmxvYXRpbmcgbGFiZWwgYnkgZGVmYXVsdCBvdmVybGFwcyBwcmVmaXhlcyBpbiB0aGUgZG9ja2VkIHN0YXRlLiBUbyBhdm9pZCB0aGlzLCB3ZSBuZWVkIHRvXG4gICAqIGhvcml6b250YWxseSBvZmZzZXQgdGhlIGxhYmVsIGJ5IHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVGhlIE1EQyB0ZXh0LWZpZWxkIGRvZXNcbiAgICogbm90IG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZXkgdXNlIGEgZml4ZWQgd2lkdGggZm9yIHByZWZpeGVzLiBIZW5jZSwgdGhleSBjYW4gc2ltcGx5XG4gICAqIGluY29ycG9yYXRlIHRoZSBob3Jpem9udGFsIG9mZnNldCBpbnRvIHRoZWlyIGRlZmF1bHQgdGV4dC1maWVsZCBzdHlsZXMuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIgfHwgIXRoaXMuX2hhc091dGxpbmUoKSB8fCAhdGhpcy5fZmxvYXRpbmdMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9hdGluZ0xhYmVsID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5lbGVtZW50O1xuICAgIC8vIElmIG5vIHByZWZpeCBpcyBkaXNwbGF5ZWQsIHJlc2V0IHRoZSBvdXRsaW5lIGxhYmVsIG9mZnNldCBmcm9tIHBvdGVudGlhbFxuICAgIC8vIHByZXZpb3VzIGxhYmVsIG9mZnNldCB1cGRhdGVzLlxuICAgIGlmICghKHRoaXMuX2ljb25QcmVmaXhDb250YWluZXIgfHwgdGhpcy5fdGV4dFByZWZpeENvbnRhaW5lcikpIHtcbiAgICAgIGZsb2F0aW5nTGFiZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIElmIHRoZSBmb3JtIGZpZWxkIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgRE9NIHlldCAoZS5nLiBpbiBhIHRhYiksIHdlIGRlZmVyXG4gICAgLy8gdGhlIGxhYmVsIG9mZnNldCB1cGRhdGUgdW50aWwgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICBpZiAoIXRoaXMuX2lzQXR0YWNoZWRUb0RvbSgpKSB7XG4gICAgICB0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lciA9IHRoaXMuX2ljb25QcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dFByZWZpeENvbnRhaW5lciA9IHRoaXMuX3RleHRQcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lcldpZHRoID0gaWNvblByZWZpeENvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICBjb25zdCB0ZXh0UHJlZml4Q29udGFpbmVyV2lkdGggPSB0ZXh0UHJlZml4Q29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgIC8vIElmIHRoZSBkaXJlY3Rpb25hbGl0eSBpcyBSVEwsIHRoZSB4LWF4aXMgdHJhbnNmb3JtIG5lZWRzIHRvIGJlIGludmVydGVkLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSBgdHJhbnNmb3JtWGAgZG9lcyBub3QgY2hhbmdlIGJhc2VkIG9uIHRoZSBwYWdlIGRpcmVjdGlvbmFsaXR5LlxuICAgIGNvbnN0IGxhYmVsSG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAodGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/IC0xIDogMSkgKlxuICAgICAgLy8gSWYgdGhlcmUncyBhbiBpY29uIHByZWZpeCwgd2Ugc3VidHJhY3QgdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nIGFzIHdlXG4gICAgICAvLyByZXNldCB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIGluIENTUyB0b28uXG4gICAgICAoKGljb25QcmVmaXhDb250YWluZXIgPyBpY29uUHJlZml4Q29udGFpbmVyV2lkdGggLSBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA6IDApICtcbiAgICAgICAgdGV4dFByZWZpeENvbnRhaW5lcldpZHRoKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNmb3JtIHRoZSBmbG9hdGluZyBsYWJlbCB0byBhY2NvdW50IGZvciB0aGUgcHJlZml4IGNvbnRhaW5lci4gTm90ZVxuICAgIC8vIHRoYXQgd2UgZG8gbm90IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscy5cbiAgICBmbG9hdGluZ0xhYmVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke0ZMT0FUSU5HX0xBQkVMX0RFRkFVTFRfRE9DS0VEX1RSQU5TRk9STX0gdHJhbnNsYXRlWCgke2xhYmVsSG9yaXpvbnRhbE9mZnNldH1weClgO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2lzQXR0YWNoZWRUb0RvbSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudC5nZXRSb290Tm9kZSkge1xuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbnNpZGUgdGhlIERPTSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgZWl0aGVyIHRoZSBkb2N1bWVudFxuICAgICAgLy8gb3IgdGhlIGNsb3Nlc3Qgc2hhZG93IHJvb3QsIG90aGVyd2lzZSBpdCdsbCBiZSB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgJiYgcm9vdE5vZGUgIT09IGVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSBmYWxsIGJhY2sgdG8gY2hlY2tpbmcgaWYgaXQncyBpbiB0aGUgZG9jdW1lbnQuIFRoaXMgZG9lc24ndCBhY2NvdW50IGZvclxuICAgIC8vIHNoYWRvdyBET00sIGhvd2V2ZXIgYnJvd3NlciB0aGF0IHN1cHBvcnQgc2hhZG93IERPTSBzaG91bGQgc3VwcG9ydCBgZ2V0Um9vdE5vZGVgIGFzIHdlbGwuXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCEuY29udGFpbnMoZWxlbWVudCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPCEtLVxuICAgIE1EQyByZWNvbW1lbmRzIHRoYXQgdGhlIHRleHQtZmllbGQgaXMgYSBgPGxhYmVsPmAgZWxlbWVudC4gVGhpcyByYXRoZXIgY29tcGxpY2F0ZXMgdGhlXG4gICAgc2V0dXAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGV2ZXJ5IGZvcm0tZmllbGQgY29udHJvbCB0byBleHBsaWNpdGx5IHNldCBgYXJpYS1sYWJlbGxlZGJ5YC5cbiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGA8bGFiZWw+YCBpdHNlbGYgY29udGFpbnMgbW9yZSB0aGFuIHRoZSBhY3R1YWwgbGFiZWwgKGUuZy4gcHJlZml4LCBzdWZmaXhcbiAgICBvciBvdGhlciBwcm9qZWN0ZWQgY29udGVudCksIGFuZCBzY3JlZW4gcmVhZGVycyBjb3VsZCBwb3RlbnRpYWxseSByZWFkIG91dCB1bmRlc2lyZWQgY29udGVudC5cbiAgICBFeGNsdWRpbmcgZWxlbWVudHMgZnJvbSBiZWluZyBwcmludGVkIG91dCByZXF1aXJlcyB0aGVtIHRvIGJlIG1hcmtlZCB3aXRoIGBhcmlhLWhpZGRlbmAsIG9yXG4gICAgdGhlIGZvcm0gY29udHJvbCBpcyBzZXQgdG8gYSBzY29wZWQgZWxlbWVudCBmb3IgdGhlIGxhYmVsICh1c2luZyBgYXJpYS1sYWJlbGxlZGJ5YCkuIEJvdGggb2ZcbiAgICB0aGVzZSBvcHRpb25zIHNlZW0gdG8gY29tcGxpY2F0ZSB0aGUgc2V0dXAgYmVjYXVzZSB3ZSBrbm93IGV4YWN0bHkgd2hhdCBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgYXMgcGFydCBvZiB0aGUgbGFiZWwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHNwZW5kIHJlc291cmNlcyBvbiB3YWxraW5nIHRocm91Z2ggcHJvamVjdGVkIGNvbnRlbnRcbiAgICB0byBzZXQgYGFyaWEtaGlkZGVuYC4gTm9yIGRvIHdlIHdhbnQgdG8gc2V0IGBhcmlhLWxhYmVsbGVkYnlgIG9uIGV2ZXJ5IGZvcm0gY29udHJvbCBpZiB3ZSBjb3VsZFxuICAgIHNpbXBseSBsaW5rIHRoZSBsYWJlbCB0byB0aGUgY29udHJvbCB1c2luZyB0aGUgbGFiZWwgYGZvcmAgYXR0cmlidXRlLlxuXG4gICAgKk5vdGUqOiBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG4gICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS5cbiAgLS0+XG4gIDxsYWJlbCBtYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsXG4gICAgICAgICBbZmxvYXRpbmddPVwiX3Nob3VsZExhYmVsRmxvYXQoKVwiXG4gICAgICAgICAqbmdJZj1cIl9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT1cIl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKVwiXG4gICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgICAgICBbaWRdPVwiX2xhYmVsSWRcIlxuICAgICAgICAgW2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcbiAgICAgICAgIFthdHRyLmFyaWEtb3duc109XCJfY29udHJvbC5pZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8IS0tXG4gICAgICBXZSBzZXQgdGhlIHJlcXVpcmVkIG1hcmtlciBhcyBhIHNlcGFyYXRlIGVsZW1lbnQsIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRhcmdldCBpZlxuICAgICAgYXBwcyB3YW50IHRvIG92ZXJyaWRlIGl0IGFuZCB0byBiZSBhYmxlIHRvIHNldCBgYXJpYS1oaWRkZW5gIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnMgZG9uJ3RcbiAgICAgIHBpY2sgaXQgdXAuXG4gICAgIC0tPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIiFoaWRlUmVxdWlyZWRNYXJrZXIgJiYgX2NvbnRyb2wucmVxdWlyZWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciBtZGMtZmxvYXRpbmctbGFiZWwtLXJlcXVpcmVkXCI+PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIG1kYy10ZXh0LWZpZWxkXCIgI3RleHRGaWVsZFxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWZpbGxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWRdPVwiX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWxdPVwiIV9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWRpc2FibGVkXT1cIl9jb250cm9sLmRpc2FibGVkXCJcbiAgICAgW2NsYXNzLm1kYy10ZXh0LWZpZWxkLS1pbnZhbGlkXT1cIl9jb250cm9sLmVycm9yU3RhdGVcIlxuICAgICAoY2xpY2spPVwiX2NvbnRyb2wub25Db250YWluZXJDbGljayAmJiBfY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mb2N1cy1vdmVybGF5XCIgKm5nSWY9XCIhX2hhc091dGxpbmUoKSAmJiAhX2NvbnRyb2wuZGlzYWJsZWRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mbGV4XCI+XG4gICAgPGRpdiAqbmdJZj1cIl9oYXNPdXRsaW5lKClcIiBtYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVxuICAgICAgICAgW21hdEZvcm1GaWVsZE5vdGNoZWRPdXRsaW5lT3Blbl09XCJfc2hvdWxkTGFiZWxGbG9hdCgpXCJcbiAgICAgICAgIFttYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVdpZHRoXT1cIl9vdXRsaW5lTm90Y2hXaWR0aFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfZm9yY2VEaXNwbGF5SW5maXhMYWJlbCgpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tcHJlZml4XCIgKm5nSWY9XCJfaGFzSWNvblByZWZpeFwiICNpY29uUHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF0sIFttYXRJY29uUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXRleHQtcHJlZml4XCIgKm5nSWY9XCJfaGFzVGV4dFByZWZpeFwiICN0ZXh0UHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFRleHRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1pbmZpeFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfaGFzT3V0bGluZSgpIHx8IF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC10ZXh0LXN1ZmZpeFwiICpuZ0lmPVwiX2hhc1RleHRTdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRUZXh0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tc3VmZml4XCIgKm5nSWY9XCJfaGFzSWNvblN1ZmZpeFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF0sIFttYXRJY29uU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXRGb3JtRmllbGRMaW5lUmlwcGxlICpuZ0lmPVwiIV9oYXNPdXRsaW5lKClcIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIG1hdC1tZGMtZm9ybS1maWVsZC1ib3R0b20tYWxpZ25cIlxuICAgICBbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC1keW5hbWljLXNpemVdPVwic3Vic2NyaXB0U2l6aW5nID09PSAnZHluYW1pYydcIlxuICAgICBbbmdTd2l0Y2hdPVwiX2dldERpc3BsYXllZE1lc3NhZ2VzKClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1lcnJvci13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIlxuICAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cIl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2hpbnQnXCJcbiAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGVcIj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50TGFiZWxcIiBbaWRdPVwiX2hpbnRMYWJlbElkXCI+e3toaW50TGFiZWx9fTwvbWF0LWhpbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaGludC1zcGFjZXJcIj48L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaGludFthbGlnbj0nZW5kJ11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|