@awc-ui/angular 0.0.0-snapshot.20260820120614.cae27aa

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.
@@ -0,0 +1,2132 @@
1
+ import { __decorate } from "tslib";
2
+ /* tslint:disable */
3
+ /* auto-generated angular directive proxies */
4
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
5
+ import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
6
+ import * as i0 from "@angular/core";
7
+ let MdAccordion = class MdAccordion {
8
+ constructor(c, r, z) {
9
+ this.z = z;
10
+ c.detach();
11
+ this.el = r.nativeElement;
12
+ proxyOutputs(this, this.el, ['mdToggle', 'mdReorder', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordion, selector: "md-accordion", inputs: { bringToFront: "bringToFront", defaultExpanded: "defaultExpanded", density: "density", elevation: "elevation", exclusive: "exclusive", floating: "floating", headingLevel: "headingLevel", initialX: "initialX", initialY: "initialY", keepOneExpanded: "keepOneExpanded", region: "region", regionThreshold: "regionThreshold", reorderable: "reorderable", transition: "transition", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ };
17
+ MdAccordion = __decorate([
18
+ ProxyCmp({
19
+ inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant']
20
+ })
21
+ ], MdAccordion);
22
+ export { MdAccordion };
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordion, decorators: [{
24
+ type: Component,
25
+ args: [{
26
+ selector: 'md-accordion',
27
+ changeDetection: ChangeDetectionStrategy.OnPush,
28
+ template: '<ng-content></ng-content>',
29
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
30
+ inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant'],
31
+ }]
32
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
33
+ let MdAccordionItem = class MdAccordionItem {
34
+ constructor(c, r, z) {
35
+ this.z = z;
36
+ c.detach();
37
+ this.el = r.nativeElement;
38
+ proxyOutputs(this, this.el, ['mdItemToggle', 'mdItemRequestFocus', 'mdItemRequestReorder']);
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordionItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordionItem, selector: "md-accordion-item", inputs: { collapsible: "collapsible", contentMaxHeight: "contentMaxHeight", density: "density", disabled: "disabled", expanded: "expanded", headingLevel: "headingLevel", headline: "headline", icon: "icon", regionRole: "regionRole", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ };
43
+ MdAccordionItem = __decorate([
44
+ ProxyCmp({
45
+ inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
46
+ methods: ['toggle', 'focusHeader']
47
+ })
48
+ ], MdAccordionItem);
49
+ export { MdAccordionItem };
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordionItem, decorators: [{
51
+ type: Component,
52
+ args: [{
53
+ selector: 'md-accordion-item',
54
+ changeDetection: ChangeDetectionStrategy.OnPush,
55
+ template: '<ng-content></ng-content>',
56
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
57
+ inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
58
+ }]
59
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
60
+ let MdAppBar = class MdAppBar {
61
+ constructor(c, r, z) {
62
+ this.z = z;
63
+ c.detach();
64
+ this.el = r.nativeElement;
65
+ proxyOutputs(this, this.el, ['mdLeadingClick', 'mdSearchActivate', 'mdSearchInput']);
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAppBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAppBar, selector: "md-app-bar", inputs: { density: "density", headline: "headline", leadingIcon: "leadingIcon", leadingIconLabel: "leadingIconLabel", scrolled: "scrolled", searchAriaLabel: "searchAriaLabel", searchDisabled: "searchDisabled", searchPlaceholder: "searchPlaceholder", searchValue: "searchValue", subtitle: "subtitle", titleAlignment: "titleAlignment", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ };
70
+ MdAppBar = __decorate([
71
+ ProxyCmp({
72
+ inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant']
73
+ })
74
+ ], MdAppBar);
75
+ export { MdAppBar };
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAppBar, decorators: [{
77
+ type: Component,
78
+ args: [{
79
+ selector: 'md-app-bar',
80
+ changeDetection: ChangeDetectionStrategy.OnPush,
81
+ template: '<ng-content></ng-content>',
82
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
83
+ inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant'],
84
+ }]
85
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
86
+ let MdAreaChart = class MdAreaChart {
87
+ constructor(c, r, z) {
88
+ this.z = z;
89
+ c.detach();
90
+ this.el = r.nativeElement;
91
+ proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAreaChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAreaChart, selector: "md-area-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", fillOpacity: "fillOpacity", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
+ };
96
+ MdAreaChart = __decorate([
97
+ ProxyCmp({
98
+ inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
99
+ methods: ['resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
100
+ })
101
+ ], MdAreaChart);
102
+ export { MdAreaChart };
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAreaChart, decorators: [{
104
+ type: Component,
105
+ args: [{
106
+ selector: 'md-area-chart',
107
+ changeDetection: ChangeDetectionStrategy.OnPush,
108
+ template: '<ng-content></ng-content>',
109
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
110
+ inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
111
+ }]
112
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
113
+ let MdAutocomplete = class MdAutocomplete {
114
+ constructor(c, r, z) {
115
+ this.z = z;
116
+ c.detach();
117
+ this.el = r.nativeElement;
118
+ proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdClear', 'mdValidityChange']);
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAutocomplete, selector: "md-autocomplete", inputs: { chipPosition: "chipPosition", clearIcon: "clearIcon", clearOnBlur: "clearOnBlur", clearable: "clearable", density: "density", disableCloseOnSelect: "disableCloseOnSelect", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterMode: "filterMode", filterer: "filterer", freeSolo: "freeSolo", inputValue: "inputValue", label: "label", limitResults: "limitResults", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", multiple: "multiple", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", softDisabled: "softDisabled", statusTemplate: "statusTemplate", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
122
+ };
123
+ MdAutocomplete = __decorate([
124
+ ProxyCmp({
125
+ inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
126
+ methods: ['focusInput', 'showMenu', 'closeMenu', 'loadOptions', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
127
+ })
128
+ ], MdAutocomplete);
129
+ export { MdAutocomplete };
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAutocomplete, decorators: [{
131
+ type: Component,
132
+ args: [{
133
+ selector: 'md-autocomplete',
134
+ changeDetection: ChangeDetectionStrategy.OnPush,
135
+ template: '<ng-content></ng-content>',
136
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
137
+ inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
138
+ }]
139
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
140
+ let MdAvatar = class MdAvatar {
141
+ constructor(c, r, z) {
142
+ this.z = z;
143
+ c.detach();
144
+ this.el = r.nativeElement;
145
+ proxyOutputs(this, this.el, ['mdLoad', 'mdError']);
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAvatar, selector: "md-avatar", inputs: { alt: "alt", colorFromName: "colorFromName", crossorigin: "crossorigin", density: "density", initials: "initials", label: "label", loading: "loading", name: "name", shape: "shape", size: "size", src: "src" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ };
150
+ MdAvatar = __decorate([
151
+ ProxyCmp({
152
+ inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src']
153
+ })
154
+ ], MdAvatar);
155
+ export { MdAvatar };
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAvatar, decorators: [{
157
+ type: Component,
158
+ args: [{
159
+ selector: 'md-avatar',
160
+ changeDetection: ChangeDetectionStrategy.OnPush,
161
+ template: '<ng-content></ng-content>',
162
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
163
+ inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src'],
164
+ }]
165
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
166
+ let MdBadge = class MdBadge {
167
+ constructor(c, r, z) {
168
+ this.z = z;
169
+ c.detach();
170
+ this.el = r.nativeElement;
171
+ }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBadge, selector: "md-badge", inputs: { density: "density", icon: "icon", max: "max", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
+ };
175
+ MdBadge = __decorate([
176
+ ProxyCmp({
177
+ inputs: ['density', 'icon', 'max', 'value', 'variant']
178
+ })
179
+ ], MdBadge);
180
+ export { MdBadge };
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBadge, decorators: [{
182
+ type: Component,
183
+ args: [{
184
+ selector: 'md-badge',
185
+ changeDetection: ChangeDetectionStrategy.OnPush,
186
+ template: '<ng-content></ng-content>',
187
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
188
+ inputs: ['density', 'icon', 'max', 'value', 'variant'],
189
+ }]
190
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
191
+ let MdBarChart = class MdBarChart {
192
+ constructor(c, r, z) {
193
+ this.z = z;
194
+ c.detach();
195
+ this.el = r.nativeElement;
196
+ proxyOutputs(this, this.el, ['mdBarClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
197
+ }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBarChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBarChart, selector: "md-bar-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", barGap: "barGap", barWidth: "barWidth", categoryGap: "categoryGap", chevron: "chevron", clickable: "clickable", cornerRadius: "cornerRadius", density: "density", heightProp: "heightProp", label: "label", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", layout: "layout", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", noAnimation: "noAnimation", polar: "polar", polarHole: "polarHole", polarSweep: "polarSweep", series: "series", showLabels: "showLabels", showTotals: "showTotals", stack: "stack", subtitle: "subtitle", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", yAxis2: "yAxis2", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
200
+ };
201
+ MdBarChart = __decorate([
202
+ ProxyCmp({
203
+ inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
204
+ methods: ['resize', 'replay', 'drill', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
205
+ })
206
+ ], MdBarChart);
207
+ export { MdBarChart };
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBarChart, decorators: [{
209
+ type: Component,
210
+ args: [{
211
+ selector: 'md-bar-chart',
212
+ changeDetection: ChangeDetectionStrategy.OnPush,
213
+ template: '<ng-content></ng-content>',
214
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
215
+ inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
216
+ }]
217
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
218
+ let MdBottomSheet = class MdBottomSheet {
219
+ constructor(c, r, z) {
220
+ this.z = z;
221
+ c.detach();
222
+ this.el = r.nativeElement;
223
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBottomSheet, selector: "md-bottom-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", contentAlign: "contentAlign", density: "density", headline: "headline", headlineAlign: "headlineAlign", open: "open", scrimDismissible: "scrimDismissible", scrollShadow: "scrollShadow", sheetAriaLabel: "sheetAriaLabel", showDragHandle: "showDragHandle", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
227
+ };
228
+ MdBottomSheet = __decorate([
229
+ ProxyCmp({
230
+ inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
231
+ methods: ['show', 'close']
232
+ })
233
+ ], MdBottomSheet);
234
+ export { MdBottomSheet };
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBottomSheet, decorators: [{
236
+ type: Component,
237
+ args: [{
238
+ selector: 'md-bottom-sheet',
239
+ changeDetection: ChangeDetectionStrategy.OnPush,
240
+ template: '<ng-content></ng-content>',
241
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
242
+ inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
243
+ }]
244
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
245
+ let MdBreadcrumbItem = class MdBreadcrumbItem {
246
+ constructor(c, r, z) {
247
+ this.z = z;
248
+ c.detach();
249
+ this.el = r.nativeElement;
250
+ proxyOutputs(this, this.el, ['mdSelect']);
251
+ }
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbItem, selector: "md-breadcrumb-item", inputs: { collapsed: "collapsed", current: "current", density: "density", disabled: "disabled", href: "href", icon: "icon", itemIndex: "itemIndex", itemTotal: "itemTotal", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
+ };
255
+ MdBreadcrumbItem = __decorate([
256
+ ProxyCmp({
257
+ inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target']
258
+ })
259
+ ], MdBreadcrumbItem);
260
+ export { MdBreadcrumbItem };
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbItem, decorators: [{
262
+ type: Component,
263
+ args: [{
264
+ selector: 'md-breadcrumb-item',
265
+ changeDetection: ChangeDetectionStrategy.OnPush,
266
+ template: '<ng-content></ng-content>',
267
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
268
+ inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target'],
269
+ }]
270
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
271
+ let MdBreadcrumbs = class MdBreadcrumbs {
272
+ constructor(c, r, z) {
273
+ this.z = z;
274
+ c.detach();
275
+ this.el = r.nativeElement;
276
+ proxyOutputs(this, this.el, ['mdExpand']);
277
+ }
278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
279
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbs, selector: "md-breadcrumbs", inputs: { density: "density", expandLabel: "expandLabel", itemsAfterCollapse: "itemsAfterCollapse", itemsBeforeCollapse: "itemsBeforeCollapse", label: "label", maxItems: "maxItems", separator: "separator" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
280
+ };
281
+ MdBreadcrumbs = __decorate([
282
+ ProxyCmp({
283
+ inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
284
+ methods: ['expand', 'collapse']
285
+ })
286
+ ], MdBreadcrumbs);
287
+ export { MdBreadcrumbs };
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbs, decorators: [{
289
+ type: Component,
290
+ args: [{
291
+ selector: 'md-breadcrumbs',
292
+ changeDetection: ChangeDetectionStrategy.OnPush,
293
+ template: '<ng-content></ng-content>',
294
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
295
+ inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
296
+ }]
297
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
298
+ let MdButton = class MdButton {
299
+ constructor(c, r, z) {
300
+ this.z = z;
301
+ c.detach();
302
+ this.el = r.nativeElement;
303
+ proxyOutputs(this, this.el, ['mdClick', 'mdChange']);
304
+ }
305
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButton, selector: "md-button", inputs: { density: "density", disabled: "disabled", fullWidth: "fullWidth", href: "href", icon: "icon", loading: "loading", mirrorIcon: "mirrorIcon", ripple: "ripple", roleOverride: "roleOverride", selected: "selected", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", suppressExpandIconFlip: "suppressExpandIconFlip", target: "target", toggle: "toggle", trailingIcon: "trailingIcon", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
307
+ };
308
+ MdButton = __decorate([
309
+ ProxyCmp({
310
+ inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant']
311
+ })
312
+ ], MdButton);
313
+ export { MdButton };
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButton, decorators: [{
315
+ type: Component,
316
+ args: [{
317
+ selector: 'md-button',
318
+ changeDetection: ChangeDetectionStrategy.OnPush,
319
+ template: '<ng-content></ng-content>',
320
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
321
+ inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant'],
322
+ }]
323
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
324
+ let MdButtonGroup = class MdButtonGroup {
325
+ constructor(c, r, z) {
326
+ this.z = z;
327
+ c.detach();
328
+ this.el = r.nativeElement;
329
+ proxyOutputs(this, this.el, ['mdSelectionChange']);
330
+ }
331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
332
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButtonGroup, selector: "md-button-group", inputs: { density: "density", fullWidth: "fullWidth", required: "required", selectionMode: "selectionMode", shape: "shape", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
333
+ };
334
+ MdButtonGroup = __decorate([
335
+ ProxyCmp({
336
+ inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant']
337
+ })
338
+ ], MdButtonGroup);
339
+ export { MdButtonGroup };
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButtonGroup, decorators: [{
341
+ type: Component,
342
+ args: [{
343
+ selector: 'md-button-group',
344
+ changeDetection: ChangeDetectionStrategy.OnPush,
345
+ template: '<ng-content></ng-content>',
346
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
347
+ inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant'],
348
+ }]
349
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
350
+ let MdCard = class MdCard {
351
+ constructor(c, r, z) {
352
+ this.z = z;
353
+ c.detach();
354
+ this.el = r.nativeElement;
355
+ proxyOutputs(this, this.el, ['mdClick', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
356
+ }
357
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
358
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCard, selector: "md-card", inputs: { density: "density", disabled: "disabled", dragEnabled: "dragEnabled", fullHeight: "fullHeight", fullWidth: "fullWidth", interactive: "interactive", ripple: "ripple", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
359
+ };
360
+ MdCard = __decorate([
361
+ ProxyCmp({
362
+ inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant']
363
+ })
364
+ ], MdCard);
365
+ export { MdCard };
366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCard, decorators: [{
367
+ type: Component,
368
+ args: [{
369
+ selector: 'md-card',
370
+ changeDetection: ChangeDetectionStrategy.OnPush,
371
+ template: '<ng-content></ng-content>',
372
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
373
+ inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant'],
374
+ }]
375
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
376
+ let MdCheckbox = class MdCheckbox {
377
+ constructor(c, r, z) {
378
+ this.z = z;
379
+ c.detach();
380
+ this.el = r.nativeElement;
381
+ proxyOutputs(this, this.el, ['mdChange', 'mdValidityChange']);
382
+ }
383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCheckbox, selector: "md-checkbox", inputs: { checked: "checked", density: "density", disabled: "disabled", error: "error", errorText: "errorText", indeterminate: "indeterminate", name: "name", required: "required", softDisabled: "softDisabled", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
385
+ };
386
+ MdCheckbox = __decorate([
387
+ ProxyCmp({
388
+ inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
389
+ methods: ['getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
390
+ })
391
+ ], MdCheckbox);
392
+ export { MdCheckbox };
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCheckbox, decorators: [{
394
+ type: Component,
395
+ args: [{
396
+ selector: 'md-checkbox',
397
+ changeDetection: ChangeDetectionStrategy.OnPush,
398
+ template: '<ng-content></ng-content>',
399
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
400
+ inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
401
+ }]
402
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
403
+ let MdChip = class MdChip {
404
+ constructor(c, r, z) {
405
+ this.z = z;
406
+ c.detach();
407
+ this.el = r.nativeElement;
408
+ proxyOutputs(this, this.el, ['mdClick', 'mdSelect', 'mdRemove']);
409
+ }
410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdChip, selector: "md-chip", inputs: { appearance: "appearance", color: "color", density: "density", disabled: "disabled", elevated: "elevated", icon: "icon", label: "label", removable: "removable", selectable: "selectable", selected: "selected", softDisabled: "softDisabled", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
412
+ };
413
+ MdChip = __decorate([
414
+ ProxyCmp({
415
+ inputs: ['appearance', 'color', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant']
416
+ })
417
+ ], MdChip);
418
+ export { MdChip };
419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdChip, decorators: [{
420
+ type: Component,
421
+ args: [{
422
+ selector: 'md-chip',
423
+ changeDetection: ChangeDetectionStrategy.OnPush,
424
+ template: '<ng-content></ng-content>',
425
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
426
+ inputs: ['appearance', 'color', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant'],
427
+ }]
428
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
429
+ let MdColorPicker = class MdColorPicker {
430
+ constructor(c, r, z) {
431
+ this.z = z;
432
+ c.detach();
433
+ this.el = r.nativeElement;
434
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdOpenChange']);
435
+ }
436
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdColorPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdColorPicker, selector: "md-color-picker", inputs: { alpha: "alpha", ariaLabelProp: "ariaLabelProp", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", format: "format", open: "open", presets: "presets", showHex: "showHex", showInputs: "showInputs", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
438
+ };
439
+ MdColorPicker = __decorate([
440
+ ProxyCmp({
441
+ inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
442
+ methods: ['show', 'close']
443
+ })
444
+ ], MdColorPicker);
445
+ export { MdColorPicker };
446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdColorPicker, decorators: [{
447
+ type: Component,
448
+ args: [{
449
+ selector: 'md-color-picker',
450
+ changeDetection: ChangeDetectionStrategy.OnPush,
451
+ template: '<ng-content></ng-content>',
452
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
453
+ inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
454
+ }]
455
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
456
+ let MdDatePicker = class MdDatePicker {
457
+ constructor(c, r, z) {
458
+ this.z = z;
459
+ c.detach();
460
+ this.el = r.nativeElement;
461
+ proxyOutputs(this, this.el, ['mdChange', 'mdSelected', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdViewChange', 'mdMenuOpen', 'mdMenuSelect', 'mdModeChange', 'mdValidityChange']);
462
+ }
463
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
464
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDatePicker, selector: "md-date-picker", inputs: { calendarIcon: "calendarIcon", cancelLabel: "cancelLabel", chooseMonthAndYearLabel: "chooseMonthAndYearLabel", chooseMonthLabel: "chooseMonthLabel", chooseMonthYearLabel: "chooseMonthYearLabel", chooseYearLabel: "chooseYearLabel", clearLabel: "clearLabel", clearable: "clearable", closeCalendarLabel: "closeCalendarLabel", commitOnSelect: "commitOnSelect", dateSeparator: "dateSeparator", density: "density", disabled: "disabled", enterDatesLabel: "enterDatesLabel", error: "error", errorText: "errorText", fieldVariant: "fieldVariant", firstDayOfWeek: "firstDayOfWeek", headline: "headline", invalidDateLabel: "invalidDateLabel", isDateDisabled: "isDateDisabled", label: "label", locale: "locale", max: "max", min: "min", name: "name", nextMonthLabel: "nextMonthLabel", nextYearLabel: "nextYearLabel", okLabel: "okLabel", open: "open", openCalendarLabel: "openCalendarLabel", outsideClickDismissible: "outsideClickDismissible", placeholder: "placeholder", previousMonthLabel: "previousMonthLabel", previousYearLabel: "previousYearLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", scrimDismissible: "scrimDismissible", selectDateLabel: "selectDateLabel", supportingText: "supportingText", toggleCalendarLabel: "toggleCalendarLabel", toggleTextLabel: "toggleTextLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", yearGridLabel: "yearGridLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
465
+ };
466
+ MdDatePicker = __decorate([
467
+ ProxyCmp({
468
+ inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
469
+ methods: ['show', 'close', 'clear', 'focusInput', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
470
+ })
471
+ ], MdDatePicker);
472
+ export { MdDatePicker };
473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDatePicker, decorators: [{
474
+ type: Component,
475
+ args: [{
476
+ selector: 'md-date-picker',
477
+ changeDetection: ChangeDetectionStrategy.OnPush,
478
+ template: '<ng-content></ng-content>',
479
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
480
+ inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
481
+ }]
482
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
483
+ let MdDialog = class MdDialog {
484
+ constructor(c, r, z) {
485
+ this.z = z;
486
+ c.detach();
487
+ this.el = r.nativeElement;
488
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
489
+ }
490
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDialog, selector: "md-dialog", inputs: { cancelLabel: "cancelLabel", closeLabel: "closeLabel", density: "density", divider: "divider", fullscreen: "fullscreen", headerDivider: "headerDivider", headline: "headline", icon: "icon", locale: "locale", okLabel: "okLabel", open: "open", scrimDismissible: "scrimDismissible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
492
+ };
493
+ MdDialog = __decorate([
494
+ ProxyCmp({
495
+ inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
496
+ methods: ['show', 'close']
497
+ })
498
+ ], MdDialog);
499
+ export { MdDialog };
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDialog, decorators: [{
501
+ type: Component,
502
+ args: [{
503
+ selector: 'md-dialog',
504
+ changeDetection: ChangeDetectionStrategy.OnPush,
505
+ template: '<ng-content></ng-content>',
506
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
507
+ inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
508
+ }]
509
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
510
+ let MdDivider = class MdDivider {
511
+ constructor(c, r, z) {
512
+ this.z = z;
513
+ c.detach();
514
+ this.el = r.nativeElement;
515
+ }
516
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
517
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDivider, selector: "md-divider", inputs: { inset: "inset", insetEnd: "insetEnd", insetStart: "insetStart", vertical: "vertical" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
518
+ };
519
+ MdDivider = __decorate([
520
+ ProxyCmp({
521
+ inputs: ['inset', 'insetEnd', 'insetStart', 'vertical']
522
+ })
523
+ ], MdDivider);
524
+ export { MdDivider };
525
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDivider, decorators: [{
526
+ type: Component,
527
+ args: [{
528
+ selector: 'md-divider',
529
+ changeDetection: ChangeDetectionStrategy.OnPush,
530
+ template: '<ng-content></ng-content>',
531
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
532
+ inputs: ['inset', 'insetEnd', 'insetStart', 'vertical'],
533
+ }]
534
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
535
+ let MdFab = class MdFab {
536
+ constructor(c, r, z) {
537
+ this.z = z;
538
+ c.detach();
539
+ this.el = r.nativeElement;
540
+ proxyOutputs(this, this.el, ['mdClick']);
541
+ }
542
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
543
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFab, selector: "md-fab", inputs: { density: "density", disabled: "disabled", extended: "extended", icon: "icon", label: "label", lowered: "lowered", ripple: "ripple", size: "size", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
544
+ };
545
+ MdFab = __decorate([
546
+ ProxyCmp({
547
+ inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant']
548
+ })
549
+ ], MdFab);
550
+ export { MdFab };
551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFab, decorators: [{
552
+ type: Component,
553
+ args: [{
554
+ selector: 'md-fab',
555
+ changeDetection: ChangeDetectionStrategy.OnPush,
556
+ template: '<ng-content></ng-content>',
557
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
558
+ inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant'],
559
+ }]
560
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
561
+ let MdFabMenu = class MdFabMenu {
562
+ constructor(c, r, z) {
563
+ this.z = z;
564
+ c.detach();
565
+ this.el = r.nativeElement;
566
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
567
+ }
568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
569
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenu, selector: "md-fab-menu", inputs: { anchor: "anchor", density: "density", menuLabel: "menuLabel", open: "open", placement: "placement", quick: "quick", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
570
+ };
571
+ MdFabMenu = __decorate([
572
+ ProxyCmp({
573
+ inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
574
+ methods: ['show', 'close']
575
+ })
576
+ ], MdFabMenu);
577
+ export { MdFabMenu };
578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenu, decorators: [{
579
+ type: Component,
580
+ args: [{
581
+ selector: 'md-fab-menu',
582
+ changeDetection: ChangeDetectionStrategy.OnPush,
583
+ template: '<ng-content></ng-content>',
584
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
585
+ inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
586
+ }]
587
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
588
+ let MdFabMenuItem = class MdFabMenuItem {
589
+ constructor(c, r, z) {
590
+ this.z = z;
591
+ c.detach();
592
+ this.el = r.nativeElement;
593
+ proxyOutputs(this, this.el, ['mdClick']);
594
+ }
595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
596
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenuItem, selector: "md-fab-menu-item", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", rovingFocusVisible: "rovingFocusVisible", softDisabled: "softDisabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
597
+ };
598
+ MdFabMenuItem = __decorate([
599
+ ProxyCmp({
600
+ inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled']
601
+ })
602
+ ], MdFabMenuItem);
603
+ export { MdFabMenuItem };
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenuItem, decorators: [{
605
+ type: Component,
606
+ args: [{
607
+ selector: 'md-fab-menu-item',
608
+ changeDetection: ChangeDetectionStrategy.OnPush,
609
+ template: '<ng-content></ng-content>',
610
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
611
+ inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled'],
612
+ }]
613
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
614
+ let MdIconButton = class MdIconButton {
615
+ constructor(c, r, z) {
616
+ this.z = z;
617
+ c.detach();
618
+ this.el = r.nativeElement;
619
+ proxyOutputs(this, this.el, ['mdClick']);
620
+ }
621
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdIconButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
622
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdIconButton, selector: "md-icon-button", inputs: { buttonWidth: "buttonWidth", density: "density", disabled: "disabled", href: "href", icon: "icon", ripple: "ripple", selected: "selected", selectedIcon: "selectedIcon", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", target: "target", toggle: "toggle", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
623
+ };
624
+ MdIconButton = __decorate([
625
+ ProxyCmp({
626
+ inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant']
627
+ })
628
+ ], MdIconButton);
629
+ export { MdIconButton };
630
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdIconButton, decorators: [{
631
+ type: Component,
632
+ args: [{
633
+ selector: 'md-icon-button',
634
+ changeDetection: ChangeDetectionStrategy.OnPush,
635
+ template: '<ng-content></ng-content>',
636
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
637
+ inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant'],
638
+ }]
639
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
640
+ let MdLineChart = class MdLineChart {
641
+ constructor(c, r, z) {
642
+ this.z = z;
643
+ c.detach();
644
+ this.el = r.nativeElement;
645
+ proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
646
+ }
647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLineChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLineChart, selector: "md-line-chart", inputs: { animation: "animation", animationDuration: "animationDuration", area: "area", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markLines: "markLines", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxes: "yAxes", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
649
+ };
650
+ MdLineChart = __decorate([
651
+ ProxyCmp({
652
+ inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
653
+ methods: ['resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
654
+ })
655
+ ], MdLineChart);
656
+ export { MdLineChart };
657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLineChart, decorators: [{
658
+ type: Component,
659
+ args: [{
660
+ selector: 'md-line-chart',
661
+ changeDetection: ChangeDetectionStrategy.OnPush,
662
+ template: '<ng-content></ng-content>',
663
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
664
+ inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
665
+ }]
666
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
667
+ let MdList = class MdList {
668
+ constructor(c, r, z) {
669
+ this.z = z;
670
+ c.detach();
671
+ this.el = r.nativeElement;
672
+ proxyOutputs(this, this.el, ['mdSelect', 'mdActivate', 'mdReorder']);
673
+ }
674
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
675
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdList, selector: "md-list", inputs: { density: "density", interactionMode: "interactionMode", label: "label", labelledby: "labelledby", listStyle: "listStyle", reorderable: "reorderable", roleOverride: "roleOverride", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
676
+ };
677
+ MdList = __decorate([
678
+ ProxyCmp({
679
+ inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
680
+ methods: ['activateNext', 'activatePrevious', 'selectItem', 'getSelectedIndices']
681
+ })
682
+ ], MdList);
683
+ export { MdList };
684
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdList, decorators: [{
685
+ type: Component,
686
+ args: [{
687
+ selector: 'md-list',
688
+ changeDetection: ChangeDetectionStrategy.OnPush,
689
+ template: '<ng-content></ng-content>',
690
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
691
+ inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
692
+ }]
693
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
694
+ let MdListItem = class MdListItem {
695
+ constructor(c, r, z) {
696
+ this.z = z;
697
+ c.detach();
698
+ this.el = r.nativeElement;
699
+ proxyOutputs(this, this.el, ['mdClick', 'mdItemClick', 'mdItemSelect', 'mdRequestActivation', 'mdItemRequestReorder', 'mdExpand']);
700
+ }
701
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdListItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
702
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdListItem, selector: "md-list-item", inputs: { containerRole: "containerRole", density: "density", disabled: "disabled", expandable: "expandable", expanded: "expanded", headline: "headline", href: "href", interactionMode: "interactionMode", leadingAvatar: "leadingAvatar", leadingAvatarAlt: "leadingAvatarAlt", leadingAvatarLabel: "leadingAvatarLabel", leadingAvatarName: "leadingAvatarName", leadingIcon: "leadingIcon", leadingImage: "leadingImage", leadingImageAlt: "leadingImageAlt", lines: "lines", overline: "overline", reorderable: "reorderable", rovingFocusVisible: "rovingFocusVisible", selected: "selected", selectionMode: "selectionMode", softDisabled: "softDisabled", supportingText: "supportingText", tabbable: "tabbable", target: "target", trailingIcon: "trailingIcon", trailingSupportingText: "trailingSupportingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
703
+ };
704
+ MdListItem = __decorate([
705
+ ProxyCmp({
706
+ inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
707
+ methods: ['setFocus', 'focusItem', 'toggle', 'expand', 'collapse']
708
+ })
709
+ ], MdListItem);
710
+ export { MdListItem };
711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdListItem, decorators: [{
712
+ type: Component,
713
+ args: [{
714
+ selector: 'md-list-item',
715
+ changeDetection: ChangeDetectionStrategy.OnPush,
716
+ template: '<ng-content></ng-content>',
717
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
718
+ inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
719
+ }]
720
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
721
+ let MdLoadingIndicator = class MdLoadingIndicator {
722
+ constructor(c, r, z) {
723
+ this.z = z;
724
+ c.detach();
725
+ this.el = r.nativeElement;
726
+ }
727
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLoadingIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
728
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLoadingIndicator, selector: "md-loading-indicator", inputs: { density: "density", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
729
+ };
730
+ MdLoadingIndicator = __decorate([
731
+ ProxyCmp({
732
+ inputs: ['density', 'label', 'variant']
733
+ })
734
+ ], MdLoadingIndicator);
735
+ export { MdLoadingIndicator };
736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLoadingIndicator, decorators: [{
737
+ type: Component,
738
+ args: [{
739
+ selector: 'md-loading-indicator',
740
+ changeDetection: ChangeDetectionStrategy.OnPush,
741
+ template: '<ng-content></ng-content>',
742
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
743
+ inputs: ['density', 'label', 'variant'],
744
+ }]
745
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
746
+ let MdMenu = class MdMenu {
747
+ constructor(c, r, z) {
748
+ this.z = z;
749
+ c.detach();
750
+ this.el = r.nativeElement;
751
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
752
+ }
753
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
754
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenu, selector: "md-menu", inputs: { anchor: "anchor", autoFocus: "autoFocus", density: "density", emptyText: "emptyText", layout: "layout", listLabel: "listLabel", listbox: "listbox", matchAnchorWidth: "matchAnchorWidth", maxHeight: "maxHeight", open: "open", persistent: "persistent", placement: "placement", quick: "quick", responsive: "responsive", useGap: "useGap", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
755
+ };
756
+ MdMenu = __decorate([
757
+ ProxyCmp({
758
+ inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
759
+ methods: ['setComboboxElement', 'setVirtualProvider', 'getScrollViewport', 'show', 'reposition', 'close']
760
+ })
761
+ ], MdMenu);
762
+ export { MdMenu };
763
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenu, decorators: [{
764
+ type: Component,
765
+ args: [{
766
+ selector: 'md-menu',
767
+ changeDetection: ChangeDetectionStrategy.OnPush,
768
+ template: '<ng-content></ng-content>',
769
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
770
+ inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
771
+ }]
772
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
773
+ let MdMenuItem = class MdMenuItem {
774
+ constructor(c, r, z) {
775
+ this.z = z;
776
+ c.detach();
777
+ this.el = r.nativeElement;
778
+ proxyOutputs(this, this.el, ['mdClick']);
779
+ }
780
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItem, selector: "md-menu-item", inputs: { badge: "badge", checkPosition: "checkPosition", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", indeterminate: "indeterminate", keepOpen: "keepOpen", presentation: "presentation", roleOverride: "roleOverride", selected: "selected", supportingText: "supportingText", trailingText: "trailingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
782
+ };
783
+ MdMenuItem = __decorate([
784
+ ProxyCmp({
785
+ inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type']
786
+ })
787
+ ], MdMenuItem);
788
+ export { MdMenuItem };
789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItem, decorators: [{
790
+ type: Component,
791
+ args: [{
792
+ selector: 'md-menu-item',
793
+ changeDetection: ChangeDetectionStrategy.OnPush,
794
+ template: '<ng-content></ng-content>',
795
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
796
+ inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type'],
797
+ }]
798
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
799
+ let MdMenuItemGroup = class MdMenuItemGroup {
800
+ constructor(c, r, z) {
801
+ this.z = z;
802
+ c.detach();
803
+ this.el = r.nativeElement;
804
+ }
805
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItemGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
806
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItemGroup, selector: "md-menu-item-group", inputs: { density: "density", label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
807
+ };
808
+ MdMenuItemGroup = __decorate([
809
+ ProxyCmp({
810
+ inputs: ['density', 'label']
811
+ })
812
+ ], MdMenuItemGroup);
813
+ export { MdMenuItemGroup };
814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItemGroup, decorators: [{
815
+ type: Component,
816
+ args: [{
817
+ selector: 'md-menu-item-group',
818
+ changeDetection: ChangeDetectionStrategy.OnPush,
819
+ template: '<ng-content></ng-content>',
820
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
821
+ inputs: ['density', 'label'],
822
+ }]
823
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
824
+ let MdMeter = class MdMeter {
825
+ constructor(c, r, z) {
826
+ this.z = z;
827
+ c.detach();
828
+ this.el = r.nativeElement;
829
+ }
830
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMeter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
831
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMeter, selector: "md-meter", inputs: { color: "color", density: "density", formatOptions: "formatOptions", label: "label", locale: "locale", max: "max", min: "min", showLabel: "showLabel", showValue: "showValue", size: "size", thickness: "thickness", value: "value", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
832
+ };
833
+ MdMeter = __decorate([
834
+ ProxyCmp({
835
+ inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant']
836
+ })
837
+ ], MdMeter);
838
+ export { MdMeter };
839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMeter, decorators: [{
840
+ type: Component,
841
+ args: [{
842
+ selector: 'md-meter',
843
+ changeDetection: ChangeDetectionStrategy.OnPush,
844
+ template: '<ng-content></ng-content>',
845
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
846
+ inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant'],
847
+ }]
848
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
849
+ let MdMultiSelect = class MdMultiSelect {
850
+ constructor(c, r, z) {
851
+ this.z = z;
852
+ c.detach();
853
+ this.el = r.nativeElement;
854
+ proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdRemove', 'mdClear', 'mdValidityChange']);
855
+ }
856
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMultiSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
857
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMultiSelect, selector: "md-multi-select", inputs: { chipOverflow: "chipOverflow", chipPosition: "chipPosition", clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", countFormatter: "countFormatter", density: "density", disabled: "disabled", displayMode: "displayMode", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", selectAllLabel: "selectAllLabel", showSelectAll: "showSelectAll", softDisabled: "softDisabled", supportingText: "supportingText", trigger: "trigger", triggerIcon: "triggerIcon", triggerLabel: "triggerLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
858
+ };
859
+ MdMultiSelect = __decorate([
860
+ ProxyCmp({
861
+ inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
862
+ methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
863
+ })
864
+ ], MdMultiSelect);
865
+ export { MdMultiSelect };
866
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMultiSelect, decorators: [{
867
+ type: Component,
868
+ args: [{
869
+ selector: 'md-multi-select',
870
+ changeDetection: ChangeDetectionStrategy.OnPush,
871
+ template: '<ng-content></ng-content>',
872
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
873
+ inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
874
+ }]
875
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
876
+ let MdNavigationBar = class MdNavigationBar {
877
+ constructor(c, r, z) {
878
+ this.z = z;
879
+ c.detach();
880
+ this.el = r.nativeElement;
881
+ proxyOutputs(this, this.el, ['mdChange']);
882
+ }
883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationBar, selector: "md-navigation-bar", inputs: { activeIndex: "activeIndex", density: "density", labelBehavior: "labelBehavior", manualActivation: "manualActivation" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
885
+ };
886
+ MdNavigationBar = __decorate([
887
+ ProxyCmp({
888
+ inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
889
+ methods: ['select', 'focusTab']
890
+ })
891
+ ], MdNavigationBar);
892
+ export { MdNavigationBar };
893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationBar, decorators: [{
894
+ type: Component,
895
+ args: [{
896
+ selector: 'md-navigation-bar',
897
+ changeDetection: ChangeDetectionStrategy.OnPush,
898
+ template: '<ng-content></ng-content>',
899
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
900
+ inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
901
+ }]
902
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
903
+ let MdNavigationRail = class MdNavigationRail {
904
+ constructor(c, r, z) {
905
+ this.z = z;
906
+ c.detach();
907
+ this.el = r.nativeElement;
908
+ proxyOutputs(this, this.el, ['mdTabChange', 'mdExpand', 'mdCollapse']);
909
+ }
910
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRail, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
911
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRail, selector: "md-navigation-rail", inputs: { activeIndex: "activeIndex", alignment: "alignment", density: "density", disableFocusManagement: "disableFocusManagement", expandable: "expandable", fullHeight: "fullHeight", label: "label", labelVisibility: "labelVisibility", maxVisible: "maxVisible", modal: "modal", orientation: "orientation", overflowIcon: "overflowIcon", overflowLabel: "overflowLabel", toggleLabel: "toggleLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
912
+ };
913
+ MdNavigationRail = __decorate([
914
+ ProxyCmp({
915
+ inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
916
+ methods: ['expand', 'collapse', 'toggle', 'focusTab']
917
+ })
918
+ ], MdNavigationRail);
919
+ export { MdNavigationRail };
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRail, decorators: [{
921
+ type: Component,
922
+ args: [{
923
+ selector: 'md-navigation-rail',
924
+ changeDetection: ChangeDetectionStrategy.OnPush,
925
+ template: '<ng-content></ng-content>',
926
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
927
+ inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
928
+ }]
929
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
930
+ let MdNavigationRailTab = class MdNavigationRailTab {
931
+ constructor(c, r, z) {
932
+ this.z = z;
933
+ c.detach();
934
+ this.el = r.nativeElement;
935
+ proxyOutputs(this, this.el, ['mdTabClick', 'mdSubmenuToggle']);
936
+ }
937
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRailTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
938
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRailTab, selector: "md-navigation-rail-tab", inputs: { active: "active", badge: "badge", badgeValue: "badgeValue", density: "density", disabled: "disabled", expanded: "expanded", href: "href", icon: "icon", label: "label", labelVisibility: "labelVisibility", target: "target", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
939
+ };
940
+ MdNavigationRailTab = __decorate([
941
+ ProxyCmp({
942
+ inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
943
+ methods: ['clearSubmenuSelection']
944
+ })
945
+ ], MdNavigationRailTab);
946
+ export { MdNavigationRailTab };
947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRailTab, decorators: [{
948
+ type: Component,
949
+ args: [{
950
+ selector: 'md-navigation-rail-tab',
951
+ changeDetection: ChangeDetectionStrategy.OnPush,
952
+ template: '<ng-content></ng-content>',
953
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
954
+ inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
955
+ }]
956
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
957
+ let MdNavigationTab = class MdNavigationTab {
958
+ constructor(c, r, z) {
959
+ this.z = z;
960
+ c.detach();
961
+ this.el = r.nativeElement;
962
+ proxyOutputs(this, this.el, ['mdTabClick']);
963
+ }
964
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
965
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationTab, selector: "md-navigation-tab", inputs: { active: "active", activeIcon: "activeIcon", badge: "badge", badgeMax: "badgeMax", badgeValue: "badgeValue", density: "density", disabled: "disabled", href: "href", icon: "icon", label: "label", labelBehavior: "labelBehavior", softDisabled: "softDisabled", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
966
+ };
967
+ MdNavigationTab = __decorate([
968
+ ProxyCmp({
969
+ inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
970
+ methods: ['focusEl']
971
+ })
972
+ ], MdNavigationTab);
973
+ export { MdNavigationTab };
974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationTab, decorators: [{
975
+ type: Component,
976
+ args: [{
977
+ selector: 'md-navigation-tab',
978
+ changeDetection: ChangeDetectionStrategy.OnPush,
979
+ template: '<ng-content></ng-content>',
980
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
981
+ inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
982
+ }]
983
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
984
+ let MdNumberField = class MdNumberField {
985
+ constructor(c, r, z) {
986
+ this.z = z;
987
+ c.detach();
988
+ this.el = r.nativeElement;
989
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
990
+ }
991
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNumberField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
992
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNumberField, selector: "md-number-field", inputs: { allowOutOfRange: "allowOutOfRange", allowWheelScrub: "allowWheelScrub", decrementLabel: "decrementLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", formatOptions: "formatOptions", incrementLabel: "incrementLabel", label: "label", largeStep: "largeStep", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", smallStep: "smallStep", snapOnStep: "snapOnStep", step: "step", steppers: "steppers", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
993
+ };
994
+ MdNumberField = __decorate([
995
+ ProxyCmp({
996
+ inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
997
+ methods: ['setFocus', 'select', 'stepUp', 'stepDown', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
998
+ })
999
+ ], MdNumberField);
1000
+ export { MdNumberField };
1001
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNumberField, decorators: [{
1002
+ type: Component,
1003
+ args: [{
1004
+ selector: 'md-number-field',
1005
+ changeDetection: ChangeDetectionStrategy.OnPush,
1006
+ template: '<ng-content></ng-content>',
1007
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1008
+ inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
1009
+ }]
1010
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1011
+ let MdOrganizationChart = class MdOrganizationChart {
1012
+ constructor(c, r, z) {
1013
+ this.z = z;
1014
+ c.detach();
1015
+ this.el = r.nativeElement;
1016
+ proxyOutputs(this, this.el, ['mdSelectionChange', 'mdNodeToggle']);
1017
+ }
1018
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOrganizationChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1019
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOrganizationChart, selector: "md-organization-chart", inputs: { collapseLabel: "collapseLabel", collapsible: "collapsible", density: "density", expandLabel: "expandLabel", label: "label", nodes: "nodes", orientation: "orientation", selectedIds: "selectedIds", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1020
+ };
1021
+ MdOrganizationChart = __decorate([
1022
+ ProxyCmp({
1023
+ inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode']
1024
+ })
1025
+ ], MdOrganizationChart);
1026
+ export { MdOrganizationChart };
1027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOrganizationChart, decorators: [{
1028
+ type: Component,
1029
+ args: [{
1030
+ selector: 'md-organization-chart',
1031
+ changeDetection: ChangeDetectionStrategy.OnPush,
1032
+ template: '<ng-content></ng-content>',
1033
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1034
+ inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode'],
1035
+ }]
1036
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1037
+ let MdOtpField = class MdOtpField {
1038
+ constructor(c, r, z) {
1039
+ this.z = z;
1040
+ c.detach();
1041
+ this.el = r.nativeElement;
1042
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdComplete', 'mdInvalidInput', 'mdValidityChange']);
1043
+ }
1044
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOtpField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1045
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOtpField, selector: "md-otp-field", inputs: { autoSubmit: "autoSubmit", cellLabelTemplate: "cellLabelTemplate", density: "density", disabled: "disabled", error: "error", errorText: "errorText", groupSize: "groupSize", incompleteLabel: "incompleteLabel", inputMode: "inputMode", label: "label", length: "length", mask: "mask", name: "name", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", supportingText: "supportingText", transform: "transform", validationType: "validationType", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1046
+ };
1047
+ MdOtpField = __decorate([
1048
+ ProxyCmp({
1049
+ inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1050
+ methods: ['setFocus', 'clear', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
1051
+ })
1052
+ ], MdOtpField);
1053
+ export { MdOtpField };
1054
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOtpField, decorators: [{
1055
+ type: Component,
1056
+ args: [{
1057
+ selector: 'md-otp-field',
1058
+ changeDetection: ChangeDetectionStrategy.OnPush,
1059
+ template: '<ng-content></ng-content>',
1060
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1061
+ inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1062
+ }]
1063
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1064
+ let MdPieChart = class MdPieChart {
1065
+ constructor(c, r, z) {
1066
+ this.z = z;
1067
+ c.detach();
1068
+ this.el = r.nativeElement;
1069
+ proxyOutputs(this, this.el, ['mdSliceClick', 'mdLegendClick', 'mdReady']);
1070
+ }
1071
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdPieChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1072
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdPieChart, selector: "md-pie-chart", inputs: { animation: "animation", animationDuration: "animationDuration", cornerRadius: "cornerRadius", data: "data", density: "density", endAngle: "endAngle", gradient: "gradient", heightProp: "heightProp", highlight: "highlight", innerRadius: "innerRadius", label: "label", labelEmpty: "labelEmpty", labelMode: "labelMode", labelPlot: "labelPlot", labelPoint: "labelPoint", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", monochrome: "monochrome", noAnimation: "noAnimation", outerRadius: "outerRadius", paddingAngle: "paddingAngle", ringWidths: "ringWidths", showLabels: "showLabels", startAngle: "startAngle", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1073
+ };
1074
+ MdPieChart = __decorate([
1075
+ ProxyCmp({
1076
+ inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1077
+ methods: ['resize', 'replay', 'drill', 'toDataURL', 'getInstance']
1078
+ })
1079
+ ], MdPieChart);
1080
+ export { MdPieChart };
1081
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdPieChart, decorators: [{
1082
+ type: Component,
1083
+ args: [{
1084
+ selector: 'md-pie-chart',
1085
+ changeDetection: ChangeDetectionStrategy.OnPush,
1086
+ template: '<ng-content></ng-content>',
1087
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1088
+ inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1089
+ }]
1090
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1091
+ let MdProgressIndicator = class MdProgressIndicator {
1092
+ constructor(c, r, z) {
1093
+ this.z = z;
1094
+ c.detach();
1095
+ this.el = r.nativeElement;
1096
+ proxyOutputs(this, this.el, ['mdComplete']);
1097
+ }
1098
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdProgressIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1099
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdProgressIndicator, selector: "md-progress-indicator", inputs: { complete: "complete", density: "density", fourColor: "fourColor", indeterminate: "indeterminate", label: "label", max: "max", size: "size", thickness: "thickness", value: "value", variant: "variant", wave: "wave", waveAmplitude: "waveAmplitude", waveLength: "waveLength", waveSpeed: "waveSpeed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1100
+ };
1101
+ MdProgressIndicator = __decorate([
1102
+ ProxyCmp({
1103
+ inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed']
1104
+ })
1105
+ ], MdProgressIndicator);
1106
+ export { MdProgressIndicator };
1107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdProgressIndicator, decorators: [{
1108
+ type: Component,
1109
+ args: [{
1110
+ selector: 'md-progress-indicator',
1111
+ changeDetection: ChangeDetectionStrategy.OnPush,
1112
+ template: '<ng-content></ng-content>',
1113
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1114
+ inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed'],
1115
+ }]
1116
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1117
+ let MdRadio = class MdRadio {
1118
+ constructor(c, r, z) {
1119
+ this.z = z;
1120
+ c.detach();
1121
+ this.el = r.nativeElement;
1122
+ proxyOutputs(this, this.el, ['mdChange', 'mdFocus', 'mdBlur', 'mdValidityChange']);
1123
+ }
1124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRadio, selector: "md-radio", inputs: { checked: "checked", density: "density", disabled: "disabled", name: "name", required: "required", softDisabled: "softDisabled", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1126
+ };
1127
+ MdRadio = __decorate([
1128
+ ProxyCmp({
1129
+ inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1130
+ methods: ['syncValidityFromGroup', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity', 'setFocus', 'setBlur', 'select']
1131
+ })
1132
+ ], MdRadio);
1133
+ export { MdRadio };
1134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRadio, decorators: [{
1135
+ type: Component,
1136
+ args: [{
1137
+ selector: 'md-radio',
1138
+ changeDetection: ChangeDetectionStrategy.OnPush,
1139
+ template: '<ng-content></ng-content>',
1140
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1141
+ inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1142
+ }]
1143
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1144
+ let MdRating = class MdRating {
1145
+ constructor(c, r, z) {
1146
+ this.z = z;
1147
+ c.detach();
1148
+ this.el = r.nativeElement;
1149
+ proxyOutputs(this, this.el, ['mdHover', 'mdChange']);
1150
+ }
1151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRating, selector: "md-rating", inputs: { defaultValue: "defaultValue", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", getLabel: "getLabel", hover: "hover", icon: "icon", max: "max", name: "name", outlineEmpty: "outlineEmpty", precision: "precision", ratingLabel: "ratingLabel", readonly: "readonly", showValueLabel: "showValueLabel", size: "size", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1153
+ };
1154
+ MdRating = __decorate([
1155
+ ProxyCmp({
1156
+ inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1157
+ methods: ['focusRating']
1158
+ })
1159
+ ], MdRating);
1160
+ export { MdRating };
1161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRating, decorators: [{
1162
+ type: Component,
1163
+ args: [{
1164
+ selector: 'md-rating',
1165
+ changeDetection: ChangeDetectionStrategy.OnPush,
1166
+ template: '<ng-content></ng-content>',
1167
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1168
+ inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1169
+ }]
1170
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1171
+ let MdRipple = class MdRipple {
1172
+ constructor(c, r, z) {
1173
+ this.z = z;
1174
+ c.detach();
1175
+ this.el = r.nativeElement;
1176
+ }
1177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRipple, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRipple, selector: "md-ripple", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1179
+ };
1180
+ MdRipple = __decorate([
1181
+ ProxyCmp({
1182
+ inputs: ['disabled'],
1183
+ methods: ['whenSettled', 'trigger']
1184
+ })
1185
+ ], MdRipple);
1186
+ export { MdRipple };
1187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRipple, decorators: [{
1188
+ type: Component,
1189
+ args: [{
1190
+ selector: 'md-ripple',
1191
+ changeDetection: ChangeDetectionStrategy.OnPush,
1192
+ template: '<ng-content></ng-content>',
1193
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1194
+ inputs: ['disabled'],
1195
+ }]
1196
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1197
+ let MdSearch = class MdSearch {
1198
+ constructor(c, r, z) {
1199
+ this.z = z;
1200
+ c.detach();
1201
+ this.el = r.nativeElement;
1202
+ proxyOutputs(this, this.el, ['mdInput', 'mdSearch', 'mdSubmit', 'mdChange', 'mdOpen', 'mdClose', 'mdClear', 'mdVoice', 'mdLeadingIconClick', 'mdTrailingIconClick']);
1203
+ }
1204
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSearch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1205
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSearch, selector: "md-search", inputs: { announceResults: "announceResults", debounce: "debounce", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", elevation: "elevation", escapeCloses: "escapeCloses", fullWidth: "fullWidth", initialFocus: "initialFocus", inputAriaLabel: "inputAriaLabel", layout: "layout", leadingIcon: "leadingIcon", loading: "loading", loadingLabel: "loadingLabel", maxBlockSize: "maxBlockSize", noResultsLabel: "noResultsLabel", open: "open", openLeadingIcon: "openLeadingIcon", placeholder: "placeholder", resultsLabel: "resultsLabel", scrollShadow: "scrollShadow", showClearButton: "showClearButton", throttle: "throttle", trigger: "trigger", triggerElement: "triggerElement", triggerFor: "triggerFor", triggerIcon: "triggerIcon", value: "value", variant: "variant", voiceSearch: "voiceSearch" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1206
+ };
1207
+ MdSearch = __decorate([
1208
+ ProxyCmp({
1209
+ inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1210
+ methods: ['show', 'close', 'toggle', 'focusInput', 'startVoice', 'stopVoice']
1211
+ })
1212
+ ], MdSearch);
1213
+ export { MdSearch };
1214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSearch, decorators: [{
1215
+ type: Component,
1216
+ args: [{
1217
+ selector: 'md-search',
1218
+ changeDetection: ChangeDetectionStrategy.OnPush,
1219
+ template: '<ng-content></ng-content>',
1220
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1221
+ inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1222
+ }]
1223
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1224
+ let MdSegmentedButton = class MdSegmentedButton {
1225
+ constructor(c, r, z) {
1226
+ this.z = z;
1227
+ c.detach();
1228
+ this.el = r.nativeElement;
1229
+ proxyOutputs(this, this.el, ['mdSegmentClick']);
1230
+ }
1231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1232
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButton, selector: "md-segmented-button", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", noCheckmark: "noCheckmark", ripple: "ripple", segmentDensity: "segmentDensity", segmentIndex: "segmentIndex", segmentMultiselect: "segmentMultiselect", segmentTotal: "segmentTotal", selected: "selected", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1233
+ };
1234
+ MdSegmentedButton = __decorate([
1235
+ ProxyCmp({
1236
+ inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value']
1237
+ })
1238
+ ], MdSegmentedButton);
1239
+ export { MdSegmentedButton };
1240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButton, decorators: [{
1241
+ type: Component,
1242
+ args: [{
1243
+ selector: 'md-segmented-button',
1244
+ changeDetection: ChangeDetectionStrategy.OnPush,
1245
+ template: '<ng-content></ng-content>',
1246
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1247
+ inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value'],
1248
+ }]
1249
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1250
+ let MdSegmentedButtonSet = class MdSegmentedButtonSet {
1251
+ constructor(c, r, z) {
1252
+ this.z = z;
1253
+ c.detach();
1254
+ this.el = r.nativeElement;
1255
+ proxyOutputs(this, this.el, ['mdChange']);
1256
+ }
1257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButtonSet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1258
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButtonSet, selector: "md-segmented-button-set", inputs: { density: "density", multiselect: "multiselect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1259
+ };
1260
+ MdSegmentedButtonSet = __decorate([
1261
+ ProxyCmp({
1262
+ inputs: ['density', 'multiselect']
1263
+ })
1264
+ ], MdSegmentedButtonSet);
1265
+ export { MdSegmentedButtonSet };
1266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButtonSet, decorators: [{
1267
+ type: Component,
1268
+ args: [{
1269
+ selector: 'md-segmented-button-set',
1270
+ changeDetection: ChangeDetectionStrategy.OnPush,
1271
+ template: '<ng-content></ng-content>',
1272
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1273
+ inputs: ['density', 'multiselect'],
1274
+ }]
1275
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1276
+ let MdSelect = class MdSelect {
1277
+ constructor(c, r, z) {
1278
+ this.z = z;
1279
+ c.detach();
1280
+ this.el = r.nativeElement;
1281
+ proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdValidityChange']);
1282
+ }
1283
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1284
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelect, selector: "md-select", inputs: { clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", density: "density", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", fullWidth: "fullWidth", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1285
+ };
1286
+ MdSelect = __decorate([
1287
+ ProxyCmp({
1288
+ inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1289
+ methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1290
+ })
1291
+ ], MdSelect);
1292
+ export { MdSelect };
1293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelect, decorators: [{
1294
+ type: Component,
1295
+ args: [{
1296
+ selector: 'md-select',
1297
+ changeDetection: ChangeDetectionStrategy.OnPush,
1298
+ template: '<ng-content></ng-content>',
1299
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1300
+ inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1301
+ }]
1302
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1303
+ let MdSelectOption = class MdSelectOption {
1304
+ constructor(c, r, z) {
1305
+ this.z = z;
1306
+ c.detach();
1307
+ this.el = r.nativeElement;
1308
+ proxyOutputs(this, this.el, ['mdSelectOptionChange']);
1309
+ }
1310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelectOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1311
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelectOption, selector: "md-select-option", inputs: { disabled: "disabled", icon: "icon", iconColor: "iconColor", label: "label", selected: "selected", supportingText: "supportingText", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1312
+ };
1313
+ MdSelectOption = __decorate([
1314
+ ProxyCmp({
1315
+ inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value']
1316
+ })
1317
+ ], MdSelectOption);
1318
+ export { MdSelectOption };
1319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelectOption, decorators: [{
1320
+ type: Component,
1321
+ args: [{
1322
+ selector: 'md-select-option',
1323
+ changeDetection: ChangeDetectionStrategy.OnPush,
1324
+ template: '<ng-content></ng-content>',
1325
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1326
+ inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value'],
1327
+ }]
1328
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1329
+ let MdSideSheet = class MdSideSheet {
1330
+ constructor(c, r, z) {
1331
+ this.z = z;
1332
+ c.detach();
1333
+ this.el = r.nativeElement;
1334
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel', 'mdBack']);
1335
+ }
1336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSideSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1337
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSideSheet, selector: "md-side-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", density: "density", detached: "detached", headline: "headline", open: "open", scrimDismissible: "scrimDismissible", sheetAriaLabel: "sheetAriaLabel", showBack: "showBack", side: "side", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1338
+ };
1339
+ MdSideSheet = __decorate([
1340
+ ProxyCmp({
1341
+ inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1342
+ methods: ['show', 'close']
1343
+ })
1344
+ ], MdSideSheet);
1345
+ export { MdSideSheet };
1346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSideSheet, decorators: [{
1347
+ type: Component,
1348
+ args: [{
1349
+ selector: 'md-side-sheet',
1350
+ changeDetection: ChangeDetectionStrategy.OnPush,
1351
+ template: '<ng-content></ng-content>',
1352
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1353
+ inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1354
+ }]
1355
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1356
+ let MdSkeleton = class MdSkeleton {
1357
+ constructor(c, r, z) {
1358
+ this.z = z;
1359
+ c.detach();
1360
+ this.el = r.nativeElement;
1361
+ }
1362
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1363
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSkeleton, selector: "md-skeleton", inputs: { animation: "animation", announce: "announce", ariaLabelProp: "ariaLabelProp", density: "density", fullHeight: "fullHeight", fullWidth: "fullWidth", height: "height", lines: "lines", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1364
+ };
1365
+ MdSkeleton = __decorate([
1366
+ ProxyCmp({
1367
+ inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width']
1368
+ })
1369
+ ], MdSkeleton);
1370
+ export { MdSkeleton };
1371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSkeleton, decorators: [{
1372
+ type: Component,
1373
+ args: [{
1374
+ selector: 'md-skeleton',
1375
+ changeDetection: ChangeDetectionStrategy.OnPush,
1376
+ template: '<ng-content></ng-content>',
1377
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1378
+ inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width'],
1379
+ }]
1380
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1381
+ let MdSlider = class MdSlider {
1382
+ constructor(c, r, z) {
1383
+ this.z = z;
1384
+ c.detach();
1385
+ this.el = r.nativeElement;
1386
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdFocus', 'mdBlur', 'mdDragStart', 'mdDragEnd']);
1387
+ }
1388
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1389
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSlider, selector: "md-slider", inputs: { ariaLabelEnd: "ariaLabelEnd", ariaLabelStart: "ariaLabelStart", controlled: "controlled", density: "density", disabled: "disabled", fullHeight: "fullHeight", icon: "icon", insetIcon: "insetIcon", labeled: "labeled", max: "max", min: "min", name: "name", nameEnd: "nameEnd", nameStart: "nameStart", orientation: "orientation", range: "range", size: "size", sliderAriaLabel: "sliderAriaLabel", step: "step", stops: "stops", value: "value", valueEnd: "valueEnd", valueEndText: "valueEndText", valueIndicator: "valueIndicator", valueStart: "valueStart", valueStartText: "valueStartText", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1390
+ };
1391
+ MdSlider = __decorate([
1392
+ ProxyCmp({
1393
+ inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant']
1394
+ })
1395
+ ], MdSlider);
1396
+ export { MdSlider };
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSlider, decorators: [{
1398
+ type: Component,
1399
+ args: [{
1400
+ selector: 'md-slider',
1401
+ changeDetection: ChangeDetectionStrategy.OnPush,
1402
+ template: '<ng-content></ng-content>',
1403
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1404
+ inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant'],
1405
+ }]
1406
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1407
+ let MdSnackbar = class MdSnackbar {
1408
+ constructor(c, r, z) {
1409
+ this.z = z;
1410
+ c.detach();
1411
+ this.el = r.nativeElement;
1412
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdAction']);
1413
+ }
1414
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSnackbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1415
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSnackbar, selector: "md-snackbar", inputs: { action: "action", autoHide: "autoHide", autoHideDuration: "autoHideDuration", closeable: "closeable", density: "density", dismissLabel: "dismissLabel", message: "message", open: "open", politeness: "politeness", position: "position", stacked: "stacked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1416
+ };
1417
+ MdSnackbar = __decorate([
1418
+ ProxyCmp({
1419
+ inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1420
+ methods: ['show', 'hide']
1421
+ })
1422
+ ], MdSnackbar);
1423
+ export { MdSnackbar };
1424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSnackbar, decorators: [{
1425
+ type: Component,
1426
+ args: [{
1427
+ selector: 'md-snackbar',
1428
+ changeDetection: ChangeDetectionStrategy.OnPush,
1429
+ template: '<ng-content></ng-content>',
1430
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1431
+ inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1432
+ }]
1433
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1434
+ let MdSparkline = class MdSparkline {
1435
+ constructor(c, r, z) {
1436
+ this.z = z;
1437
+ c.detach();
1438
+ this.el = r.nativeElement;
1439
+ proxyOutputs(this, this.el, ['mdSparkClick', 'mdReady']);
1440
+ }
1441
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSparkline, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1442
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSparkline, selector: "md-sparkline", inputs: { barWidth: "barWidth", color: "color", cornerRadius: "cornerRadius", curve: "curve", data: "data", heightProp: "heightProp", labels: "labels", lineWidth: "lineWidth", markSize: "markSize", max: "max", min: "min", noAnimation: "noAnimation", referenceAreas: "referenceAreas", showMarks: "showMarks", showTooltip: "showTooltip", valueFormatter: "valueFormatter", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1443
+ };
1444
+ MdSparkline = __decorate([
1445
+ ProxyCmp({
1446
+ inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1447
+ methods: ['resize', 'getInstance']
1448
+ })
1449
+ ], MdSparkline);
1450
+ export { MdSparkline };
1451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSparkline, decorators: [{
1452
+ type: Component,
1453
+ args: [{
1454
+ selector: 'md-sparkline',
1455
+ changeDetection: ChangeDetectionStrategy.OnPush,
1456
+ template: '<ng-content></ng-content>',
1457
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1458
+ inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1459
+ }]
1460
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1461
+ let MdSplitButton = class MdSplitButton {
1462
+ constructor(c, r, z) {
1463
+ this.z = z;
1464
+ c.detach();
1465
+ this.el = r.nativeElement;
1466
+ proxyOutputs(this, this.el, ['mdLeadingClick', 'mdTrailingClick']);
1467
+ }
1468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSplitButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1469
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSplitButton, selector: "md-split-button", inputs: { controls: "controls", density: "density", disabled: "disabled", fullWidth: "fullWidth", haspopup: "haspopup", icon: "icon", label: "label", menuLabel: "menuLabel", ripple: "ripple", size: "size", softDisabled: "softDisabled", trailingChecked: "trailingChecked", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1470
+ };
1471
+ MdSplitButton = __decorate([
1472
+ ProxyCmp({
1473
+ inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant']
1474
+ })
1475
+ ], MdSplitButton);
1476
+ export { MdSplitButton };
1477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSplitButton, decorators: [{
1478
+ type: Component,
1479
+ args: [{
1480
+ selector: 'md-split-button',
1481
+ changeDetection: ChangeDetectionStrategy.OnPush,
1482
+ template: '<ng-content></ng-content>',
1483
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1484
+ inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant'],
1485
+ }]
1486
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1487
+ let MdStatusDot = class MdStatusDot {
1488
+ constructor(c, r, z) {
1489
+ this.z = z;
1490
+ c.detach();
1491
+ this.el = r.nativeElement;
1492
+ }
1493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStatusDot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStatusDot, selector: "md-status-dot", inputs: { density: "density", label: "label", live: "live", size: "size", state: "state" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1495
+ };
1496
+ MdStatusDot = __decorate([
1497
+ ProxyCmp({
1498
+ inputs: ['density', 'label', 'live', 'size', 'state']
1499
+ })
1500
+ ], MdStatusDot);
1501
+ export { MdStatusDot };
1502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStatusDot, decorators: [{
1503
+ type: Component,
1504
+ args: [{
1505
+ selector: 'md-status-dot',
1506
+ changeDetection: ChangeDetectionStrategy.OnPush,
1507
+ template: '<ng-content></ng-content>',
1508
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1509
+ inputs: ['density', 'label', 'live', 'size', 'state'],
1510
+ }]
1511
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1512
+ let MdStep = class MdStep {
1513
+ constructor(c, r, z) {
1514
+ this.z = z;
1515
+ c.detach();
1516
+ this.el = r.nativeElement;
1517
+ proxyOutputs(this, this.el, ['mdStepClick', 'mdStepNext', 'mdStepBack']);
1518
+ }
1519
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStep, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1520
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStep, selector: "md-step", inputs: { accessibleName: "accessibleName", active: "active", completed: "completed", completedIcon: "completedIcon", density: "density", description: "description", disabled: "disabled", editable: "editable", error: "error", errorIcon: "errorIcon", errorText: "errorText", hideActions: "hideActions", icon: "icon", label: "label", optional: "optional" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1521
+ };
1522
+ MdStep = __decorate([
1523
+ ProxyCmp({
1524
+ inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional']
1525
+ })
1526
+ ], MdStep);
1527
+ export { MdStep };
1528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStep, decorators: [{
1529
+ type: Component,
1530
+ args: [{
1531
+ selector: 'md-step',
1532
+ changeDetection: ChangeDetectionStrategy.OnPush,
1533
+ template: '<ng-content></ng-content>',
1534
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1535
+ inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional'],
1536
+ }]
1537
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1538
+ let MdStepper = class MdStepper {
1539
+ constructor(c, r, z) {
1540
+ this.z = z;
1541
+ c.detach();
1542
+ this.el = r.nativeElement;
1543
+ proxyOutputs(this, this.el, ['mdBeforeChange', 'mdStepChange', 'mdComplete']);
1544
+ }
1545
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStepper, selector: "md-stepper", inputs: { active: "active", autoComplete: "autoComplete", backLabel: "backLabel", completedWord: "completedWord", currentWord: "currentWord", density: "density", errorWord: "errorWord", finishLabel: "finishLabel", indicator: "indicator", label: "label", lazy: "lazy", loading: "loading", mode: "mode", nav: "nav", nextDisabled: "nextDisabled", nextLabel: "nextLabel", ofWord: "ofWord", optionalWord: "optionalWord", orientation: "orientation", stepWord: "stepWord", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1547
+ };
1548
+ MdStepper = __decorate([
1549
+ ProxyCmp({
1550
+ inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'stepWord', 'variant'],
1551
+ methods: ['next', 'prev', 'goTo', 'reset']
1552
+ })
1553
+ ], MdStepper);
1554
+ export { MdStepper };
1555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStepper, decorators: [{
1556
+ type: Component,
1557
+ args: [{
1558
+ selector: 'md-stepper',
1559
+ changeDetection: ChangeDetectionStrategy.OnPush,
1560
+ template: '<ng-content></ng-content>',
1561
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1562
+ inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'stepWord', 'variant'],
1563
+ }]
1564
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1565
+ let MdSubMenuItem = class MdSubMenuItem {
1566
+ constructor(c, r, z) {
1567
+ this.z = z;
1568
+ c.detach();
1569
+ this.el = r.nativeElement;
1570
+ proxyOutputs(this, this.el, ['mdClick']);
1571
+ }
1572
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSubMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1573
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSubMenuItem, selector: "md-sub-menu-item", inputs: { badge: "badge", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1574
+ };
1575
+ MdSubMenuItem = __decorate([
1576
+ ProxyCmp({
1577
+ inputs: ['badge', 'density', 'disabled', 'divider', 'gap', 'headline', 'supportingText'],
1578
+ methods: ['collapse']
1579
+ })
1580
+ ], MdSubMenuItem);
1581
+ export { MdSubMenuItem };
1582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSubMenuItem, decorators: [{
1583
+ type: Component,
1584
+ args: [{
1585
+ selector: 'md-sub-menu-item',
1586
+ changeDetection: ChangeDetectionStrategy.OnPush,
1587
+ template: '<ng-content></ng-content>',
1588
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1589
+ inputs: ['badge', 'density', 'disabled', 'divider', 'gap', 'headline', 'supportingText'],
1590
+ }]
1591
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1592
+ let MdSwitch = class MdSwitch {
1593
+ constructor(c, r, z) {
1594
+ this.z = z;
1595
+ c.detach();
1596
+ this.el = r.nativeElement;
1597
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
1598
+ }
1599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSwitch, selector: "md-switch", inputs: { density: "density", disabled: "disabled", icons: "icons", name: "name", required: "required", selected: "selected", selectedIcon: "selectedIcon", showOnlySelectedIcon: "showOnlySelectedIcon", softDisabled: "softDisabled", unselectedIcon: "unselectedIcon", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1601
+ };
1602
+ MdSwitch = __decorate([
1603
+ ProxyCmp({
1604
+ inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1605
+ methods: ['setFocus', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1606
+ })
1607
+ ], MdSwitch);
1608
+ export { MdSwitch };
1609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSwitch, decorators: [{
1610
+ type: Component,
1611
+ args: [{
1612
+ selector: 'md-switch',
1613
+ changeDetection: ChangeDetectionStrategy.OnPush,
1614
+ template: '<ng-content></ng-content>',
1615
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1616
+ inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1617
+ }]
1618
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1619
+ let MdTab = class MdTab {
1620
+ constructor(c, r, z) {
1621
+ this.z = z;
1622
+ c.detach();
1623
+ this.el = r.nativeElement;
1624
+ proxyOutputs(this, this.el, ['mdTabClick']);
1625
+ }
1626
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1627
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTab, selector: "md-tab", inputs: { active: "active", badge: "badge", controls: "controls", density: "density", disabled: "disabled", icon: "icon", inlineIcon: "inlineIcon", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1628
+ };
1629
+ MdTab = __decorate([
1630
+ ProxyCmp({
1631
+ inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant']
1632
+ })
1633
+ ], MdTab);
1634
+ export { MdTab };
1635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTab, decorators: [{
1636
+ type: Component,
1637
+ args: [{
1638
+ selector: 'md-tab',
1639
+ changeDetection: ChangeDetectionStrategy.OnPush,
1640
+ template: '<ng-content></ng-content>',
1641
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1642
+ inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant'],
1643
+ }]
1644
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1645
+ let MdTabPanel = class MdTabPanel {
1646
+ constructor(c, r, z) {
1647
+ this.z = z;
1648
+ c.detach();
1649
+ this.el = r.nativeElement;
1650
+ }
1651
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1652
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanel, selector: "md-tab-panel", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1653
+ };
1654
+ MdTabPanel = __decorate([
1655
+ ProxyCmp({
1656
+ inputs: ['active']
1657
+ })
1658
+ ], MdTabPanel);
1659
+ export { MdTabPanel };
1660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanel, decorators: [{
1661
+ type: Component,
1662
+ args: [{
1663
+ selector: 'md-tab-panel',
1664
+ changeDetection: ChangeDetectionStrategy.OnPush,
1665
+ template: '<ng-content></ng-content>',
1666
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1667
+ inputs: ['active'],
1668
+ }]
1669
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1670
+ let MdTabPanels = class MdTabPanels {
1671
+ constructor(c, r, z) {
1672
+ this.z = z;
1673
+ c.detach();
1674
+ this.el = r.nativeElement;
1675
+ }
1676
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanels, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1677
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanels, selector: "md-tab-panels", inputs: { for: "for", sizing: "sizing" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1678
+ };
1679
+ MdTabPanels = __decorate([
1680
+ ProxyCmp({
1681
+ inputs: ['for', 'sizing']
1682
+ })
1683
+ ], MdTabPanels);
1684
+ export { MdTabPanels };
1685
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanels, decorators: [{
1686
+ type: Component,
1687
+ args: [{
1688
+ selector: 'md-tab-panels',
1689
+ changeDetection: ChangeDetectionStrategy.OnPush,
1690
+ template: '<ng-content></ng-content>',
1691
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1692
+ inputs: ['for', 'sizing'],
1693
+ }]
1694
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1695
+ let MdTable = class MdTable {
1696
+ constructor(c, r, z) {
1697
+ this.z = z;
1698
+ c.detach();
1699
+ this.el = r.nativeElement;
1700
+ proxyOutputs(this, this.el, ['mdSortChange', 'mdSelectionChange', 'mdPinChange', 'mdColumnVisibilityChange', 'mdScroll']);
1701
+ }
1702
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1703
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTable, selector: "md-table", inputs: { caption: "caption", columnTemplate: "columnTemplate", columns: "columns", density: "density", empty: "empty", frozenHeader: "frozenHeader", hoverable: "hoverable", keepHeight: "keepHeight", label: "label", loading: "loading", loadingMode: "loadingMode", loadingRows: "loadingRows", minWidth: "minWidth", motion: "motion", noDividers: "noDividers", pinIcon: "pinIcon", pinMode: "pinMode", rowCount: "rowCount", rowOffset: "rowOffset", scrollbar: "scrollbar", selection: "selection", sortBy: "sortBy", sortOrder: "sortOrder", stickyFooter: "stickyFooter", stickyHeader: "stickyHeader", striped: "striped", summary: "summary" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1704
+ };
1705
+ MdTable = __decorate([
1706
+ ProxyCmp({
1707
+ inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1708
+ methods: ['getSelection', 'selectAll', 'deselectAll', 'toggleSelectAll', 'setSort', 'pinColumn', 'setColumnVisibility', 'animateNextChange']
1709
+ })
1710
+ ], MdTable);
1711
+ export { MdTable };
1712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTable, decorators: [{
1713
+ type: Component,
1714
+ args: [{
1715
+ selector: 'md-table',
1716
+ changeDetection: ChangeDetectionStrategy.OnPush,
1717
+ template: '<ng-content></ng-content>',
1718
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1719
+ inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1720
+ }]
1721
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1722
+ let MdTableBody = class MdTableBody {
1723
+ constructor(c, r, z) {
1724
+ this.z = z;
1725
+ c.detach();
1726
+ this.el = r.nativeElement;
1727
+ }
1728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableBody, selector: "md-table-body", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1730
+ };
1731
+ MdTableBody = __decorate([
1732
+ ProxyCmp({})
1733
+ ], MdTableBody);
1734
+ export { MdTableBody };
1735
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, decorators: [{
1736
+ type: Component,
1737
+ args: [{
1738
+ selector: 'md-table-body',
1739
+ changeDetection: ChangeDetectionStrategy.OnPush,
1740
+ template: '<ng-content></ng-content>',
1741
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1742
+ inputs: [],
1743
+ }]
1744
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1745
+ let MdTableCell = class MdTableCell {
1746
+ constructor(c, r, z) {
1747
+ this.z = z;
1748
+ c.detach();
1749
+ this.el = r.nativeElement;
1750
+ }
1751
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableCell, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1752
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableCell, selector: "md-table-cell", inputs: { align: "align", colSpan: "colSpan", density: "density", ellipsis: "ellipsis", head: "head", noPinIndicator: "noPinIndicator", numeric: "numeric", padding: "padding", pinIcon: "pinIcon", rowSpan: "rowSpan", scope: "scope", sticky: "sticky", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1753
+ };
1754
+ MdTableCell = __decorate([
1755
+ ProxyCmp({
1756
+ inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant']
1757
+ })
1758
+ ], MdTableCell);
1759
+ export { MdTableCell };
1760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableCell, decorators: [{
1761
+ type: Component,
1762
+ args: [{
1763
+ selector: 'md-table-cell',
1764
+ changeDetection: ChangeDetectionStrategy.OnPush,
1765
+ template: '<ng-content></ng-content>',
1766
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1767
+ inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant'],
1768
+ }]
1769
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1770
+ let MdTableContainer = class MdTableContainer {
1771
+ constructor(c, r, z) {
1772
+ this.z = z;
1773
+ c.detach();
1774
+ this.el = r.nativeElement;
1775
+ }
1776
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableContainer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1777
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableContainer, selector: "md-table-container", inputs: { elevation: "elevation", maxHeight: "maxHeight", minHeight: "minHeight", shape: "shape", variant: "variant", vibrant: "vibrant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1778
+ };
1779
+ MdTableContainer = __decorate([
1780
+ ProxyCmp({
1781
+ inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant']
1782
+ })
1783
+ ], MdTableContainer);
1784
+ export { MdTableContainer };
1785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableContainer, decorators: [{
1786
+ type: Component,
1787
+ args: [{
1788
+ selector: 'md-table-container',
1789
+ changeDetection: ChangeDetectionStrategy.OnPush,
1790
+ template: '<ng-content></ng-content>',
1791
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1792
+ inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant'],
1793
+ }]
1794
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1795
+ let MdTableExpandToggle = class MdTableExpandToggle {
1796
+ constructor(c, r, z) {
1797
+ this.z = z;
1798
+ c.detach();
1799
+ this.el = r.nativeElement;
1800
+ }
1801
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableExpandToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1802
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableExpandToggle, selector: "md-table-expand-toggle", inputs: { buttonLabel: "buttonLabel", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1803
+ };
1804
+ MdTableExpandToggle = __decorate([
1805
+ ProxyCmp({
1806
+ inputs: ['buttonLabel', 'icon']
1807
+ })
1808
+ ], MdTableExpandToggle);
1809
+ export { MdTableExpandToggle };
1810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableExpandToggle, decorators: [{
1811
+ type: Component,
1812
+ args: [{
1813
+ selector: 'md-table-expand-toggle',
1814
+ changeDetection: ChangeDetectionStrategy.OnPush,
1815
+ template: '<ng-content></ng-content>',
1816
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1817
+ inputs: ['buttonLabel', 'icon'],
1818
+ }]
1819
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1820
+ let MdTableFoot = class MdTableFoot {
1821
+ constructor(c, r, z) {
1822
+ this.z = z;
1823
+ c.detach();
1824
+ this.el = r.nativeElement;
1825
+ }
1826
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1827
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableFoot, selector: "md-table-foot", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1828
+ };
1829
+ MdTableFoot = __decorate([
1830
+ ProxyCmp({})
1831
+ ], MdTableFoot);
1832
+ export { MdTableFoot };
1833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, decorators: [{
1834
+ type: Component,
1835
+ args: [{
1836
+ selector: 'md-table-foot',
1837
+ changeDetection: ChangeDetectionStrategy.OnPush,
1838
+ template: '<ng-content></ng-content>',
1839
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1840
+ inputs: [],
1841
+ }]
1842
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1843
+ let MdTableHead = class MdTableHead {
1844
+ constructor(c, r, z) {
1845
+ this.z = z;
1846
+ c.detach();
1847
+ this.el = r.nativeElement;
1848
+ }
1849
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1850
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableHead, selector: "md-table-head", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1851
+ };
1852
+ MdTableHead = __decorate([
1853
+ ProxyCmp({})
1854
+ ], MdTableHead);
1855
+ export { MdTableHead };
1856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, decorators: [{
1857
+ type: Component,
1858
+ args: [{
1859
+ selector: 'md-table-head',
1860
+ changeDetection: ChangeDetectionStrategy.OnPush,
1861
+ template: '<ng-content></ng-content>',
1862
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1863
+ inputs: [],
1864
+ }]
1865
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1866
+ let MdTablePagination = class MdTablePagination {
1867
+ constructor(c, r, z) {
1868
+ this.z = z;
1869
+ c.detach();
1870
+ this.el = r.nativeElement;
1871
+ proxyOutputs(this, this.el, ['mdPageChange', 'mdRowsPerPageChange']);
1872
+ }
1873
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTablePagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1874
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTablePagination, selector: "md-table-pagination", inputs: { compact: "compact", count: "count", density: "density", disabled: "disabled", labelAll: "labelAll", labelDisplayedRows: "labelDisplayedRows", labelFirstPage: "labelFirstPage", labelLastPage: "labelLastPage", labelNextPage: "labelNextPage", labelPreviousPage: "labelPreviousPage", labelRowsPerPage: "labelRowsPerPage", page: "page", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions", showFirstLast: "showFirstLast" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1875
+ };
1876
+ MdTablePagination = __decorate([
1877
+ ProxyCmp({
1878
+ inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
1879
+ methods: ['goToPage', 'setRowsPerPage']
1880
+ })
1881
+ ], MdTablePagination);
1882
+ export { MdTablePagination };
1883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTablePagination, decorators: [{
1884
+ type: Component,
1885
+ args: [{
1886
+ selector: 'md-table-pagination',
1887
+ changeDetection: ChangeDetectionStrategy.OnPush,
1888
+ template: '<ng-content></ng-content>',
1889
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1890
+ inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
1891
+ }]
1892
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1893
+ let MdTableRow = class MdTableRow {
1894
+ constructor(c, r, z) {
1895
+ this.z = z;
1896
+ c.detach();
1897
+ this.el = r.nativeElement;
1898
+ proxyOutputs(this, this.el, ['mdRowClick', 'mdRowSelectionChange', 'mdRowExpandedChange']);
1899
+ }
1900
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableRow, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1901
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableRow, selector: "md-table-row", inputs: { clickable: "clickable", disabled: "disabled", expandable: "expandable", expanded: "expanded", highlight: "highlight", rowgroup: "rowgroup", selectable: "selectable", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1902
+ };
1903
+ MdTableRow = __decorate([
1904
+ ProxyCmp({
1905
+ inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
1906
+ methods: ['toggle']
1907
+ })
1908
+ ], MdTableRow);
1909
+ export { MdTableRow };
1910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableRow, decorators: [{
1911
+ type: Component,
1912
+ args: [{
1913
+ selector: 'md-table-row',
1914
+ changeDetection: ChangeDetectionStrategy.OnPush,
1915
+ template: '<ng-content></ng-content>',
1916
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1917
+ inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
1918
+ }]
1919
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1920
+ let MdTableSortLabel = class MdTableSortLabel {
1921
+ constructor(c, r, z) {
1922
+ this.z = z;
1923
+ c.detach();
1924
+ this.el = r.nativeElement;
1925
+ proxyOutputs(this, this.el, ['mdSortRequest']);
1926
+ }
1927
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableSortLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1928
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableSortLabel, selector: "md-table-sort-label", inputs: { active: "active", column: "column", defaultOrder: "defaultOrder", density: "density", disabled: "disabled", icon: "icon", iconPosition: "iconPosition", order: "order" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1929
+ };
1930
+ MdTableSortLabel = __decorate([
1931
+ ProxyCmp({
1932
+ inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'order']
1933
+ })
1934
+ ], MdTableSortLabel);
1935
+ export { MdTableSortLabel };
1936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableSortLabel, decorators: [{
1937
+ type: Component,
1938
+ args: [{
1939
+ selector: 'md-table-sort-label',
1940
+ changeDetection: ChangeDetectionStrategy.OnPush,
1941
+ template: '<ng-content></ng-content>',
1942
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1943
+ inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'order'],
1944
+ }]
1945
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1946
+ let MdTableToolbar = class MdTableToolbar {
1947
+ constructor(c, r, z) {
1948
+ this.z = z;
1949
+ c.detach();
1950
+ this.el = r.nativeElement;
1951
+ }
1952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1953
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableToolbar, selector: "md-table-toolbar", inputs: { autoBind: "autoBind", compact: "compact", density: "density", headline: "headline", labelSelected: "labelSelected", numSelected: "numSelected", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1954
+ };
1955
+ MdTableToolbar = __decorate([
1956
+ ProxyCmp({
1957
+ inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText']
1958
+ })
1959
+ ], MdTableToolbar);
1960
+ export { MdTableToolbar };
1961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableToolbar, decorators: [{
1962
+ type: Component,
1963
+ args: [{
1964
+ selector: 'md-table-toolbar',
1965
+ changeDetection: ChangeDetectionStrategy.OnPush,
1966
+ template: '<ng-content></ng-content>',
1967
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1968
+ inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText'],
1969
+ }]
1970
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1971
+ let MdTabs = class MdTabs {
1972
+ constructor(c, r, z) {
1973
+ this.z = z;
1974
+ c.detach();
1975
+ this.el = r.nativeElement;
1976
+ proxyOutputs(this, this.el, ['mdTabChange']);
1977
+ }
1978
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1979
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabs, selector: "md-tabs", inputs: { activeTabIndex: "activeTabIndex", ariaLabelProp: "ariaLabelProp", tabWidth: "tabWidth", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1980
+ };
1981
+ MdTabs = __decorate([
1982
+ ProxyCmp({
1983
+ inputs: ['activeTabIndex', 'ariaLabelProp', 'tabWidth', 'variant', 'width'],
1984
+ methods: ['selectTab']
1985
+ })
1986
+ ], MdTabs);
1987
+ export { MdTabs };
1988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabs, decorators: [{
1989
+ type: Component,
1990
+ args: [{
1991
+ selector: 'md-tabs',
1992
+ changeDetection: ChangeDetectionStrategy.OnPush,
1993
+ template: '<ng-content></ng-content>',
1994
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1995
+ inputs: ['activeTabIndex', 'ariaLabelProp', 'tabWidth', 'variant', 'width'],
1996
+ }]
1997
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1998
+ let MdTextField = class MdTextField {
1999
+ constructor(c, r, z) {
2000
+ this.z = z;
2001
+ c.detach();
2002
+ this.el = r.nativeElement;
2003
+ proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdSearch', 'mdClear', 'mdPasswordToggle', 'mdSpeechResult', 'mdValidityChange']);
2004
+ }
2005
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTextField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2006
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTextField, selector: "md-text-field", inputs: { appearFocused: "appearFocused", autoCapitalize: "autoCapitalize", autocomplete: "autocomplete", chipsWrap: "chipsWrap", clearable: "clearable", debounce: "debounce", density: "density", disabled: "disabled", enterKeyHint: "enterKeyHint", error: "error", errorText: "errorText", focusBorderWidth: "focusBorderWidth", formatOn: "formatOn", formatter: "formatter", inputAriaAutocomplete: "inputAriaAutocomplete", inputExpanded: "inputExpanded", inputMode: "inputMode", inputRole: "inputRole", label: "label", max: "max", maxLength: "maxLength", min: "min", minLength: "minLength", multiline: "multiline", name: "name", parser: "parser", passwordToggle: "passwordToggle", pattern: "pattern", placeholder: "placeholder", prefixText: "prefixText", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", restrict: "restrict", rows: "rows", speechLang: "speechLang", speechToText: "speechToText", spellcheck: "spellcheck", step: "step", suffixText: "suffixText", supportingText: "supportingText", throttle: "throttle", type: "type", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2007
+ };
2008
+ MdTextField = __decorate([
2009
+ ProxyCmp({
2010
+ inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2011
+ methods: ['setFocus', 'select', 'getInputElement', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
2012
+ })
2013
+ ], MdTextField);
2014
+ export { MdTextField };
2015
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTextField, decorators: [{
2016
+ type: Component,
2017
+ args: [{
2018
+ selector: 'md-text-field',
2019
+ changeDetection: ChangeDetectionStrategy.OnPush,
2020
+ template: '<ng-content></ng-content>',
2021
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2022
+ inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2023
+ }]
2024
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2025
+ let MdTimePicker = class MdTimePicker {
2026
+ constructor(c, r, z) {
2027
+ this.z = z;
2028
+ c.detach();
2029
+ this.el = r.nativeElement;
2030
+ proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdModeChange', 'mdValidityChange']);
2031
+ }
2032
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2033
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTimePicker, selector: "md-time-picker", inputs: { amLabel: "amLabel", cancelLabel: "cancelLabel", density: "density", disabled: "disabled", format: "format", headline: "headline", headlineDialLabel: "headlineDialLabel", headlineInputLabel: "headlineInputLabel", hideTrigger: "hideTrigger", hourLabel: "hourLabel", label: "label", max: "max", min: "min", minuteLabel: "minuteLabel", minuteStep: "minuteStep", name: "name", okLabel: "okLabel", open: "open", orientation: "orientation", periodLabel: "periodLabel", periodLayout: "periodLayout", pmLabel: "pmLabel", rangeOutsideLabel: "rangeOutsideLabel", rangeOverflowLabel: "rangeOverflowLabel", rangeUnderflowLabel: "rangeUnderflowLabel", required: "required", responsive: "responsive", toggleDialLabel: "toggleDialLabel", toggleInputLabel: "toggleInputLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2034
+ };
2035
+ MdTimePicker = __decorate([
2036
+ ProxyCmp({
2037
+ inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'responsive', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2038
+ methods: ['show', 'hide', 'checkValidity', 'reportValidity', 'getValidity']
2039
+ })
2040
+ ], MdTimePicker);
2041
+ export { MdTimePicker };
2042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTimePicker, decorators: [{
2043
+ type: Component,
2044
+ args: [{
2045
+ selector: 'md-time-picker',
2046
+ changeDetection: ChangeDetectionStrategy.OnPush,
2047
+ template: '<ng-content></ng-content>',
2048
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2049
+ inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'responsive', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2050
+ }]
2051
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2052
+ let MdToolbar = class MdToolbar {
2053
+ constructor(c, r, z) {
2054
+ this.z = z;
2055
+ c.detach();
2056
+ this.el = r.nativeElement;
2057
+ }
2058
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2059
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdToolbar, selector: "md-toolbar", inputs: { alignment: "alignment", ariaLabelProp: "ariaLabelProp", ariaLabelledby: "ariaLabelledby", color: "color", containerSemantics: "containerSemantics", density: "density", layout: "layout", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2060
+ };
2061
+ MdToolbar = __decorate([
2062
+ ProxyCmp({
2063
+ inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2064
+ methods: ['setFocus']
2065
+ })
2066
+ ], MdToolbar);
2067
+ export { MdToolbar };
2068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdToolbar, decorators: [{
2069
+ type: Component,
2070
+ args: [{
2071
+ selector: 'md-toolbar',
2072
+ changeDetection: ChangeDetectionStrategy.OnPush,
2073
+ template: '<ng-content></ng-content>',
2074
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2075
+ inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2076
+ }]
2077
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2078
+ let MdTooltip = class MdTooltip {
2079
+ constructor(c, r, z) {
2080
+ this.z = z;
2081
+ c.detach();
2082
+ this.el = r.nativeElement;
2083
+ proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
2084
+ }
2085
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2086
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTooltip, selector: "md-tooltip", inputs: { autoPosition: "autoPosition", crossOffset: "crossOffset", density: "density", disabled: "disabled", hideDelay: "hideDelay", offset: "offset", open: "open", position: "position", showDelay: "showDelay", subhead: "subhead", text: "text", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2087
+ };
2088
+ MdTooltip = __decorate([
2089
+ ProxyCmp({
2090
+ inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2091
+ methods: ['show', 'hide']
2092
+ })
2093
+ ], MdTooltip);
2094
+ export { MdTooltip };
2095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTooltip, decorators: [{
2096
+ type: Component,
2097
+ args: [{
2098
+ selector: 'md-tooltip',
2099
+ changeDetection: ChangeDetectionStrategy.OnPush,
2100
+ template: '<ng-content></ng-content>',
2101
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2102
+ inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2103
+ }]
2104
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2105
+ let MdTransferList = class MdTransferList {
2106
+ constructor(c, r, z) {
2107
+ this.z = z;
2108
+ c.detach();
2109
+ this.el = r.nativeElement;
2110
+ proxyOutputs(this, this.el, ['mdChange', 'mdMove']);
2111
+ }
2112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTransferList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTransferList, selector: "md-transfer-list", inputs: { countTemplate: "countTemplate", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", emptyText: "emptyText", items: "items", moveAllLeftIcon: "moveAllLeftIcon", moveAllLeftLabel: "moveAllLeftLabel", moveAllRightIcon: "moveAllRightIcon", moveAllRightLabel: "moveAllRightLabel", moveLeftIcon: "moveLeftIcon", moveLeftLabel: "moveLeftLabel", moveRightIcon: "moveRightIcon", moveRightLabel: "moveRightLabel", searchIcon: "searchIcon", searchable: "searchable", showSelectAll: "showSelectAll", singleStepOnly: "singleStepOnly", sourceSearchPlaceholder: "sourceSearchPlaceholder", sourceTitle: "sourceTitle", targetSearchPlaceholder: "targetSearchPlaceholder", targetTitle: "targetTitle", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2114
+ };
2115
+ MdTransferList = __decorate([
2116
+ ProxyCmp({
2117
+ inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2118
+ methods: ['moveSelectedRight', 'moveSelectedLeft']
2119
+ })
2120
+ ], MdTransferList);
2121
+ export { MdTransferList };
2122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTransferList, decorators: [{
2123
+ type: Component,
2124
+ args: [{
2125
+ selector: 'md-transfer-list',
2126
+ changeDetection: ChangeDetectionStrategy.OnPush,
2127
+ template: '<ng-content></ng-content>',
2128
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2129
+ inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2130
+ }]
2131
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL3Byb3hpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZWhFLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFFdEIsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQzsrR0FOVSxXQUFXO21HQUFYLFdBQVcsMGNBSlosMkJBQTJCOztBQUkxQixXQUFXO0lBVnZCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDO0tBQzdOLENBQUM7R0FRVyxXQUFXLENBT3ZCOzs0RkFQWSxXQUFXO2tCQVB2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtv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QU8sQ0FBQztpQkFDcFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogYXV0by1nZW5lcmF0ZWQgYW5ndWxhciBkaXJlY3RpdmUgcHJveGllcyAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydicmluZ1RvRnJvbnQnLCAnZGVmYXVsdEV4cGFuZGVkJywgJ2RlbnNpdHknLCAnZWxldmF0aW9uJywgJ2V4Y2x1c2l2ZScsICdmbG9hdGluZycsICdoZWFkaW5nTGV2ZWwnLCAnaW5pdGlhbFgnLCAnaW5pdGlhbFknLCAna2VlcE9uZUV4cGFuZGVkJywgJ3JlZ2lvbicsICdyZWdpb25UaHJlc2hvbGQnLCAncmVvcmRlcmFibGUnLCAndHJhbnNpdGlvbicsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JyaW5nVG9Gcm9udCcsICdkZWZhdWx0RXhwYW5kZWQnLCAnZGVuc2l0eScsICdlbGV2YXRpb24nLCAnZXhjbHVzaXZlJywgJ2Zsb2F0aW5nJywgJ2hlYWRpbmdMZXZlbCcsICdpbml0aWFsWCcsICdpbml0aWFsWScsICdrZWVwT25lRXhwYW5kZWQnLCAncmVnaW9uJywgJ3JlZ2lvblRocmVzaG9sZCcsICdyZW9yZGVyYWJsZScsICd0cmFuc2l0aW9uJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRvZ2dsZScsICdtZFJlb3JkZXInLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnTW92ZScsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQWNjb3JkaW9uRHJhZ0RldGFpbCBhcyBJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGV4cGFuZHMgb3IgY29sbGFwc2VzLiBEZXRhaWwgY2FycmllcyB0aGVcbmZ1bGwgc2V0IG9mIGV4cGFuZGVkIGluZGljZXMuXG4gICAqL1xuICBtZFRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgZXhwYW5kZWQ6IGJvb2xlYW47IGV4cGFuZGVkSW5kaWNlczogbnVtYmVyW107IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkIHZpYSBkcmFnLWFuZC1kcm9wIG9yIGtleWJvYXJkXG4oQWx0K0Fycm93VXAgLyBBbHQrQXJyb3dEb3duKS4gYG9yZGVyYCBpcyB0aGUgbmV3IGluZGV4IHNlcXVlbmNlXG5yZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwgb3JkZXIsIGUuZy4gbW92aW5nIHRoZSBpdGVtIHRoYXQgd2FzIGF0XG5pbmRleCAwIHRvIGluZGV4IDIgeWllbGRzIGBvcmRlcjogWzEsIDIsIDBdYC5cbiAgICovXG4gIG1kUmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyOyBvcmRlcjogbnVtYmVyW107IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb25jZSBhIGZsb2F0aW5nIHBhbmVsIHN0YXJ0cyBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgbWREcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgY29udGludW91c2x5IHdoaWxlIGEgZmxvYXRpbmcgcGFuZWwgaXMgYmVpbmcgZHJhZ2dlZC5cbiAgICovXG4gIG1kRHJhZ01vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGZsb2F0aW5nIHBhbmVsIGlzIHJlbGVhc2VkLlxuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQWNjb3JkaW9uTWRBY2NvcmRpb25EcmFnRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNpYmxlJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdoZWFkaW5nTGV2ZWwnLCAnaGVhZGxpbmUnLCAnaWNvbicsICdyZWdpb25Sb2xlJywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJywgJ2ZvY3VzSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2libGUnLCAnY29udGVudE1heEhlaWdodCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hlYWRpbmdMZXZlbCcsICdoZWFkbGluZScsICdpY29uJywgJ3JlZ2lvblJvbGUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRBY2NvcmRpb25JdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJdGVtVG9nZ2xlJywgJ21kSXRlbVJlcXVlc3RGb2N1cycsICdtZEl0ZW1SZXF1ZXN0UmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFjY29yZGlvbkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kQWNjb3JkaW9uSXRlbSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIHRoZSBpdGVtIHRvZ2dsZXMuIFRoZSBwYXJlbnQgYG1kLWFjY29yZGlvbmAgdXNlc1xudGhpcyB0byBjb29yZGluYXRlIGV4Y2x1c2l2ZSBtb2RlLlxuICAgKi9cbiAgbWRJdGVtVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbjsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGxpc3RlbnMgdG8gZm9yIGFycm93LWtleSByb3ZpbmcgZm9jdXMuXG5CdWJibGVzICsgY29tcG9zZWQgc28gdGhlIHBhcmVudCByZWNlaXZlcyBpdCB0aHJvdWdoIHRoZSBzaGFkb3cuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0Rm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRpcmVjdGlvbjogJ25leHQnIHwgJ3ByZXYnIHwgJ2ZpcnN0JyB8ICdsYXN0JzsgZnJvbTogbnVtYmVyOyB9Pj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGxpc3RlbnMgdG8gZm9yIEFsdCtBcnJvdyBrZXlib2FyZFxucmVvcmRlcmluZy4gQnViYmxlcyArIGNvbXBvc2VkIHNvIHRoZSBwYXJlbnQgcmVjZWl2ZXMgaXRcbnRocm91Z2ggdGhlIHNoYWRvdy5cbiAgICovXG4gIG1kSXRlbVJlcXVlc3RSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkaXJlY3Rpb246ICd1cCcgfCAnZG93bic7IGZyb206IG51bWJlcjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2xlYWRpbmdJY29uJywgJ2xlYWRpbmdJY29uTGFiZWwnLCAnc2Nyb2xsZWQnLCAnc2VhcmNoQXJpYUxhYmVsJywgJ3NlYXJjaERpc2FibGVkJywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaFZhbHVlJywgJ3N1YnRpdGxlJywgJ3RpdGxlQWxpZ25tZW50JywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFwcC1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ljb25MYWJlbCcsICdzY3JvbGxlZCcsICdzZWFyY2hBcmlhTGFiZWwnLCAnc2VhcmNoRGlzYWJsZWQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoVmFsdWUnLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbm1lbnQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEFwcEJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTGVhZGluZ0NsaWNrJywgJ21kU2VhcmNoQWN0aXZhdGUnLCAnbWRTZWFyY2hJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFwcEJhciBleHRlbmRzIENvbXBvbmVudHMuTWRBcHBCYXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwcm9wLWJhc2VkIGxlYWRpbmcgaWNvbiBidXR0b24gaXMgYWN0aXZhdGVkLlxuICAgKi9cbiAgbWRMZWFkaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBTZWFyY2ggdmFyaWFudCBvbmx5OiBlbWl0dGVkIHdoZW4gdGhlIGlubGluZSBzZWFyY2ggZmllbGQgaXMgc2VsZWN0ZWRcbihjbGljaywgZm9jdXMsIEVudGVyLCBvciBTcGFjZSkuIFdpcmUgdGhpcyB0byBgbWQtc2VhcmNoLnNob3coKWAgdG8gb3BlblxudGhlIGZ1bGwtc2NyZWVuIHNlYXJjaCB2aWV3IHBlciB0aGUgTUQzIHNwZWMuXG4gICAqL1xuICBtZFNlYXJjaEFjdGl2YXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIFNlYXJjaCB2YXJpYW50IG9ubHk6IGVtaXR0ZWQgb24gZXZlcnkgaW5saW5lIHNlYXJjaCBmaWVsZCBpbnB1dCBjaGFuZ2UuXG4gICAqL1xuICBtZFNlYXJjaElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdjb25uZWN0TnVsbHMnLCAnY3VydmUnLCAnZGVuc2l0eScsICdmaWxsT3BhY2l0eScsICdncmlkJywgJ2hlaWdodFByb3AnLCAnaW52ZXJ0ZWQnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGVnZW5kJywgJ2xpbmVXaWR0aCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbWFya1NpemUnLCAnbm9BbmltYXRpb24nLCAnc2VyaWVzJywgJ3Nlcmllc0xhYmVscycsICdzaG93TGFiZWxzJywgJ3Nob3dMaW5lJywgJ3Nob3dNYXJrcycsICdzdGFjaycsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInLCAneEF4aXMnLCAneUF4aXMnLCAnem9vbSddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hcmVhLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXhpc1RpY2tzJywgJ2Nvbm5lY3ROdWxscycsICdjdXJ2ZScsICdkZW5zaXR5JywgJ2ZpbGxPcGFjaXR5JywgJ2dyaWQnLCAnaGVpZ2h0UHJvcCcsICdpbnZlcnRlZCcsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xhYmVsWm9vbUVuZCcsICdsYWJlbFpvb21TdGFydCcsICdsZWdlbmQnLCAnbGluZVdpZHRoJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhpcycsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQXJlYUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRNYXJrZXJDbGljaycsICdtZExpbmVDbGljaycsICdtZEFyZWFDbGljaycsICdtZEF4aXNDbGljaycsICdtZExlZ2VuZENsaWNrJywgJ21kSG92ZXInLCAnbWRSZWFkeScsICdtZFpvb20nXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRDbGlja0RldGFpbCBhcyBJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0U2VyaWVzIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRTZXJpZXMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXJlYUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5NZEFyZWFDaGFydCB7XG5cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNlcmllcycgZHJhd24gbGluZSBpcyBjbGlja2VkICpiZXR3ZWVuKiBpdHMgZGF0YSBwb2ludHMgKGFcbmNsaWNrIG9uIGEgcG9pbnQgZW1pdHMgYG1kTWFya2VyQ2xpY2tgIGluc3RlYWQpLlxuICAgKi9cbiAgbWRMaW5lQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQg4oCUIHRoZSBiYW5kIGJldHdlZW4gaXRzIGxpbmVcbmFuZCBpdHMgYmFzZSAoaXRzIG93biBiYW5kIHdoZW4gc3RhY2tlZCksIGV4Y2x1ZGluZyBpdHMgbGluZSBhbmQgcG9pbnRzLlxuICAgKi9cbiAgbWRBcmVhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJyB2YWx1ZSB0aGVyZS5cbiAgICovXG4gIG1kQXhpc0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydEF4aXNDbGlja0RldGFpbD4+O1xuXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG5cbiAgbWRIb3ZlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIgb3IgYHNldFpvb21gL2ByZXNldFpvb21gKS5cbiAgICovXG4gIG1kWm9vbTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyByZXNldDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJPbkJsdXInLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZUNsb3NlT25TZWxlY3QnLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmVyJywgJ2ZyZWVTb2xvJywgJ2lucHV0VmFsdWUnLCAnbGFiZWwnLCAnbGltaXRSZXN1bHRzJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ211bHRpcGxlJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc29mdERpc2FibGVkJywgJ3N0YXR1c1RlbXBsYXRlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxuICBtZXRob2RzOiBbJ2ZvY3VzSW5wdXQnLCAnc2hvd01lbnUnLCAnY2xvc2VNZW51JywgJ2xvYWRPcHRpb25zJywgJ2dldExhYmVscycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hdXRvY29tcGxldGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJPbkJsdXInLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZUNsb3NlT25TZWxlY3QnLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmVyJywgJ2ZyZWVTb2xvJywgJ2lucHV0VmFsdWUnLCAnbGFiZWwnLCAnbGltaXRSZXN1bHRzJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ211bHRpcGxlJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc29mdERpc2FibGVkJywgJ3N0YXR1c1RlbXBsYXRlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEF1dG9jb21wbGV0ZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kSW5wdXQnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDbGVhcicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXV0b2NvbXBsZXRlIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF1dG9jb21wbGV0ZSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuZXZlciB0aGUgY29tbWl0dGVkIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIGxpdmUgaW5wdXQgc3RyaW5nIGNoYW5nZXMuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdXNlciBjbGVhcnMgdGhlIHZhbHVlLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHQnLCAnY29sb3JGcm9tTmFtZScsICdjcm9zc29yaWdpbicsICdkZW5zaXR5JywgJ2luaXRpYWxzJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbmFtZScsICdzaGFwZScsICdzaXplJywgJ3NyYyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYXZhdGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHQnLCAnY29sb3JGcm9tTmFtZScsICdjcm9zc29yaWdpbicsICdkZW5zaXR5JywgJ2luaXRpYWxzJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbmFtZScsICdzaGFwZScsICdzaXplJywgJ3NyYyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTG9hZCcsICdtZEVycm9yJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF2YXRhciB7XG4gIC8qKlxuICAgKiBJbWFnZSBzdWNjZXNzZnVsbHkgbG9hZGVkLlxuICAgKi9cbiAgbWRMb2FkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzcmM6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBJbWFnZSBmYWlsZWQgdG8gbG9hZCDigJQgY29tcG9uZW50IGZlbGwgYmFjayB0byBpbml0aWFscy9pY29uLlxuICAgKi9cbiAgbWRFcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3JjOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ljb24nLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ljb24nLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLk1kQmFkZ2Uge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVzaXplJywgJ3JlcGxheScsICdkcmlsbCcsICd0b0RhdGFVUkwnLCAnZ2V0SW5zdGFuY2UnLCAnc2V0Wm9vbScsICdyZXNldFpvb20nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJhci1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFyQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEJhckNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydFNlcmllcyBhcyBJTWRCYXJDaGFydE1kQ2hhcnRTZXJpZXMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kQmFyQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCYXJDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRCYXJDaGFydCB7XG5cbiAgbWRCYXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEJhckNoYXJ0TWRDaGFydFNlcmllcz4+PjtcblxuICBtZExlZ2VuZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZXJpZXNJbmRleDogbnVtYmVyOyBzZXJpZXNJZD86IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIsIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdjb250ZW50QWxpZ24nLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdoZWFkbGluZUFsaWduJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzY3JvbGxTaGFkb3cnLCAnc2hlZXRBcmlhTGFiZWwnLCAnc2hvd0RyYWdIYW5kbGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYm90dG9tLXNoZWV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdjb250ZW50QWxpZ24nLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdoZWFkbGluZUFsaWduJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzY3JvbGxTaGFkb3cnLCAnc2hlZXRBcmlhTGFiZWwnLCAnc2hvd0RyYWdIYW5kbGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQm90dG9tU2hlZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJvdHRvbVNoZWV0IGV4dGVuZHMgQ29tcG9uZW50cy5NZEJvdHRvbVNoZWV0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNoZWV0IG9wZW5zXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gY2xpY2ssIEVzY2FwZSwgZHJhZywgb3IgY2xvc2UgYnV0dG9uXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sbGFwc2VkJywgJ2N1cnJlbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnaXRlbUluZGV4JywgJ2l0ZW1Ub3RhbCcsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZCcsICdjdXJyZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2l0ZW1JbmRleCcsICdpdGVtVG90YWwnLCAncmVsJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEJyZWFkY3J1bWJJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnJlYWRjcnVtYlNlbGVjdERldGFpbCBhcyBJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIGEgbmF2aWdhYmxlIGNydW1iIOKAlCBpLmUuIHdoZW4gYW4gaXRlbSB3aXRoXG5hIG5vbi1lbXB0eSBgaHJlZmAgKGFuZCBub3QgbWFya2VkIGBjdXJyZW50YCAvIGBkaXNhYmxlZGApIGlzIGNsaWNrZWQgb3JcbmFjdGl2YXRlZCB3aXRoIGBFbnRlcmAgd2hpbGUgZm9jdXNlZC4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqOlxuY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSB0aGUgbGlzdGVuZXIgdG8gc3RvcCB0aGUgYnJvd3NlcidzXG5kZWZhdWx0IG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGhvb2sgZm9yIFNQQSByb3V0aW5nIOKAlCBsZXRcbnRoZSBicmVhZGNydW1iIHJlbmRlciBhIHJlYWwgYDxhPmAgKHNvIHJpZ2h0LWNsaWNrIC8gbWlkZGxlLWNsaWNrIC9cblwiT3BlbiBpbiBuZXcgdGFiXCIgc3RpbGwgd29yayksIHRoZW4gaW50ZXJjZXB0IGBtZFNlbGVjdGAgdG8gcHVzaCB0aGVcbnJvdXRlIHRocm91Z2ggeW91ciBjbGllbnQtc2lkZSByb3V0ZXIgaW5zdGVhZCBvZiBhIGZ1bGwgcGFnZSByZWxvYWQuXG5cblRoZSBldmVudCBidWJibGVzLCBzbyBjb25zdW1lcnMgY2FuIGF0dGFjaCBhIHNpbmdsZSBsaXN0ZW5lciBvbiB0aGVcbnBhcmVudCBgPG1kLWJyZWFkY3J1bWJzPmAgZm9yIGRlbGVnYXRpb24uIFRoZSBldmVudCBpcyBjb21wb3NlZCwgc29cbmxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSAodGhlIHR5cGljYWwgY2FzZSkgcmVjZWl2ZSBpdC5cblxuYGBgdHNcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21kLWJyZWFkY3J1bWJzJykhXG4gIC5hZGRFdmVudExpc3RlbmVyKCdtZFNlbGVjdCcsIChlKSA9PiB7XG4gICAgY29uc3QgeyBocmVmLCBsYWJlbCwgaXRlbUluZGV4IH0gPSAoZSBhcyBDdXN0b21FdmVudCkuZGV0YWlsO1xuICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgICAgIC8vIHN0b3AgdGhlIDxhPiBmcm9tIG5hdmlnYXRpbmdcbiAgICBteVJvdXRlci5wdXNoKGhyZWYpOyAgICAgICAgICAgICAvLyBTUEEgbmF2aWdhdGlvblxuICB9KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2V4cGFuZExhYmVsJywgJ2l0ZW1zQWZ0ZXJDb2xsYXBzZScsICdpdGVtc0JlZm9yZUNvbGxhcHNlJywgJ2xhYmVsJywgJ21heEl0ZW1zJywgJ3NlcGFyYXRvciddLFxuICBtZXRob2RzOiBbJ2V4cGFuZCcsICdjb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYnJlYWRjcnVtYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZXhwYW5kTGFiZWwnLCAnaXRlbXNBZnRlckNvbGxhcHNlJywgJ2l0ZW1zQmVmb3JlQ29sbGFwc2UnLCAnbGFiZWwnLCAnbWF4SXRlbXMnLCAnc2VwYXJhdG9yJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQnJlYWRjcnVtYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEV4cGFuZCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCcmVhZGNydW1ic0V4cGFuZERldGFpbCBhcyBJTWRCcmVhZGNydW1ic01kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCcmVhZGNydW1icyBleHRlbmRzIENvbXBvbmVudHMuTWRCcmVhZGNydW1icyB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB1c2VyIHJldmVhbHMgdGhlIGZ1bGwgYnJlYWRjcnVtYiB0cmFpbCBieSBhY3RpdmF0aW5nXG50aGUgb3ZlcmZsb3cgKFwi4oCmXCIpIHRvZ2dsZSwgb3Igd2hlbiBjb25zdW1lcnMgcHJvZ3JhbW1hdGljYWxseSBjYWxsXG5gZXhwYW5kKClgIC8gYGNvbGxhcHNlKClgLiBOb3QgY2FuY2VsYWJsZSDigJQgdGhlIHZpc2liaWxpdHkgY2hhbmdlXG5oYXMgYWxyZWFkeSBoYXBwZW5lZC4gVXNlIGl0IGZvciBhbmFseXRpY3Mgb3IgdG8gcmVhY3QgdG8gYSB1c2VyXG53aG8gd2FudHMgdG8gc2VlIHRoZSBmdWxsIHBhdGguXG5cbkJ1YmJsZXMgKyBjb21wb3NlZCwgc28gY29uc3VtZXJzIG91dHNpZGUgdGhlIHNoYWRvdyB0cmVlICh0aGUgdHlwaWNhbFxuY2FzZSkgcmVjZWl2ZSBpdC5cbiAgICovXG4gIG1kRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnJlYWRjcnVtYnNNZEJyZWFkY3J1bWJzRXhwYW5kRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hyZWYnLCAnaWNvbicsICdsb2FkaW5nJywgJ21pcnJvckljb24nLCAncmlwcGxlJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3N1cHByZXNzRXhwYW5kSWNvbkZsaXAnLCAndGFyZ2V0JywgJ3RvZ2dsZScsICd0cmFpbGluZ0ljb24nLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hyZWYnLCAnaWNvbicsICdsb2FkaW5nJywgJ21pcnJvckljb24nLCAncmlwcGxlJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3N1cHByZXNzRXhwYW5kSWNvbkZsaXAnLCAndGFyZ2V0JywgJ3RvZ2dsZScsICd0cmFpbGluZ0ljb24nLCAndHlwZScsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljaycsICdtZENoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCdXR0b25DbGlja0RldGFpbCBhcyBJTWRCdXR0b25NZEJ1dHRvbkNsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRCdXR0b25DaGFuZ2VEZXRhaWwgYXMgSU1kQnV0dG9uTWRCdXR0b25DaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBidXR0b24gKG1vdXNlIGNsaWNrLCB0b3VjaCxcbm9yIGBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqIGFuZFxudGhlIGRldGFpbCBwYXlsb2FkIGRlc2NyaWJlcyB3aGF0ICp3b3VsZCogaGFwcGVuOiB0aGUgcG9zdC1jbGlja1xudG9nZ2xlIHN0YXRlLCB0aGUgbmF2aWdhdGlvbiBgaHJlZmAsIGFuZCBzbyBvbi5cblxuQ2FsbGluZyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSBhIGxpc3RlbmVyIHN1cHByZXNzZXMgdGhlXG5kZWZhdWx0IHNpZGUgZWZmZWN0cyAodG9nZ2xlIGZsaXAgKyBgaHJlZmAgbmF2aWdhdGlvbikgYnV0IGxldHNcbnRoZSB1bmRlcmx5aW5nIERPTSBjbGljayBidWJibGUuIFRoaXMgaXMgdGhlIGhvb2sgdG8gdXNlIGZvciBTUEFcbnJvdXRpbmcsIFwiYXJlIHlvdSBzdXJlP1wiIHByb21wdHMsIGFzeW5jIGNvbmZpcm1hdGlvbiwgZXRjLlxuXG5UaGUgZXZlbnQgYnViYmxlcyBhbmQgaXMgY29tcG9zZWQsIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZVxuc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsIGNhc2UpIHJlY2VpdmUgaXQuXG5cbmBgYHRzXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZC1idXR0b24nKSEuYWRkRXZlbnRMaXN0ZW5lcignbWRDbGljaycsIChlKSA9PiB7XG4gIGNvbnN0IHsgaHJlZiwgc2VsZWN0ZWQgfSA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gIGlmICghY29uZmlybSgnQ29udGludWU/JykpIGUucHJldmVudERlZmF1bHQoKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0b2dnbGUgbW9kZSBmbGlwcyB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpbiByZXNwb25zZSB0byBhXG51c2VyIGFjdGl2YXRpb24uIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgc3RhdGUgY2hhbmdlIGhhcyBhbHJlYWR5XG5oYXBwZW5lZC4gUGFpciB3aXRoIGBtZENsaWNrYCAoY2FuY2VsYWJsZSkgd2hlbiB5b3UgbmVlZCBhIHZldG8uXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Z1bGxXaWR0aCcsICdyZXF1aXJlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Z1bGxXaWR0aCcsICdyZXF1aXJlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEJ1dHRvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3Rpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWwgYXMgSU1kQnV0dG9uR3JvdXBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQnV0dG9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uR3JvdXAge1xuICAvKipcbiAgICogRmlyZXMgZXZlcnkgdGltZSBhIHVzZXIgYWN0aXZhdGlvbiB0b2dnbGVzIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2ZcbmEgY2hpbGQgYnV0dG9uLiBUaGUgZGV0YWlsIG9iamVjdCBkZXNjcmliZXMgYm90aCB0aGUgbmV3IHNlbGVjdGlvblxuc25hcHNob3QgKGB2YWx1ZXNgKSBhbmQgdGhlIGRpZmYgZnJvbSB0aGUgcHJldmlvdXMgc2VsZWN0aW9uXG4oYGFkZGVkYCwgYHJlbW92ZWRgKSwgcGx1cyB0aGUgdW5kZXJseWluZyBgb3JpZ2luYWxFdmVudGAuXG5cbkRpc3RpbmN0IGZyb20gZWFjaCBjaGlsZCBidXR0b24ncyBvd24gYG1kQ2hhbmdlYCAod2hpY2ggZmlyZXMgcGVyXG5pbmRpdmlkdWFsIGJ1dHRvbiB0b2dnbGUpOyB0aGUgZ3JvdXAncyBgbWRTZWxlY3Rpb25DaGFuZ2VgIGZpcmVzXG5vbmNlIHBlciB1c2VyIGFjdGl2YXRpb24gYW5kIHJlcG9ydHMgdGhlICpncm91cC1sZXZlbCogc3RhdGUuXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZVxucmVjZWl2ZSBpdC4gQGV4YW1wbGUgYGBgdHNcbmdyb3VwLmFkZEV2ZW50TGlzdGVuZXIoJ21kU2VsZWN0aW9uQ2hhbmdlJywgKGU6IEN1c3RvbUV2ZW50PE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWw+KSA9PiB7XG4gIGNvbnNvbGUubG9nKCdub3cgc2VsZWN0ZWQ6JywgZS5kZXRhaWwudmFsdWVzKTtcbiAgY29uc29sZS5sb2coJ2p1c3QgYWRkZWQ6JywgZS5kZXRhaWwuYWRkZWQpO1xuICBjb25zb2xlLmxvZygnanVzdCByZW1vdmVkOicsIGUuZGV0YWlsLnJlbW92ZWQpO1xufSk7XG5gYGBcbiAgICovXG4gIG1kU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uR3JvdXBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJhZ0VuYWJsZWQnLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaW50ZXJhY3RpdmUnLCAncmlwcGxlJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RyYWdFbmFibGVkJywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2ludGVyYWN0aXZlJywgJ3JpcHBsZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENhcmQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kRHJhZ1N0YXJ0JywgJ21kRHJhZ01vdmUnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZENhcmREcmFnRGV0YWlsIGFzIElNZENhcmRNZENhcmREcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTWRDYXJkIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYW4gaW50ZXJhY3RpdmUgY2FyZCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmRcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBzdGFydHMgYmVpbmcgZHJhZ2dlZCAoYWZ0ZXIgY3Jvc3NpbmcgdGhlIG1vdmVtZW50IHRocmVzaG9sZClcbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIGNvbnRpbnVvdXNseSBhcyBhIGRyYWdnZWQgY2FyZCBtb3ZlcyDigJQgdXNlIGZvciBkcm9wLXpvbmUgZGV0ZWN0aW9uIG9yIHBvc2l0aW9uIHRyYWNraW5nXG4gICAqL1xuICBtZERyYWdNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBpcyByZWxlYXNlZCBhZnRlciBkcmFnZ2luZ1xuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY2hlY2tib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnaW5kZXRlcm1pbmF0ZScsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZENoZWNrYm94IGV4dGVuZHMgQ29tcG9uZW50cy5NZENoZWNrYm94IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2hlY2tlZCBvciBpbmRldGVybWluYXRlIHN0YXRlIGNoYW5nZXNcbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuOyBpbmRldGVybWluYXRlOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWNoaXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbGV2YXRlZCcsICdpY29uJywgJ2xhYmVsJywgJ3JlbW92YWJsZScsICdzZWxlY3RhYmxlJywgJ3NlbGVjdGVkJywgJ3NvZnREaXNhYmxlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kU2VsZWN0JywgJ21kUmVtb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGlwIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoaXAgaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0ZWQgc3RhdGUgY2hhbmdlcyAoZmlsdGVyL2lucHV0KVxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHRyYWlsaW5nIHJlbW92ZSAoXCLinJVcIikgYnV0dG9uIGlzIGFjdGl2YXRlZCBvbiBhIHJlbW92YWJsZVxuY2hpcCAoYnkgY2xpY2ssIEVudGVyLCBTcGFjZSwgRGVsZXRlLCBvciBCYWNrc3BhY2UpLlxuXG5UaGUgZXZlbnQgaXMgKipjYW5jZWxhYmxlKio6IGJ5IGRlZmF1bHQsIGFmdGVyIGBtZFJlbW92ZWAgaXMgZGlzcGF0Y2hlZFxudGhlIGNoaXAgcmVtb3ZlcyBpdHNlbGYgZnJvbSB0aGUgRE9NLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpbiBhXG5oYW5kbGVyIHRvIGtlZXAgdGhlIGNoaXAgbW91bnRlZCAoZS5nLiB3aGVuIHlvdXIgc3RhdGUgbGF5ZXIgb3ducyB0aGVcbmxpc3QgYW5kIHdpbGwgcmUtcmVuZGVyIHdpdGggdGhlIGNoaXAgZ29uZSkuXG4gICAqL1xuICBtZFJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWxwaGEnLCAnYXJpYUxhYmVsUHJvcCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdmb3JtYXQnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdvcGVuJywgJ3ByZXNldHMnLCAnc2hvd0hleCcsICdzaG93SW5wdXRzJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRDb2xvclBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRPcGVuQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQ29sb3JQaWNrZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBvbiBldmVyeSBjaGFuZ2Ugd2hpbGUgdGhlIHVzZXIgZHJhZ3MgLyB0eXBlcy5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocmVsZWFzZSBwb2ludGVyLCBibHVyIGlucHV0LFxuRW50ZXIsIG9yIGNsaWNrIGEgcHJlc2V0KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBvcGVucyBvciBjbG9zZXMuXG4gICAqL1xuICBtZE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYWxlbmRhckljb24nLCAnY2FuY2VsTGFiZWwnLCAnY2hvb3NlTW9udGhBbmRZZWFyTGFiZWwnLCAnY2hvb3NlTW9udGhMYWJlbCcsICdjaG9vc2VNb250aFllYXJMYWJlbCcsICdjaG9vc2VZZWFyTGFiZWwnLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY2xvc2VDYWxlbmRhckxhYmVsJywgJ2NvbW1pdE9uU2VsZWN0JywgJ2RhdGVTZXBhcmF0b3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlckRhdGVzTGFiZWwnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpZWxkVmFyaWFudCcsICdmaXJzdERheU9mV2VlaycsICdoZWFkbGluZScsICdpbnZhbGlkRGF0ZUxhYmVsJywgJ2lzRGF0ZURpc2FibGVkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmV4dE1vbnRoTGFiZWwnLCAnbmV4dFllYXJMYWJlbCcsICdva0xhYmVsJywgJ29wZW4nLCAnb3BlbkNhbGVuZGFyTGFiZWwnLCAnb3V0c2lkZUNsaWNrRGlzbWlzc2libGUnLCAncGxhY2Vob2xkZXInLCAncHJldmlvdXNNb250aExhYmVsJywgJ3ByZXZpb3VzWWVhckxhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzZWxlY3REYXRlTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndG9nZ2xlQ2FsZW5kYXJMYWJlbCcsICd0b2dnbGVUZXh0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd5ZWFyR3JpZExhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdjbGVhcicsICdmb2N1c0lucHV0JywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYWxlbmRhckljb24nLCAnY2FuY2VsTGFiZWwnLCAnY2hvb3NlTW9udGhBbmRZZWFyTGFiZWwnLCAnY2hvb3NlTW9udGhMYWJlbCcsICdjaG9vc2VNb250aFllYXJMYWJlbCcsICdjaG9vc2VZZWFyTGFiZWwnLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY2xvc2VDYWxlbmRhckxhYmVsJywgJ2NvbW1pdE9uU2VsZWN0JywgJ2RhdGVTZXBhcmF0b3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlckRhdGVzTGFiZWwnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpZWxkVmFyaWFudCcsICdmaXJzdERheU9mV2VlaycsICdoZWFkbGluZScsICdpbnZhbGlkRGF0ZUxhYmVsJywgJ2lzRGF0ZURpc2FibGVkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmV4dE1vbnRoTGFiZWwnLCAnbmV4dFllYXJMYWJlbCcsICdva0xhYmVsJywgJ29wZW4nLCAnb3BlbkNhbGVuZGFyTGFiZWwnLCAnb3V0c2lkZUNsaWNrRGlzbWlzc2libGUnLCAncGxhY2Vob2xkZXInLCAncHJldmlvdXNNb250aExhYmVsJywgJ3ByZXZpb3VzWWVhckxhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzZWxlY3REYXRlTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndG9nZ2xlQ2FsZW5kYXJMYWJlbCcsICd0b2dnbGVUZXh0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd5ZWFyR3JpZExhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kU2VsZWN0ZWQnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZFZpZXdDaGFuZ2UnLCAnbWRNZW51T3BlbicsICdtZE1lbnVTZWxlY3QnLCAnbWRNb2RlQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlckNoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlclNlbGVjdGVkRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWREYXRlUGlja2VyVmlld0NoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyVmlld0NoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVPcGVuRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWREYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb21taXRzIGEgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRheSBpbiB0aGUgY2FsZW5kYXIgKGNsaWNrIG9yIGtleWJvYXJkKS5cbiAgICovXG4gIG1kU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkga2V5c3Ryb2tlIGluIGEgdGV4dC1lbnRyeSBmaWVsZC5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlciBjbG9zZXMgZm9yIGFueSByZWFzb24uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGRpc21pc3NlcyB3aXRob3V0IGNvbW1pdHRpbmcgKHNjcmltLCBDYW5jZWwsIEVzYykuXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheWVkIGNhbGVuZGFyIG1vbnRoL3llYXIgY2hhbmdlcyBmcm9tIHVzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1kVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIG1vbnRoIG9yIHllYXIgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51T3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHBpY2tzIGEgbW9udGggb3IgeWVhciBmcm9tIGEgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIGJldHdlZW4gY2FsZW5kYXIgYW5kIHR5cGVkLWVudHJ5IHZpZXdzLlxuICAgKi9cbiAgbWRNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdjbG9zZUxhYmVsJywgJ2RlbnNpdHknLCAnZGl2aWRlcicsICdmdWxsc2NyZWVuJywgJ2hlYWRlckRpdmlkZXInLCAnaGVhZGxpbmUnLCAnaWNvbicsICdsb2NhbGUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ3NjcmltRGlzbWlzc2libGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NhbmNlbExhYmVsJywgJ2Nsb3NlTGFiZWwnLCAnZGVuc2l0eScsICdkaXZpZGVyJywgJ2Z1bGxzY3JlZW4nLCAnaGVhZGVyRGl2aWRlcicsICdoZWFkbGluZScsICdpY29uJywgJ2xvY2FsZScsICdva0xhYmVsJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZERpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQ2FuY2VsJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5NZERpYWxvZyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkaWFsb2cgb3BlbnNcbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRpYWxvZyBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gb3IgRXNjYXBlXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZGl2aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZERpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZERpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4dGVuZGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbG93ZXJlZCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZmFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4dGVuZGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbG93ZXJlZCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRGYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBGQUIgKG1vdXNlIGNsaWNrLCB0b3VjaCwgb3JcbmBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gTm90IGVtaXR0ZWQgd2hlbiBgZGlzYWJsZWRgIG9yXG5gc29mdC1kaXNhYmxlZGAuIEJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkIHNvIGEgZGVsZWdhdGVkIGxpc3RlbmVyXG5vbiBhIHBhcmVudCBlbGVtZW50IHdvcmtzLlxuXG5gYGB0c1xuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWQtZmFiJykhLmFkZEV2ZW50TGlzdGVuZXIoJ21kQ2xpY2snLCAoZSkgPT4ge1xuICBjb25zdCBtb3VzZUV2ZW50ID0gKGUgYXMgQ3VzdG9tRXZlbnQ8TW91c2VFdmVudD4pLmRldGFpbDtcbiAgY29uc29sZS5sb2coJ0ZBQiBjbGlja2VkIGF0JywgbW91c2VFdmVudC5jbGllbnRYLCBtb3VzZUV2ZW50LmNsaWVudFkpO1xufSk7XG5gYGBcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdkZW5zaXR5JywgJ21lbnVMYWJlbCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdxdWljaycsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZmFiLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdkZW5zaXR5JywgJ21lbnVMYWJlbCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdxdWljaycsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kRmFiTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRmFiTWVudSBleHRlbmRzIENvbXBvbmVudHMuTWRGYWJNZW51IHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IGNsb3Nlcy5cbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc29mdERpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAncm92aW5nRm9jdXNWaXNpYmxlJywgJ3NvZnREaXNhYmxlZCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEZhYk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEZhYk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gaXMgYWN0aXZhdGVkLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYnV0dG9uV2lkdGgnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAncmlwcGxlJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCcsICd0b2dnbGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtaWNvbi1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbldpZHRoJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ3JpcHBsZScsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hhcGUnLCAnc2hhcGVNb3JwaCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRJY29uQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEljb25CdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kSWNvbkJ1dHRvbiB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBwb2ludGVyIG9yIGtleWJvYXJkIGFjdGl2YXRpb24uIERldGFpbCBpbmNsdWRlcyB0b2dnbGUgYHNlbGVjdGVkYCBzdGF0ZS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2FyZWEnLCAnYXhpc1RpY2tzJywgJ2Nvbm5lY3ROdWxscycsICdjdXJ2ZScsICdkZW5zaXR5JywgJ2dyaWQnLCAnaGVpZ2h0UHJvcCcsICdpbnZlcnRlZCcsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xhYmVsWm9vbUVuZCcsICdsYWJlbFpvb21TdGFydCcsICdsZWdlbmQnLCAnbGluZVdpZHRoJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtYXJrTGluZXMnLCAnbWFya1NpemUnLCAnbm9BbmltYXRpb24nLCAnc2VyaWVzJywgJ3Nlcmllc0xhYmVscycsICdzaG93TGFiZWxzJywgJ3Nob3dMaW5lJywgJ3Nob3dNYXJrcycsICdzdGFjaycsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInLCAneEF4aXMnLCAneUF4ZXMnLCAneUF4aXMnLCAnem9vbSddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saW5lLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTGluZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRNYXJrZXJDbGljaycsICdtZExpbmVDbGljaycsICdtZEFyZWFDbGljaycsICdtZEF4aXNDbGljaycsICdtZExlZ2VuZENsaWNrJywgJ21kSG92ZXInLCAnbWRSZWFkeScsICdtZFpvb20nXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRDbGlja0RldGFpbCBhcyBJTWRMaW5lQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0WFlTZXJpZXMgYXMgSU1kTGluZUNoYXJ0TWRDaGFydFhZU2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEF4aXNDbGlja0RldGFpbCBhcyBJTWRMaW5lQ2hhcnRNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEhvdmVyRGV0YWlsIGFzIElNZExpbmVDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZExpbmVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRMaW5lQ2hhcnQge1xuICAvKipcbiAgICogRmlyZXMgb24gbWFya2VyIGNsaWNrLiBgZGF0YUluZGV4YCBhZGRyZXNzZXMgdGhlIGNsaWNrZWQgc2VyaWVzJyBvd25cbmBkYXRhYCBhcnJheSAoaXRzIHBvaW50IGluZGV4LCBmb3Igc2VyaWVzIHRoYXQgY2FycnkgdGhlaXIgb3duIHgpLlxuICAgKi9cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRMaW5lQ2hhcnRNZENoYXJ0WFlTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuIGBkYXRhSW5kZXhgIGlzIHRoZSBwb2ludFxudGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kTGluZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQgKGBhcmVhYCBjaGFydHMgb25seSkg4oCUIHRoZVxucmVnaW9uIGJldHdlZW4gdGhhdCBzZXJpZXMnIGxpbmUgYW5kIGl0cyBiYXNlbGluZSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZFxucG9pbnRzLiBgZGF0YUluZGV4YCBpcyB0aGUgcG9pbnQgdGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kQXJlYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwb3NpdGlvbiBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJ1xudmFsdWUgdGhlcmUuXG4gICAqL1xuICBtZEF4aXNDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBsZWdlbmQgZW50cnkgaXMgY2xpY2tlZC5cbiAgICovXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAodGhyb3R0bGVkIHRvIHJBRikgYXMgdGhlIHBvaW50ZXIgY3Jvc3NlcyB0aGUgcGxvdC5cbiAgICovXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaW5lQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIHRoZSBjaGFydCBmaW5pc2hlcyBpdHMgaW5pdGlhbCByZW5kZXIuXG4gICAqL1xuICBtZFJlYWR5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgem9vbSB3aW5kb3cgY2hhbmdlcyAoZHJhZywgc2xpZGVyIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ludGVyYWN0aW9uTW9kZScsICdsYWJlbCcsICdsYWJlbGxlZGJ5JywgJ2xpc3RTdHlsZScsICdyZW9yZGVyYWJsZScsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0aW9uTW9kZSddLFxuICBtZXRob2RzOiBbJ2FjdGl2YXRlTmV4dCcsICdhY3RpdmF0ZVByZXZpb3VzJywgJ3NlbGVjdEl0ZW0nLCAnZ2V0U2VsZWN0ZWRJbmRpY2VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ludGVyYWN0aW9uTW9kZScsICdsYWJlbCcsICdsYWJlbGxlZGJ5JywgJ2xpc3RTdHlsZScsICdyZW9yZGVyYWJsZScsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0aW9uTW9kZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCcsICdtZEFjdGl2YXRlJywgJ21kUmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0U2VsZWN0RGV0YWlsIGFzIElNZExpc3RNZExpc3RTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRMaXN0IGV4dGVuZHMgQ29tcG9uZW50cy5NZExpc3Qge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzIHZpYSB1c2VyIGlucHV0IChjbGljayAvIEVudGVyIC8gU3BhY2UpLlxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0TWRMaXN0U2VsZWN0RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIHJvdmluZyBmb2N1cyBsYW5kcyBvbiBhIGRpZmZlcmVudCByb3cuXG4gICAqL1xuICBtZEFjdGl2YXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBpdGVtOiBIVE1MTWRMaXN0SXRlbUVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciBhIGRyYWcgKG9yIGtleWJvYXJkKSByZW9yZGVyIGNvbXBsZXRlcy5cblxuLSBgZnJvbWAgLyBgdG9gOiB0aGUgbW92ZWQgcm93J3Mgb2xkIGFuZCBuZXcgcG9zaXRpb25zIChpdGVtIGluZGljZXMsXG4gIGlnbm9yaW5nIG5vbi1pdGVtIGNoaWxkcmVuIGxpa2UgZGl2aWRlcnMpLlxuLSBgb3JkZXJgOiB0aGUgbmV3IG9yZGVyIGV4cHJlc3NlZCBhcyB0aGUgb3JpZ2luYWwgKGFzLWF1dGhvcmVkKSBpbmRpY2VzLFxuICBzbyBgb3JkZXJbbmV3UG9zaXRpb25dID09PSBvcmlnaW5hbFBvc2l0aW9uYC4gVXNlIGl0IHRvIHJlb3JkZXIgYVxuICBiYWNraW5nIGRhdGEgYXJyYXkgaW4gb25lIHBhc3MuXG4gICAqL1xuICBtZFJlb3JkZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGZyb206IG51bWJlcjsgdG86IG51bWJlcjsgb3JkZXI6IG51bWJlcltdIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29udGFpbmVyUm9sZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGFibGUnLCAnZXhwYW5kZWQnLCAnaGVhZGxpbmUnLCAnaHJlZicsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGVhZGluZ0F2YXRhcicsICdsZWFkaW5nQXZhdGFyQWx0JywgJ2xlYWRpbmdBdmF0YXJMYWJlbCcsICdsZWFkaW5nQXZhdGFyTmFtZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSW1hZ2UnLCAnbGVhZGluZ0ltYWdlQWx0JywgJ2xpbmVzJywgJ292ZXJsaW5lJywgJ3Jlb3JkZXJhYmxlJywgJ3JvdmluZ0ZvY3VzVmlzaWJsZScsICdzZWxlY3RlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0YWJiYWJsZScsICd0YXJnZXQnLCAndHJhaWxpbmdJY29uJywgJ3RyYWlsaW5nU3VwcG9ydGluZ1RleHQnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ2ZvY3VzSXRlbScsICd0b2dnbGUnLCAnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRhaW5lclJvbGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRhYmxlJywgJ2V4cGFuZGVkJywgJ2hlYWRsaW5lJywgJ2hyZWYnLCAnaW50ZXJhY3Rpb25Nb2RlJywgJ2xlYWRpbmdBdmF0YXInLCAnbGVhZGluZ0F2YXRhckFsdCcsICdsZWFkaW5nQXZhdGFyTGFiZWwnLCAnbGVhZGluZ0F2YXRhck5hbWUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ltYWdlJywgJ2xlYWRpbmdJbWFnZUFsdCcsICdsaW5lcycsICdvdmVybGluZScsICdyZW9yZGVyYWJsZScsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc2VsZWN0ZWQnLCAnc2VsZWN0aW9uTW9kZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGFiYmFibGUnLCAndGFyZ2V0JywgJ3RyYWlsaW5nSWNvbicsICd0cmFpbGluZ1N1cHBvcnRpbmdUZXh0JywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRMaXN0SXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWRJdGVtQ2xpY2snLCAnbWRJdGVtU2VsZWN0JywgJ21kUmVxdWVzdEFjdGl2YXRpb24nLCAnbWRJdGVtUmVxdWVzdFJlb3JkZXInLCAnbWRFeHBhbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kTGlzdEl0ZW1FeHBhbmREZXRhaWwgYXMgSU1kTGlzdEl0ZW1NZExpc3RJdGVtRXhwYW5kRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTGlzdEl0ZW0ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBpbnRlcmFjdGl2ZSByb3cgaXMgYWN0aXZhdGVkIChjbGljaywgRW50ZXIsIG9yIFNwYWNlKS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGl0ZW06IEhUTUxFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEJ1YmJsZXMgdG8gcGFyZW50IGBtZC1saXN0YCBzbyBpdCBjYW4gbWFuYWdlIHNlbGVjdGlvbiBzdGF0ZS5cbiAgICovXG4gIG1kSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBCdWJibGVzIHRvIHBhcmVudCBgbWQtbGlzdGAgd2hlbiBhbiBgZXhwYW5kZWQtY29udGVudGAgY2hpbGQgcm93IGlzXG5zZWxlY3RlZC4gVGhlIGxpc3QgcmUtZW1pdHMgYG1kU2VsZWN0YCB3aXRoIHRoZSBwYXJlbnQncyBsaXN0IGluZGV4LFxuYGNoaWxkSW5kZXhgLCBgZXhwYW5kZWRgLCBhbmQgdGhlIGNoaWxkIGluIGBpdGVtYC5cbiAgICovXG4gIG1kSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW47IGl0ZW06IEhUTUxNZExpc3RJdGVtRWxlbWVudDsgfT4+O1xuICAvKipcbiAgICogQXNrcyB0aGUgcGFyZW50IGBtZC1saXN0YCB0byBnaXZlIHRoaXMgcm93IHJvdmluZyBmb2N1cy5cbiAgICovXG4gIG1kUmVxdWVzdEFjdGl2YXRpb246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGBtZC1saXN0YCBsaXN0ZW5zIHRvIGZvciBrZXlib2FyZCByZW9yZGVyaW5nXG4oYEFsdCArIEFycm93VXAgLyBBcnJvd0Rvd25gKS4gQnViYmxlcyArIGNvbXBvc2VkIHNvIGl0IGNyb3NzZXMgdGhlXG5zaGFkb3cgYm91bmRhcnkgdXAgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0UmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhbiBleHBhbmRhYmxlIHJvdyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1sb2FkaW5nLWluZGljYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTG9hZGluZ0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTG9hZGluZ0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRMb2FkaW5nSW5kaWNhdG9yIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdhdXRvRm9jdXMnLCAnZGVuc2l0eScsICdlbXB0eVRleHQnLCAnbGF5b3V0JywgJ2xpc3RMYWJlbCcsICdsaXN0Ym94JywgJ21hdGNoQW5jaG9yV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ29wZW4nLCAncGVyc2lzdGVudCcsICdwbGFjZW1lbnQnLCAncXVpY2snLCAncmVzcG9uc2l2ZScsICd1c2VHYXAnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldENvbWJvYm94RWxlbWVudCcsICdzZXRWaXJ0dWFsUHJvdmlkZXInLCAnZ2V0U2Nyb2xsVmlld3BvcnQnLCAnc2hvdycsICdyZXBvc2l0aW9uJywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmNob3InLCAnYXV0b0ZvY3VzJywgJ2RlbnNpdHknLCAnZW1wdHlUZXh0JywgJ2xheW91dCcsICdsaXN0TGFiZWwnLCAnbGlzdGJveCcsICdtYXRjaEFuY2hvcldpZHRoJywgJ21heEhlaWdodCcsICdvcGVuJywgJ3BlcnNpc3RlbnQnLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3Jlc3BvbnNpdmUnLCAndXNlR2FwJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBvcGVucy4gU2NvcGVkIHRvIHRoZSBtZW51IGVsZW1lbnQ6IGBidWJibGVzOiBmYWxzZWBcbnN0b3BzIGl0IGNsaW1iaW5nIHRoZSBsaWdodC1ET00gdHJlZSwgYW5kIGBjb21wb3NlZDogZmFsc2VgIHN0b3BzIGl0XG5lc2NhcGluZyB0aGUgc2hhZG93IHJvb3Qgb2YgYSBob3N0IHRoYXQgZW1iZWRzIHRoaXMgbWVudSAobWQtc2VsZWN0LFxubWQtbXVsdGktc2VsZWN0LCBtZC1kYXRlLXBpY2tlciDigKYpLiBXaXRob3V0IGBjb21wb3NlZDogZmFsc2VgIGFcbmBjb21wb3NlZGAgZXZlbnQgc3RpbGwgc3VyZmFjZXMgYXQgdGhlIGVtYmVkZGluZyBob3N0IGFzIGFuXG5gQVRfVEFSR0VUYCBldmVudCDigJQgc28gYSBjb25zdW1lcidzIGBtZE9wZW5gIGxpc3RlbmVyIG9uIHRoZSB3cmFwcGVyXG53b3VsZCBmaXJlIGZvciBib3RoIHRoZSB3cmFwcGVyJ3Mgb3duIGV2ZW50IGFuZCB0aGlzIGlubmVyIG9uZVxuKGR1cGxpY2F0ZSBvcGVuL2Nsb3NlKS4gV3JhcHBlcnMgbGlzdGVuIHZpYSBgb25NZE9wZW5gIG9uIHRoZSBtZW51XG5lbGVtZW50IGl0c2VsZiwgd2hpY2ggc3RpbGwgZmlyZXMgcmVnYXJkbGVzcy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLiBTY29wZWQgbGlrZSBgbWRPcGVuYCDigJQgc2VlIGl0cyBub3RlLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFkZ2UnLCAnY2hlY2tQb3NpdGlvbicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RpdmlkZXInLCAnZ2FwJywgJ2hlYWRsaW5lJywgJ2luZGV0ZXJtaW5hdGUnLCAna2VlcE9wZW4nLCAncHJlc2VudGF0aW9uJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFpbGluZ1RleHQnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWRnZScsICdjaGVja1Bvc2l0aW9uJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnaW5kZXRlcm1pbmF0ZScsICdrZWVwT3BlbicsICdwcmVzZW50YXRpb24nLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyYWlsaW5nVGV4dCcsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTWVudUl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaXRlbSBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51LWl0ZW0tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51SXRlbUdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51SXRlbUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnVJdGVtR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnZGVuc2l0eScsICdmb3JtYXRPcHRpb25zJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ3Nob3dMYWJlbCcsICdzaG93VmFsdWUnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFsdWVUZXh0JywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW1ldGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkZW5zaXR5JywgJ2Zvcm1hdE9wdGlvbnMnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnc2hvd0xhYmVsJywgJ3Nob3dWYWx1ZScsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE1ldGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZXRlciBleHRlbmRzIENvbXBvbmVudHMuTWRNZXRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjaGlwT3ZlcmZsb3cnLCAnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhckxhYmVsJywgJ2NsZWFyYWJsZScsICdjb3VudEZvcm1hdHRlcicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc3BsYXlNb2RlJywgJ2Ryb3Bkb3duSWNvbicsICdlcnJvcicsICdlcnJvclRleHQnLCAnZmlsdGVyTGFiZWwnLCAnZmlsdGVyTW9kZScsICdmaWx0ZXJhYmxlJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc2VsZWN0QWxsTGFiZWwnLCAnc2hvd1NlbGVjdEFsbCcsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJpZ2dlcicsICd0cmlnZ2VySWNvbicsICd0cmlnZ2VyTGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW11bHRpLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hpcE92ZXJmbG93JywgJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY291bnRGb3JtYXR0ZXInLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXNwbGF5TW9kZScsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdsYWJlbCcsICdsb2FkaW5nJywgJ2xvYWRpbmdUZXh0JywgJ21hdGNoVHJpZ2dlcldpZHRoJywgJ21heEhlaWdodCcsICdtYXhTZWxlY3RlZCcsICduYW1lJywgJ25vT3B0aW9uc1RleHQnLCAnbm9SZXN1bHRzVGV4dCcsICdvcGVuJywgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncm93SGVpZ2h0JywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaGluZ0xhYmVsJywgJ3NlbGVjdEFsbExhYmVsJywgJ3Nob3dTZWxlY3RBbGwnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyaWdnZXInLCAndHJpZ2dlckljb24nLCAndHJpZ2dlckxhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE11bHRpU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRSZW1vdmUnLCAnbWRDbGVhcicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTXVsdGlTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kTXVsdGlTZWxlY3Qge1xuICAvKipcbiAgICogRW1pdHMgdGhlIGZ1bGwgc2VsZWN0ZWQtdmFsdWUgYXJyYXkgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgbWVudSBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSByZW1vdmVkIHZhbHVlIHdoZW4gYSBjaGlwIGlzIGRpc21pc3NlZC5cbiAgICovXG4gIG1kUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjbGVhciBidXR0b24gZW1wdGllcyB0aGUgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdkZW5zaXR5JywgJ2xhYmVsQmVoYXZpb3InLCAnbWFudWFsQWN0aXZhdGlvbiddLFxuICBtZXRob2RzOiBbJ3NlbGVjdCcsICdmb2N1c1RhYiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZUluZGV4JywgJ2RlbnNpdHknLCAnbGFiZWxCZWhhdmlvcicsICdtYW51YWxBY3RpdmF0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvbkJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvbkJhciBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uQmFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZGVzdGluYXRpb24gY2hhbmdlcyAodXNlciBjbGljayxcbmtleWJvYXJkIGFjdGl2YXRpb24sIG9yIHByb2dyYW1tYXRpYyBgc2VsZWN0KClgIGNhbGwpLlxuRGV0YWlsIGluY2x1ZGVzIGJvdGggdGhlIG5ldyBhbmQgcHJldmlvdXMgaW5kaWNlcyBzbyBsaXN0ZW5lcnNcbmNhbiBzaG9ydC1jaXJjdWl0IG5vLW9wIHJlc2VsZWN0cy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91c0luZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdhbGlnbm1lbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlRm9jdXNNYW5hZ2VtZW50JywgJ2V4cGFuZGFibGUnLCAnZnVsbEhlaWdodCcsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAnbWF4VmlzaWJsZScsICdtb2RhbCcsICdvcmllbnRhdGlvbicsICdvdmVyZmxvd0ljb24nLCAnb3ZlcmZsb3dMYWJlbCcsICd0b2dnbGVMYWJlbCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnZXhwYW5kJywgJ2NvbGxhcHNlJywgJ3RvZ2dsZScsICdmb2N1c1RhYiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi1yYWlsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdhbGlnbm1lbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlRm9jdXNNYW5hZ2VtZW50JywgJ2V4cGFuZGFibGUnLCAnZnVsbEhlaWdodCcsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAnbWF4VmlzaWJsZScsICdtb2RhbCcsICdvcmllbnRhdGlvbicsICdvdmVyZmxvd0ljb24nLCAnb3ZlcmZsb3dMYWJlbCcsICd0b2dnbGVMYWJlbCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblJhaWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNoYW5nZScsICdtZEV4cGFuZCcsICdtZENvbGxhcHNlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblJhaWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kTmF2aWdhdGlvblJhaWwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBkZXN0aW5hdGlvbi5cbiAgICovXG4gIG1kVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGNvbGxhcHNlZCDihpIgZXhwYW5kZWQuXG4gICAqL1xuICBtZEV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGV4cGFuZGVkIOKGkiBjb2xsYXBzZWQuXG4gICAqL1xuICBtZENvbGxhcHNlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXJTdWJtZW51U2VsZWN0aW9uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1uYXZpZ2F0aW9uLXJhaWwtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblJhaWxUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJywgJ21kU3VibWVudVRvZ2dsZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE5hdmlnYXRpb25SYWlsVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZE5hdmlnYXRpb25SYWlsVGFiIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBkZXN0aW5hdGlvbiAoY2xpY2sgLyBFbnRlciAvIFNwYWNlKS5cbiAgICovXG4gIG1kVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGlzIGRlc3RpbmF0aW9uJ3Mgc2xvdHRlZCBkcm9wZG93biBvcGVucyBvciBjbG9zZXMuIGBtZC1tZW51YCdzXG5vd24gYG1kT3BlbmAgLyBgbWRDbG9zZWAgYXJlIGRlbGliZXJhdGVseSBub24tYnViYmxpbmcgYW5kIG5vbi1jb21wb3NlZCwgc29cbnRoZSByYWlsIGhhcyBubyB3YXkgdG8gaGVhciB0aGVtIOKAlCB0aGlzIGlzIHRoZSBzaWduYWwgaXQgbGlzdGVucyBmb3IgKGl0XG5saWZ0cyBpdHMgc3RhY2tpbmcgY29udGV4dCBzbyB0aGUgZml4ZWQtcG9zaXRpb24gbWVudSBpcyBub3QgdHJhcHBlZCkuXG4gICAqL1xuICBtZFN1Ym1lbnVUb2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ2ZvY3VzRWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE5hdmlnYXRpb25UYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblRhYiBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uVGFiIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHRhYiBpcyBhY3RpdmF0ZWQgKGNsaWNrLCBFbnRlciwgb3IgU3BhY2UpIGFuZCB0aGUgdGFiIGlzXG5ub3QgZGlzYWJsZWQuIFRoZSBwYXJlbnQgYG1kLW5hdmlnYXRpb24tYmFyYCBsaXN0ZW5zIGZvciB0aGlzIHRvIGRyaXZlXG5zZWxlY3Rpb247IGV4dGVybmFsIGNvZGUgbWF5IGFsc28gbGlzdGVuIHRvIGRldGVjdCBwZXItdGFiIGFjdGl2YXRpb25cbihpbmNsdWRpbmcgYSByZS1jbGljayBvZiB0aGUgYWxyZWFkeS1hY3RpdmUgdGFiLCB3aGljaCBkb2VzIG5vdCBlbWl0XG5gbWRDaGFuZ2VgIG9uIHRoZSBiYXIpLlxuICAgKi9cbiAgbWRUYWJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsbG93T3V0T2ZSYW5nZScsICdhbGxvd1doZWVsU2NydWInLCAnZGVjcmVtZW50TGFiZWwnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9ybWF0T3B0aW9ucycsICdpbmNyZW1lbnRMYWJlbCcsICdsYWJlbCcsICdsYXJnZVN0ZXAnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NtYWxsU3RlcCcsICdzbmFwT25TdGVwJywgJ3N0ZXAnLCAnc3RlcHBlcnMnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ3NlbGVjdCcsICdzdGVwVXAnLCAnc3RlcERvd24nLCAnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbnVtYmVyLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGxvd091dE9mUmFuZ2UnLCAnYWxsb3dXaGVlbFNjcnViJywgJ2RlY3JlbWVudExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2Zvcm1hdE9wdGlvbnMnLCAnaW5jcmVtZW50TGFiZWwnLCAnbGFiZWwnLCAnbGFyZ2VTdGVwJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzbWFsbFN0ZXAnLCAnc25hcE9uU3RlcCcsICdzdGVwJywgJ3N0ZXBwZXJzJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWROdW1iZXJGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWROdW1iZXJGaWVsZENoYW5nZURldGFpbCBhcyBJTWROdW1iZXJGaWVsZE1kTnVtYmVyRmllbGRDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROdW1iZXJGaWVsZCBleHRlbmRzIENvbXBvbmVudHMuTWROdW1iZXJGaWVsZCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSB2YWx1ZSBjaGFuZ2UgKHR5cGluZyBpbmNsdWRlZCkuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTnVtYmVyRmllbGRNZE51bWJlckZpZWxkQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyBhdCBjb21taXQgcG9pbnRzOiBibHVyL0VudGVyIHJlZm9ybWF0LCBzdGVwcGluZywgd2hlZWwuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE51bWJlckZpZWxkTWROdW1iZXJGaWVsZENoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGVtYmVkZGluZyBhIGZpZWxkIHdvdWxkXG5vdGhlcndpc2UgaGVhciB0d28gZXZlbnRzIGZvciBvbmUgbG9naWNhbCBjb250cm9sOyBgYnViYmxlczogdHJ1ZWAgc3RpbGxcbmxldHMgYSBgPGZvcm0+YCBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1vcmdhbml6YXRpb24tY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kT3JnYW5pemF0aW9uQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdGlvbkNoYW5nZScsICdtZE5vZGVUb2dnbGUnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE9yZ0NoYXJ0U2VsZWN0aW9uQ2hhbmdlRGV0YWlsIGFzIElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBPcmdDaGFydFRvZ2dsZURldGFpbCBhcyBJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0VG9nZ2xlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kT3JnYW5pemF0aW9uQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1kT3JnYW5pemF0aW9uQ2hhcnQge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBtZFNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkIG9yIGNvbGxhcHNlZC5cbiAgICovXG4gIG1kTm9kZVRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRUb2dnbGVEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b1N1Ym1pdCcsICdjZWxsTGFiZWxUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdncm91cFNpemUnLCAnaW5jb21wbGV0ZUxhYmVsJywgJ2lucHV0TW9kZScsICdsYWJlbCcsICdsZW5ndGgnLCAnbWFzaycsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJhbnNmb3JtJywgJ3ZhbGlkYXRpb25UeXBlJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnLCAnY2xlYXInLCAnZ2V0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtb3RwLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvU3VibWl0JywgJ2NlbGxMYWJlbFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2dyb3VwU2l6ZScsICdpbmNvbXBsZXRlTGFiZWwnLCAnaW5wdXRNb2RlJywgJ2xhYmVsJywgJ2xlbmd0aCcsICdtYXNrJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFuc2Zvcm0nLCAndmFsaWRhdGlvblR5cGUnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRPdHBGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRDb21wbGV0ZScsICdtZEludmFsaWRJbnB1dCcsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZE90cEZpZWxkQ29tcGxldGVEZXRhaWwgYXMgSU1kT3RwRmllbGRNZE90cEZpZWxkQ29tcGxldGVEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZE90cEZpZWxkSW52YWxpZERldGFpbCBhcyBJTWRPdHBGaWVsZE1kT3RwRmllbGRJbnZhbGlkRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIGFzIElNZE90cEZpZWxkTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kT3RwRmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kT3RwRmllbGQge1xuICAvKipcbiAgICogRmlyZXMgb24gZXZlcnkgdmFsdWUgY2hhbmdlIGZyb20gdXNlciBpbnB1dCAodHlwaW5nLCBjbGVhcmluZywgcGFzdGUsIGF1dG9maWxsKS5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIENvbW1pdCBldmVudDogZmlyZXMgd2hlbiB0aGUgY29kZSBiZWNvbWVzIGNvbXBsZXRlIGFuZCB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgd2hvbGUgZ3JvdXAuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBldmVyeSBjZWxsIGlzIGZpbGxlZC4gQSBjb21wbGV0ZSBwYXN0ZSByZS1maXJlcyBpdCBldmVuIGlmIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBtZENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kT3RwRmllbGRNZE90cEZpZWxkQ29tcGxldGVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdHlwZWQvcGFzdGVkIGNoYXJhY3RlcnMgYXJlIHJlamVjdGVkIGJ5IHRoZSBgdmFsaWRhdGlvblR5cGVgIGNoYXJzZXQuXG4gICAqL1xuICBtZEludmFsaWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE90cEZpZWxkTWRPdHBGaWVsZEludmFsaWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gbW91bnQsIG5ldmVyIGZvciBhXG5yZS1wdWJsaXNoIGxhbmRpbmcgb24gdGhlIHNhbWUgc3RhdGUuIGBjb21wb3NlZDogZmFsc2VgIGJ5IHRoZSBsaWJyYXJ5XG5jb252ZW50aW9uOiBlYWNoIGNvbnRyb2wgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGY7IGBidWJibGVzOiB0cnVlYCBzdGlsbFxucmVhY2hlcyBgPGZvcm0+YC1sZXZlbCBsaXN0ZW5lcnMgaW4gdGhlIHNhbWUgRE9NIHRyZWUuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kT3RwRmllbGRNZE90cEZpZWxkVmFsaWRpdHlEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2Nvcm5lclJhZGl1cycsICdkYXRhJywgJ2RlbnNpdHknLCAnZW5kQW5nbGUnLCAnZ3JhZGllbnQnLCAnaGVpZ2h0UHJvcCcsICdoaWdobGlnaHQnLCAnaW5uZXJSYWRpdXMnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbE1vZGUnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGVnZW5kJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtb25vY2hyb21lJywgJ25vQW5pbWF0aW9uJywgJ291dGVyUmFkaXVzJywgJ3BhZGRpbmdBbmdsZScsICdyaW5nV2lkdGhzJywgJ3Nob3dMYWJlbHMnLCAnc3RhcnRBbmdsZScsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInXSxcbiAgbWV0aG9kczogWydyZXNpemUnLCAncmVwbGF5JywgJ2RyaWxsJywgJ3RvRGF0YVVSTCcsICdnZXRJbnN0YW5jZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcGllLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnY29ybmVyUmFkaXVzJywgJ2RhdGEnLCAnZGVuc2l0eScsICdlbmRBbmdsZScsICdncmFkaWVudCcsICdoZWlnaHRQcm9wJywgJ2hpZ2hsaWdodCcsICdpbm5lclJhZGl1cycsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsTW9kZScsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsZWdlbmQnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21vbm9jaHJvbWUnLCAnbm9BbmltYXRpb24nLCAnb3V0ZXJSYWRpdXMnLCAncGFkZGluZ0FuZ2xlJywgJ3JpbmdXaWR0aHMnLCAnc2hvd0xhYmVscycsICdzdGFydEFuZ2xlJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlciddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFBpZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTbGljZUNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRSZWFkeSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZFBpZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRQaWVEYXR1bSBhcyBJTWRQaWVDaGFydE1kUGllRGF0dW0gfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRQaWVDaGFydCB7XG5cbiAgbWRTbGljZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kUGllQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kUGllQ2hhcnRNZFBpZURhdHVtPj4+O1xuXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRhdGFJbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG5cbiAgbWRSZWFkeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29tcGxldGUnLCAnZGVuc2l0eScsICdmb3VyQ29sb3InLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFyaWFudCcsICd3YXZlJywgJ3dhdmVBbXBsaXR1ZGUnLCAnd2F2ZUxlbmd0aCcsICd3YXZlU3BlZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXByb2dyZXNzLWluZGljYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29tcGxldGUnLCAnZGVuc2l0eScsICdmb3VyQ29sb3InLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFyaWFudCcsICd3YXZlJywgJ3dhdmVBbXBsaXR1ZGUnLCAnd2F2ZUxlbmd0aCcsICd3YXZlU3BlZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ29tcGxldGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQcm9ncmVzc0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBjb21wbGV0aW9uIGFuaW1hdGlvbiBmaW5pc2hlcyAoYW5kIHRoZSBpbmRpY2F0b3IgaGFzIGhpZGRlblxuaXRzZWxmLCBvciDigJQgZm9yIGZsYXQgY2lyY3VsYXIg4oCUIHNldHRsZWQgb24gaXRzIGVtcHR5IHRyYWNrIHJpbmcpLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc3luY1ZhbGlkaXR5RnJvbUdyb3VwJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnc2V0Rm9jdXMnLCAnc2V0Qmx1cicsICdzZWxlY3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXJhZGlvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kRm9jdXMnLCAnbWRCbHVyJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuTWRSYWRpbyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjaGVja2VkIHN0YXRlIGNoYW5nZXMgdmlhIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHJhZGlvIHJlY2VpdmVzIGZvY3VzXG4gICAqL1xuICBtZEZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgcmFkaW8gbG9zZXMgZm9jdXNcbiAgICovXG4gIG1kQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZWZhdWx0VmFsdWUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbXB0eUljb24nLCAnZ2V0TGFiZWwnLCAnaG92ZXInLCAnaWNvbicsICdtYXgnLCAnbmFtZScsICdvdXRsaW5lRW1wdHknLCAncHJlY2lzaW9uJywgJ3JhdGluZ0xhYmVsJywgJ3JlYWRvbmx5JywgJ3Nob3dWYWx1ZUxhYmVsJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnZm9jdXNSYXRpbmcnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVmYXVsdFZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW1wdHlJY29uJywgJ2dldExhYmVsJywgJ2hvdmVyJywgJ2ljb24nLCAnbWF4JywgJ25hbWUnLCAnb3V0bGluZUVtcHR5JywgJ3ByZWNpc2lvbicsICdyYXRpbmdMYWJlbCcsICdyZWFkb25seScsICdzaG93VmFsdWVMYWJlbCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFJhdGluZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSG92ZXInLCAnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSYXRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmF0aW5nIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoaWxlIHRoZSB1c2VyIGlzIGhvdmVyaW5nIChvciBgbnVsbGAgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcykuXG4gICAqL1xuICBtZEhvdmVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyIHwgbnVsbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHZhbHVlIGNoYW5nZXMgdmlhIGludGVyYWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnXSxcbiAgbWV0aG9kczogWyd3aGVuU2V0dGxlZCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1yaXBwbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kUmlwcGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSaXBwbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmlwcGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Fubm91bmNlUmVzdWx0cycsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdlbGV2YXRpb24nLCAnZXNjYXBlQ2xvc2VzJywgJ2Z1bGxXaWR0aCcsICdpbml0aWFsRm9jdXMnLCAnaW5wdXRBcmlhTGFiZWwnLCAnbGF5b3V0JywgJ2xlYWRpbmdJY29uJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ21heEJsb2NrU2l6ZScsICdub1Jlc3VsdHNMYWJlbCcsICdvcGVuJywgJ29wZW5MZWFkaW5nSWNvbicsICdwbGFjZWhvbGRlcicsICdyZXN1bHRzTGFiZWwnLCAnc2Nyb2xsU2hhZG93JywgJ3Nob3dDbGVhckJ1dHRvbicsICd0aHJvdHRsZScsICd0cmlnZ2VyJywgJ3RyaWdnZXJFbGVtZW50JywgJ3RyaWdnZXJGb3InLCAndHJpZ2dlckljb24nLCAndmFsdWUnLCAndmFyaWFudCcsICd2b2ljZVNlYXJjaCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAndG9nZ2xlJywgJ2ZvY3VzSW5wdXQnLCAnc3RhcnRWb2ljZScsICdzdG9wVm9pY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlYXJjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5ub3VuY2VSZXN1bHRzJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2VsZXZhdGlvbicsICdlc2NhcGVDbG9zZXMnLCAnZnVsbFdpZHRoJywgJ2luaXRpYWxGb2N1cycsICdpbnB1dEFyaWFMYWJlbCcsICdsYXlvdXQnLCAnbGVhZGluZ0ljb24nLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbWF4QmxvY2tTaXplJywgJ25vUmVzdWx0c0xhYmVsJywgJ29wZW4nLCAnb3BlbkxlYWRpbmdJY29uJywgJ3BsYWNlaG9sZGVyJywgJ3Jlc3VsdHNMYWJlbCcsICdzY3JvbGxTaGFkb3cnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Rocm90dGxlJywgJ3RyaWdnZXInLCAndHJpZ2dlckVsZW1lbnQnLCAndHJpZ2dlckZvcicsICd0cmlnZ2VySWNvbicsICd2YWx1ZScsICd2YXJpYW50JywgJ3ZvaWNlU2VhcmNoJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VhcmNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZFNlYXJjaCcsICdtZFN1Ym1pdCcsICdtZENoYW5nZScsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENsZWFyJywgJ21kVm9pY2UnLCAnbWRMZWFkaW5nSWNvbkNsaWNrJywgJ21kVHJhaWxpbmdJY29uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbCBhcyBJTWRTZWFyY2hNZFNlYXJjaExlYWRpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNlYXJjaFRyYWlsaW5nSWNvbkNsaWNrRGV0YWlsIGFzIElNZFNlYXJjaE1kU2VhcmNoVHJhaWxpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWFyY2ggZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VhcmNoIHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIGV2ZXJ5IGlucHV0IGNoYW5nZSAoaW1tZWRpYXRlLCBldmVyeSBrZXlzdHJva2UpLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBEZWJvdW5jZWQsIGRlLWR1cGxpY2F0ZWQgcXVlcnkgZXZlbnQg4oCUIHRoZSBvbmUgdG8gd2lyZSBhbiBhc3luYyByZXN1bHRzXG5mZXRjaCB0by4gSG9ub3VycyBgZGVib3VuY2VgIC8gYHRocm90dGxlYCBhbmQgYXBwbGllcyBhXG5kaXN0aW5jdC11bnRpbC1jaGFuZ2VkIGd1YXJkIG9uIHRoZSB0cmltbWVkIHF1ZXJ5IChzbyByZS10eXBpbmcgdGhlIHNhbWVcbnRlcm0sIG9yIG9ubHkgYWRkaW5nIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UsIHdvbid0IHJlLXRyaWdnZXIgYSBmZXRjaCkuXG5QcmVzc2luZyBFbnRlciBvciBjbGVhcmluZyB0aGUgZmllbGQgZmx1c2hlcyBpdCBpbW1lZGlhdGVseS5cbiAgICovXG4gIG1kU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBFbnRlciB0byBzdWJtaXQgYSBxdWVyeS5cbiAgICovXG4gIG1kU3VibWl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzIHdpdGggYSBkaWZmZXJlbnQgdmFsdWUgdGhhbiBvbiBmb2N1cy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBhbmVsIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGFuZWwgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciAow5cpIGJ1dHRvbi5cbiAgICovXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGlsZSB2b2ljZSBzZWFyY2ggaXMgYWN0aXZlIGFzIHRoZSB0cmFuc2NyaXB0IHN0cmVhbXMgaW4uIGB2YWx1ZWBcbmlzIHRoZSBjdXJyZW50IChpbnRlcmltIG9yIGZpbmFsKSB0cmFuc2NyaXB0OyBgZmluYWxgIGlzIGB0cnVlYCBvbiB0aGVcbnJlY29nbmlzZWQgZmluYWwgcmVzdWx0LiBUaGUgY29tcG9uZW50IGFscmVhZHkgbWlycm9ycyB0aGUgdHJhbnNjcmlwdCBpbnRvXG50aGUgaW5wdXQgYW5kIGZpcmVzIGBtZElucHV0YCAvIGBtZFNlYXJjaGAsIHNvIGxpc3RlbiB0byB0aGlzIG9ubHkgaWYgeW91XG5uZWVkIHZvaWNlLXNwZWNpZmljIFVJIChlLmcuIGEgdHJhbnNjcmlwdCBwcmV2aWV3KS5cbiAgICovXG4gIG1kVm9pY2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGZpbmFsOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGludGVyYWN0aXZlIGxlYWRpbmcgYWZmb3JkYW5jZSBpcyBjbGlja2VkIOKAlCB0aGUgbW9ycGhpbmdcbmJhY2sgLyBkaXNtaXNzIGJ1dHRvbiB3aGlsZSB0aGUgYmFyIGlzIG9wZW4sIG9yIGEgY3VzdG9tIHNsb3R0ZWQgYGxlYWRpbmdgXG5pY29uLiBUaGUgZGVmYXVsdCBiYWNrIGJ1dHRvbiBzdGlsbCBkaXNtaXNzZXMgdGhlIHBhbmVsIGFzIGJlZm9yZTsgdGhpc1xuZXZlbnQgaXMgYWRkaXRpdmUuIFRoZSBjbG9zZWQgcmVzdGluZyBzZWFyY2ggZ2x5cGggaXMgaW50ZW50aW9uYWxseSBOT1QgYVxuY2xpY2sgdGFyZ2V0IChhIGNsaWNrIHRoZXJlIGZvY3VzZXMgdGhlIGlucHV0KSwgc28gaXQgZG9lcyBub3QgZW1pdC5cbiAgICovXG4gIG1kTGVhZGluZ0ljb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNlYXJjaE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsb3R0ZWQgYHRyYWlsaW5nYCBhZmZvcmRhbmNlIGlzIGNsaWNrZWQuIFRoZSBidWlsdC1pbiBjbGVhclxuKMOXKSBhbmQgdm9pY2UgKG1pYykgYnV0dG9ucyBvd24gdGhlaXIgZGVkaWNhdGVkIGBtZENsZWFyYCAvIGBtZFZvaWNlYFxuZXZlbnRzIGFuZCBkbyBOT1QgdHJpZ2dlciB0aGlzLiBPbmx5IGVtaXR0ZWQgd2hlbiBzbG90dGVkIHRyYWlsaW5nIGNvbnRlbnRcbmlzIGFjdHVhbGx5IHByZXNlbnQgYW5kIHdhcyB0aGUgY2xpY2sgdGFyZ2V0LlxuICAgKi9cbiAgbWRUcmFpbGluZ0ljb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNlYXJjaE1kU2VhcmNoVHJhaWxpbmdJY29uQ2xpY2tEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2xhYmVsJywgJ25vQ2hlY2ttYXJrJywgJ3JpcHBsZScsICdzZWdtZW50RGVuc2l0eScsICdzZWdtZW50SW5kZXgnLCAnc2VnbWVudE11bHRpc2VsZWN0JywgJ3NlZ21lbnRUb3RhbCcsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlZ21lbnRlZC1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdub0NoZWNrbWFyaycsICdyaXBwbGUnLCAnc2VnbWVudERlbnNpdHknLCAnc2VnbWVudEluZGV4JywgJ3NlZ21lbnRNdWx0aXNlbGVjdCcsICdzZWdtZW50VG90YWwnLCAnc2VsZWN0ZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VnbWVudGVkQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWdtZW50Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWdtZW50ZWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VnbWVudGVkQnV0dG9uIHtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IOKAlCBjYXVnaHQgYnkgdGhlIHNldFxuICAgKi9cbiAgbWRTZWdtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdtdWx0aXNlbGVjdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VnbWVudGVkLWJ1dHRvbi1zZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbXVsdGlzZWxlY3QnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlZ21lbnRlZEJ1dHRvblNldCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2V0IG9mIHNlbGVjdGVkIHNlZ21lbnQgdmFsdWVzIGNoYW5nZXNcbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWxlY3Qge1xuICAvKipcbiAgICogRW1pdHMgdGhlIG5ld2x5IHNlbGVjdGVkIHZhbHVlIHdoZW5ldmVyIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkcm9wZG93biBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRyb3Bkb3duIGNsb3Nlcy5cbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQ29sb3InLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlbGVjdC1vcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VsZWN0T3B0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3RPcHRpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWxlY3RPcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VsZWN0T3B0aW9uIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIG9wdGlvbiBtb3VudHMsIHVubW91bnRzLCBvciBpdHMgZGF0YSBjaGFuZ2VzIHNvIHRoZVxucGFyZW50IHBpY2tlciBjYW4gcmUtcmVhZCBpdHMgb3B0aW9uIHNldC5cbiAgICovXG4gIG1kU2VsZWN0T3B0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2RldGFjaGVkJywgJ2hlYWRsaW5lJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzaGVldEFyaWFMYWJlbCcsICdzaG93QmFjaycsICdzaWRlJywgJ3RvcERpdmlkZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNpZGUtc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGV0YWNoZWQnLCAnaGVhZGxpbmUnLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3NoZWV0QXJpYUxhYmVsJywgJ3Nob3dCYWNrJywgJ3NpZGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2lkZVNoZWV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnLCAnbWRCYWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2lkZVNoZWV0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFNpZGVTaGVldCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBvcGVuc1xuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2hlZXQgY2xvc2VzXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBkaXNtaXNzZWQgdmlhIHNjcmltIGNsaWNrIG9yIEVzY2FwZVxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBiYWNrIGJ1dHRvbiBpcyBwcmVzc2VkIChtb2RhbCBvbmx5KVxuICAgKi9cbiAgbWRCYWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5ub3VuY2UnLCAnYXJpYUxhYmVsUHJvcCcsICdkZW5zaXR5JywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2hlaWdodCcsICdsaW5lcycsICd2YXJpYW50JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1za2VsZXRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2Fubm91bmNlJywgJ2FyaWFMYWJlbFByb3AnLCAnZGVuc2l0eScsICdmdWxsSGVpZ2h0JywgJ2Z1bGxXaWR0aCcsICdoZWlnaHQnLCAnbGluZXMnLCAndmFyaWFudCcsICd3aWR0aCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTa2VsZXRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNsaWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRGb2N1cycsICdtZEJsdXInLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclZhbHVlRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclRodW1iRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlckRyYWdEZXRhaWwgYXMgSU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNsaWRlciB7XG4gIC8qKlxuICAgKiBGaXJlcyBjb250aW51b3VzbHkgd2hpbGUgdGhlIHVzZXIgZHJhZ3Mgb3IgcHJlc3NlcyBhcnJvdyBrZXlzLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIG9uY2Ugd2hlbiB0aGUgdXNlciBjb21taXRzIGEgdmFsdWUgKHBvaW50ZXIgdXAsIGtleWJvYXJkIHJlbGVhc2UsIGNoYW5nZSBldmVudCkuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzbGlkZXIgdGh1bWIgcmVjZWl2ZXMgZm9jdXMuXG4gICAqL1xuICBtZEZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJUaHVtYkRldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsaWRlciB0aHVtYiBsb3NlcyBmb2N1cy5cbiAgICovXG4gIG1kQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBkcmFnL2tleWJvYXJkIGludGVyYWN0aW9uIGJlZ2lucy5cbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgZHJhZy9rZXlib2FyZCBpbnRlcmFjdGlvbiBlbmRzLlxuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGlvbicsICdhdXRvSGlkZScsICdhdXRvSGlkZUR1cmF0aW9uJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2Rpc21pc3NMYWJlbCcsICdtZXNzYWdlJywgJ29wZW4nLCAncG9saXRlbmVzcycsICdwb3NpdGlvbicsICdzdGFja2VkJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zbmFja2JhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2F1dG9IaWRlJywgJ2F1dG9IaWRlRHVyYXRpb24nLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGlzbWlzc0xhYmVsJywgJ21lc3NhZ2UnLCAnb3BlbicsICdwb2xpdGVuZXNzJywgJ3Bvc2l0aW9uJywgJ3N0YWNrZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTbmFja2JhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQWN0aW9uJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU25hY2tiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU25hY2tiYXIge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc25hY2tiYXIgYmVjb21lcyB2aXNpYmxlXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzbmFja2JhciBpcyBkaXNtaXNzZWQsIHdpdGggcmVhc29uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246ICdhdXRvJyB8ICdhY3Rpb24nIHwgJ2Nsb3NlJyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIG1kQWN0aW9uOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdnZXRJbnN0YW5jZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3BhcmtsaW5lJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNwYXJrbGluZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU3BhcmtDbGljaycsICdtZFJlYWR5J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BhcmtsaW5lIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwYXJrbGluZSB7XG5cbiAgbWRTcGFya0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkYXRhSW5kZXg6IG51bWJlcjsgdmFsdWU6IG51bWJlciB8IG51bGwgfT4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbnRyb2xzJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hhc3BvcHVwJywgJ2ljb24nLCAnbGFiZWwnLCAnbWVudUxhYmVsJywgJ3JpcHBsZScsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0cmFpbGluZ0NoZWNrZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNwbGl0LWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaGFzcG9wdXAnLCAnaWNvbicsICdsYWJlbCcsICdtZW51TGFiZWwnLCAncmlwcGxlJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RyYWlsaW5nQ2hlY2tlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNwbGl0QnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRMZWFkaW5nQ2xpY2snLCAnbWRUcmFpbGluZ0NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BsaXRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU3BsaXRCdXR0b24ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgbGVhZGluZyBidXR0b24gaXMgYWN0aXZhdGVkXG4gICAqL1xuICBtZExlYWRpbmdDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHRyYWlsaW5nIGJ1dHRvbiBpcyB0b2dnbGVkXG4gICAqL1xuICBtZFRyYWlsaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2xhYmVsJywgJ2xpdmUnLCAnc2l6ZScsICdzdGF0ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RhdHVzLWRvdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICdsaXZlJywgJ3NpemUnLCAnc3RhdGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGF0dXNEb3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN0YXR1c0RvdCBleHRlbmRzIENvbXBvbmVudHMuTWRTdGF0dXNEb3Qge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWNjZXNzaWJsZU5hbWUnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWRJY29uJywgJ2RlbnNpdHknLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZWRpdGFibGUnLCAnZXJyb3InLCAnZXJyb3JJY29uJywgJ2Vycm9yVGV4dCcsICdoaWRlQWN0aW9ucycsICdpY29uJywgJ2xhYmVsJywgJ29wdGlvbmFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY2Nlc3NpYmxlTmFtZScsICdhY3RpdmUnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZEljb24nLCAnZGVuc2l0eScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlZGl0YWJsZScsICdlcnJvcicsICdlcnJvckljb24nLCAnZXJyb3JUZXh0JywgJ2hpZGVBY3Rpb25zJywgJ2ljb24nLCAnbGFiZWwnLCAnb3B0aW9uYWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGVwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTdGVwQ2xpY2snLCAnbWRTdGVwTmV4dCcsICdtZFN0ZXBCYWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RlcCBleHRlbmRzIENvbXBvbmVudHMuTWRTdGVwIHtcbiAgLyoqXG4gICAqIEJ1YmJsZWQgdG8gdGhlIHBhcmVudCBzdGVwcGVyLCB3aGljaCBkZWNpZGVzIHdoZXRoZXIgdGhlIG1vdmUgaXMgYWxsb3dlZC5cbkludGVybmFsIGNvb3JkaW5hdGlvbiBldmVudCDigJQgY29uc3VtZWQgKGFuZCBzdG9wcGVkKSBieSBgbWQtc3RlcHBlcmAuXG4gICAqL1xuICBtZFN0ZXBDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBDb250aW51ZSBwcmVzc2VkIGluIHRoaXMgc3RlcCdzIGNvbnRlbnQgcGFuZWwuIENvbnN1bWVkIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcE5leHQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xuICAvKipcbiAgICogQmFjayBwcmVzc2VkIGluIHRoaXMgc3RlcCdzIGNvbnRlbnQgcGFuZWwuIENvbnN1bWVkIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcEJhY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYXV0b0NvbXBsZXRlJywgJ2JhY2tMYWJlbCcsICdjb21wbGV0ZWRXb3JkJywgJ2N1cnJlbnRXb3JkJywgJ2RlbnNpdHknLCAnZXJyb3JXb3JkJywgJ2ZpbmlzaExhYmVsJywgJ2luZGljYXRvcicsICdsYWJlbCcsICdsYXp5JywgJ2xvYWRpbmcnLCAnbW9kZScsICduYXYnLCAnbmV4dERpc2FibGVkJywgJ25leHRMYWJlbCcsICdvZldvcmQnLCAnb3B0aW9uYWxXb3JkJywgJ29yaWVudGF0aW9uJywgJ3N0ZXBXb3JkJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWyduZXh0JywgJ3ByZXYnLCAnZ29UbycsICdyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2F1dG9Db21wbGV0ZScsICdiYWNrTGFiZWwnLCAnY29tcGxldGVkV29yZCcsICdjdXJyZW50V29yZCcsICdkZW5zaXR5JywgJ2Vycm9yV29yZCcsICdmaW5pc2hMYWJlbCcsICdpbmRpY2F0b3InLCAnbGFiZWwnLCAnbGF6eScsICdsb2FkaW5nJywgJ21vZGUnLCAnbmF2JywgJ25leHREaXNhYmxlZCcsICduZXh0TGFiZWwnLCAnb2ZXb3JkJywgJ29wdGlvbmFsV29yZCcsICdvcmllbnRhdGlvbicsICdzdGVwV29yZCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU3RlcHBlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQmVmb3JlQ2hhbmdlJywgJ21kU3RlcENoYW5nZScsICdtZENvbXBsZXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RlcHBlciBleHRlbmRzIENvbXBvbmVudHMuTWRTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIEJFRk9SRSBhIHVzZXItZHJpdmVuIHN0ZXAgY2hhbmdlIGNvbW1pdHMgKHN0ZXAgY2xpY2ssIGJ1aWx0LWluIG5hdiwgb3JcbmBuZXh0KClgL2BwcmV2KClgL2Bnb1RvKClgKS4gQ2FuY2VsYWJsZTogY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgdG9cbnZldG8gdGhlIHRyYW5zaXRpb24gKGUuZy4gYmxvY2sgQ29udGludWUgdW50aWwgdGhlIGN1cnJlbnQgc3RlcCB2YWxpZGF0ZXMpLlxuYGRldGFpbC5pbmRleGAgaXMgdGhlIHJlcXVlc3RlZCBzdGVwLCBgZGV0YWlsLnByZXZpb3VzYCB0aGUgY3VycmVudCBvbmUuXG5Eb2VzIG5vdCBmaXJlIGZvciBhIGRpcmVjdCBgYWN0aXZlYCBwcm9wZXJ0eSBhc3NpZ25tZW50IOKAlCBzZXQgYGFjdGl2ZWBcbnlvdXJzZWxmIHRvIGNvbW1pdCBhdXRob3JpdGF0aXZlbHkgKGUuZy4gYWZ0ZXIgYXN5bmMgdmFsaWRhdGlvbikuXG4gICAqL1xuICBtZEJlZm9yZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgcHJldmlvdXM6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBBY3RpdmUgc3RlcCBjaGFuZ2VkIChhZnRlciBpdCBjb21taXRzKS5cbiAgICovXG4gIG1kU3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgcHJldmlvdXM6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBDb250aW51ZSBwcmVzc2VkIG9uIHRoZSBsYXN0IHN0ZXAgKHRoZSBmbG93IGlzIGZpbmlzaGVkKS5cbiAgICovXG4gIG1kQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgbWV0aG9kczogWydjb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3ViLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFkZ2UnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdzdXBwb3J0aW5nVGV4dCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFN1Yk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN1Yk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN1Yk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gcm93IGl0c2VsZiBpcyBjbGlja2VkIChub3QgdGhlIHN1Ym1lbnUpLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29ucycsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaG93T25seVNlbGVjdGVkSWNvbicsICdzb2Z0RGlzYWJsZWQnLCAndW5zZWxlY3RlZEljb24nLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbnMnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hvd09ubHlTZWxlY3RlZEljb24nLCAnc29mdERpc2FibGVkJywgJ3Vuc2VsZWN0ZWRJY29uJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU3dpdGNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3dpdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN3aXRjaCB7XG4gIC8qKlxuICAgKiBGaXJlcyAqKmJlZm9yZSoqIHRoZSBzdGF0ZSBjaGFuZ2VzLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCB0b1xuYmxvY2sgdGhlIGludGVybmFsIHRvZ2dsZSBhbmQgbWFuYWdlIHN0YXRlIGV4dGVybmFsbHkgKGNvbnRyb2xsZWQgbW9kZSkuXG5cbmBgYHRzXG5zd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignbWRJbnB1dCcsIChlKSA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgLy8gcHJldmVudCBpbnRlcm5hbCB0b2dnbGVcbiAgbXlTdGF0ZS52YWx1ZSA9IGUuZGV0YWlsLnNlbGVjdGVkOyAvLyB1cGRhdGUgeW91ciBvd24gc3RhdGVcbn0pO1xuYGBgXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAqKmFmdGVyKiogdGhlIGludGVybmFsIHN0YXRlIGhhcyBjb21taXR0ZWQuIFVzZSBmb3Igc2lkZSBlZmZlY3RzXG5saWtlIHNhdmluZyBwcmVmZXJlbmNlcywgYW5hbHl0aWNzLCBvciBzeW5jaW5nIHdpdGggb3RoZXIgY29tcG9uZW50cy5cbk5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgdG9nZ2xlIGhhcyBhbHJlYWR5IGhhcHBlbmVkLlxuXG5gYGB0c1xuc3dpdGNoLmFkZEV2ZW50TGlzdGVuZXIoJ21kQ2hhbmdlJywgKGUpID0+IHtcbiAgY29uc29sZS5sb2coJ1N3aXRjaCBpcyBub3cnLCBlLmRldGFpbC5zZWxlY3RlZCA/ICdPTicgOiAnT0ZGJyk7XG59KTtcbmBgYFxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2lubGluZUljb24nLCAnbGFiZWwnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2lubGluZUljb24nLCAnbGFiZWwnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kVGFiQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFiIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRhYiBpcyBhY3RpdmF0ZWQgYnkgY2xpY2sgb3Iga2V5Ym9hcmRcbiAgICovXG4gIG1kVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFiUGFuZWwge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZm9yJywgJ3NpemluZyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVscycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZm9yJywgJ3NpemluZyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYlBhbmVscyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiUGFuZWxzIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYlBhbmVscyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBtZXRob2RzOiBbJ2dldFNlbGVjdGlvbicsICdzZWxlY3RBbGwnLCAnZGVzZWxlY3RBbGwnLCAndG9nZ2xlU2VsZWN0QWxsJywgJ3NldFNvcnQnLCAncGluQ29sdW1uJywgJ3NldENvbHVtblZpc2liaWxpdHknLCAnYW5pbWF0ZU5leHRDaGFuZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTb3J0Q2hhbmdlJywgJ21kU2VsZWN0aW9uQ2hhbmdlJywgJ21kUGluQ2hhbmdlJywgJ21kQ29sdW1uVmlzaWJpbGl0eUNoYW5nZScsICdtZFNjcm9sbCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRUYWJsZVNvcnRTdGF0ZSBhcyBJTWRUYWJsZU1kVGFibGVTb3J0U3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU2VsZWN0aW9uU3RhdGUgYXMgSU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gc29ydCBjaGFuZ2VzIChhZnRlciBhIGBtZC10YWJsZS1zb3J0LWxhYmVsYCBpcyBjbGlja2VkKS5cbiAgICovXG4gIG1kU29ydENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRhYmxlTWRUYWJsZVNvcnRTdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgcm93IHNlbGVjdGlvbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgbWRTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUYWJsZU1kVGFibGVTZWxlY3Rpb25TdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGNvbHVtbiBpcyBwaW5uZWQvdW5waW5uZWQgdmlhIGBwaW5Db2x1bW5gLlxuICAgKi9cbiAgbWRQaW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNvbHVtbjogbnVtYmVyOyBzaWRlOiAnc3RhcnQnIHwgJ2VuZCcgfCBudWxsIH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBjb2x1bW4gaXMgaGlkZGVuL3Nob3duIHZpYSBgc2V0Q29sdW1uVmlzaWJpbGl0eWAuXG4gICAqL1xuICBtZENvbHVtblZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNvbHVtbjogbnVtYmVyOyB2aXNpYmxlOiBib29sZWFuOyBoaWRkZW46IG51bWJlcltdIH0+PjtcbiAgLyoqXG4gICAqIHJBRi10aHJvdHRsZWQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBmcm96ZW4gYm9keSBzY3JvbGxlci5cbiAgICovXG4gIG1kU2Nyb2xsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzY3JvbGxMZWZ0OiBudW1iZXI7IHNjcm9sbFRvcDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUJvZHkge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQm9keSBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUJvZHkge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWxpZ24nLCAnY29sU3BhbicsICdkZW5zaXR5JywgJ2VsbGlwc2lzJywgJ2hlYWQnLCAnbm9QaW5JbmRpY2F0b3InLCAnbnVtZXJpYycsICdwYWRkaW5nJywgJ3Bpbkljb24nLCAncm93U3BhbicsICdzY29wZScsICdzdGlja3knLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxpZ24nLCAnY29sU3BhbicsICdkZW5zaXR5JywgJ2VsbGlwc2lzJywgJ2hlYWQnLCAnbm9QaW5JbmRpY2F0b3InLCAnbnVtZXJpYycsICdwYWRkaW5nJywgJ3Bpbkljb24nLCAncm93U3BhbicsICdzY29wZScsICdzdGlja3knLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlQ2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVDZWxsIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQ2VsbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydlbGV2YXRpb24nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdzaGFwZScsICd2YXJpYW50JywgJ3ZpYnJhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZWxldmF0aW9uJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnc2hhcGUnLCAndmFyaWFudCcsICd2aWJyYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVDb250YWluZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQ29udGFpbmVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2J1dHRvbkxhYmVsJywgJ2ljb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWV4cGFuZC10b2dnbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbkxhYmVsJywgJ2ljb24nXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUV4cGFuZFRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVFeHBhbmRUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVFeHBhbmRUb2dnbGUge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWZvb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUZvb3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlRm9vdCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUZvb3Qge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUhlYWQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlSGVhZCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUhlYWQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29tcGFjdCcsICdjb3VudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2xhYmVsQWxsJywgJ2xhYmVsRGlzcGxheWVkUm93cycsICdsYWJlbEZpcnN0UGFnZScsICdsYWJlbExhc3RQYWdlJywgJ2xhYmVsTmV4dFBhZ2UnLCAnbGFiZWxQcmV2aW91c1BhZ2UnLCAnbGFiZWxSb3dzUGVyUGFnZScsICdwYWdlJywgJ3Jvd3NQZXJQYWdlJywgJ3Jvd3NQZXJQYWdlT3B0aW9ucycsICdzaG93Rmlyc3RMYXN0J10sXG4gIG1ldGhvZHM6IFsnZ29Ub1BhZ2UnLCAnc2V0Um93c1BlclBhZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbXBhY3QnLCAnY291bnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdsYWJlbEFsbCcsICdsYWJlbERpc3BsYXllZFJvd3MnLCAnbGFiZWxGaXJzdFBhZ2UnLCAnbGFiZWxMYXN0UGFnZScsICdsYWJlbE5leHRQYWdlJywgJ2xhYmVsUHJldmlvdXNQYWdlJywgJ2xhYmVsUm93c1BlclBhZ2UnLCAncGFnZScsICdyb3dzUGVyUGFnZScsICdyb3dzUGVyUGFnZU9wdGlvbnMnLCAnc2hvd0ZpcnN0TGFzdCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kUGFnZUNoYW5nZScsICdtZFJvd3NQZXJQYWdlQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlUGFnaW5hdGlvbiB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHBhZ2UuXG4gICAqL1xuICBtZFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHBhZ2U6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgcm93cy1wZXItcGFnZS5cbiAgICovXG4gIG1kUm93c1BlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHJvd3NQZXJQYWdlOiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRSb3dDbGljaycsICdtZFJvd1NlbGVjdGlvbkNoYW5nZScsICdtZFJvd0V4cGFuZGVkQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVSb3cgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVSb3cge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgKG9yIEVudGVyL1NwYWNlLWFjdGl2YXRlcykgdGhlIHJvdy5cbiAgICovXG4gIG1kUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHJvdzogSFRNTEVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBjaGFuZ2VzICh1c2VkIGJ5IGA8bWQtdGFibGU+YCBmb3JcbnNlbGVjdGlvbiBjb29yZGluYXRpb24pLlxuICAgKi9cbiAgbWRSb3dTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHJvdydzIGV4cGFuZGVkIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBtZFJvd0V4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2x1bW4nLCAnZGVmYXVsdE9yZGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uUG9zaXRpb24nLCAnb3JkZXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXNvcnQtbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2x1bW4nLCAnZGVmYXVsdE9yZGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uUG9zaXRpb24nLCAnb3JkZXInXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZVNvcnRMYWJlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU29ydFJlcXVlc3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZVNvcnRMYWJlbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVNvcnRMYWJlbCB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHRvIHNvcnQgYnkgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBtZFNvcnRSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IHN0cmluZzsgZGVmYXVsdE9yZGVyOiAnYXNjJyB8ICdkZXNjJyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9CaW5kJywgJ2NvbXBhY3QnLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdsYWJlbFNlbGVjdGVkJywgJ251bVNlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS10b29sYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQmluZCcsICdjb21wYWN0JywgJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGFiZWxTZWxlY3RlZCcsICdudW1TZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlVG9vbGJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdhcmlhTGFiZWxQcm9wJywgJ3RhYldpZHRoJywgJ3ZhcmlhbnQnLCAnd2lkdGgnXSxcbiAgbWV0aG9kczogWydzZWxlY3RUYWInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZVRhYkluZGV4JywgJ2FyaWFMYWJlbFByb3AnLCAndGFiV2lkdGgnLCAndmFyaWFudCcsICd3aWR0aCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYnMgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFicyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXNcbiAgICovXG4gIG1kVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91c0luZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJGb2N1c2VkJywgJ2F1dG9DYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdjaGlwc1dyYXAnLCAnY2xlYXJhYmxlJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJLZXlIaW50JywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmb2N1c0JvcmRlcldpZHRoJywgJ2Zvcm1hdE9uJywgJ2Zvcm1hdHRlcicsICdpbnB1dEFyaWFBdXRvY29tcGxldGUnLCAnaW5wdXRFeHBhbmRlZCcsICdpbnB1dE1vZGUnLCAnaW5wdXRSb2xlJywgJ2xhYmVsJywgJ21heCcsICdtYXhMZW5ndGgnLCAnbWluJywgJ21pbkxlbmd0aCcsICdtdWx0aWxpbmUnLCAnbmFtZScsICdwYXJzZXInLCAncGFzc3dvcmRUb2dnbGUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdwcmVmaXhUZXh0JywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncmVzdHJpY3QnLCAncm93cycsICdzcGVlY2hMYW5nJywgJ3NwZWVjaFRvVGV4dCcsICdzcGVsbGNoZWNrJywgJ3N0ZXAnLCAnc3VmZml4VGV4dCcsICdzdXBwb3J0aW5nVGV4dCcsICd0aHJvdHRsZScsICd0eXBlJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdzZWxlY3QnLCAnZ2V0SW5wdXRFbGVtZW50JywgJ2dldFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRleHQtZmllbGQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhckZvY3VzZWQnLCAnYXV0b0NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzV3JhcCcsICdjbGVhcmFibGUnLCAnZGVib3VuY2UnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlcktleUhpbnQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZvY3VzQm9yZGVyV2lkdGgnLCAnZm9ybWF0T24nLCAnZm9ybWF0dGVyJywgJ2lucHV0QXJpYUF1dG9jb21wbGV0ZScsICdpbnB1dEV4cGFuZGVkJywgJ2lucHV0TW9kZScsICdpbnB1dFJvbGUnLCAnbGFiZWwnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3BhcnNlcicsICdwYXNzd29yZFRvZ2dsZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeFRleHQnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyZXN0cmljdCcsICdyb3dzJywgJ3NwZWVjaExhbmcnLCAnc3BlZWNoVG9UZXh0JywgJ3NwZWxsY2hlY2snLCAnc3RlcCcsICdzdWZmaXhUZXh0JywgJ3N1cHBvcnRpbmdUZXh0JywgJ3Rocm90dGxlJywgJ3R5cGUnLCAndmFsdWUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRleHRGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRTZWFyY2gnLCAnbWRDbGVhcicsICdtZFBhc3N3b3JkVG9nZ2xlJywgJ21kU3BlZWNoUmVzdWx0JywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUZXh0RmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGV4dEZpZWxkIHtcblxuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2l0aCBkZWJvdW5jZS90aHJvdHRsZSBjb250cm9sLiBVc2VmdWwgZm9yIHNlYXJjaC1hcy15b3UtdHlwZSwgQVBJIGNhbGxzLCBvciBmaWx0ZXJpbmcuXG4gICAqL1xuICBtZFNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbiAgbWRQYXNzd29yZFRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmlzaWJsZTogYm9vbGVhbiB9Pj47XG5cbiAgbWRTcGVlY2hSZXN1bHQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHRyYW5zY3JpcHQ6IHN0cmluZzsgbGlzdGVuaW5nOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbUxhYmVsJywgJ2NhbmNlbExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZm9ybWF0JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lRGlhbExhYmVsJywgJ2hlYWRsaW5lSW5wdXRMYWJlbCcsICdoaWRlVHJpZ2dlcicsICdob3VyTGFiZWwnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdtaW51dGVMYWJlbCcsICdtaW51dGVTdGVwJywgJ25hbWUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29yaWVudGF0aW9uJywgJ3BlcmlvZExhYmVsJywgJ3BlcmlvZExheW91dCcsICdwbUxhYmVsJywgJ3JhbmdlT3V0c2lkZUxhYmVsJywgJ3JhbmdlT3ZlcmZsb3dMYWJlbCcsICdyYW5nZVVuZGVyZmxvd0xhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc3BvbnNpdmUnLCAndG9nZ2xlRGlhbExhYmVsJywgJ3RvZ2dsZUlucHV0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ2dldFZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10aW1lLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW1MYWJlbCcsICdjYW5jZWxMYWJlbCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Zvcm1hdCcsICdoZWFkbGluZScsICdoZWFkbGluZURpYWxMYWJlbCcsICdoZWFkbGluZUlucHV0TGFiZWwnLCAnaGlkZVRyaWdnZXInLCAnaG91ckxhYmVsJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbWludXRlTGFiZWwnLCAnbWludXRlU3RlcCcsICduYW1lJywgJ29rTGFiZWwnLCAnb3BlbicsICdvcmllbnRhdGlvbicsICdwZXJpb2RMYWJlbCcsICdwZXJpb2RMYXlvdXQnLCAncG1MYWJlbCcsICdyYW5nZU91dHNpZGVMYWJlbCcsICdyYW5nZU92ZXJmbG93TGFiZWwnLCAncmFuZ2VVbmRlcmZsb3dMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNwb25zaXZlJywgJ3RvZ2dsZURpYWxMYWJlbCcsICd0b2dnbGVJbnB1dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUaW1lUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZE1vZGVDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsIGFzIElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFRpbWVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIGFzIElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGltZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWRUaW1lUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb25maXJtcyB0aGUgY2hvc2VuIHRpbWUgKE9LIGJ1dHRvbiwgb3JcbkVudGVyIGluc2lkZSB0aGUgSEgvTU0gZmllbGRzIHdoaWxlIHRoZSBidWZmZXJzIGFyZSB2YWxpZCkuXG5UaGlzIGlzIHRoZSBjYW5vbmljYWwgXCJ0aGUgdXNlciBoYXMgY29tbWl0dGVkIGEgdmFsdWVcIiBldmVudCDigJRcbnVzZSBpdCBmb3IgZm9ybSBpbnRlZ3JhdGlvbiwgcGVyc2lzdGVuY2UsIGFuZCBhbmFseXRpY3MuXG5cblRoZSBkZXRhaWwgYnVuZGxlIGluY2x1ZGVzIGJvdGggdGhlIGh1bWFuLWZyaWVuZGx5IGB2YWx1ZWAgYW5kXG50aHJlZSBpbmR1c3RyeS1zdGFuZGFyZCBJU08gLyBEYXRlIHJlcHJlc2VudGF0aW9ucyBzb1xuZG93bnN0cmVhbSBjb2RlIG5ldmVyIGhhcyB0byByZS1mb3JtYXQgdGhlIHRpbWUgaXRzZWxmLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGV2ZXJ5IGludGVybWVkaWF0ZSBjaGFuZ2Ugd2hpbGUgdGhlIGRpYWxvZyBpc1xub3BlbiDigJQgZGlhbCBkcmFnLCBkaWFsLW1vZGUga2V5Ym9hcmQgdHlwaW5nLCBBTS9QTSB0b2dnbGUsXG5hbmQgaW5wdXQtdmFyaWFudCBrZXlzdHJva2VzIHRoYXQgcHJvZHVjZSBhIHZhbGlkIEhIOk1NLlxuXG5NaXJyb3JzIHRoZSBIVE1MIGBpbnB1dGAgZXZlbnQgc2VtYW50aWNzIChcImZpcmVzIGZvciBldmVyeVxudXNlci1kcml2ZW4gbXV0YXRpb25cIikgYW5kIG1hdGNoZXMgdGhlIHBhdHRlcm4gdXNlZCBieVxuYG1kLWRhdGUtcGlja2VyYCAvIGBtZC10ZXh0LWZpZWxkYC4gVXNlIGBtZElucHV0YCBmb3IgbGl2ZVxucHJldmlld3MgYW5kIGBtZENoYW5nZWAgZm9yIHRoZSBmaW5hbCBjb21taXQuIFRoZSBkZXRhaWxcbnNoYXBlIGlzIGlkZW50aWNhbCB0byBgbWRDaGFuZ2VgIHNvIGEgcHJldmlld2VyIGNhbiByZWFkIHRoZVxuc2FtZSBmaWVsZHMgcmVnYXJkbGVzcyBvZiB3aGljaCBldmVudCBhcnJpdmVkLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgY2xvc2VzICh3aGV0aGVyIGNvbmZpcm1lZCwgY2FuY2VsbGVkLCBvciBkaXNtaXNzZWQpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIGlzIGNhbmNlbGxlZCBvciBkaXNtaXNzZWQgd2l0aG91dCBjb21taXR0aW5nLlxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiB0aGUgZGlhbCBhbmQgaW5wdXRcbnZhcmlhbnRzIHZpYSB0aGUgZGlhbG9nJ3Mga2V5Ym9hcmQgLyBjbG9jayB0b2dnbGUuIExldHNcbmFuYWx5dGljcyBvciBzaWJsaW5nIFVJIHJlYWN0IHRvIHRoZSB2YXJpYW50IGNoYW5nZSAoZS5nLlxuYW5ub3VuY2UgdGhlIG5ldyBtb2RlIHRvIHNjcmVlbiByZWFkZXJzLCBvciByZXNpemUgYSBob3N0aW5nXG5kaWFsb2cgd3JhcHBlcikuXG4gICAqL1xuICBtZE1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyTW9kZUNoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2xiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVG9vbGJhciBleHRlbmRzIENvbXBvbmVudHMuTWRUb29sYmFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRvb2x0aXAge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdG9vbHRpcCBiZWNvbWVzIHZpc2libGUuIGBidWJibGVzOmZhbHNlYCArIGBjb21wb3NlZDpmYWxzZWAga2VlcCBpdFxuZnJvbSBjcm9zc2luZyB0aGUgc2hhZG93IGJvdW5kYXJ5IGFuZCByZXRhcmdldGluZyBvbnRvIGFuIGVtYmVkZGluZyBob3N0ICh0aGUgcmVwbydzXG5kb2N1bWVudGVkIGNvbXBvc2VkLWV2ZW50LWxlYWsgY2xhc3Mg4oCUIHNlZSBtZC1kYXRlLXBpY2tlcidzIHN3YWxsb3cgZ3VhcmRzKS5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRvb2x0aXAgaXMgZGlzbWlzc2VkIChkb2VzIG5vdCBidWJibGUgb3IgY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnbW92ZVNlbGVjdGVkUmlnaHQnLCAnbW92ZVNlbGVjdGVkTGVmdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdHJhbnNmZXItbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVHJhbnNmZXJMaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRNb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVHJhbnNmZXJMaXN0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFRyYW5zZmVyTGlzdCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSBjaGFuZ2UgdG8gdGhlIHRhcmdldCB2YWx1ZS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGl0ZW1zIGFyZSBtb3ZlZC4gZGV0YWlsIGRlc2NyaWJlcyB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgbWRNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7IG1vdmVkOiBzdHJpbmdbXTsgdGFyZ2V0OiBzdHJpbmdbXTsgfT4+O1xufVxuXG5cbiJdfQ==