@bryntum/grid-angular 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/bryntum-grid-angular.d.ts +5 -0
- package/bundles/bryntum-grid-angular.umd.js +49212 -0
- package/bundles/bryntum-grid-angular.umd.js.map +1 -0
- package/esm2015/bryntum-grid-angular.js +5 -0
- package/esm2015/lib/bryntum-a-i-filter-field.component.js +791 -0
- package/esm2015/lib/bryntum-button-group.component.js +725 -0
- package/esm2015/lib/bryntum-button.component.js +715 -0
- package/esm2015/lib/bryntum-chat-panel.component.js +839 -0
- package/esm2015/lib/bryntum-checkbox-group.component.js +854 -0
- package/esm2015/lib/bryntum-checkbox.component.js +805 -0
- package/esm2015/lib/bryntum-checklist-filter-combo.component.js +943 -0
- package/esm2015/lib/bryntum-chip-view.component.js +727 -0
- package/esm2015/lib/bryntum-code-editor.component.js +818 -0
- package/esm2015/lib/bryntum-color-field.component.js +794 -0
- package/esm2015/lib/bryntum-combo.component.js +932 -0
- package/esm2015/lib/bryntum-container.component.js +681 -0
- package/esm2015/lib/bryntum-date-field.component.js +831 -0
- package/esm2015/lib/bryntum-date-picker.component.js +1008 -0
- package/esm2015/lib/bryntum-date-range-field.component.js +835 -0
- package/esm2015/lib/bryntum-date-time-field.component.js +752 -0
- package/esm2015/lib/bryntum-demo-code-editor.component.js +830 -0
- package/esm2015/lib/bryntum-demo-header.component.js +171 -0
- package/esm2015/lib/bryntum-display-field.component.js +772 -0
- package/esm2015/lib/bryntum-duration-field.component.js +815 -0
- package/esm2015/lib/bryntum-editor.component.js +823 -0
- package/esm2015/lib/bryntum-field-filter-picker-group.component.js +758 -0
- package/esm2015/lib/bryntum-field-filter-picker.component.js +740 -0
- package/esm2015/lib/bryntum-field-set.component.js +810 -0
- package/esm2015/lib/bryntum-file-field.component.js +776 -0
- package/esm2015/lib/bryntum-file-picker.component.js +709 -0
- package/esm2015/lib/bryntum-filter-field.component.js +803 -0
- package/esm2015/lib/bryntum-fullscreen-button.component.js +53 -0
- package/esm2015/lib/bryntum-grid-base.component.js +2099 -0
- package/esm2015/lib/bryntum-grid-chart-designer.component.js +588 -0
- package/esm2015/lib/bryntum-grid-field-filter-picker-group.component.js +754 -0
- package/esm2015/lib/bryntum-grid-field-filter-picker.component.js +744 -0
- package/esm2015/lib/bryntum-grid.component.js +2103 -0
- package/esm2015/lib/bryntum-group-bar.component.js +727 -0
- package/esm2015/lib/bryntum-hint.component.js +856 -0
- package/esm2015/lib/bryntum-label.component.js +584 -0
- package/esm2015/lib/bryntum-list.component.js +715 -0
- package/esm2015/lib/bryntum-menu.component.js +883 -0
- package/esm2015/lib/bryntum-month-picker.component.js +818 -0
- package/esm2015/lib/bryntum-number-field.component.js +800 -0
- package/esm2015/lib/bryntum-paging-toolbar.component.js +736 -0
- package/esm2015/lib/bryntum-panel.component.js +794 -0
- package/esm2015/lib/bryntum-password-field.component.js +768 -0
- package/esm2015/lib/bryntum-radio-group.component.js +826 -0
- package/esm2015/lib/bryntum-radio.component.js +805 -0
- package/esm2015/lib/bryntum-slide-toggle.component.js +805 -0
- package/esm2015/lib/bryntum-slider.component.js +661 -0
- package/esm2015/lib/bryntum-splitter.component.js +618 -0
- package/esm2015/lib/bryntum-tab-panel.component.js +842 -0
- package/esm2015/lib/bryntum-text-area-field.component.js +776 -0
- package/esm2015/lib/bryntum-text-area-picker-field.component.js +798 -0
- package/esm2015/lib/bryntum-text-field.component.js +783 -0
- package/esm2015/lib/bryntum-time-field.component.js +819 -0
- package/esm2015/lib/bryntum-time-picker.component.js +709 -0
- package/esm2015/lib/bryntum-toolbar.component.js +732 -0
- package/esm2015/lib/bryntum-tree-combo.component.js +932 -0
- package/esm2015/lib/bryntum-tree-grid.component.js +2103 -0
- package/esm2015/lib/bryntum-widget.component.js +580 -0
- package/esm2015/lib/bryntum-year-picker.component.js +827 -0
- package/esm2015/lib/grid.module.js +314 -0
- package/esm2015/lib/wrapper.helper.js +74 -0
- package/esm2015/public-api.js +64 -0
- package/fesm2015/bryntum-grid-angular.js +48622 -0
- package/fesm2015/bryntum-grid-angular.js.map +1 -0
- package/lib/bryntum-a-i-filter-field.component.d.ts +968 -0
- package/lib/bryntum-button-group.component.d.ts +860 -0
- package/lib/bryntum-button.component.d.ts +845 -0
- package/lib/bryntum-chat-panel.component.d.ts +1060 -0
- package/lib/bryntum-checkbox-group.component.d.ts +1094 -0
- package/lib/bryntum-checkbox.component.d.ts +968 -0
- package/lib/bryntum-checklist-filter-combo.component.d.ts +1210 -0
- package/lib/bryntum-chip-view.component.d.ts +872 -0
- package/lib/bryntum-code-editor.component.d.ts +1045 -0
- package/lib/bryntum-color-field.component.d.ts +965 -0
- package/lib/bryntum-combo.component.d.ts +1199 -0
- package/lib/bryntum-container.component.d.ts +822 -0
- package/lib/bryntum-date-field.component.d.ts +1025 -0
- package/lib/bryntum-date-picker.component.d.ts +1338 -0
- package/lib/bryntum-date-range-field.component.d.ts +1027 -0
- package/lib/bryntum-date-time-field.component.d.ts +912 -0
- package/lib/bryntum-demo-code-editor.component.d.ts +1061 -0
- package/lib/bryntum-demo-header.component.d.ts +29 -0
- package/lib/bryntum-display-field.component.d.ts +949 -0
- package/lib/bryntum-duration-field.component.d.ts +1008 -0
- package/lib/bryntum-editor.component.d.ts +969 -0
- package/lib/bryntum-field-filter-picker-group.component.d.ts +935 -0
- package/lib/bryntum-field-filter-picker.component.d.ts +903 -0
- package/lib/bryntum-field-set.component.d.ts +1038 -0
- package/lib/bryntum-file-field.component.d.ts +952 -0
- package/lib/bryntum-file-picker.component.d.ts +847 -0
- package/lib/bryntum-filter-field.component.d.ts +993 -0
- package/lib/bryntum-fullscreen-button.component.d.ts +20 -0
- package/lib/bryntum-grid-base.component.d.ts +2271 -0
- package/lib/bryntum-grid-chart-designer.component.d.ts +691 -0
- package/lib/bryntum-grid-field-filter-picker-group.component.d.ts +929 -0
- package/lib/bryntum-grid-field-filter-picker.component.d.ts +916 -0
- package/lib/bryntum-grid.component.d.ts +2273 -0
- package/lib/bryntum-group-bar.component.d.ts +872 -0
- package/lib/bryntum-hint.component.d.ts +1117 -0
- package/lib/bryntum-label.component.d.ts +683 -0
- package/lib/bryntum-list.component.d.ts +849 -0
- package/lib/bryntum-menu.component.d.ts +1129 -0
- package/lib/bryntum-month-picker.component.d.ts +1034 -0
- package/lib/bryntum-number-field.component.d.ts +995 -0
- package/lib/bryntum-paging-toolbar.component.d.ts +886 -0
- package/lib/bryntum-panel.component.d.ts +1015 -0
- package/lib/bryntum-password-field.component.d.ts +939 -0
- package/lib/bryntum-radio-group.component.d.ts +1068 -0
- package/lib/bryntum-radio.component.d.ts +968 -0
- package/lib/bryntum-slide-toggle.component.d.ts +968 -0
- package/lib/bryntum-slider.component.d.ts +776 -0
- package/lib/bryntum-splitter.component.d.ts +714 -0
- package/lib/bryntum-tab-panel.component.d.ts +1065 -0
- package/lib/bryntum-text-area-field.component.d.ts +951 -0
- package/lib/bryntum-text-area-picker-field.component.d.ts +972 -0
- package/lib/bryntum-text-field.component.d.ts +957 -0
- package/lib/bryntum-time-field.component.d.ts +1006 -0
- package/lib/bryntum-time-picker.component.d.ts +853 -0
- package/lib/bryntum-toolbar.component.d.ts +879 -0
- package/lib/bryntum-tree-combo.component.d.ts +1199 -0
- package/lib/bryntum-tree-grid.component.d.ts +2273 -0
- package/lib/bryntum-widget.component.d.ts +678 -0
- package/lib/bryntum-year-picker.component.d.ts +1049 -0
- package/lib/grid.module.d.ts +65 -0
- package/lib/wrapper.helper.d.ts +26 -0
- package/package.json +33 -0
- package/public-api.d.ts +60 -0
|
@@ -0,0 +1,776 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
/**
|
|
3
|
+
* Angular wrapper for Bryntum TextAreaField
|
|
4
|
+
*/
|
|
5
|
+
import { Component, EventEmitter, Output, Input } from '@angular/core';
|
|
6
|
+
import WrapperHelper from './wrapper.helper';
|
|
7
|
+
import { TextAreaField, Widget } from '@bryntum/grid';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class BryntumTextAreaFieldComponent {
|
|
10
|
+
constructor(element) {
|
|
11
|
+
this.bryntumConfig = {
|
|
12
|
+
adopt: undefined,
|
|
13
|
+
appendTo: undefined,
|
|
14
|
+
href: undefined,
|
|
15
|
+
angularComponent: this,
|
|
16
|
+
features: {},
|
|
17
|
+
listeners: {}
|
|
18
|
+
};
|
|
19
|
+
// Events emitters
|
|
20
|
+
/**
|
|
21
|
+
* User performed default action (typed into this field).
|
|
22
|
+
* @param {object} event Event object
|
|
23
|
+
* @param {Core.widget.Field,any} event.source This Field
|
|
24
|
+
* @param {string,number,boolean,any} event.value This field's value
|
|
25
|
+
* @param {string,number,boolean,any} event.oldValue This field's previous value
|
|
26
|
+
* @param {boolean} event.valid True if this field is in a valid state
|
|
27
|
+
* @param {Event} event.event The triggering DOM event if any
|
|
28
|
+
* @param {Core.data.Model} event.record Selected record. Available for fields with records selection functionality
|
|
29
|
+
* @param {Core.data.Model[]} event.records Selected records as an array. Available for fields with records selection functionality
|
|
30
|
+
* @param {boolean} event.userAction Triggered by user taking an action (`true`) or by setting a value (`false`)
|
|
31
|
+
* @param {boolean} event.checked
|
|
32
|
+
*/
|
|
33
|
+
this.onAction = new EventEmitter();
|
|
34
|
+
/**
|
|
35
|
+
* Fires before an object is destroyed.
|
|
36
|
+
* @param {object} event Event object
|
|
37
|
+
* @param {Core.Base} event.source The Object that is being destroyed.
|
|
38
|
+
*/
|
|
39
|
+
this.onBeforeDestroy = new EventEmitter();
|
|
40
|
+
/**
|
|
41
|
+
* Triggered before a widget is hidden. Return `false` to prevent the action.
|
|
42
|
+
* @param {object} event Event object
|
|
43
|
+
* @param {Core.widget.Widget} event.source The widget being hidden.
|
|
44
|
+
*/
|
|
45
|
+
this.onBeforeHide = new EventEmitter();
|
|
46
|
+
/**
|
|
47
|
+
* Triggered before a widget is shown. Return `false` to prevent the action.
|
|
48
|
+
* @param {object} event Event object
|
|
49
|
+
* @param {Core.widget.Widget,any} event.source The widget being shown
|
|
50
|
+
*/
|
|
51
|
+
this.onBeforeShow = new EventEmitter();
|
|
52
|
+
/**
|
|
53
|
+
* Fires when any other event is fired from the object.
|
|
54
|
+
* ...
|
|
55
|
+
* [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextAreaField#event-catchAll)
|
|
56
|
+
* @param {object} event Event object
|
|
57
|
+
* @param {{[key: string]: any, type: string}} event.event The Object that contains event details
|
|
58
|
+
* @param {string} event.event.type The type of the event which is caught by the listener
|
|
59
|
+
*/
|
|
60
|
+
this.onCatchAll = new EventEmitter();
|
|
61
|
+
/**
|
|
62
|
+
* Fired when this field's value changes.
|
|
63
|
+
* @param {object} event Event object
|
|
64
|
+
* @param {Core.widget.Field,any} event.source This Field
|
|
65
|
+
* @param {string,number,boolean,any} event.value This field's value
|
|
66
|
+
* @param {string,number,boolean,any} event.oldValue This field's previous value
|
|
67
|
+
* @param {boolean} event.valid True if this field is in a valid state
|
|
68
|
+
* @param {Event} event.event The triggering DOM event if any
|
|
69
|
+
* @param {boolean} event.userAction Triggered by user taking an action (`true`) or by setting a value (`false`)
|
|
70
|
+
* @param {boolean} event.checked
|
|
71
|
+
*/
|
|
72
|
+
this.onChange = new EventEmitter();
|
|
73
|
+
/**
|
|
74
|
+
* Fired when this field is [cleared](https://bryntum.com/products/grid/docs/api/Core/widget/Field#function-clear).
|
|
75
|
+
* ...
|
|
76
|
+
* [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextAreaField#event-clear)
|
|
77
|
+
* @param {object} event Event object
|
|
78
|
+
* @param {Core.widget.Field,any} event.source This Field
|
|
79
|
+
*/
|
|
80
|
+
this.onClear = new EventEmitter();
|
|
81
|
+
/**
|
|
82
|
+
* Fires when an object is destroyed.
|
|
83
|
+
* @param {object} event Event object
|
|
84
|
+
* @param {Core.Base} event.source The Object that is being destroyed.
|
|
85
|
+
*/
|
|
86
|
+
this.onDestroy = new EventEmitter();
|
|
87
|
+
/**
|
|
88
|
+
* Triggered when a widget's [element](https://bryntum.com/products/grid/docs/api/Core/widget/Widget#property-element) is available.
|
|
89
|
+
* @param {object} event Event object
|
|
90
|
+
* @param {HTMLElement} event.element The Widget's element.
|
|
91
|
+
*/
|
|
92
|
+
this.onElementCreated = new EventEmitter();
|
|
93
|
+
/**
|
|
94
|
+
* Fired when focus enters this Widget.
|
|
95
|
+
* @param {object} event Event object
|
|
96
|
+
* @param {Core.widget.Widget} event.source This Widget
|
|
97
|
+
* @param {HTMLElement} event.fromElement The element which lost focus.
|
|
98
|
+
* @param {HTMLElement} event.toElement The element which gained focus.
|
|
99
|
+
* @param {Core.widget.Widget} event.fromWidget The widget which lost focus.
|
|
100
|
+
* @param {Core.widget.Widget} event.toWidget The widget which gained focus.
|
|
101
|
+
* @param {boolean} event.backwards `true` if the `toElement` is before the `fromElement` in document order.
|
|
102
|
+
*/
|
|
103
|
+
this.onFocusIn = new EventEmitter();
|
|
104
|
+
/**
|
|
105
|
+
* Fired when focus exits this Widget's ownership tree. This is different from a `blur` event.
|
|
106
|
+
* focus moving from within this Widget's ownership tree, even if there are floating widgets
|
|
107
|
+
* will not trigger this event. This is when focus exits this widget completely.
|
|
108
|
+
* @param {object} event Event object
|
|
109
|
+
* @param {Core.widget.Widget} event.source This Widget
|
|
110
|
+
* @param {HTMLElement} event.fromElement The element which lost focus.
|
|
111
|
+
* @param {HTMLElement} event.toElement The element which gained focus.
|
|
112
|
+
* @param {Core.widget.Widget} event.fromWidget The widget which lost focus.
|
|
113
|
+
* @param {Core.widget.Widget} event.toWidget The widget which gained focus.
|
|
114
|
+
* @param {boolean} event.backwards `true` if the `toElement` is before the `fromElement` in document order.
|
|
115
|
+
*/
|
|
116
|
+
this.onFocusOut = new EventEmitter();
|
|
117
|
+
/**
|
|
118
|
+
* Triggered after a widget was hidden
|
|
119
|
+
* @param {object} event Event object
|
|
120
|
+
* @param {Core.widget.Widget} event.source The widget
|
|
121
|
+
*/
|
|
122
|
+
this.onHide = new EventEmitter();
|
|
123
|
+
/**
|
|
124
|
+
* Fired when the user types into this field.
|
|
125
|
+
* @param {object} event Event object
|
|
126
|
+
* @param {Core.widget.Field,any} event.source This field
|
|
127
|
+
* @param {string,number,boolean,any} event.value This field's value
|
|
128
|
+
* @param {Event} event.event The triggering DOM event
|
|
129
|
+
*/
|
|
130
|
+
this.onInput = new EventEmitter();
|
|
131
|
+
/**
|
|
132
|
+
* Triggered when a widget which had been in a non-visible state for any reason
|
|
133
|
+
* achieves visibility.
|
|
134
|
+
* ...
|
|
135
|
+
* [View online docs...](https://bryntum.com/products/grid/docs/api/Core/widget/TextAreaField#event-paint)
|
|
136
|
+
* @param {object} event Event object
|
|
137
|
+
* @param {Core.widget.Widget} event.source The widget being painted.
|
|
138
|
+
* @param {boolean} event.firstPaint `true` if this is the first paint.
|
|
139
|
+
*/
|
|
140
|
+
this.onPaint = new EventEmitter();
|
|
141
|
+
/**
|
|
142
|
+
* Fired when a Widget's read only state is toggled
|
|
143
|
+
* @param {object} event Event object
|
|
144
|
+
* @param {boolean} event.readOnly Read only or not
|
|
145
|
+
*/
|
|
146
|
+
this.onReadOnly = new EventEmitter();
|
|
147
|
+
/**
|
|
148
|
+
* This event is fired after a widget's elements have been synchronized due to a direct or indirect call
|
|
149
|
+
* to [recompose](https://bryntum.com/products/grid/docs/api/Core/widget/Widget#function-recompose), if this results in some change to the widget's rendered DOM elements.
|
|
150
|
+
*/
|
|
151
|
+
this.onRecompose = new EventEmitter();
|
|
152
|
+
/**
|
|
153
|
+
* Fired when the encapsulating element of a Widget resizes *only when [monitorResize](https://bryntum.com/products/grid/docs/api/Core/widget/Widget#config-monitorResize) is `true`*.
|
|
154
|
+
* @param {object} event Event object
|
|
155
|
+
* @param {Core.widget.Widget} event.source This Widget
|
|
156
|
+
* @param {number} event.width The new width
|
|
157
|
+
* @param {number} event.height The new height
|
|
158
|
+
* @param {number} event.oldWidth The old width
|
|
159
|
+
* @param {number} event.oldHeight The old height
|
|
160
|
+
*/
|
|
161
|
+
this.onResize = new EventEmitter();
|
|
162
|
+
/**
|
|
163
|
+
* Triggered after a widget is shown.
|
|
164
|
+
* @param {object} event Event object
|
|
165
|
+
* @param {Core.widget.Widget} event.source The widget
|
|
166
|
+
*/
|
|
167
|
+
this.onShow = new EventEmitter();
|
|
168
|
+
/**
|
|
169
|
+
* User clicked one of this field's [triggers](https://bryntum.com/products/grid/docs/api/Core/widget/Field#property-triggers)
|
|
170
|
+
* @param {object} event Event object
|
|
171
|
+
* @param {Core.widget.Field,any} event.source This field
|
|
172
|
+
* @param {Core.widget.Widget} event.trigger The trigger activated by click or touch tap.
|
|
173
|
+
*/
|
|
174
|
+
this.onTrigger = new EventEmitter();
|
|
175
|
+
this.elementRef = element;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Create and append the underlying widget
|
|
179
|
+
*/
|
|
180
|
+
ngOnInit() {
|
|
181
|
+
const me = this, { elementRef, bryntumConfig } = me, { instanceClass, instanceName, bryntumConfigs, bryntumEvents } = BryntumTextAreaFieldComponent;
|
|
182
|
+
bryntumConfigs.filter(prop => prop in this).forEach(prop => {
|
|
183
|
+
// @ts-ignore
|
|
184
|
+
WrapperHelper.applyPropValue(bryntumConfig, prop, this[prop]);
|
|
185
|
+
if (['features', 'config'].includes(prop)) {
|
|
186
|
+
WrapperHelper.devWarningConfigProp(instanceName, prop);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
// @ts-ignore
|
|
190
|
+
bryntumEvents.filter(event => this[event] && this[event].observers.length > 0).forEach(event => {
|
|
191
|
+
const uncapitalize = (str) => str.charAt(0).toLowerCase() + str.slice(1), eventName = (str) => uncapitalize(str.slice(2));
|
|
192
|
+
// @ts-ignore
|
|
193
|
+
bryntumConfig.listeners[eventName(event)] = e => {
|
|
194
|
+
// @ts-ignore
|
|
195
|
+
me[event].emit(e);
|
|
196
|
+
// EventEmitter does not return values in the normal way, work around it by setting `returnValue` flag
|
|
197
|
+
// in Angular listeners
|
|
198
|
+
return e.returnValue;
|
|
199
|
+
};
|
|
200
|
+
});
|
|
201
|
+
// If component has no container specified in config then use adopt to Wrapper's element
|
|
202
|
+
const containerParam = [
|
|
203
|
+
'adopt',
|
|
204
|
+
'appendTo',
|
|
205
|
+
'insertAfter',
|
|
206
|
+
'insertBefore'
|
|
207
|
+
// @ts-ignore
|
|
208
|
+
].find(prop => bryntumConfig[prop]);
|
|
209
|
+
if (!containerParam) {
|
|
210
|
+
if (instanceName === 'Button' || elementRef.nativeElement.getRootNode() instanceof ShadowRoot) {
|
|
211
|
+
// Button should always be <a> or <button> inside owner element
|
|
212
|
+
bryntumConfig.appendTo = elementRef.nativeElement;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
bryntumConfig.adopt = elementRef.nativeElement;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
WrapperHelper.devWarningContainer(instanceName, containerParam);
|
|
220
|
+
}
|
|
221
|
+
// @ts-ignore
|
|
222
|
+
me.instance = instanceName === 'Widget' ? Widget.create(bryntumConfig) : new instanceClass(bryntumConfig);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Watch for changes
|
|
226
|
+
* @param changes
|
|
227
|
+
*/
|
|
228
|
+
ngOnChanges(changes) {
|
|
229
|
+
const { instance } = this, { instanceName } = BryntumTextAreaFieldComponent;
|
|
230
|
+
if (!instance) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
// Iterate over all changes
|
|
234
|
+
Object.entries(changes).forEach(([prop, change]) => {
|
|
235
|
+
const newValue = change.currentValue, { instance } = this, { bryntumConfigsOnly, bryntumProps } = BryntumTextAreaFieldComponent;
|
|
236
|
+
if (bryntumProps.includes(prop)) {
|
|
237
|
+
WrapperHelper.applyPropValue(instance, prop, newValue, false);
|
|
238
|
+
if (bryntumConfigsOnly.includes(prop)) {
|
|
239
|
+
WrapperHelper.devWarningUpdateProp(instanceName, prop);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Destroy the component
|
|
246
|
+
*/
|
|
247
|
+
ngOnDestroy() {
|
|
248
|
+
// @ts-ignore
|
|
249
|
+
if (this.instance && this.instance.destroy) {
|
|
250
|
+
this.instance.destroy();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
BryntumTextAreaFieldComponent.instanceClass = TextAreaField;
|
|
255
|
+
BryntumTextAreaFieldComponent.instanceName = 'TextAreaField';
|
|
256
|
+
BryntumTextAreaFieldComponent.bryntumEvents = [
|
|
257
|
+
'onAction',
|
|
258
|
+
'onBeforeDestroy',
|
|
259
|
+
'onBeforeHide',
|
|
260
|
+
'onBeforeShow',
|
|
261
|
+
'onCatchAll',
|
|
262
|
+
'onChange',
|
|
263
|
+
'onClear',
|
|
264
|
+
'onDestroy',
|
|
265
|
+
'onElementCreated',
|
|
266
|
+
'onFocusIn',
|
|
267
|
+
'onFocusOut',
|
|
268
|
+
'onHide',
|
|
269
|
+
'onInput',
|
|
270
|
+
'onPaint',
|
|
271
|
+
'onReadOnly',
|
|
272
|
+
'onRecompose',
|
|
273
|
+
'onResize',
|
|
274
|
+
'onShow',
|
|
275
|
+
'onTrigger'
|
|
276
|
+
];
|
|
277
|
+
BryntumTextAreaFieldComponent.bryntumFeatureNames = [];
|
|
278
|
+
BryntumTextAreaFieldComponent.bryntumConfigs = BryntumTextAreaFieldComponent.bryntumFeatureNames.concat([
|
|
279
|
+
'adopt',
|
|
280
|
+
'align',
|
|
281
|
+
'alignSelf',
|
|
282
|
+
'anchor',
|
|
283
|
+
'appendTo',
|
|
284
|
+
'ariaDescription',
|
|
285
|
+
'ariaLabel',
|
|
286
|
+
'autoComplete',
|
|
287
|
+
'autoSelect',
|
|
288
|
+
'badge',
|
|
289
|
+
'bubbleEvents',
|
|
290
|
+
'callOnFunctions',
|
|
291
|
+
'catchEventHandlerExceptions',
|
|
292
|
+
'centered',
|
|
293
|
+
'clearable',
|
|
294
|
+
'cls',
|
|
295
|
+
'color',
|
|
296
|
+
'column',
|
|
297
|
+
'config',
|
|
298
|
+
'constrainTo',
|
|
299
|
+
'container',
|
|
300
|
+
'containValues',
|
|
301
|
+
'contentElementCls',
|
|
302
|
+
'dataField',
|
|
303
|
+
'dataset',
|
|
304
|
+
'defaultBindProperty',
|
|
305
|
+
'detectCSSCompatibilityIssues',
|
|
306
|
+
'disabled',
|
|
307
|
+
'dock',
|
|
308
|
+
'draggable',
|
|
309
|
+
'editable',
|
|
310
|
+
'elementAttributes',
|
|
311
|
+
'extraData',
|
|
312
|
+
'flex',
|
|
313
|
+
'floating',
|
|
314
|
+
'height',
|
|
315
|
+
'hidden',
|
|
316
|
+
'hideAnimation',
|
|
317
|
+
'highlightExternalChange',
|
|
318
|
+
'hint',
|
|
319
|
+
'hintHtml',
|
|
320
|
+
'id',
|
|
321
|
+
'ignoreParentReadOnly',
|
|
322
|
+
'inline',
|
|
323
|
+
'inputAlign',
|
|
324
|
+
'inputAttributes',
|
|
325
|
+
'inputTag',
|
|
326
|
+
'inputType',
|
|
327
|
+
'inputWidth',
|
|
328
|
+
'insertBefore',
|
|
329
|
+
'insertFirst',
|
|
330
|
+
'keyMap',
|
|
331
|
+
'keyStrokeChangeDelay',
|
|
332
|
+
'label',
|
|
333
|
+
'labelCls',
|
|
334
|
+
'labelPosition',
|
|
335
|
+
'labels',
|
|
336
|
+
'labelWidth',
|
|
337
|
+
'listeners',
|
|
338
|
+
'localeClass',
|
|
339
|
+
'localizable',
|
|
340
|
+
'localizableProperties',
|
|
341
|
+
'margin',
|
|
342
|
+
'maskDefaults',
|
|
343
|
+
'masked',
|
|
344
|
+
'maxHeight',
|
|
345
|
+
'maximizeOnMobile',
|
|
346
|
+
'maxWidth',
|
|
347
|
+
'minHeight',
|
|
348
|
+
'minWidth',
|
|
349
|
+
'monitorResize',
|
|
350
|
+
'name',
|
|
351
|
+
'owner',
|
|
352
|
+
'placeholder',
|
|
353
|
+
'positioned',
|
|
354
|
+
'preventTooltipOnTouch',
|
|
355
|
+
'readOnly',
|
|
356
|
+
'relayStoreEvents',
|
|
357
|
+
'rendition',
|
|
358
|
+
'required',
|
|
359
|
+
'resize',
|
|
360
|
+
'revertOnEscape',
|
|
361
|
+
'ripple',
|
|
362
|
+
'rootElement',
|
|
363
|
+
'rtl',
|
|
364
|
+
'scrollAction',
|
|
365
|
+
'showAnimation',
|
|
366
|
+
'showRequiredIndicator',
|
|
367
|
+
'showTooltipWhenDisabled',
|
|
368
|
+
'skipValidation',
|
|
369
|
+
'span',
|
|
370
|
+
'spellCheck',
|
|
371
|
+
'tab',
|
|
372
|
+
'tabIndex',
|
|
373
|
+
'textAlign',
|
|
374
|
+
'title',
|
|
375
|
+
'tooltip',
|
|
376
|
+
'triggers',
|
|
377
|
+
'type',
|
|
378
|
+
'ui',
|
|
379
|
+
'validateOnInput',
|
|
380
|
+
'value',
|
|
381
|
+
'weight',
|
|
382
|
+
'width',
|
|
383
|
+
'x',
|
|
384
|
+
'y'
|
|
385
|
+
]);
|
|
386
|
+
BryntumTextAreaFieldComponent.bryntumConfigsOnly = [
|
|
387
|
+
'adopt',
|
|
388
|
+
'align',
|
|
389
|
+
'anchor',
|
|
390
|
+
'ariaDescription',
|
|
391
|
+
'ariaLabel',
|
|
392
|
+
'autoComplete',
|
|
393
|
+
'autoSelect',
|
|
394
|
+
'bubbleEvents',
|
|
395
|
+
'centered',
|
|
396
|
+
'clearable',
|
|
397
|
+
'color',
|
|
398
|
+
'config',
|
|
399
|
+
'constrainTo',
|
|
400
|
+
'container',
|
|
401
|
+
'containValues',
|
|
402
|
+
'contentElementCls',
|
|
403
|
+
'dataField',
|
|
404
|
+
'defaultBindProperty',
|
|
405
|
+
'detectCSSCompatibilityIssues',
|
|
406
|
+
'dock',
|
|
407
|
+
'draggable',
|
|
408
|
+
'elementAttributes',
|
|
409
|
+
'floating',
|
|
410
|
+
'hideAnimation',
|
|
411
|
+
'highlightExternalChange',
|
|
412
|
+
'hint',
|
|
413
|
+
'hintHtml',
|
|
414
|
+
'ignoreParentReadOnly',
|
|
415
|
+
'inline',
|
|
416
|
+
'inputAlign',
|
|
417
|
+
'inputAttributes',
|
|
418
|
+
'inputTag',
|
|
419
|
+
'inputType',
|
|
420
|
+
'inputWidth',
|
|
421
|
+
'keyStrokeChangeDelay',
|
|
422
|
+
'labelCls',
|
|
423
|
+
'labelPosition',
|
|
424
|
+
'labels',
|
|
425
|
+
'labelWidth',
|
|
426
|
+
'listeners',
|
|
427
|
+
'localeClass',
|
|
428
|
+
'localizable',
|
|
429
|
+
'localizableProperties',
|
|
430
|
+
'maskDefaults',
|
|
431
|
+
'masked',
|
|
432
|
+
'monitorResize',
|
|
433
|
+
'name',
|
|
434
|
+
'owner',
|
|
435
|
+
'positioned',
|
|
436
|
+
'preventTooltipOnTouch',
|
|
437
|
+
'relayStoreEvents',
|
|
438
|
+
'resize',
|
|
439
|
+
'revertOnEscape',
|
|
440
|
+
'ripple',
|
|
441
|
+
'rootElement',
|
|
442
|
+
'scrollAction',
|
|
443
|
+
'showAnimation',
|
|
444
|
+
'showTooltipWhenDisabled',
|
|
445
|
+
'skipValidation',
|
|
446
|
+
'spellCheck',
|
|
447
|
+
'tab',
|
|
448
|
+
'tabIndex',
|
|
449
|
+
'textAlign',
|
|
450
|
+
'title',
|
|
451
|
+
'type',
|
|
452
|
+
'ui',
|
|
453
|
+
'validateOnInput',
|
|
454
|
+
'weight'
|
|
455
|
+
];
|
|
456
|
+
BryntumTextAreaFieldComponent.bryntumProps = BryntumTextAreaFieldComponent.bryntumFeatureNames.concat([
|
|
457
|
+
'alignSelf',
|
|
458
|
+
'anchorSize',
|
|
459
|
+
'appendTo',
|
|
460
|
+
'badge',
|
|
461
|
+
'callOnFunctions',
|
|
462
|
+
'catchEventHandlerExceptions',
|
|
463
|
+
'cls',
|
|
464
|
+
'column',
|
|
465
|
+
'content',
|
|
466
|
+
'dataset',
|
|
467
|
+
'disabled',
|
|
468
|
+
'editable',
|
|
469
|
+
'extraData',
|
|
470
|
+
'flex',
|
|
471
|
+
'focusVisible',
|
|
472
|
+
'height',
|
|
473
|
+
'hidden',
|
|
474
|
+
'html',
|
|
475
|
+
'id',
|
|
476
|
+
'input',
|
|
477
|
+
'insertBefore',
|
|
478
|
+
'insertFirst',
|
|
479
|
+
'keyMap',
|
|
480
|
+
'label',
|
|
481
|
+
'margin',
|
|
482
|
+
'maxHeight',
|
|
483
|
+
'maximizeOnMobile',
|
|
484
|
+
'maxWidth',
|
|
485
|
+
'minHeight',
|
|
486
|
+
'minWidth',
|
|
487
|
+
'parent',
|
|
488
|
+
'placeholder',
|
|
489
|
+
'readOnly',
|
|
490
|
+
'rendition',
|
|
491
|
+
'required',
|
|
492
|
+
'rtl',
|
|
493
|
+
'scrollable',
|
|
494
|
+
'showRequiredIndicator',
|
|
495
|
+
'span',
|
|
496
|
+
'tooltip',
|
|
497
|
+
'triggers',
|
|
498
|
+
'value',
|
|
499
|
+
'width',
|
|
500
|
+
'x',
|
|
501
|
+
'y'
|
|
502
|
+
]);
|
|
503
|
+
BryntumTextAreaFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: BryntumTextAreaFieldComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
504
|
+
BryntumTextAreaFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.0", type: BryntumTextAreaFieldComponent, selector: "bryntum-text-area-field", inputs: { adopt: "adopt", align: "align", anchor: "anchor", ariaDescription: "ariaDescription", ariaLabel: "ariaLabel", autoComplete: "autoComplete", autoSelect: "autoSelect", bubbleEvents: "bubbleEvents", centered: "centered", clearable: "clearable", color: "color", config: "config", constrainTo: "constrainTo", container: "container", containValues: "containValues", contentElementCls: "contentElementCls", dataField: "dataField", defaultBindProperty: "defaultBindProperty", detectCSSCompatibilityIssues: "detectCSSCompatibilityIssues", dock: "dock", draggable: "draggable", elementAttributes: "elementAttributes", floating: "floating", hideAnimation: "hideAnimation", highlightExternalChange: "highlightExternalChange", hint: "hint", hintHtml: "hintHtml", ignoreParentReadOnly: "ignoreParentReadOnly", inline: "inline", inputAlign: "inputAlign", inputAttributes: "inputAttributes", inputTag: "inputTag", inputType: "inputType", inputWidth: "inputWidth", keyStrokeChangeDelay: "keyStrokeChangeDelay", labelCls: "labelCls", labelPosition: "labelPosition", labels: "labels", labelWidth: "labelWidth", listeners: "listeners", localeClass: "localeClass", localizable: "localizable", localizableProperties: "localizableProperties", maskDefaults: "maskDefaults", masked: "masked", monitorResize: "monitorResize", name: "name", owner: "owner", positioned: "positioned", preventTooltipOnTouch: "preventTooltipOnTouch", relayStoreEvents: "relayStoreEvents", resize: "resize", revertOnEscape: "revertOnEscape", ripple: "ripple", rootElement: "rootElement", scrollAction: "scrollAction", showAnimation: "showAnimation", showTooltipWhenDisabled: "showTooltipWhenDisabled", skipValidation: "skipValidation", spellCheck: "spellCheck", tab: "tab", tabIndex: "tabIndex", textAlign: "textAlign", title: "title", type: "type", ui: "ui", validateOnInput: "validateOnInput", weight: "weight", alignSelf: "alignSelf", appendTo: "appendTo", badge: "badge", callOnFunctions: "callOnFunctions", catchEventHandlerExceptions: "catchEventHandlerExceptions", cls: "cls", column: "column", dataset: "dataset", disabled: "disabled", editable: "editable", extraData: "extraData", flex: "flex", height: "height", hidden: "hidden", id: "id", insertBefore: "insertBefore", insertFirst: "insertFirst", keyMap: "keyMap", label: "label", margin: "margin", maxHeight: "maxHeight", maximizeOnMobile: "maximizeOnMobile", maxWidth: "maxWidth", minHeight: "minHeight", minWidth: "minWidth", placeholder: "placeholder", readOnly: "readOnly", rendition: "rendition", required: "required", rtl: "rtl", showRequiredIndicator: "showRequiredIndicator", span: "span", tooltip: "tooltip", triggers: "triggers", value: "value", width: "width", x: "x", y: "y", anchorSize: "anchorSize", content: "content", focusVisible: "focusVisible", html: "html", input: "input", parent: "parent", scrollable: "scrollable" }, outputs: { onAction: "onAction", onBeforeDestroy: "onBeforeDestroy", onBeforeHide: "onBeforeHide", onBeforeShow: "onBeforeShow", onCatchAll: "onCatchAll", onChange: "onChange", onClear: "onClear", onDestroy: "onDestroy", onElementCreated: "onElementCreated", onFocusIn: "onFocusIn", onFocusOut: "onFocusOut", onHide: "onHide", onInput: "onInput", onPaint: "onPaint", onReadOnly: "onReadOnly", onRecompose: "onRecompose", onResize: "onResize", onShow: "onShow", onTrigger: "onTrigger" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
|
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: BryntumTextAreaFieldComponent, decorators: [{
|
|
506
|
+
type: Component,
|
|
507
|
+
args: [{
|
|
508
|
+
selector: 'bryntum-text-area-field',
|
|
509
|
+
template: ''
|
|
510
|
+
}]
|
|
511
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { adopt: [{
|
|
512
|
+
type: Input
|
|
513
|
+
}], align: [{
|
|
514
|
+
type: Input
|
|
515
|
+
}], anchor: [{
|
|
516
|
+
type: Input
|
|
517
|
+
}], ariaDescription: [{
|
|
518
|
+
type: Input
|
|
519
|
+
}], ariaLabel: [{
|
|
520
|
+
type: Input
|
|
521
|
+
}], autoComplete: [{
|
|
522
|
+
type: Input
|
|
523
|
+
}], autoSelect: [{
|
|
524
|
+
type: Input
|
|
525
|
+
}], bubbleEvents: [{
|
|
526
|
+
type: Input
|
|
527
|
+
}], centered: [{
|
|
528
|
+
type: Input
|
|
529
|
+
}], clearable: [{
|
|
530
|
+
type: Input
|
|
531
|
+
}], color: [{
|
|
532
|
+
type: Input
|
|
533
|
+
}], config: [{
|
|
534
|
+
type: Input
|
|
535
|
+
}], constrainTo: [{
|
|
536
|
+
type: Input
|
|
537
|
+
}], container: [{
|
|
538
|
+
type: Input
|
|
539
|
+
}], containValues: [{
|
|
540
|
+
type: Input
|
|
541
|
+
}], contentElementCls: [{
|
|
542
|
+
type: Input
|
|
543
|
+
}], dataField: [{
|
|
544
|
+
type: Input
|
|
545
|
+
}], defaultBindProperty: [{
|
|
546
|
+
type: Input
|
|
547
|
+
}], detectCSSCompatibilityIssues: [{
|
|
548
|
+
type: Input
|
|
549
|
+
}], dock: [{
|
|
550
|
+
type: Input
|
|
551
|
+
}], draggable: [{
|
|
552
|
+
type: Input
|
|
553
|
+
}], elementAttributes: [{
|
|
554
|
+
type: Input
|
|
555
|
+
}], floating: [{
|
|
556
|
+
type: Input
|
|
557
|
+
}], hideAnimation: [{
|
|
558
|
+
type: Input
|
|
559
|
+
}], highlightExternalChange: [{
|
|
560
|
+
type: Input
|
|
561
|
+
}], hint: [{
|
|
562
|
+
type: Input
|
|
563
|
+
}], hintHtml: [{
|
|
564
|
+
type: Input
|
|
565
|
+
}], ignoreParentReadOnly: [{
|
|
566
|
+
type: Input
|
|
567
|
+
}], inline: [{
|
|
568
|
+
type: Input
|
|
569
|
+
}], inputAlign: [{
|
|
570
|
+
type: Input
|
|
571
|
+
}], inputAttributes: [{
|
|
572
|
+
type: Input
|
|
573
|
+
}], inputTag: [{
|
|
574
|
+
type: Input
|
|
575
|
+
}], inputType: [{
|
|
576
|
+
type: Input
|
|
577
|
+
}], inputWidth: [{
|
|
578
|
+
type: Input
|
|
579
|
+
}], keyStrokeChangeDelay: [{
|
|
580
|
+
type: Input
|
|
581
|
+
}], labelCls: [{
|
|
582
|
+
type: Input
|
|
583
|
+
}], labelPosition: [{
|
|
584
|
+
type: Input
|
|
585
|
+
}], labels: [{
|
|
586
|
+
type: Input
|
|
587
|
+
}], labelWidth: [{
|
|
588
|
+
type: Input
|
|
589
|
+
}], listeners: [{
|
|
590
|
+
type: Input
|
|
591
|
+
}], localeClass: [{
|
|
592
|
+
type: Input
|
|
593
|
+
}], localizable: [{
|
|
594
|
+
type: Input
|
|
595
|
+
}], localizableProperties: [{
|
|
596
|
+
type: Input
|
|
597
|
+
}], maskDefaults: [{
|
|
598
|
+
type: Input
|
|
599
|
+
}], masked: [{
|
|
600
|
+
type: Input
|
|
601
|
+
}], monitorResize: [{
|
|
602
|
+
type: Input
|
|
603
|
+
}], name: [{
|
|
604
|
+
type: Input
|
|
605
|
+
}], owner: [{
|
|
606
|
+
type: Input
|
|
607
|
+
}], positioned: [{
|
|
608
|
+
type: Input
|
|
609
|
+
}], preventTooltipOnTouch: [{
|
|
610
|
+
type: Input
|
|
611
|
+
}], relayStoreEvents: [{
|
|
612
|
+
type: Input
|
|
613
|
+
}], resize: [{
|
|
614
|
+
type: Input
|
|
615
|
+
}], revertOnEscape: [{
|
|
616
|
+
type: Input
|
|
617
|
+
}], ripple: [{
|
|
618
|
+
type: Input
|
|
619
|
+
}], rootElement: [{
|
|
620
|
+
type: Input
|
|
621
|
+
}], scrollAction: [{
|
|
622
|
+
type: Input
|
|
623
|
+
}], showAnimation: [{
|
|
624
|
+
type: Input
|
|
625
|
+
}], showTooltipWhenDisabled: [{
|
|
626
|
+
type: Input
|
|
627
|
+
}], skipValidation: [{
|
|
628
|
+
type: Input
|
|
629
|
+
}], spellCheck: [{
|
|
630
|
+
type: Input
|
|
631
|
+
}], tab: [{
|
|
632
|
+
type: Input
|
|
633
|
+
}], tabIndex: [{
|
|
634
|
+
type: Input
|
|
635
|
+
}], textAlign: [{
|
|
636
|
+
type: Input
|
|
637
|
+
}], title: [{
|
|
638
|
+
type: Input
|
|
639
|
+
}], type: [{
|
|
640
|
+
type: Input
|
|
641
|
+
}], ui: [{
|
|
642
|
+
type: Input
|
|
643
|
+
}], validateOnInput: [{
|
|
644
|
+
type: Input
|
|
645
|
+
}], weight: [{
|
|
646
|
+
type: Input
|
|
647
|
+
}], alignSelf: [{
|
|
648
|
+
type: Input
|
|
649
|
+
}], appendTo: [{
|
|
650
|
+
type: Input
|
|
651
|
+
}], badge: [{
|
|
652
|
+
type: Input
|
|
653
|
+
}], callOnFunctions: [{
|
|
654
|
+
type: Input
|
|
655
|
+
}], catchEventHandlerExceptions: [{
|
|
656
|
+
type: Input
|
|
657
|
+
}], cls: [{
|
|
658
|
+
type: Input
|
|
659
|
+
}], column: [{
|
|
660
|
+
type: Input
|
|
661
|
+
}], dataset: [{
|
|
662
|
+
type: Input
|
|
663
|
+
}], disabled: [{
|
|
664
|
+
type: Input
|
|
665
|
+
}], editable: [{
|
|
666
|
+
type: Input
|
|
667
|
+
}], extraData: [{
|
|
668
|
+
type: Input
|
|
669
|
+
}], flex: [{
|
|
670
|
+
type: Input
|
|
671
|
+
}], height: [{
|
|
672
|
+
type: Input
|
|
673
|
+
}], hidden: [{
|
|
674
|
+
type: Input
|
|
675
|
+
}], id: [{
|
|
676
|
+
type: Input
|
|
677
|
+
}], insertBefore: [{
|
|
678
|
+
type: Input
|
|
679
|
+
}], insertFirst: [{
|
|
680
|
+
type: Input
|
|
681
|
+
}], keyMap: [{
|
|
682
|
+
type: Input
|
|
683
|
+
}], label: [{
|
|
684
|
+
type: Input
|
|
685
|
+
}], margin: [{
|
|
686
|
+
type: Input
|
|
687
|
+
}], maxHeight: [{
|
|
688
|
+
type: Input
|
|
689
|
+
}], maximizeOnMobile: [{
|
|
690
|
+
type: Input
|
|
691
|
+
}], maxWidth: [{
|
|
692
|
+
type: Input
|
|
693
|
+
}], minHeight: [{
|
|
694
|
+
type: Input
|
|
695
|
+
}], minWidth: [{
|
|
696
|
+
type: Input
|
|
697
|
+
}], placeholder: [{
|
|
698
|
+
type: Input
|
|
699
|
+
}], readOnly: [{
|
|
700
|
+
type: Input
|
|
701
|
+
}], rendition: [{
|
|
702
|
+
type: Input
|
|
703
|
+
}], required: [{
|
|
704
|
+
type: Input
|
|
705
|
+
}], rtl: [{
|
|
706
|
+
type: Input
|
|
707
|
+
}], showRequiredIndicator: [{
|
|
708
|
+
type: Input
|
|
709
|
+
}], span: [{
|
|
710
|
+
type: Input
|
|
711
|
+
}], tooltip: [{
|
|
712
|
+
type: Input
|
|
713
|
+
}], triggers: [{
|
|
714
|
+
type: Input
|
|
715
|
+
}], value: [{
|
|
716
|
+
type: Input
|
|
717
|
+
}], width: [{
|
|
718
|
+
type: Input
|
|
719
|
+
}], x: [{
|
|
720
|
+
type: Input
|
|
721
|
+
}], y: [{
|
|
722
|
+
type: Input
|
|
723
|
+
}], anchorSize: [{
|
|
724
|
+
type: Input
|
|
725
|
+
}], content: [{
|
|
726
|
+
type: Input
|
|
727
|
+
}], focusVisible: [{
|
|
728
|
+
type: Input
|
|
729
|
+
}], html: [{
|
|
730
|
+
type: Input
|
|
731
|
+
}], input: [{
|
|
732
|
+
type: Input
|
|
733
|
+
}], parent: [{
|
|
734
|
+
type: Input
|
|
735
|
+
}], scrollable: [{
|
|
736
|
+
type: Input
|
|
737
|
+
}], onAction: [{
|
|
738
|
+
type: Output
|
|
739
|
+
}], onBeforeDestroy: [{
|
|
740
|
+
type: Output
|
|
741
|
+
}], onBeforeHide: [{
|
|
742
|
+
type: Output
|
|
743
|
+
}], onBeforeShow: [{
|
|
744
|
+
type: Output
|
|
745
|
+
}], onCatchAll: [{
|
|
746
|
+
type: Output
|
|
747
|
+
}], onChange: [{
|
|
748
|
+
type: Output
|
|
749
|
+
}], onClear: [{
|
|
750
|
+
type: Output
|
|
751
|
+
}], onDestroy: [{
|
|
752
|
+
type: Output
|
|
753
|
+
}], onElementCreated: [{
|
|
754
|
+
type: Output
|
|
755
|
+
}], onFocusIn: [{
|
|
756
|
+
type: Output
|
|
757
|
+
}], onFocusOut: [{
|
|
758
|
+
type: Output
|
|
759
|
+
}], onHide: [{
|
|
760
|
+
type: Output
|
|
761
|
+
}], onInput: [{
|
|
762
|
+
type: Output
|
|
763
|
+
}], onPaint: [{
|
|
764
|
+
type: Output
|
|
765
|
+
}], onReadOnly: [{
|
|
766
|
+
type: Output
|
|
767
|
+
}], onRecompose: [{
|
|
768
|
+
type: Output
|
|
769
|
+
}], onResize: [{
|
|
770
|
+
type: Output
|
|
771
|
+
}], onShow: [{
|
|
772
|
+
type: Output
|
|
773
|
+
}], onTrigger: [{
|
|
774
|
+
type: Output
|
|
775
|
+
}] } });
|
|
776
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ5bnR1bS10ZXh0LWFyZWEtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50L3NyYy9saWIvYnJ5bnR1bS10ZXh0LWFyZWEtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RDs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtELE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE9BQU8sRUFBcUwsYUFBYSxFQUFvRCxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBK25CM1IsTUFBTSxPQUFPLDZCQUE2QjtJQWdSdEMsWUFBWSxPQUFtQjtRQVR2QixrQkFBYSxHQUFHO1lBQ3BCLEtBQUssRUFBYyxTQUFTO1lBQzVCLFFBQVEsRUFBVyxTQUFTO1lBQzVCLElBQUksRUFBZSxTQUFTO1lBQzVCLGdCQUFnQixFQUFHLElBQUk7WUFDdkIsUUFBUSxFQUFXLEVBQUU7WUFDckIsU0FBUyxFQUFVLEVBQUU7U0FDeEIsQ0FBQztRQXNJRixrQkFBa0I7UUFDbEI7Ozs7Ozs7Ozs7OztXQVlHO1FBQ08sYUFBUSxHQUFRLElBQUksWUFBWSxFQUFnTyxDQUFDO1FBQzNROzs7O1dBSUc7UUFDTyxvQkFBZSxHQUFRLElBQUksWUFBWSxFQUE4QyxDQUFDO1FBQ2hHOzs7O1dBSUc7UUFDTyxpQkFBWSxHQUFRLElBQUksWUFBWSxFQUF5RSxDQUFDO1FBQ3hIOzs7O1dBSUc7UUFDTyxpQkFBWSxHQUFRLElBQUksWUFBWSxFQUE2RSxDQUFDO1FBQzVIOzs7Ozs7O1dBT0c7UUFDTyxlQUFVLEdBQVEsSUFBSSxZQUFZLEVBQWdFLENBQUM7UUFDN0c7Ozs7Ozs7Ozs7V0FVRztRQUNPLGFBQVEsR0FBUSxJQUFJLFlBQVksRUFBK0wsQ0FBQztRQUMxTzs7Ozs7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RyxPQUFPO3NCQUFoQixNQUFNO2dCQU1HLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFVRyxRQUFRO3NCQUFqQixNQUFNO2dCQU1HLE1BQU07c0JBQWYsTUFBTTtnQkFPRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqIEFuZ3VsYXIgd3JhcHBlciBmb3IgQnJ5bnR1bSBUZXh0QXJlYUZpZWxkXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IFdyYXBwZXJIZWxwZXIgZnJvbSAnLi93cmFwcGVyLmhlbHBlcic7XG5cbmltcG9ydCB7IEFsaWduU3BlYywgQmFzZSwgQ29udGFpbmVySXRlbUNvbmZpZywgRG9tQ29uZmlnLCBGaWVsZCwgRmllbGRDb250YWluZXIsIEZpZWxkQ29udGFpbmVyQ29uZmlnLCBGaWVsZFRyaWdnZXJDb25maWcsIEtleU1hcENvbmZpZywgTWFza0NvbmZpZywgTW9kZWwsIFJlY3RhbmdsZSwgU2Nyb2xsZXIsIFRhYkNvbmZpZywgVGV4dEFyZWFGaWVsZCwgVGV4dEFyZWFGaWVsZExpc3RlbmVycywgVG9vbHRpcENvbmZpZywgVnVlQ29uZmlnLCBXaWRnZXQgfSBmcm9tICdAYnJ5bnR1bS9ncmlkJztcblxuaW1wb3J0IHsgU3RyaW5nSGVscGVyIH0gZnJvbSAnQGJyeW50dW0vZ3JpZCc7XG5cbmV4cG9ydCB0eXBlIEJyeW50dW1UZXh0QXJlYUZpZWxkUHJvcHMgPSB7XG4gICAgLy8gQ29uZmlnc1xuICAgIC8qKlxuICAgICAqIEVsZW1lbnQgKG9yIGVsZW1lbnQgaWQpIHRvIGFkb3B0IGFzIHRoaXMgV2lkZ2V0J3MgZW5jYXBzdWxhdGluZyBlbGVtZW50LiBUaGUgd2lkZ2V0J3NcbiAgICAgKiBjb250ZW50IHdpbGwgYmUgcGxhY2VkIGluc2lkZSB0aGlzIGVsZW1lbnQuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1hZG9wdClcbiAgICAgKi9cbiAgICBhZG9wdCA/IDogSFRNTEVsZW1lbnR8c3RyaW5nXG4gICAgLyoqXG4gICAgICogKk9ubHkgdmFsaWQgaWYgdGhpcyBXaWRnZXQgaXMgW2Zsb2F0aW5nXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1mbG9hdGluZykuKlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctYWxpZ24pXG4gICAgICovXG4gICAgYWxpZ24gPyA6IEFsaWduU3BlY3xzdHJpbmdcbiAgICAvKipcbiAgICAgKiBXaGVuIHRoaXMgd2lkZ2V0IGlzIGEgY2hpbGQgb2YgYSBbQ29udGFpbmVyXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvQ29udGFpbmVyKSwgaXQgd2lsbCBieSBkZWZhdWx0IGJlIHBhcnRpY2lwYXRpbmcgaW4gYVxuICAgICAqIGZsZXhib3ggbGF5b3V0LiBUaGlzIGNvbmZpZyBhbGxvd3MgeW91IHRvIHNldCB0aGlzIHdpZGdldCdzXG4gICAgICogW2FsaWduLXNlbGZdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbGlnbi1zZWxmKSBzdHlsZS5cbiAgICAgKi9cbiAgICBhbGlnblNlbGYgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqICpPbmx5IHZhbGlkIGlmIHRoaXMgV2lkZ2V0IGlzIFtmbG9hdGluZ10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctZmxvYXRpbmcpIGFuZCBiZWluZyBzaG93biB0aHJvdWdoIFtzaG93QnldKCNDb3JlL3dpZGdldC9XaWRnZXQjZnVuY3Rpb24tc2hvd0J5KS4qXG4gICAgICogYHRydWVgIHRvIHNob3cgYSBjb25uZWN0b3IgYXJyb3cgcG9pbnRpbmcgdG8gdGhlIGFsaWduIHRhcmdldC5cbiAgICAgKi9cbiAgICBhbmNob3IgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBFbGVtZW50IChvciB0aGUgaWQgb2YgYW4gZWxlbWVudCkgdG8gYXBwZW5kIHRoaXMgd2lkZ2V0J3MgZWxlbWVudCB0by4gQ2FuIGJlIGNvbmZpZ3VyZWQsIG9yIHNldCBvbmNlIGF0XG4gICAgICogcnVudGltZS4gVG8gYWNjZXNzIHRoZSBlbGVtZW50IG9mIGEgcmVuZGVyZWQgd2lkZ2V0LCBzZWUgW2VsZW1lbnRdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjcHJvcGVydHktZWxlbWVudCkuXG4gICAgICovXG4gICAgYXBwZW5kVG8gPyA6IEhUTUxFbGVtZW50fHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEEgbG9jYWxpemFibGUgc3RyaW5nIChNYXkgY29udGFpbiBgJ0x7fSdgIHRva2VucyB3aGljaCByZXNvbHZlIGluIHRoZSBsb2NhbGUgZmlsZSkgdG8gaW5qZWN0XG4gICAgICogaW50byBhbiBlbGVtZW50IHdoaWNoIHdpbGwgYmUgbGlua2VkIHVzaW5nIHRoZSBgYXJpYS1kZXNjcmliZWRieWAgYXR0cmlidXRlLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctYXJpYURlc2NyaXB0aW9uKVxuICAgICAqL1xuICAgIGFyaWFEZXNjcmlwdGlvbiA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogQSBsb2NhbGl6YWJsZSBzdHJpbmcgKE1heSBjb250YWluIGAnTHt9J2AgdG9rZW5zIHdoaWNoIHJlc29sdmUgaW4gdGhlIGxvY2FsZSBmaWxlKSB0byBpbmplY3QgYXNcbiAgICAgKiB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWFyaWFMYWJlbClcbiAgICAgKi9cbiAgICBhcmlhTGFiZWwgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG5hdGl2ZSBgYXV0b2NvbXBsZXRlYCBwcm9wZXJ0eSBvZiB0aGUgdW5kZXJseWluZyBpbnB1dCBlbGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvXG4gICAgICogW01ETl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzL2F1dG9jb21wbGV0ZSlcbiAgICAgKi9cbiAgICBhdXRvQ29tcGxldGUgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgYHRydWVgIHRvIGF1dG8gc2VsZWN0IGZpZWxkIGNvbnRlbnRzIG9uIGZvY3VzXG4gICAgICovXG4gICAgYXV0b1NlbGVjdCA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgdGV4dCB0byBzaG93IGluIGJhZGdlLlxuICAgICAqL1xuICAgIGJhZGdlID8gOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBBbiBvYmplY3Qgd2hlcmUgcHJvcGVydHkgbmFtZXMgd2l0aCBhIHRydXRoeSB2YWx1ZSBpbmRpY2F0ZSB3aGljaCBldmVudHMgc2hvdWxkIGJ1YmJsZSB1cCB0aGUgb3duZXJzaGlwXG4gICAgICogaGllcmFyY2h5IHdoZW4gdHJpZ2dlcmVkLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctYnViYmxlRXZlbnRzKVxuICAgICAqL1xuICAgIGJ1YmJsZUV2ZW50cyA/IDogb2JqZWN0XG4gICAgLyoqXG4gICAgICogU2V0IHRvIGBmYWxzZWAgdG8gbm90IGNhbGwgb25YWFggbWV0aG9kIG5hbWVzIChlLmcuIGBvblNob3dgLCBgb25DbGlja2ApLCBhcyBhbiBlYXN5IHdheSB0byBsaXN0ZW4gZm9yIGV2ZW50cy5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWNhbGxPbkZ1bmN0aW9ucylcbiAgICAgKi9cbiAgICBjYWxsT25GdW5jdGlvbnMgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCBpZiBhbiBldmVudCBoYW5kbGVyIHRocm93cyBhbiBleGNlcHRpb24sIHRoZSBlcnJvciBwcm9wYWdhdGVzIHVwIHRoZSBzdGFjayBhbmQgdGhlXG4gICAgICogYXBwbGljYXRpb24gc3RhdGUgaXMgdW5kZWZpbmVkLiBDb2RlIHdoaWNoIGZvbGxvd3MgdGhlIGV2ZW50IGhhbmRsZXIgd2lsbCAqbm90KiBiZSBleGVjdXRlZC5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWNhdGNoRXZlbnRIYW5kbGVyRXhjZXB0aW9ucylcbiAgICAgKi9cbiAgICBjYXRjaEV2ZW50SGFuZGxlckV4Y2VwdGlvbnMgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiAqT25seSB2YWxpZCBpZiB0aGlzIFdpZGdldCBpcyBbZmxvYXRpbmddKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLWZsb2F0aW5nKS4qXG4gICAgICogU2V0IHRvIGB0cnVlYCB0byBjZW50cmUgdGhlIFdpZGdldCBpbiBicm93c2VyIHZpZXdwb3J0IHNwYWNlLlxuICAgICAqL1xuICAgIGNlbnRlcmVkID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogU2hvdyBhIHRyaWdnZXIgdG8gY2xlYXIgZmllbGQsIGlmIHRoaXMgZmllbGQgaXMgbm90IFtyZWFkT25seV0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0ZpZWxkI2NvbmZpZy1yZWFkT25seSkuIFRoZSB0cmlnZ2VyIGlzIGF2YWlsYWJsZVxuICAgICAqIGluIHRoZSBbdHJpZ2dlcnNdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9GaWVsZCNwcm9wZXJ0eS10cmlnZ2Vycykgb2JqZWN0IHVuZGVyIHRoZSBuYW1lIGBjbGVhcmAuIE1heSBhbHNvIGJlIGFuIG9iamVjdCB3aGljaFxuICAgICAqIGNvbmZpZ3VyZXMgdGhlIGBjbGVhcmAgW3RyaWdnZXJdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9GaWVsZCNwcm9wZXJ0eS10cmlnZ2VycykuXG4gICAgICovXG4gICAgY2xlYXJhYmxlID8gOiBib29sZWFufEZpZWxkVHJpZ2dlckNvbmZpZ1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBDU1MgY2xhc3NlcyB0byBhZGQgdG8gZWxlbWVudC5cbiAgICAgKiBNYXkgYmUgc3BlY2lmaWVkIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIHN0cmluZywgb3IgYXMgYW4gb2JqZWN0IGluIHdoaWNoIHByb3BlcnR5IG5hbWVzXG4gICAgICogd2l0aCB0cnV0aHkgdmFsdWVzIGFyZSB1c2VkIGFzIHRoZSBjbGFzcyBuYW1lczpcbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWNscylcbiAgICAgKi9cbiAgICBjbHMgPyA6IHN0cmluZ3xvYmplY3RcbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBzcGVjaWZpZWQgY29sb3IgdG8gdGhlIHdpZGdldCwgYnkgc2V0dGluZyB0aGUgYC0tYi1wcmltYXJ5YCBDU1MgdmFyaWFibGUgaW4gdGhlIHdpZGdldHNcbiAgICAgKiBgc3R5bGVgIGJsb2NrLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctY29sb3IpXG4gICAgICovXG4gICAgY29sb3IgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpYyBjb250cm9sIG92ZXIgd2hpY2ggY29sdW1uIHRvIHN0YXJ0IGluIHdoZW4gdXNlZCBpbiBhIGdyaWQgbGF5b3V0LlxuICAgICAqL1xuICAgIGNvbHVtbiA/IDogbnVtYmVyXG4gICAgY29uZmlnID8gOiBvYmplY3RcbiAgICAvKipcbiAgICAgKiAqT25seSB2YWxpZCBpZiB0aGlzIFdpZGdldCBpcyBbZmxvYXRpbmddKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLWZsb2F0aW5nKSBvciBbcG9zaXRpb25lZF0oI0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctcG9zaXRpb25lZCkuKlxuICAgICAqIEVsZW1lbnQsIFdpZGdldCBvciBSZWN0YW5nbGUgdG8gd2hpY2ggdGhpcyBXaWRnZXQgaXMgY29uc3RyYWluZWQuXG4gICAgICovXG4gICAgY29uc3RyYWluVG8gPyA6IEhUTUxFbGVtZW50fFdpZGdldHxSZWN0YW5nbGVcbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgYWRkaXRpb25hbCBpdGVtcyBhc3NvY2lhdGVkIHRvIHRoaXMgZmllbGQuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gYWRkIGNvbnRleHR1YWxcbiAgICAgKiBmaWVsZHMgcmVsYXRlZCB0byBhIFtjaGVja2JveF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0NoZWNrYm94KSBvciBbcmFkaW8gYnV0dG9uXSgjQ29yZS93aWRnZXQvUmFkaW8pLiBTZWVcbiAgICAgKiB0aGVzZSBjbGFzc2VzIGZvciBleGFtcGxlcyBvZiBuZXN0ZWQgZmllbGRzLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctY29udGFpbmVyKVxuICAgICAqL1xuICAgIGNvbnRhaW5lciA/IDogUmVjb3JkPHN0cmluZywgQ29udGFpbmVySXRlbUNvbmZpZz58Q29udGFpbmVySXRlbUNvbmZpZ1tdfEZpZWxkQ29udGFpbmVyQ29uZmlnfEZpZWxkQ29udGFpbmVyXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZyBjb250cm9scyBob3cgdGhlIHZhbHVlIG9mIG5lc3RlZCBpdGVtcyBhcmUgaGFuZGxlZCB3aGVuIGEgcGFyZW50IGNvbnRhaW5lciBnZXRzIG9yIHNldHMgaXRzXG4gICAgICogW3ZhbHVlc10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0NvbnRhaW5lciNwcm9wZXJ0eS12YWx1ZXMpLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctY29udGFpblZhbHVlcylcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LkZpZWxkfSBmaWVsZCBGaWVsZCBpbnN0YW5jZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGNvbnRhaW5WYWx1ZXMgPyA6IGJvb2xlYW58c3RyaW5nfCgoZmllbGQ6IEZpZWxkKSA9PiBib29sZWFuKVxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBDU1MgY2xhc3NlcyB0byBhZGQgdG8gdGhlIFtjb250ZW50RWxlbWVudF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNwcm9wZXJ0eS1jb250ZW50RWxlbWVudCkuXG4gICAgICogTWF5IGJlIHNwZWNpZmllZCBhcyBhIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcsIG9yIGFzIGFuIG9iamVjdCBpbiB3aGljaCBwcm9wZXJ0eSBuYW1lc1xuICAgICAqIHdpdGggdHJ1dGh5IHZhbHVlcyBhcmUgdXNlZCBhcyB0aGUgY2xhc3MgbmFtZXM6XG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1jb250ZW50RWxlbWVudENscylcbiAgICAgKi9cbiAgICBjb250ZW50RWxlbWVudENscyA/IDogc3RyaW5nfG9iamVjdFxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhpcyBXaWRnZXQgY29uZmlndXJhdGlvbiBpcyB1c2VkIGluIHRoZSBHcmlkJ3MgUm93RXhwYW5kZXIgZmVhdHVyZSdzIGB3aWRnZXRgIGNvbmZpZywgcHJvdmlkZSB0aGVcbiAgICAgKiBmaWVsZCBvbiB0aGUgZXhwYW5kZWQgcmVjb3JkIHRvIHVzZSBmb3IgcG9wdWxhdGluZyB0aGlzIHdpZGdldCdzIHN0b3JlIChpZiBhcHBsaWNhYmxlKVxuICAgICAqL1xuICAgIGRhdGFGaWVsZCA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGFwcGx5IHRvIGVsZW1lbnRzIGRhdGFzZXQgKGVhY2gga2V5IHdpbGwgYmUgdXNlZCBhcyBhIGRhdGEtYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50KVxuICAgICAqL1xuICAgIGRhdGFzZXQgPyA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBzaW5nbGUgdmFsdWUgaXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIFdpZGdldC4gU3VjaCBhcyB3aGVuIHVzZWRcbiAgICAgKiBpbiBhIGdyaWQgV2lkZ2V0Q29sdW1uLCB0aGlzIGlzIHRoZSBwcm9wZXJ0eSB0byB3aGljaCB0aGUgY29sdW1uJ3MgYGZpZWxkYCBpcyBhcHBsaWVkLlxuICAgICAqL1xuICAgIGRlZmF1bHRCaW5kUHJvcGVydHkgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIENoZWNrIGZvciBDU1MgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2hlbiB1cGdyYWRpbmcgdG8gdjcuIFBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgY2hlY2tzOlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctZGV0ZWN0Q1NTQ29tcGF0aWJpbGl0eUlzc3VlcylcbiAgICAgKi9cbiAgICBkZXRlY3RDU1NDb21wYXRpYmlsaXR5SXNzdWVzID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZSBvciBlbmFibGUgdGhlIHdpZGdldC4gSXQgaXMgc2ltaWxhciB0byBbcmVhZE9ubHldKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLXJlYWRPbmx5KSBleGNlcHQgYSBkaXNhYmxlZCB3aWRnZXRcbiAgICAgKiBjYW5ub3QgYmUgZm9jdXNlZCwgdXNlcyBhIGRpZmZlcmVudCByZW5kaXRpb24gKHVzdWFsbHkgZ3JleWlzaCkgYW5kIGRvZXMgbm90IGFsbG93IHNlbGVjdGluZyBpdHMgdmFsdWUuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1kaXNhYmxlZClcbiAgICAgKi9cbiAgICBkaXNhYmxlZCA/IDogYm9vbGVhbnwnaW5lcnQnXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgdGhlIHBsYWNlbWVudCBvZiB0aGlzIHdpZGdldCB3aGVuIGl0IGlzIGFkZGVkIHRvIGEgW3BhbmVsJ3MgXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvUGFuZWwpXG4gICAgICogW3N0cmlwcyBjb2xsZWN0aW9uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvUGFuZWwjY29uZmlnLXN0cmlwcykuIFR5cGljYWwgdmFsdWVzIGZvciB0aGlzIGNvbmZpZyBhcmUgYCd0b3AnYCxcbiAgICAgKiBgJ2JvdHRvbSdgLCBgJ2xlZnQnYCwgb3IgYCdyaWdodCdgLCB3aGljaCBjYXVzZSB0aGUgd2lkZ2V0IHRvIGJlIHBsYWNlZCBvbiB0aGF0IHNpZGUgb2YgdGhlIHBhbmVsJ3NcbiAgICAgKiBib2R5LiBTdWNoIHdpZGdldHMgYXJlIGNhbGxlZCBcImVkZ2Ugc3RyaXBzXCIuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1kb2NrKVxuICAgICAqL1xuICAgIGRvY2sgPyA6ICd0b3AnfCdib3R0b20nfCdsZWZ0J3wncmlnaHQnfCdzdGFydCd8J2VuZCd8J2hlYWRlcid8J3ByZS1oZWFkZXInfG9iamVjdFxuICAgIC8qKlxuICAgICAqICpPbmx5IHZhbGlkIGlmIHRoaXMgV2lkZ2V0IGlzIFtmbG9hdGluZ10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctZmxvYXRpbmcpLipcbiAgICAgKiBTZXQgdG8gYHRydWVgIHRvIGJlIGFibGUgdG8gZHJhZyBhIHdpZGdldCBmcmVlbHkgb24gdGhlIHBhZ2UuIE9yIHNldCB0byBhbiBvYmplY3Qgd2l0aCBhIMK0aGFuZGxlU2VsZWN0b3LCtFxuICAgICAqIHByb3BlcnR5IHdoaWNoIGNvbnRyb2xzIHdoZW4gYSBkcmFnIHNob3VsZCBzdGFydC5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWRyYWdnYWJsZSlcbiAgICAgKi9cbiAgICBkcmFnZ2FibGUgPyA6IGJvb2xlYW58e1xuICAgICAgICBoYW5kbGVTZWxlY3Rvcj86IHN0cmluZ1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IHVzZXIgZnJvbSBlZGl0aW5nIHRoZSBmaWVsZC4gRm9yIFRleHRGaWVsZHMgaXQgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFzIHNldHRpbmdcbiAgICAgKiBbcmVhZE9ubHldKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9GaWVsZCNjb25maWctcmVhZE9ubHkpLCBidXQgZm9yIFBpY2tlckZpZWxkcyB0aGVyZSBpcyBhIGRpc3RpbmN0aW9uIHdoZXJlIGl0IGFsbG93cyB5b3UgdG8gcGljayBhIHZhbHVlXG4gICAgICogYnV0IG5vdCB0byB0eXBlIG9uZSBpbiB0aGUgZmllbGQuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1lZGl0YWJsZSlcbiAgICAgKi9cbiAgICBlZGl0YWJsZSA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBzcGVjaWZ5aW5nIGF0dHJpYnV0ZXMgdG8gYXNzaWduIHRvIHRoZSByb290IGVsZW1lbnQgb2YgdGhpcyB3aWRnZXQuXG4gICAgICogU2V0IGBudWxsYCB2YWx1ZSB0byBhdHRyaWJ1dGUgdG8gcmVtb3ZlIGl0LlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctZWxlbWVudEF0dHJpYnV0ZXMpXG4gICAgICovXG4gICAgZWxlbWVudEF0dHJpYnV0ZXMgPyA6IFJlY29yZDxzdHJpbmcsIHN0cmluZ3xudWxsPlxuICAgIGV4dHJhRGF0YSA/IDogYW55XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGlzIHdpZGdldCBpcyBhIGNoaWxkIG9mIGEgW0NvbnRhaW5lcl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0NvbnRhaW5lciksIGl0IHdpbGwgYnkgZGVmYXVsdCBiZSBwYXJ0aWNpcGF0aW5nIGluIGFcbiAgICAgKiBmbGV4Ym94IGxheW91dC4gVGhpcyBjb25maWcgYWxsb3dzIHlvdSB0byBzZXQgdGhpcyB3aWRnZXQnc1xuICAgICAqIFtmbGV4XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZmxleCkgc3R5bGUuXG4gICAgICogVGhpcyBtYXkgYmUgY29uZmlndXJlZCBhcyBhIHNpbmdsZSBudW1iZXIgb3IgYSBgJmx0O2ZsZXgtZ3JvdyZndDsgJmx0O2ZsZXgtc2hyaW5rJmd0OyAmbHQ7ZmxleC1iYXNpcyZndDtgIGZvcm1hdCBzdHJpbmcuXG4gICAgICogbnVtZXJpYy1vbmx5IHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgdGhlIGBmbGV4LWdyb3dgIHZhbHVlLlxuICAgICAqL1xuICAgIGZsZXggPyA6IG51bWJlcnxzdHJpbmdcbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYHRydWVgIHRvIG1vdmUgdGhlIHdpZGdldCBvdXQgb2YgdGhlIGRvY3VtZW50IGZsb3cgYW5kIHBvc2l0aW9uIGl0XG4gICAgICogYWJzb2x1dGVseSBpbiBicm93c2VyIHZpZXdwb3J0IHNwYWNlLlxuICAgICAqL1xuICAgIGZsb2F0aW5nID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogV2lkZ2V0J3MgaGVpZ2h0LCB1c2VkIHRvIHNldCBlbGVtZW50IGBzdHlsZS5oZWlnaHRgLiBFaXRoZXIgc3BlY2lmeSBhIHZhbGlkIGhlaWdodCBzdHJpbmcgb3IgYSBudW1iZXIsXG4gICAgICogd2hpY2ggd2lsbCBnZXQgJ3B4JyBhcHBlbmRlZC4gV2UgcmVjb21tZW5kIHVzaW5nIENTUyBhcyB0aGUgcHJpbWFyeSB3YXkgdG8gY29udHJvbCBoZWlnaHQsIGJ1dCBpbiBzb21lXG4gICAgICogY2FzZXMgdGhpcyBjb25maWcgaXMgY29udmVuaWVudC5cbiAgICAgKi9cbiAgICBoZWlnaHQgPyA6IHN0cmluZ3xudW1iZXJcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmUgd2l0aCB0cnVlIHRvIG1ha2Ugd2lkZ2V0IGluaXRpYWxseSBoaWRkZW4uXG4gICAgICovXG4gICAgaGlkZGVuID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogKk9ubHkgdmFsaWQgaWYgdGhpcyBXaWRnZXQgaXMgW2Zsb2F0aW5nXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1mbG9hdGluZykuKlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctaGlkZUFuaW1hdGlvbilcbiAgICAgKi9cbiAgICBoaWRlQW5pbWF0aW9uID8gOiBib29sZWFufG9iamVjdFxuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgYHRydWVgIHRvIGhpZ2hsaWdodCBmaWVsZCBhZnRlciBleHRlcm5hbCB2YWx1ZSBjaGFuZ2VzXG4gICAgICovXG4gICAgaGlnaGxpZ2h0RXh0ZXJuYWxDaGFuZ2UgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBzdHJpbmcgdG8gZGlzcGxheSBpbnNpZGUgdGhlIGlucHV0IGZpZWxkIGFzIGFuIG92ZXJsYXkuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGlzcGxheWluZ1xuICAgICAqIGEgZmllbGQncyB1bml0cy5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWhpbnQpXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgQSBkYXRhIG9iamVjdFxuICAgICAqIEBwYXJhbSB7Q29yZS53aWRnZXQuRmllbGR9IGRhdGEuc291cmNlIEEgcmVmZXJlbmNlIHRvIHRoZSBmaWVsZCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRhLnZhbHVlIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgaGludCA/IDogc3RyaW5nfCgoZGF0YTogeyBzb3VyY2U6IEZpZWxkLCB2YWx1ZTogYW55IH0pID0+IHN0cmluZylcbiAgICAvKipcbiAgICAgKiBUaGlzIGNvbmZpZyBpcyBzaW1pbGFyIHRvIFtoaW50XShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvRmllbGQjY29uZmlnLWhpbnQpIGV4Y2VwdCB0aGF0IHRoaXMgY29uZmlnIGlzIHVzZWQgdG8gZGlzcGxheSBIVE1MIGNvbnRlbnQuXG4gICAgICogU2luY2UgdGhpcyBjYW4gYWxsb3cgbWFsaWNpb3VzIGNvbnRlbnQgdG8gYmUgZXhlY3V0ZWQsIGJlIHN1cmUgbm90IHRvIGluY2x1ZGUgdXNlci1lbnRlcmVkIGRhdGEgb3IgdG9cbiAgICAgKiBlbmNvZGUgc3VjaCBkYXRhIChzZWUgW2VuY29kZUh0bWxdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL2hlbHBlci9TdHJpbmdIZWxwZXIjZnVuY3Rpb24tZW5jb2RlSHRtbC1zdGF0aWMpKS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWhpbnRIdG1sKVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIEEgZGF0YSBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LkZpZWxkfSBkYXRhLnNvdXJjZSBBIHJlZmVyZW5jZSB0byB0aGUgZmllbGQgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0YS52YWx1ZSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmllbGRcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIGhpbnRIdG1sID8gOiBzdHJpbmd8KChkYXRhOiB7IHNvdXJjZTogRmllbGQsIHZhbHVlOiBhbnkgfSkgPT4gc3RyaW5nKVxuICAgIC8qKlxuICAgICAqIFdpZGdldCBpZCwgaWYgbm90IHNwZWNpZmllZCBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQuIEFsc28gdXNlZCBmb3IgbG9va3VwcyB0aHJvdWdoIFdpZGdldC5nZXRCeUlkXG4gICAgICovXG4gICAgaWQgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdGhlIHdpZGdldHMgcmVhZC1vbmx5IHN0YXRlIHNob3VsZCBiZSBjb250cm9sbGVkIGJ5IGl0cyBwYXJlbnQuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1pZ25vcmVQYXJlbnRSZWFkT25seSlcbiAgICAgKi9cbiAgICBpZ25vcmVQYXJlbnRSZWFkT25seSA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFNldCB0aGlzIGNvbmZpZyB0byBgdHJ1ZWAgdG8gYWx3YXlzIGRpc3BsYXkgaXRlbXMgaG9yaXpvbnRhbGx5IGFsb25nIHdpdGggdGhpcyBmaWVsZC4gVGhpcyBhc3NpZ25zIGFuXG4gICAgICogW2hib3hdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9sYXlvdXQvQm94KSBhcyB0aGUgW2xheW91dF0oI0NvcmUvd2lkZ2V0L0NvbnRhaW5lciNjb25maWctbGF5b3V0KSB0byB0aGVcbiAgICAgKiBbY29udGFpbmVyXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvRmllbGQjY29uZmlnLWNvbnRhaW5lcikuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1pbmxpbmUpXG4gICAgICovXG4gICAgaW5saW5lID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGV4dCBhbGlnbm1lbnQgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKi9cbiAgICBpbnB1dEFsaWduID8gOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBTZXRzIGN1c3RvbSBhdHRyaWJ1dGVzIG9mIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG9cbiAgICAgKiBbTUROXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXMpXG4gICAgICovXG4gICAgaW5wdXRBdHRyaWJ1dGVzID8gOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgLyoqXG4gICAgICogSWYgeW91IG5lZWQgdG8gdXNlIHNvbWV0aGluZyBlbHNlIHRoYW4gYSBkZWZhdWx0IGBpbnB1dGAgZWxlbWVudCwgYXMgdGhlIGlucHV0IGVsZW1lbnQsIHByb3ZpZGUgdGhlIHRhZ1xuICAgICAqIG5hbWUgaGVyZS4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIHVzZWQgZm9yIGFkdmFuY2VkIHVzYWdlIG9ubHksIGZvciBleGFtcGxlIHdoZW4gdXNpbmcgV2ViQ29tcG9uZW50c1xuICAgICAqIChjdXN0b20gZWxlbWVudHMpLCBhbmQgdGhhdCB0aGUgY29uZmlndXJlZCBlbGVtZW50IG11c3QgZnVsZmlsIHRoZSBzYW1lIGNvbnRyYWN0IGFzIGEgcmVndWxhciBpbnB1dFxuICAgICAqIGVsZW1lbnQuXG4gICAgICovXG4gICAgaW5wdXRUYWcgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0eXBlYCBhdHRyaWJ1dGUgb2YgdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudCAocGFzc3dvcmQsIGhpZGRlbiwgZGF0ZSwgY29sb3IsIGV0Yy4pLlxuICAgICAqL1xuICAgIGlucHV0VHlwZSA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIHdpZHRoIHRvIGFwcGx5IHRvIHRoZSBgLmItZmllbGQtaW5uZXJgIGVsZW1lbnQsIHdoaWNoIGVuY29tcGFzc2VzIHRoZSBgaW5wdXRgIGVsZW1lbnQgYW5kIGFueVxuICAgICAqIHRyaWdnZXJzLiBJZiBhIG51bWJlciBpcyBzcGVjaWZpZWQsIGBweGAgd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIGlucHV0V2lkdGggPyA6IHN0cmluZ3xudW1iZXJcbiAgICAvKipcbiAgICAgKiBFbGVtZW50IChvciBlbGVtZW50IGlkKSB0byBpbnNlcnQgdGhpcyB3aWRnZXQgYmVmb3JlLiBJZiBwcm92aWRlZCwgW2FwcGVuZFRvXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1hcHBlbmRUbykgY29uZmlnIGlzIGlnbm9yZWQuXG4gICAgICovXG4gICAgaW5zZXJ0QmVmb3JlID8gOiBIVE1MRWxlbWVudHxzdHJpbmdcbiAgICAvKipcbiAgICAgKiBFbGVtZW50IChvciBlbGVtZW50IGlkKSB0byBhcHBlbmQgdGhpcyB3aWRnZXQgZWxlbWVudCB0bywgYXMgYSBmaXJzdCBjaGlsZC4gSWYgcHJvdmlkZWQsIFthcHBlbmRUb10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctYXBwZW5kVG8pIGNvbmZpZyBpcyBpZ25vcmVkLlxuICAgICAqL1xuICAgIGluc2VydEZpcnN0ID8gOiBIVE1MRWxlbWVudHxzdHJpbmdcbiAgICAvKipcbiAgICAgKiBBbiBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgdGhlIFtrZXldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleSkgbmFtZVxuICAgICAqIGFuZCBvcHRpb25hbCBtb2RpZmllciBwcmVmaXhlczogYCdDdHJsKydgLCBgJ0FsdCsnYCwgYCdNZXRhKydgLCBhbmQgYCdTaGlmdCsnYCAoY2FzZS1pbnNlbnNpdGl2ZSkuIFRoZSB2YWx1ZXNcbiAgICAgKiBhcmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbmNlIG1ldGhvZCB0byBjYWxsIHdoZW4gdGhlIGtleXN0cm9rZSBpcyByZWNlaXZlZC5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWtleU1hcClcbiAgICAgKi9cbiAgICBrZXlNYXAgPyA6IFJlY29yZDxzdHJpbmcsIEtleU1hcENvbmZpZz5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYWZ0ZXIgdGhlIGxhc3Qga2V5c3Ryb2tlIGJlZm9yZSB0cmlnZ2VyaW5nIGEgY2hhbmdlIGV2ZW50LlxuICAgICAqIFNldCB0byAwIHRvIG5vdCB0cmlnZ2VyIGNoYW5nZSBldmVudHMgZnJvbSBrZXlzdHJva2VzIChsaXN0ZW4gZm9yIGlucHV0IGV2ZW50IGluc3RlYWQgdG8gaGF2ZVxuICAgICAqIGltbWVkaWF0ZSBmZWVkYmFjaywgY2hhbmdlIHdpbGwgc3RpbGwgYmUgdHJpZ2dlcmVkIG9uIGJsdXIpLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWcta2V5U3Ryb2tlQ2hhbmdlRGVsYXkpXG4gICAgICovXG4gICAga2V5U3Ryb2tlQ2hhbmdlRGVsYXkgPyA6IG51bWJlclxuICAgIC8qKlxuICAgICAqIExhYmVsLCBwcmVwZW5kZWQgdG8gZmllbGRcbiAgICAgKi9cbiAgICBsYWJlbCA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogQ1NTIGNsYXNzIG5hbWUgb3IgY2xhc3MgbmFtZXMgdG8gYWRkIHRvIGFueSBjb25maWd1cmVkIFtsYWJlbF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L21peGluL0xhYmVsYWJsZSNjb25maWctbGFiZWwpXG4gICAgICovXG4gICAgbGFiZWxDbHMgPyA6IHN0cmluZ3xvYmplY3RcbiAgICAvKipcbiAgICAgKiBMYWJlbCBwb3NpdGlvbiwgZWl0aGVyICdiZWZvcmUnIHRoZSBmaWVsZCBvciAnYWJvdmUnIHRoZSBmaWVsZFxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctbGFiZWxQb3NpdGlvbilcbiAgICAgKi9cbiAgICBsYWJlbFBvc2l0aW9uID8gOiAnYmVmb3JlJ3wnYWJvdmUnfG51bGxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWxzIHRvIGFkZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBpbnB1dCBmaWVsZC5cbiAgICAgKiBFYWNoIGxhYmVsIG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWxhYmVscylcbiAgICAgKi9cbiAgICBsYWJlbHMgPyA6IG9iamVjdFtdXG4gICAgLyoqXG4gICAgICogVGhlIHdpZHRoIHRvIGFwcGx5IHRvIHRoZSBgJmx0O2xhYmVsJmd0O2AgZWxlbWVudC4gSWYgYSBudW1iZXIgaXMgc3BlY2lmaWVkLCBgcHhgIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBsYWJlbFdpZHRoID8gOiBzdHJpbmd8bnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIGxpc3RlbmVyIHNldCBmb3IgdGhpcyBvYmplY3QuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1saXN0ZW5lcnMpXG4gICAgICovXG4gICAgbGlzdGVuZXJzID8gOiBUZXh0QXJlYUZpZWxkTGlzdGVuZXJzXG4gICAgLyoqXG4gICAgICogQSBjbGFzcyB0cmFuc2xhdGlvbnMgb2Ygd2hpY2ggYXJlIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoaXMgZW50aXR5LlxuICAgICAqIFRoaXMgaXMgb2Z0ZW4gdXNlZCB3aGVuIHRyYW5zbGF0aW9ucyBvZiBhbiBpdGVtIGFyZSBkZWZpbmVkIG9uIGl0cyBjb250YWluZXIgY2xhc3MuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1sb2NhbGVDbGFzcylcbiAgICAgKi9cbiAgICBsb2NhbGVDbGFzcyA/IDogdHlwZW9mIEJhc2VcbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIGxvY2FsaXphdGlvbiBvZiB0aGlzIG9iamVjdC5cbiAgICAgKi9cbiAgICBsb2NhbGl6YWJsZSA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgcHJvcGVydGllcyB3aGljaCB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgYXV0b21hdGljYWxseSB1cG9uIGEgbG9jYWxlIGFwcGx5aW5nLlxuICAgICAqIEluIGNhc2UgdGhlcmUgaXMgYSBuZWVkIHRvIGxvY2FsaXplIG5vdCB0eXBpY2FsIHZhbHVlIChub3QgYSBTdHJpbmcgdmFsdWUgb3IgYSBmaWVsZCB3aXRoIHJlLWRlZmluZWQgc2V0dGVyL2dldHRlciksXG4gICAgICogeW91IGNvdWxkIHVzZSAnbG9jYWxlS2V5JyBtZXRhIGNvbmZpZ3VyYXRpb24uXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLWxvY2FsaXphYmxlUHJvcGVydGllcylcbiAgICAgKi9cbiAgICBsb2NhbGl6YWJsZVByb3BlcnRpZXMgPyA6IHN0cmluZ1tdXG4gICAgLyoqXG4gICAgICogV2lkZ2V0J3MgbWFyZ2luLiBUaGlzIG1heSBiZSBjb25maWd1cmVkIGFzIGEgc2luZ2xlIG51bWJlciBvciBhIGBUUkJMYCBmb3JtYXQgc3RyaW5nLlxuICAgICAqIG51bWVyaWMtb25seSB2YWx1ZXMgYXJlIGludGVycHJldGVkIGFzIHBpeGVscy5cbiAgICAgKi9cbiAgICBtYXJnaW4gPyA6IG51bWJlcnxzdHJpbmdcbiAgICAvKipcbiAgICAgKiBUaGlzIGNvbmZpZyBvYmplY3QgY29udGFpbnMgdGhlIGRlZmF1bHRzIGZvciB0aGUgW01hc2tdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9NYXNrKSBjcmVhdGVkIGZvciB0aGVcbiAgICAgKiBbbWFza2VkXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1tYXNrZWQpIGNvbmZpZy4gQW55IHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBgbWFza2VkYCBjb25maWcgd2lsbCBvdmVycmlkZSB0aGVzZVxuICAgICAqIHZhbHVlcy5cbiAgICAgKi9cbiAgICBtYXNrRGVmYXVsdHMgPyA6IE1hc2tDb25maWdcbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYHRydWVgIHRvIGFwcGx5IHRoZSBkZWZhdWx0IG1hc2sgdG8gdGhlIHdpZGdldC4gQWx0ZXJuYXRpdmVseSwgdGhpcyBjYW4gYmUgdGhlIG1hc2sgbWVzc2FnZSBvciBhXG4gICAgICogW01hc2tdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9NYXNrKSBjb25maWcgb2JqZWN0LlxuICAgICAqL1xuICAgIG1hc2tlZCA/IDogYm9vbGVhbnxzdHJpbmd8TWFza0NvbmZpZ1xuICAgIC8qKlxuICAgICAqIFRoZSBlbGVtZW50J3MgbWF4SGVpZ2h0LiBDYW4gYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGEgTnVtYmVyICh3aGljaCB3aWxsIGhhdmUgJ3B4JyBhcHBlbmRlZCkuIE5vdGUgdGhhdFxuICAgICAqIGxpa2UgW2hlaWdodF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctaGVpZ2h0KSwgKnJlYWRpbmcqIHRoZSB2YWx1ZSB3aWxsIHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSBpbiBwaXhlbHMuXG4gICAgICovXG4gICAgbWF4SGVpZ2h0ID8gOiBzdHJpbmd8bnVtYmVyXG4gICAgLyoqXG4gICAgICogKk9ubHkgdmFsaWQgaWYgdGhpcyBXaWRnZXQgaXMgW2Zsb2F0aW5nXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1mbG9hdGluZykuKlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctbWF4aW1pemVPbk1vYmlsZSlcbiAgICAgKi9cbiAgICBtYXhpbWl6ZU9uTW9iaWxlID8gOiBudW1iZXJ8c3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnRzIG1heFdpZHRoLiBDYW4gYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGEgTnVtYmVyICh3aGljaCB3aWxsIGhhdmUgJ3B4JyBhcHBlbmRlZCkuIE5vdGUgdGhhdFxuICAgICAqIGxpa2UgW3dpZHRoXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy13aWR0aCksICpyZWFkaW5nKiB0aGUgdmFsdWUgd2lsbCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUgaW4gcGl4ZWxzLlxuICAgICAqL1xuICAgIG1heFdpZHRoID8gOiBzdHJpbmd8bnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIGVsZW1lbnQncyBtaW5IZWlnaHQuIENhbiBiZSBlaXRoZXIgYSBTdHJpbmcgb3IgYSBOdW1iZXIgKHdoaWNoIHdpbGwgaGF2ZSAncHgnIGFwcGVuZGVkKS4gTm90ZSB0aGF0XG4gICAgICogbGlrZSBbaGVpZ2h0XShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1oZWlnaHQpLCAqcmVhZGluZyogdGhlIHZhbHVlIHdpbGwgcmV0dXJuIHRoZSBudW1lcmljIHZhbHVlIGluIHBpeGVscy5cbiAgICAgKi9cbiAgICBtaW5IZWlnaHQgPyA6IHN0cmluZ3xudW1iZXJcbiAgICAvKipcbiAgICAgKiBUaGUgZWxlbWVudHMgbWluV2lkdGguIENhbiBiZSBlaXRoZXIgYSBTdHJpbmcgb3IgYSBOdW1iZXIgKHdoaWNoIHdpbGwgaGF2ZSAncHgnIGFwcGVuZGVkKS4gTm90ZSB0aGF0XG4gICAgICogbGlrZSBbd2lkdGhdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLXdpZHRoKSwgKnJlYWRpbmcqIHRoZSB2YWx1ZSB3aWxsIHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSBpbiBwaXhlbHMuXG4gICAgICovXG4gICAgbWluV2lkdGggPyA6IHN0cmluZ3xudW1iZXJcbiAgICAvKipcbiAgICAgKiBXaGVuIHRoaXMgaXMgY29uZmlndXJlZCBhcyBgdHJ1ZWAgYSBbUmVzaXplT2JzZXJ2ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXNpemVPYnNlcnZlcilcbiAgICAgKiBpcyB1c2VkIHRvIG1vbml0b3IgdGhpcyBlbGVtZW50IGZvciBzaXplIGNoYW5nZXMgY2F1c2VkIGJ5IGVpdGhlciBzdHlsZSBtYW5pcHVsYXRpb24sIG9yIGJ5IENTU1xuICAgICAqIGxheW91dC5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLW1vbml0b3JSZXNpemUpXG4gICAgICovXG4gICAgbW9uaXRvclJlc2l6ZSA/IDogYm9vbGVhbnx7XG4gICAgICAgIGltbWVkaWF0ZT86IGJvb2xlYW5cbiAgICB9XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZmllbGQgd2hpY2ggaXMgdXNlZCBhcyBhIGtleSB0byBnZXQvc2V0IHZhbHVlcyBmcm9tL3RvIHRoZSBmaWVsZC5cbiAgICAgKiBVc2VkIHByaW9yIHRvIFtyZWZdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLXJlZikgYW5kIFtpZF0oI0NvcmUvd2lkZ2V0L1dpZGdldCNjb25maWctaWQpIGluXG4gICAgICogW0NvbnRhaW5lci52YWx1ZXNdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9Db250YWluZXIjcHJvcGVydHktdmFsdWVzKS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLW5hbWUpXG4gICAgICovXG4gICAgbmFtZSA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIG93bmluZyBXaWRnZXQgb2YgdGhpcyBXaWRnZXQuIElmIHRoaXMgV2lkZ2V0IGlzIGRpcmVjdGx5IGNvbnRhaW5lZCAodGhhdCBpcywgaXQgaXMgb25lIG9mIHRoZVxuICAgICAqIFtpdGVtc10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0NvbnRhaW5lciNwcm9wZXJ0eS1pdGVtcykgb2YgYSBDb250YWluZXIpLCB0aGlzIGNvbmZpZyB3aWxsIGJlIGlnbm9yZWQuIEluIHRoaXMgY2FzZVxuICAgICAqIHRoZSBvd25lciBpcyA8c3Ryb25nPmFsd2F5czwvc3Ryb25nPiB0aGUgZW5jYXBzdWxhdGluZyBDb250YWluZXIuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1vd25lcilcbiAgICAgKi9cbiAgICBvd25lciA/IDogV2lkZ2V0fGFueVxuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSBpbiBlbXB0eSBmaWVsZC5cbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlciA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogU2V0IHRvIGB0cnVlYCB3aGVuIGEgd2lkZ2V0IGlzIHJlbmRlcmVkIGludG8gYW5vdGhlciB3aWRnZXQncyBbY29udGVudEVsZW1lbnRdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjcHJvcGVydHktY29udGVudEVsZW1lbnQpLCBidXQgbXVzdFxuICAgICAqIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc3RhbmRhcmQgbGF5b3V0IG9mIHRoYXQgd2lkZ2V0LCBhbmQgbXVzdCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlbHkgdG8gdGhhdFxuICAgICAqIHdpZGdldCdzIFtjb250ZW50RWxlbWVudF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNwcm9wZXJ0eS1jb250ZW50RWxlbWVudCkuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1wb3NpdGlvbmVkKVxuICAgICAqL1xuICAgIHBvc2l0aW9uZWQgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IHRvb2x0aXAgZnJvbSBiZWluZyBkaXNwbGF5ZWQgb24gdG91Y2ggZGV2aWNlcy4gVXNlZnVsIGZvciBleGFtcGxlIGZvciBidXR0b25zIHRoYXQgZGlzcGxheSBhXG4gICAgICogbWVudSBvbiBjbGljayBldGMsIHNpbmNlIHRoZSB0b29sdGlwIHdvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAqL1xuICAgIHByZXZlbnRUb29sdGlwT25Ub3VjaCA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIE1ha2VzIHRoZSBmaWVsZCB1bm1vZGlmaWFibGUgYnkgdXNlciBhY3Rpb24uIFRoZSBpbnB1dCBhcmVhIGlzIG5vdCBlZGl0YWJsZSwgYW5kIHRyaWdnZXJzXG4gICAgICogYXJlIHVucmVzcG9uc2l2ZS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLXJlYWRPbmx5KVxuICAgICAqL1xuICAgIHJlYWRPbmx5ID8gOiBib29sZWFuXG4gICAgcmVsYXlTdG9yZUV2ZW50cyA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFByZWRlZmluZWQgc3R5bGUgdG8gdXNlIGZvciB0aGUgZmllbGQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1yZW5kaXRpb24pXG4gICAgICovXG4gICAgcmVuZGl0aW9uID8gOiAnb3V0bGluZWQnfCdmaWxsZWQnfHN0cmluZ1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZSBhcyBgdHJ1ZWAgdG8gaW5kaWNhdGUgdGhhdCBhIGBudWxsYCBmaWVsZCB2YWx1ZSBpcyB0byBiZSBtYXJrZWQgYXMgaW52YWxpZC4gVGhpcyB3aWxsXG4gICAgICogb3B0aW9uYWxseSBhcHBlbmQgYSAqIHRvIHRoZSBmaWVsZCBsYWJlbCBpZiBbc2hvd1JlcXVpcmVkSW5kaWNhdG9yXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvRmllbGQjcHJvcGVydHktc2hvd1JlcXVpcmVkSW5kaWNhdG9yKSBpcyBzZXQuXG4gICAgICovXG4gICAgcmVxdWlyZWQgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBUaGUgcmVzaXplIHN0eWxlIHRvIGFwcGx5IHRvIHRoZSBgJmx0O3RleHRhcmVhJmd0O2AgZWxlbWVudC5cbiAgICAgKi9cbiAgICByZXNpemUgPyA6ICdub25lJ3wnYm90aCd8J2hvcml6b250YWwnfCd2ZXJ0aWNhbCdcbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBbcmVhZE9ubHldKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9GaWVsZCNjb25maWctcmVhZE9ubHkpLCB0aGVuIHNldHRpbmcgdGhpcyBvcHRpb24gbWVhbnMgdGhhdCBwcmVzc2luZ1xuICAgICAqIHRoZSBgRVNDQVBFYCBrZXkgYWZ0ZXIgZWRpdGluZyB0aGUgZmllbGQgd2lsbCByZXZlcnQgdGhlIGZpZWxkIHRvIHRoZSB2YWx1ZSBpdCBoYWQgd2hlblxuICAgICAqIHRoZSB1c2VyIGZvY3VzZWQgdGhlIGZpZWxkLiBJZiB0aGUgZmllbGQgaXMgKm5vdCogY2hhbmdlZCBmcm9tIHdoZW4gZm9jdXNlZCwgdGhlIFtjbGVhcmFibGVdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9GaWVsZCNjb25maWctY2xlYXJhYmxlKVxuICAgICAqIGJlaGF2aW91ciB3aWxsIGJlIGFjdGl2YXRlZC5cbiAgICAgKi9cbiAgICByZXZlcnRPbkVzY2FwZSA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZSBhcyBgdHJ1ZWAgdG8gaGF2ZSB0aGUgY29tcG9uZW50IGRpc3BsYXkgYSB0cmFuc2x1Y2VudCByaXBwbGUgd2hlbiBpdHNcbiAgICAgKiBbZm9jdXNFbGVtZW50XShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I3Byb3BlcnR5LWZvY3VzRWxlbWVudCksIG9yIFtlbGVtZW50XSgjQ29yZS93aWRnZXQvV2lkZ2V0I3Byb3BlcnR5LWVsZW1lbnQpIGlzIHRhcHBlZCA8ZW0+aWYgdGhlXG4gICAgICogY3VycmVudCB0aGVtZSBzdXBwb3J0cyByaXBwbGVzPC9lbT4uIE91dCBvZiB0aGUgYm94LCBvbmx5IHRoZSBNYXRlcmlhbCB0aGVtZSBzdXBwb3J0cyByaXBwbGVzLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctcmlwcGxlKVxuICAgICAqL1xuICAgIHJpcHBsZSA/IDogYm9vbGVhbnx7XG4gICAgICAgIGRlbGVnYXRlPzogc3RyaW5nXG4gICAgICAgIGNvbG9yPzogc3RyaW5nXG4gICAgICAgIHJhZGl1cz86IG51bWJlclxuICAgICAgICBjbGlwPzogc3RyaW5nXG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIHlvdSBhcmUgcmVuZGVyaW5nIHRoaXMgd2lkZ2V0IHRvIGEgc2hhZG93IHJvb3QgaW5zaWRlIGEgd2ViIGNvbXBvbmVudCwgc2V0IHRoaXMgY29uZmlnIHRvIHRoZSBzaGFkb3dSb290LiBJZiBub3QgaW5zaWRlIGEgd2ViIGNvbXBvbmVudCwgc2V0IGl0IHRvIGBkb2N1bWVudC5ib2R5YFxuICAgICAqL1xuICAgIHJvb3RFbGVtZW50ID8gOiBTaGFkb3dSb290fEhUTUxFbGVtZW50XG4gICAgLyoqXG4gICAgICogVGhpcyBtYXkgYmUgY29uZmlndXJlZCBhcyBgdHJ1ZWAgdG8gbWFrZSB0aGUgd2lkZ2V0J3MgZWxlbWVudCB1c2UgdGhlIGBkaXJlY3Rpb246cnRsYCBzdHlsZS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLXJ0bClcbiAgICAgKi9cbiAgICBydGwgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoYXQgdG8gZG8gaWYgZG9jdW1lbnQgaXMgc2Nyb2xsZWQgd2hpbGUgV2lkZ2V0IGlzIHZpc2libGUgKG9ubHkgcmVsZXZhbnQgd2hlbiBmbG9hdGluZyBpcyBzZXQgdG8gYHRydWVgKS5cbiAgICAgKiBWYWxpZCB2YWx1ZXM6IMK0bnVsbMK0OiBkbyBub3RoaW5nLCDCtGhpZGXCtDogaGlkZSB0aGUgd2lkZ2V0IG9yIMK0cmVhbGlnbsK0OiByZWFsaWduIHRvIHRoZSB0YXJnZXQgaWYgcG9zc2libGUuXG4gICAgICovXG4gICAgc2Nyb2xsQWN0aW9uID8gOiAnaGlkZSd8J3JlYWxpZ24nfG51bGxcbiAgICAvKipcbiAgICAgKiAqT25seSB2YWxpZCBpZiB0aGlzIFdpZGdldCBpcyBbZmxvYXRpbmddKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjY29uZmlnLWZsb2F0aW5nKS4qXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy1zaG93QW5pbWF0aW9uKVxuICAgICAqL1xuICAgIHNob3dBbmltYXRpb24gPyA6IGJvb2xlYW58b2JqZWN0XG4gICAgLyoqXG4gICAgICogYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgZGlzcGxheSBhICogYWZ0ZXIgdGhlIGxhYmVsIGZvciB0aGlzIGZpZWxkIHdoZW4gaXQgaXMgW3JlcXVpcmVkXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvRmllbGQjcHJvcGVydHktcmVxdWlyZWQpLlxuICAgICAqL1xuICAgIHNob3dSZXF1aXJlZEluZGljYXRvciA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogU2V0IHRvIGBmYWxzZWAgdG8gbm90IHNob3cgdGhlIHRvb2x0aXAgd2hlbiB0aGlzIHdpZGdldCBpcyBbZGlzYWJsZWRdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjcHJvcGVydHktZGlzYWJsZWQpXG4gICAgICovXG4gICAgc2hvd1Rvb2x0aXBXaGVuRGlzYWJsZWQgPyA6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYHRydWVgLCBjb21wbGV0ZWx5IGJ5cGFzc2VzIHZhbGlkYXRpb24gbG9naWMgKGNvdWxkIGJlIHVzZXJmdWwgaWYgeW91ciBmaWVsZCBpcyBub3QgYGVkaXRhYmxlYFxuICAgICAqIHRvIHRoZSB1c2VyKS5cbiAgICAgKi9cbiAgICBza2lwVmFsaWRhdGlvbiA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpYyBjb250cm9sIG92ZXIgaG93IG1hbnkgY29sdW1ucyB0byBzcGFuIHdoZW4gdXNlZCBpbiBhIGdyaWQgbGF5b3V0LlxuICAgICAqL1xuICAgIHNwYW4gPyA6IG51bWJlclxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG5hdGl2ZSBgc3BlbGxjaGVja2AgcHJvcGVydHkgb2YgdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0b1xuICAgICAqIFtNRE5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc3BlbGxjaGVjaylcbiAgICAgKi9cbiAgICBzcGVsbENoZWNrID8gOiBib29sZWFuXG4gICAgLyoqXG4gICAgICogQSBjb25maWd1cmF0aW9uIGZvciB0aGUgW3RhYl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RhYikgY3JlYXRlZCBmb3IgdGhpcyB3aWRnZXQgd2hlbiBpdCBpcyBwbGFjZWQgaW4gYVxuICAgICAqIFtUYWJQYW5lbF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RhYlBhbmVsKS4gRm9yIGV4YW1wbGUsIHRoaXMgY29uZmlnIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIGljb24gb2YgdGhlIGB0YWJgIGZvclxuICAgICAqIHRoaXMgd2lkZ2V0OlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctdGFiKVxuICAgICAqL1xuICAgIHRhYiA/IDogYm9vbGVhbnxUYWJDb25maWdcbiAgICAvKipcbiAgICAgKiBUaGUgdGFiIGluZGV4IG9mIHRoZSBpbnB1dCBmaWVsZCBvciBmaWVsZHMsIG9yIGBudWxsYCBmb3IgbmF0dXJhbCB0YWIgb3JkZXIgKHJlY29tbWVuZGVkKS4gU2V0dGluZyB0byBgMGBcbiAgICAgKiBpcyBlcXVpdmFsZW50IHRvIG5hdHVyYWwgdGFiIG9yZGVyLCBidXQgaXMgdW5uZWNlc3NhcnkgZm9yIGZpZWxkcyBzaW5jZSB0aGV5IGFyZSBuYXR1cmFsbHkgdGFiYmFibGVcbiAgICAgKiAoaS5lLiwgYWNjZXNzaWJsZSB2aWEgdGhlIFRBQiBrZXkpLiBTZXR0aW5nIHRvIGAtMWAgZGlzYWJsZXMgdGFiYmFiaWxpdHkgYnV0IGFsbG93cyBmb3IgZm9jdXMgdG8gYmUgc2V0XG4gICAgICogdG8gdGhlIGVsZW1lbnQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLXRhYkluZGV4KVxuICAgICAqL1xuICAgIHRhYkluZGV4ID8gOiBudW1iZXJcbiAgICAvKipcbiAgICAgKiBUZXh0IGFsaWdubWVudDogJ2xlZnQnLCAnY2VudGVyJyBvciAncmlnaHQnLiBBbHNvIGFjY2VwdHMgZGlyZWN0aW9uIG5ldXRyYWwgJ3N0YXJ0JyBhbmQgJ2VuZCcuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy10ZXh0QWxpZ24pXG4gICAgICovXG4gICAgdGV4dEFsaWduID8gOiAnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wnc3RhcnQnfCdlbmQnXG4gICAgLyoqXG4gICAgICogQSB0aXRsZSB0byBkaXNwbGF5IGZvciB0aGUgd2lkZ2V0LiBPbmx5IGluIGVmZmVjdCB3aGVuIGluc2lkZSBhIGNvbnRhaW5lciB0aGF0IHVzZXMgaXQgKHN1Y2ggYXMgVGFiUGFuZWwpXG4gICAgICovXG4gICAgdGl0bGUgPyA6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFRvb2x0aXAgZm9yIHRoZSB3aWRnZXQsIGVpdGhlciBhcyBhIHN0cmluZyBvciBhcyBhIFRvb2x0aXAgY29uZmlnIG9iamVjdC5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjY29uZmlnLXRvb2x0aXApXG4gICAgICovXG4gICAgdG9vbHRpcCA/IDogc3RyaW5nfFRvb2x0aXBDb25maWd8bnVsbFxuICAgIC8qKlxuICAgICAqIFRoZSB0cmlnZ2VycyB0byBhZGQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgaW5wdXQgZmllbGQuIEVhY2ggcHJvcGVydHkgbmFtZSBpcyB0aGUgcmVmZXJlbmNlIGJ5IHdoaWNoXG4gICAgICogYW4gaW5zdGFudGlhdGVkIFRyaWdnZXIgV2lkZ2V0IG1heSBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgbGl2ZSBgdHJpZ2dlcnNgIHByb3BlcnR5LlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctdHJpZ2dlcnMpXG4gICAgICovXG4gICAgdHJpZ2dlcnMgPyA6IFJlY29yZDxzdHJpbmcsIEZpZWxkVHJpZ2dlckNvbmZpZz58UmVjb3JkPHN0cmluZywgV2lkZ2V0PlxuICAgIHR5cGUgPyA6ICd0ZXh0YXJlYWZpZWxkJ3wndGV4dGFyZWEnXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIENTUyBjbGFzcyBuYW1lIHN1ZmZpeGVzIHRvIGFwcGx5IHRvIHRoZSBlbGVtZW50cyByZW5kZXJlZCBieSB0aGlzIHdpZGdldC4gVGhpcyBtYXkgYmUgc3BlY2lmaWVkXG4gICAgICogYXMgYSBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nLCBhbiBhcnJheSBvZiBzdHJpbmdzLCBvciBhcyBhbiBvYmplY3QgaW4gd2hpY2ggcHJvcGVydHkgbmFtZXMgd2l0aCB0cnV0aHlcbiAgICAgKiB2YWx1ZXMgYXJlIHVzZWQgYXMgdGhlIGNsYXNzIG5hbWVzLlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWctdWkpXG4gICAgICovXG4gICAgdWkgPyA6IHN0cmluZ3xvYmplY3RcbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBub3QgaGlnaGxpZ2h0IGEgZmllbGQgYXMgaW52YWxpZCB3aGlsZSB0eXBpbmcsIHRvIGluc3RlYWQgc2hvdyBpdCBvbiBFTlRFUiBrZXkgcHJlc3NcbiAgICAgKiBvciBzaW1pbGFyLlxuICAgICAqL1xuICAgIHZhbGlkYXRlT25JbnB1dCA/IDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdmFsdWVcbiAgICAgKi9cbiAgICB2YWx1ZSA/IDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogQSB3aWRnZXRzIHdlaWdodCBkZXRlcm1pbmVzIGl0cyBwb3NpdGlvbiBhbW9uZyBzaWJsaW5ncyB3aGVuIGFkZGVkIHRvIGEgW0NvbnRhaW5lcl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0NvbnRhaW5lcikuXG4gICAgICogSGlnaGVyIHdlaWdodHMgZ28gZnVydGhlciBkb3duLlxuICAgICAqL1xuICAgIHdlaWdodCA/IDogbnVtYmVyXG4gICAgLyoqXG4gICAgICogV2lkZ2V0J3Mgd2lkdGgsIHVzZWQgdG8gc2V0IGVsZW1lbnQgYHN0eWxlLndpZHRoYC4gRWl0aGVyIHNwZWNpZnkgYSB2YWxpZCB3aWR0aCBzdHJpbmcgb3IgYSBudW1iZXIsIHdoaWNoXG4gICAgICogd2lsbCBnZXQgJ3B4JyBhcHBlbmRlZC4gV2UgcmVjb21tZW5kIHVzaW5nIENTUyBhcyB0aGUgcHJpbWFyeSB3YXkgdG8gY29udHJvbCB3aWR0aCwgYnV0IGluIHNvbWUgY2FzZXNcbiAgICAgKiB0aGlzIGNvbmZpZyBpcyBjb252ZW5pZW50LlxuICAgICAqL1xuICAgIHdpZHRoID8gOiBzdHJpbmd8bnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIHggcG9zaXRpb24gZm9yIHRoZSB3aWRnZXQuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2NvbmZpZy14KVxuICAgICAqL1xuICAgIHggPyA6IG51bWJlclxuICAgIC8qKlxuICAgICAqIFRoZSB5IHBvc2l0aW9uIGZvciB0aGUgd2lkZ2V0LlxuICAgICAqIC4uLlxuICAgICAqIFtWaWV3IG9ubGluZSBkb2NzLi4uXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvVGV4dEFyZWFGaWVsZCNjb25maWcteSlcbiAgICAgKi9cbiAgICB5ID8gOiBudW1iZXJcblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvciA6ICdicnludHVtLXRleHQtYXJlYS1maWVsZCcsXG4gICAgdGVtcGxhdGUgOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2VDbGFzcyA9IFRleHRBcmVhRmllbGQ7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlTmFtZSA9ICdUZXh0QXJlYUZpZWxkJztcblxuICAgIHByaXZhdGUgc3RhdGljIGJyeW50dW1FdmVudHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAnb25BY3Rpb24nLFxuICAgICAgICAnb25CZWZvcmVEZXN0cm95JyxcbiAgICAgICAgJ29uQmVmb3JlSGlkZScsXG4gICAgICAgICdvbkJlZm9yZVNob3cnLFxuICAgICAgICAnb25DYXRjaEFsbCcsXG4gICAgICAgICdvbkNoYW5nZScsXG4gICAgICAgICdvbkNsZWFyJyxcbiAgICAgICAgJ29uRGVzdHJveScsXG4gICAgICAgICdvbkVsZW1lbnRDcmVhdGVkJyxcbiAgICAgICAgJ29uRm9jdXNJbicsXG4gICAgICAgICdvbkZvY3VzT3V0JyxcbiAgICAgICAgJ29uSGlkZScsXG4gICAgICAgICdvbklucHV0JyxcbiAgICAgICAgJ29uUGFpbnQnLFxuICAgICAgICAnb25SZWFkT25seScsXG4gICAgICAgICdvblJlY29tcG9zZScsXG4gICAgICAgICdvblJlc2l6ZScsXG4gICAgICAgICdvblNob3cnLFxuICAgICAgICAnb25UcmlnZ2VyJ1xuICAgIF07XG5cbiAgICBwcml2YXRlIHN0YXRpYyBicnludHVtRmVhdHVyZU5hbWVzOiBzdHJpbmdbXSA9IFtcblxuICAgIF07XG5cbiAgICBwcml2YXRlIHN0YXRpYyBicnludHVtQ29uZmlnczogc3RyaW5nW10gPSBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudC5icnludHVtRmVhdHVyZU5hbWVzLmNvbmNhdChbXG4gICAgICAgICdhZG9wdCcsXG4gICAgICAgICdhbGlnbicsXG4gICAgICAgICdhbGlnblNlbGYnLFxuICAgICAgICAnYW5jaG9yJyxcbiAgICAgICAgJ2FwcGVuZFRvJyxcbiAgICAgICAgJ2FyaWFEZXNjcmlwdGlvbicsXG4gICAgICAgICdhcmlhTGFiZWwnLFxuICAgICAgICAnYXV0b0NvbXBsZXRlJyxcbiAgICAgICAgJ2F1dG9TZWxlY3QnLFxuICAgICAgICAnYmFkZ2UnLFxuICAgICAgICAnYnViYmxlRXZlbnRzJyxcbiAgICAgICAgJ2NhbGxPbkZ1bmN0aW9ucycsXG4gICAgICAgICdjYXRjaEV2ZW50SGFuZGxlckV4Y2VwdGlvbnMnLFxuICAgICAgICAnY2VudGVyZWQnLFxuICAgICAgICAnY2xlYXJhYmxlJyxcbiAgICAgICAgJ2NscycsXG4gICAgICAgICdjb2xvcicsXG4gICAgICAgICdjb2x1bW4nLFxuICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgJ2NvbnN0cmFpblRvJyxcbiAgICAgICAgJ2NvbnRhaW5lcicsXG4gICAgICAgICdjb250YWluVmFsdWVzJyxcbiAgICAgICAgJ2NvbnRlbnRFbGVtZW50Q2xzJyxcbiAgICAgICAgJ2RhdGFGaWVsZCcsXG4gICAgICAgICdkYXRhc2V0JyxcbiAgICAgICAgJ2RlZmF1bHRCaW5kUHJvcGVydHknLFxuICAgICAgICAnZGV0ZWN0Q1NTQ29tcGF0aWJpbGl0eUlzc3VlcycsXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICdkb2NrJyxcbiAgICAgICAgJ2RyYWdnYWJsZScsXG4gICAgICAgICdlZGl0YWJsZScsXG4gICAgICAgICdlbGVtZW50QXR0cmlidXRlcycsXG4gICAgICAgICdleHRyYURhdGEnLFxuICAgICAgICAnZmxleCcsXG4gICAgICAgICdmbG9hdGluZycsXG4gICAgICAgICdoZWlnaHQnLFxuICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgJ2hpZGVBbmltYXRpb24nLFxuICAgICAgICAnaGlnaGxpZ2h0RXh0ZXJuYWxDaGFuZ2UnLFxuICAgICAgICAnaGludCcsXG4gICAgICAgICdoaW50SHRtbCcsXG4gICAgICAgICdpZCcsXG4gICAgICAgICdpZ25vcmVQYXJlbnRSZWFkT25seScsXG4gICAgICAgICdpbmxpbmUnLFxuICAgICAgICAnaW5wdXRBbGlnbicsXG4gICAgICAgICdpbnB1dEF0dHJpYnV0ZXMnLFxuICAgICAgICAnaW5wdXRUYWcnLFxuICAgICAgICAnaW5wdXRUeXBlJyxcbiAgICAgICAgJ2lucHV0V2lkdGgnLFxuICAgICAgICAnaW5zZXJ0QmVmb3JlJyxcbiAgICAgICAgJ2luc2VydEZpcnN0JyxcbiAgICAgICAgJ2tleU1hcCcsXG4gICAgICAgICdrZXlTdHJva2VDaGFuZ2VEZWxheScsXG4gICAgICAgICdsYWJlbCcsXG4gICAgICAgICdsYWJlbENscycsXG4gICAgICAgICdsYWJlbFBvc2l0aW9uJyxcbiAgICAgICAgJ2xhYmVscycsXG4gICAgICAgICdsYWJlbFdpZHRoJyxcbiAgICAgICAgJ2xpc3RlbmVycycsXG4gICAgICAgICdsb2NhbGVDbGFzcycsXG4gICAgICAgICdsb2NhbGl6YWJsZScsXG4gICAgICAgICdsb2NhbGl6YWJsZVByb3BlcnRpZXMnLFxuICAgICAgICAnbWFyZ2luJyxcbiAgICAgICAgJ21hc2tEZWZhdWx0cycsXG4gICAgICAgICdtYXNrZWQnLFxuICAgICAgICAnbWF4SGVpZ2h0JyxcbiAgICAgICAgJ21heGltaXplT25Nb2JpbGUnLFxuICAgICAgICAnbWF4V2lkdGgnLFxuICAgICAgICAnbWluSGVpZ2h0JyxcbiAgICAgICAgJ21pbldpZHRoJyxcbiAgICAgICAgJ21vbml0b3JSZXNpemUnLFxuICAgICAgICAnbmFtZScsXG4gICAgICAgICdvd25lcicsXG4gICAgICAgICdwbGFjZWhvbGRlcicsXG4gICAgICAgICdwb3NpdGlvbmVkJyxcbiAgICAgICAgJ3ByZXZlbnRUb29sdGlwT25Ub3VjaCcsXG4gICAgICAgICdyZWFkT25seScsXG4gICAgICAgICdyZWxheVN0b3JlRXZlbnRzJyxcbiAgICAgICAgJ3JlbmRpdGlvbicsXG4gICAgICAgICdyZXF1aXJlZCcsXG4gICAgICAgICdyZXNpemUnLFxuICAgICAgICAncmV2ZXJ0T25Fc2NhcGUnLFxuICAgICAgICAncmlwcGxlJyxcbiAgICAgICAgJ3Jvb3RFbGVtZW50JyxcbiAgICAgICAgJ3J0bCcsXG4gICAgICAgICdzY3JvbGxBY3Rpb24nLFxuICAgICAgICAnc2hvd0FuaW1hdGlvbicsXG4gICAgICAgICdzaG93UmVxdWlyZWRJbmRpY2F0b3InLFxuICAgICAgICAnc2hvd1Rvb2x0aXBXaGVuRGlzYWJsZWQnLFxuICAgICAgICAnc2tpcFZhbGlkYXRpb24nLFxuICAgICAgICAnc3BhbicsXG4gICAgICAgICdzcGVsbENoZWNrJyxcbiAgICAgICAgJ3RhYicsXG4gICAgICAgICd0YWJJbmRleCcsXG4gICAgICAgICd0ZXh0QWxpZ24nLFxuICAgICAgICAndGl0bGUnLFxuICAgICAgICAndG9vbHRpcCcsXG4gICAgICAgICd0cmlnZ2VycycsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ3VpJyxcbiAgICAgICAgJ3ZhbGlkYXRlT25JbnB1dCcsXG4gICAgICAgICd2YWx1ZScsXG4gICAgICAgICd3ZWlnaHQnLFxuICAgICAgICAnd2lkdGgnLFxuICAgICAgICAneCcsXG4gICAgICAgICd5J1xuICAgIF0pO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnJ5bnR1bUNvbmZpZ3NPbmx5OiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ2Fkb3B0JyxcbiAgICAgICAgJ2FsaWduJyxcbiAgICAgICAgJ2FuY2hvcicsXG4gICAgICAgICdhcmlhRGVzY3JpcHRpb24nLFxuICAgICAgICAnYXJpYUxhYmVsJyxcbiAgICAgICAgJ2F1dG9Db21wbGV0ZScsXG4gICAgICAgICdhdXRvU2VsZWN0JyxcbiAgICAgICAgJ2J1YmJsZUV2ZW50cycsXG4gICAgICAgICdjZW50ZXJlZCcsXG4gICAgICAgICdjbGVhcmFibGUnLFxuICAgICAgICAnY29sb3InLFxuICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgJ2NvbnN0cmFpblRvJyxcbiAgICAgICAgJ2NvbnRhaW5lcicsXG4gICAgICAgICdjb250YWluVmFsdWVzJyxcbiAgICAgICAgJ2NvbnRlbnRFbGVtZW50Q2xzJyxcbiAgICAgICAgJ2RhdGFGaWVsZCcsXG4gICAgICAgICdkZWZhdWx0QmluZFByb3BlcnR5JyxcbiAgICAgICAgJ2RldGVjdENTU0NvbXBhdGliaWxpdHlJc3N1ZXMnLFxuICAgICAgICAnZG9jaycsXG4gICAgICAgICdkcmFnZ2FibGUnLFxuICAgICAgICAnZWxlbWVudEF0dHJpYnV0ZXMnLFxuICAgICAgICAnZmxvYXRpbmcnLFxuICAgICAgICAnaGlkZUFuaW1hdGlvbicsXG4gICAgICAgICdoaWdobGlnaHRFeHRlcm5hbENoYW5nZScsXG4gICAgICAgICdoaW50JyxcbiAgICAgICAgJ2hpbnRIdG1sJyxcbiAgICAgICAgJ2lnbm9yZVBhcmVudFJlYWRPbmx5JyxcbiAgICAgICAgJ2lubGluZScsXG4gICAgICAgICdpbnB1dEFsaWduJyxcbiAgICAgICAgJ2lucHV0QXR0cmlidXRlcycsXG4gICAgICAgICdpbnB1dFRhZycsXG4gICAgICAgICdpbnB1dFR5cGUnLFxuICAgICAgICAnaW5wdXRXaWR0aCcsXG4gICAgICAgICdrZXlTdHJva2VDaGFuZ2VEZWxheScsXG4gICAgICAgICdsYWJlbENscycsXG4gICAgICAgICdsYWJlbFBvc2l0aW9uJyxcbiAgICAgICAgJ2xhYmVscycsXG4gICAgICAgICdsYWJlbFdpZHRoJyxcbiAgICAgICAgJ2xpc3RlbmVycycsXG4gICAgICAgICdsb2NhbGVDbGFzcycsXG4gICAgICAgICdsb2NhbGl6YWJsZScsXG4gICAgICAgICdsb2NhbGl6YWJsZVByb3BlcnRpZXMnLFxuICAgICAgICAnbWFza0RlZmF1bHRzJyxcbiAgICAgICAgJ21hc2tlZCcsXG4gICAgICAgICdtb25pdG9yUmVzaXplJyxcbiAgICAgICAgJ25hbWUnLFxuICAgICAgICAnb3duZXInLFxuICAgICAgICAncG9zaXRpb25lZCcsXG4gICAgICAgICdwcmV2ZW50VG9vbHRpcE9uVG91Y2gnLFxuICAgICAgICAncmVsYXlTdG9yZUV2ZW50cycsXG4gICAgICAgICdyZXNpemUnLFxuICAgICAgICAncmV2ZXJ0T25Fc2NhcGUnLFxuICAgICAgICAncmlwcGxlJyxcbiAgICAgICAgJ3Jvb3RFbGVtZW50JyxcbiAgICAgICAgJ3Njcm9sbEFjdGlvbicsXG4gICAgICAgICdzaG93QW5pbWF0aW9uJyxcbiAgICAgICAgJ3Nob3dUb29sdGlwV2hlbkRpc2FibGVkJyxcbiAgICAgICAgJ3NraXBWYWxpZGF0aW9uJyxcbiAgICAgICAgJ3NwZWxsQ2hlY2snLFxuICAgICAgICAndGFiJyxcbiAgICAgICAgJ3RhYkluZGV4JyxcbiAgICAgICAgJ3RleHRBbGlnbicsXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ3VpJyxcbiAgICAgICAgJ3ZhbGlkYXRlT25JbnB1dCcsXG4gICAgICAgICd3ZWlnaHQnXG4gICAgXTtcblxuICAgIHByaXZhdGUgc3RhdGljIGJyeW50dW1Qcm9wczogc3RyaW5nW10gPSBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudC5icnludHVtRmVhdHVyZU5hbWVzLmNvbmNhdChbXG4gICAgICAgICdhbGlnblNlbGYnLFxuICAgICAgICAnYW5jaG9yU2l6ZScsXG4gICAgICAgICdhcHBlbmRUbycsXG4gICAgICAgICdiYWRnZScsXG4gICAgICAgICdjYWxsT25GdW5jdGlvbnMnLFxuICAgICAgICAnY2F0Y2hFdmVudEhhbmRsZXJFeGNlcHRpb25zJyxcbiAgICAgICAgJ2NscycsXG4gICAgICAgICdjb2x1bW4nLFxuICAgICAgICAnY29udGVudCcsXG4gICAgICAgICdkYXRhc2V0JyxcbiAgICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgICAgJ2VkaXRhYmxlJyxcbiAgICAgICAgJ2V4dHJhRGF0YScsXG4gICAgICAgICdmbGV4JyxcbiAgICAgICAgJ2ZvY3VzVmlzaWJsZScsXG4gICAgICAgICdoZWlnaHQnLFxuICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgJ2h0bWwnLFxuICAgICAgICAnaWQnLFxuICAgICAgICAnaW5wdXQnLFxuICAgICAgICAnaW5zZXJ0QmVmb3JlJyxcbiAgICAgICAgJ2luc2VydEZpcnN0JyxcbiAgICAgICAgJ2tleU1hcCcsXG4gICAgICAgICdsYWJlbCcsXG4gICAgICAgICdtYXJnaW4nLFxuICAgICAgICAnbWF4SGVpZ2h0JyxcbiAgICAgICAgJ21heGltaXplT25Nb2JpbGUnLFxuICAgICAgICAnbWF4V2lkdGgnLFxuICAgICAgICAnbWluSGVpZ2h0JyxcbiAgICAgICAgJ21pbldpZHRoJyxcbiAgICAgICAgJ3BhcmVudCcsXG4gICAgICAgICdwbGFjZWhvbGRlcicsXG4gICAgICAgICdyZWFkT25seScsXG4gICAgICAgICdyZW5kaXRpb24nLFxuICAgICAgICAncmVxdWlyZWQnLFxuICAgICAgICAncnRsJyxcbiAgICAgICAgJ3Njcm9sbGFibGUnLFxuICAgICAgICAnc2hvd1JlcXVpcmVkSW5kaWNhdG9yJyxcbiAgICAgICAgJ3NwYW4nLFxuICAgICAgICAndG9vbHRpcCcsXG4gICAgICAgICd0cmlnZ2VycycsXG4gICAgICAgICd2YWx1ZScsXG4gICAgICAgICd3aWR0aCcsXG4gICAgICAgICd4JyxcbiAgICAgICAgJ3knXG4gICAgXSk7XG5cbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgcHVibGljIGluc3RhbmNlITogVGV4dEFyZWFGaWVsZDtcblxuICAgIHByaXZhdGUgYnJ5bnR1bUNvbmZpZyA9IHtcbiAgICAgICAgYWRvcHQgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgYXBwZW5kVG8gICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaHJlZiAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgYW5ndWxhckNvbXBvbmVudCA6IHRoaXMsXG4gICAgICAgIGZlYXR1cmVzICAgICAgICAgOiB7fSxcbiAgICAgICAgbGlzdGVuZXJzICAgICAgICA6IHt9XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBDb25maWdzIG9ubHlcbiAgICBASW5wdXQoKSBhZG9wdCAgICAgICAgICAgICAgICAgICAgICAgICEgOiBIVE1MRWxlbWVudHxzdHJpbmc7XG4gICAgQElucHV0KCkgYWxpZ24gICAgICAgICAgICAgICAgICAgICAgICAhIDogQWxpZ25TcGVjfHN0cmluZztcbiAgICBASW5wdXQoKSBhbmNob3IgICAgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGFyaWFEZXNjcmlwdGlvbiAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcmlhTGFiZWwgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYXV0b0NvbXBsZXRlICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGF1dG9TZWxlY3QgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYnViYmxlRXZlbnRzICAgICAgICAgICAgICAgICAhIDogb2JqZWN0O1xuICAgIEBJbnB1dCgpIGNlbnRlcmVkICAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2xlYXJhYmxlICAgICAgICAgICAgICAgICAgICAhIDogYm9vbGVhbnxGaWVsZFRyaWdnZXJDb25maWc7XG4gICAgQElucHV0KCkgY29sb3IgICAgICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgISA6IG9iamVjdDtcbiAgICBASW5wdXQoKSBjb25zdHJhaW5UbyAgICAgICAgICAgICAgICAgICEgOiBIVE1MRWxlbWVudHxXaWRnZXR8UmVjdGFuZ2xlO1xuICAgIEBJbnB1dCgpIGNvbnRhaW5lciAgICAgICAgICAgICAgICAgICAgISA6IFJlY29yZDxzdHJpbmcsIENvbnRhaW5lckl0ZW1Db25maWc+fENvbnRhaW5lckl0ZW1Db25maWdbXXxGaWVsZENvbnRhaW5lckNvbmZpZ3xGaWVsZENvbnRhaW5lcjtcbiAgICBASW5wdXQoKSBjb250YWluVmFsdWVzICAgICAgICAgICAgICAgICEgOiBib29sZWFufHN0cmluZ3woKGZpZWxkOiBGaWVsZCkgPT4gYm9vbGVhbik7XG4gICAgQElucHV0KCkgY29udGVudEVsZW1lbnRDbHMgICAgICAgICAgICAhIDogc3RyaW5nfG9iamVjdDtcbiAgICBASW5wdXQoKSBkYXRhRmllbGQgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGVmYXVsdEJpbmRQcm9wZXJ0eSAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldGVjdENTU0NvbXBhdGliaWxpdHlJc3N1ZXMgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZG9jayAgICAgICAgICAgICAgICAgICAgICAgICAhIDogJ3RvcCd8J2JvdHRvbSd8J2xlZnQnfCdyaWdodCd8J3N0YXJ0J3wnZW5kJ3wnaGVhZGVyJ3wncHJlLWhlYWRlcid8b2JqZWN0O1xuICAgIEBJbnB1dCgpIGRyYWdnYWJsZSAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW58e1xuICAgICAgICBoYW5kbGVTZWxlY3Rvcj86IHN0cmluZ1xuICAgIH07XG4gICAgQElucHV0KCkgZWxlbWVudEF0dHJpYnV0ZXMgICAgICAgICAgICAhIDogUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bGw+O1xuICAgIEBJbnB1dCgpIGZsb2F0aW5nICAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUFuaW1hdGlvbiAgICAgICAgICAgICAgICAhIDogYm9vbGVhbnxvYmplY3Q7XG4gICAgQElucHV0KCkgaGlnaGxpZ2h0RXh0ZXJuYWxDaGFuZ2UgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaW50ICAgICAgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8KChkYXRhOiB7IHNvdXJjZTogRmllbGQsIHZhbHVlOiBhbnkgfSkgPT4gc3RyaW5nKTtcbiAgICBASW5wdXQoKSBoaW50SHRtbCAgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8KChkYXRhOiB7IHNvdXJjZTogRmllbGQsIHZhbHVlOiBhbnkgfSkgPT4gc3RyaW5nKTtcbiAgICBASW5wdXQoKSBpZ25vcmVQYXJlbnRSZWFkT25seSAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5wdXRBbGlnbiAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0QXR0cmlidXRlcyAgICAgICAgICAgICAgISA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgQElucHV0KCkgaW5wdXRUYWcgICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0VHlwZSAgICAgICAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSBpbnB1dFdpZHRoICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8bnVtYmVyO1xuICAgIEBJbnB1dCgpIGtleVN0cm9rZUNoYW5nZURlbGF5ICAgICAgICAgISA6IG51bWJlcjtcbiAgICBASW5wdXQoKSBsYWJlbENscyAgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8b2JqZWN0O1xuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb24gICAgICAgICAgICAgICAgISA6ICdiZWZvcmUnfCdhYm92ZSd8bnVsbDtcbiAgICBASW5wdXQoKSBsYWJlbHMgICAgICAgICAgICAgICAgICAgICAgICEgOiBvYmplY3RbXTtcbiAgICBASW5wdXQoKSBsYWJlbFdpZHRoICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8bnVtYmVyO1xuICAgIEBJbnB1dCgpIGxpc3RlbmVycyAgICAgICAgICAgICAgICAgICAgISA6IFRleHRBcmVhRmllbGRMaXN0ZW5lcnM7XG4gICAgQElucHV0KCkgbG9jYWxlQ2xhc3MgICAgICAgICAgICAgICAgICAhIDogdHlwZW9mIEJhc2U7XG4gICAgQElucHV0KCkgbG9jYWxpemFibGUgICAgICAgICAgICAgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NhbGl6YWJsZVByb3BlcnRpZXMgICAgICAgICEgOiBzdHJpbmdbXTtcbiAgICBASW5wdXQoKSBtYXNrRGVmYXVsdHMgICAgICAgICAgICAgICAgICEgOiBNYXNrQ29uZmlnO1xuICAgIEBJbnB1dCgpIG1hc2tlZCAgICAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW58c3RyaW5nfE1hc2tDb25maWc7XG4gICAgQElucHV0KCkgbW9uaXRvclJlc2l6ZSAgICAgICAgICAgICAgICAhIDogYm9vbGVhbnx7XG4gICAgICAgIGltbWVkaWF0ZT86IGJvb2xlYW5cbiAgICB9O1xuICAgIEBJbnB1dCgpIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSBvd25lciAgICAgICAgICAgICAgICAgICAgICAgICEgOiBXaWRnZXR8YW55O1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uZWQgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHJldmVudFRvb2x0aXBPblRvdWNoICAgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByZWxheVN0b3JlRXZlbnRzICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgISA6ICdub25lJ3wnYm90aCd8J2hvcml6b250YWwnfCd2ZXJ0aWNhbCc7XG4gICAgQElucHV0KCkgcmV2ZXJ0T25Fc2NhcGUgICAgICAgICAgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByaXBwbGUgICAgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFufHtcbiAgICAgICAgZGVsZWdhdGU/OiBzdHJpbmdcbiAgICAgICAgY29sb3I/OiBzdHJpbmdcbiAgICAgICAgcmFkaXVzPzogbnVtYmVyXG4gICAgICAgIGNsaXA/OiBzdHJpbmdcbiAgICB9O1xuICAgIEBJbnB1dCgpIHJvb3RFbGVtZW50ICAgICAgICAgICAgICAgICAgISA6IFNoYWRvd1Jvb3R8SFRNTEVsZW1lbnQ7XG4gICAgQElucHV0KCkgc2Nyb2xsQWN0aW9uICAgICAgICAgICAgICAgICAhIDogJ2hpZGUnfCdyZWFsaWduJ3xudWxsO1xuICAgIEBJbnB1dCgpIHNob3dBbmltYXRpb24gICAgICAgICAgICAgICAgISA6IGJvb2xlYW58b2JqZWN0O1xuICAgIEBJbnB1dCgpIHNob3dUb29sdGlwV2hlbkRpc2FibGVkICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2tpcFZhbGlkYXRpb24gICAgICAgICAgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzcGVsbENoZWNrICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRhYiAgICAgICAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW58VGFiQ29uZmlnO1xuICAgIEBJbnB1dCgpIHRhYkluZGV4ICAgICAgICAgICAgICAgICAgICAgISA6IG51bWJlcjtcbiAgICBASW5wdXQoKSB0ZXh0QWxpZ24gICAgICAgICAgICAgICAgICAgICEgOiAnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wnc3RhcnQnfCdlbmQnO1xuICAgIEBJbnB1dCgpIHRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICEgOiAndGV4dGFyZWFmaWVsZCd8J3RleHRhcmVhJztcbiAgICBASW5wdXQoKSB1aSAgICAgICAgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8b2JqZWN0O1xuICAgIEBJbnB1dCgpIHZhbGlkYXRlT25JbnB1dCAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgd2VpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyO1xuXG4gICAgLy8gQ29uZmlncyBhbmQgcHJvcGVydGllc1xuICAgIEBJbnB1dCgpIGFsaWduU2VsZiAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFwcGVuZFRvICAgICAgICAgICAgICAgICAgICAhIDogSFRNTEVsZW1lbnR8c3RyaW5nO1xuICAgIEBJbnB1dCgpIGJhZGdlICAgICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNhbGxPbkZ1bmN0aW9ucyAgICAgICAgICAgICAhIDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYXRjaEV2ZW50SGFuZGxlckV4Y2VwdGlvbnMgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY2xzICAgICAgICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8b2JqZWN0O1xuICAgIEBJbnB1dCgpIGNvbHVtbiAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGRhdGFzZXQgICAgICAgICAgICAgICAgICAgICAhIDogb2JqZWN0fFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgQElucHV0KCkgZGlzYWJsZWQgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFufCdpbmVydCc7XG4gICAgQElucHV0KCkgZWRpdGFibGUgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGV4dHJhRGF0YSAgICAgICAgICAgICAgICAgICAhIDogYW55O1xuICAgIEBJbnB1dCgpIGZsZXggICAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyfHN0cmluZztcbiAgICBASW5wdXQoKSBoZWlnaHQgICAgICAgICAgICAgICAgICAgICAgISA6IG51bWJlcnxzdHJpbmc7XG4gICAgQElucHV0KCkgaGlkZGVuICAgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlkICAgICAgICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGluc2VydEJlZm9yZSAgICAgICAgICAgICAgICAhIDogSFRNTEVsZW1lbnR8c3RyaW5nO1xuICAgIEBJbnB1dCgpIGluc2VydEZpcnN0ICAgICAgICAgICAgICAgICAhIDogSFRNTEVsZW1lbnR8c3RyaW5nO1xuICAgIEBJbnB1dCgpIGtleU1hcCAgICAgICAgICAgICAgICAgICAgICAhIDogUmVjb3JkPHN0cmluZywgS2V5TWFwQ29uZmlnPjtcbiAgICBASW5wdXQoKSBsYWJlbCAgICAgICAgICAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSBtYXJnaW4gICAgICAgICAgICAgICAgICAgICAgISA6IG51bWJlcnxzdHJpbmc7XG4gICAgQElucHV0KCkgbWF4SGVpZ2h0ICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8bnVtYmVyO1xuICAgIEBJbnB1dCgpIG1heGltaXplT25Nb2JpbGUgICAgICAgICAgICAhIDogbnVtYmVyfHN0cmluZztcbiAgICBASW5wdXQoKSBtYXhXaWR0aCAgICAgICAgICAgICAgICAgICAgISA6IHN0cmluZ3xudW1iZXI7XG4gICAgQElucHV0KCkgbWluSGVpZ2h0ICAgICAgICAgICAgICAgICAgICEgOiBzdHJpbmd8bnVtYmVyO1xuICAgIEBJbnB1dCgpIG1pbldpZHRoICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nfG51bWJlcjtcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciAgICAgICAgICAgICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSByZWFkT25seSAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcmVuZGl0aW9uICAgICAgICAgICAgICAgICAgICEgOiAnb3V0bGluZWQnfCdmaWxsZWQnfHN0cmluZztcbiAgICBASW5wdXQoKSByZXF1aXJlZCAgICAgICAgICAgICAgICAgICAgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsICAgICAgICAgICAgICAgICAgICAgICAgICEgOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dSZXF1aXJlZEluZGljYXRvciAgICAgICAhIDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNwYW4gICAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHRvb2x0aXAgICAgICAgICAgICAgICAgICAgICAhIDogc3RyaW5nfFRvb2x0aXBDb25maWd8bnVsbDtcbiAgICBASW5wdXQoKSB0cmlnZ2VycyAgICAgICAgICAgICAgICAgICAgISA6IFJlY29yZDxzdHJpbmcsIEZpZWxkVHJpZ2dlckNvbmZpZz58UmVjb3JkPHN0cmluZywgV2lkZ2V0PjtcbiAgICBASW5wdXQoKSB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgISA6IGFueXxzdHJpbmc7XG4gICAgQElucHV0KCkgd2lkdGggICAgICAgICAgICAgICAgICAgICAgICEgOiBudW1iZXJ8c3RyaW5nO1xuICAgIEBJbnB1dCgpIHggICAgICAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHkgICAgICAgICAgICAgICAgICAgICAgICAgICAhIDogbnVtYmVyO1xuXG4gICAgLy8gUHJvcGVydGllcyBvbmx5XG4gICAgQElucHV0KCkgYW5jaG9yU2l6ZSAgICEgOiBudW1iZXJbXTtcbiAgICBASW5wdXQoKSBjb250ZW50ICAgICAgISA6IHN0cmluZztcbiAgICBASW5wdXQoKSBmb2N1c1Zpc2libGUgISA6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaHRtbCAgICAgICAgICEgOiBzdHJpbmd8KCh3aWRnZXQ6IFdpZGdldCkgPT4gc3RyaW5nKXxEb21Db25maWd8RG9tQ29uZmlnW118VnVlQ29uZmlnO1xuICAgIEBJbnB1dCgpIGlucHV0ICAgICAgICAhIDogSFRNTEVsZW1lbnQ7XG4gICAgQElucHV0KCkgcGFyZW50ICAgICAgICEgOiBXaWRnZXQ7XG4gICAgQElucHV0KCkgc2Nyb2xsYWJsZSAgICEgOiBTY3JvbGxlcjtcblxuICAgIC8vIEV2ZW50cyBlbWl0dGVyc1xuICAgIC8qKlxuICAgICAqIFVzZXIgcGVyZm9ybWVkIGRlZmF1bHQgYWN0aW9uICh0eXBlZCBpbnRvIHRoaXMgZmllbGQpLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LkZpZWxkLGFueX0gZXZlbnQuc291cmNlIFRoaXMgRmllbGRcbiAgICAgKiBAcGFyYW0ge3N0cmluZyxudW1iZXIsYm9vbGVhbixhbnl9IGV2ZW50LnZhbHVlIFRoaXMgZmllbGQncyB2YWx1ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nLG51bWJlcixib29sZWFuLGFueX0gZXZlbnQub2xkVmFsdWUgVGhpcyBmaWVsZCdzIHByZXZpb3VzIHZhbHVlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBldmVudC52YWxpZCBUcnVlIGlmIHRoaXMgZmllbGQgaXMgaW4gYSB2YWxpZCBzdGF0ZVxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50LmV2ZW50IFRoZSB0cmlnZ2VyaW5nIERPTSBldmVudCBpZiBhbnlcbiAgICAgKiBAcGFyYW0ge0NvcmUuZGF0YS5Nb2RlbH0gZXZlbnQucmVjb3JkIFNlbGVjdGVkIHJlY29yZC4gQXZhaWxhYmxlIGZvciBmaWVsZHMgd2l0aCByZWNvcmRzIHNlbGVjdGlvbiBmdW5jdGlvbmFsaXR5XG4gICAgICogQHBhcmFtIHtDb3JlLmRhdGEuTW9kZWxbXX0gZXZlbnQucmVjb3JkcyBTZWxlY3RlZCByZWNvcmRzIGFzIGFuIGFycmF5LiBBdmFpbGFibGUgZm9yIGZpZWxkcyB3aXRoIHJlY29yZHMgc2VsZWN0aW9uIGZ1bmN0aW9uYWxpdHlcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV2ZW50LnVzZXJBY3Rpb24gVHJpZ2dlcmVkIGJ5IHVzZXIgdGFraW5nIGFuIGFjdGlvbiAoYHRydWVgKSBvciBieSBzZXR0aW5nIGEgdmFsdWUgKGBmYWxzZWApXG4gICAgICogQHBhcmFtIHtib29sZWFufSBldmVudC5jaGVja2VkXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQWN0aW9uOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgc291cmNlOiBGaWVsZHxhbnksIHZhbHVlOiBzdHJpbmd8bnVtYmVyfGJvb2xlYW58YW55LCBvbGRWYWx1ZTogc3RyaW5nfG51bWJlcnxib29sZWFufGFueSwgdmFsaWQ6IGJvb2xlYW4sIGV2ZW50OiBFdmVudCwgcmVjb3JkOiBNb2RlbCwgcmVjb3JkczogTW9kZWxbXSwgdXNlckFjdGlvbjogYm9vbGVhbiwgY2hlY2tlZDogYm9vbGVhbiB9KSA9PiB2b2lkKXxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogRmlyZXMgYmVmb3JlIGFuIG9iamVjdCBpcyBkZXN0cm95ZWQuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEV2ZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSB7Q29yZS5CYXNlfSBldmVudC5zb3VyY2UgVGhlIE9iamVjdCB0aGF0IGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVEZXN0cm95OiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgc291cmNlOiBCYXNlIH0pID0+IHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYmVmb3JlIGEgd2lkZ2V0IGlzIGhpZGRlbi4gUmV0dXJuIGBmYWxzZWAgdG8gcHJldmVudCB0aGUgYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQuc291cmNlIFRoZSB3aWRnZXQgYmVpbmcgaGlkZGVuLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkJlZm9yZUhpZGU6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IFdpZGdldCB9KSA9PiBQcm9taXNlPGJvb2xlYW4+fGJvb2xlYW58dm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBiZWZvcmUgYSB3aWRnZXQgaXMgc2hvd24uIFJldHVybiBgZmFsc2VgIHRvIHByZXZlbnQgdGhlIGFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgRXZlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHtDb3JlLndpZGdldC5XaWRnZXQsYW55fSBldmVudC5zb3VyY2UgVGhlIHdpZGdldCBiZWluZyBzaG93blxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkJlZm9yZVNob3c6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IFdpZGdldHxhbnkgfSkgPT4gUHJvbWlzZTxib29sZWFuPnxib29sZWFufHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIGFueSBvdGhlciBldmVudCBpcyBmaXJlZCBmcm9tIHRoZSBvYmplY3QuXG4gICAgICogLi4uXG4gICAgICogW1ZpZXcgb25saW5lIGRvY3MuLi5dKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9UZXh0QXJlYUZpZWxkI2V2ZW50LWNhdGNoQWxsKVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge3tba2V5OiBzdHJpbmddOiBhbnksIHR5cGU6IHN0cmluZ319IGV2ZW50LmV2ZW50IFRoZSBPYmplY3QgdGhhdCBjb250YWlucyBldmVudCBkZXRhaWxzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50LmV2ZW50LnR5cGUgVGhlIHR5cGUgb2YgdGhlIGV2ZW50IHdoaWNoIGlzIGNhdWdodCBieSB0aGUgbGlzdGVuZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DYXRjaEFsbDogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjwoKGV2ZW50OiB7W2tleTogc3RyaW5nXTogYW55LCB0eXBlOiBzdHJpbmd9KSA9PiB2b2lkKXxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGlzIGZpZWxkJ3MgdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgRXZlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHtDb3JlLndpZGdldC5GaWVsZCxhbnl9IGV2ZW50LnNvdXJjZSBUaGlzIEZpZWxkXG4gICAgICogQHBhcmFtIHtzdHJpbmcsbnVtYmVyLGJvb2xlYW4sYW55fSBldmVudC52YWx1ZSBUaGlzIGZpZWxkJ3MgdmFsdWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZyxudW1iZXIsYm9vbGVhbixhbnl9IGV2ZW50Lm9sZFZhbHVlIFRoaXMgZmllbGQncyBwcmV2aW91cyB2YWx1ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXZlbnQudmFsaWQgVHJ1ZSBpZiB0aGlzIGZpZWxkIGlzIGluIGEgdmFsaWQgc3RhdGVcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudC5ldmVudCBUaGUgdHJpZ2dlcmluZyBET00gZXZlbnQgaWYgYW55XG4gICAgICogQHBhcmFtIHtib29sZWFufSBldmVudC51c2VyQWN0aW9uIFRyaWdnZXJlZCBieSB1c2VyIHRha2luZyBhbiBhY3Rpb24gKGB0cnVlYCkgb3IgYnkgc2V0dGluZyBhIHZhbHVlIChgZmFsc2VgKVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXZlbnQuY2hlY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjwoKGV2ZW50OiB7IHNvdXJjZTogRmllbGR8YW55LCB2YWx1ZTogc3RyaW5nfG51bWJlcnxib29sZWFufGFueSwgb2xkVmFsdWU6IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxhbnksIHZhbGlkOiBib29sZWFuLCBldmVudDogRXZlbnQsIHVzZXJBY3Rpb246IGJvb2xlYW4sIGNoZWNrZWQ6IGJvb2xlYW4gfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIEZpcmVkIHdoZW4gdGhpcyBmaWVsZCBpcyBbY2xlYXJlZF0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0ZpZWxkI2Z1bmN0aW9uLWNsZWFyKS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjZXZlbnQtY2xlYXIpXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEV2ZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSB7Q29yZS53aWRnZXQuRmllbGQsYW55fSBldmVudC5zb3VyY2UgVGhpcyBGaWVsZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNsZWFyOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgc291cmNlOiBGaWVsZHxhbnkgfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gYW4gb2JqZWN0IGlzIGRlc3Ryb3llZC5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgRXZlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHtDb3JlLkJhc2V9IGV2ZW50LnNvdXJjZSBUaGUgT2JqZWN0IHRoYXQgaXMgYmVpbmcgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkRlc3Ryb3k6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IEJhc2UgfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCB3aGVuIGEgd2lkZ2V0J3MgW2VsZW1lbnRdKGh0dHBzOi8vYnJ5bnR1bS5jb20vcHJvZHVjdHMvZ3JpZC9kb2NzL2FwaS9Db3JlL3dpZGdldC9XaWRnZXQjcHJvcGVydHktZWxlbWVudCkgaXMgYXZhaWxhYmxlLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBldmVudC5lbGVtZW50IFRoZSBXaWRnZXQncyBlbGVtZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkVsZW1lbnRDcmVhdGVkOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgZWxlbWVudDogSFRNTEVsZW1lbnQgfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIEZpcmVkIHdoZW4gZm9jdXMgZW50ZXJzIHRoaXMgV2lkZ2V0LlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQuc291cmNlIFRoaXMgV2lkZ2V0XG4gICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZXZlbnQuZnJvbUVsZW1lbnQgVGhlIGVsZW1lbnQgd2hpY2ggbG9zdCBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBldmVudC50b0VsZW1lbnQgVGhlIGVsZW1lbnQgd2hpY2ggZ2FpbmVkIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7Q29yZS53aWRnZXQuV2lkZ2V0fSBldmVudC5mcm9tV2lkZ2V0IFRoZSB3aWRnZXQgd2hpY2ggbG9zdCBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQudG9XaWRnZXQgVGhlIHdpZGdldCB3aGljaCBnYWluZWQgZm9jdXMuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBldmVudC5iYWNrd2FyZHMgYHRydWVgIGlmIHRoZSBgdG9FbGVtZW50YCBpcyBiZWZvcmUgdGhlIGBmcm9tRWxlbWVudGAgaW4gZG9jdW1lbnQgb3JkZXIuXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXNJbjogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjwoKGV2ZW50OiB7IHNvdXJjZTogV2lkZ2V0LCBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQsIHRvRWxlbWVudDogSFRNTEVsZW1lbnQsIGZyb21XaWRnZXQ6IFdpZGdldCwgdG9XaWRnZXQ6IFdpZGdldCwgYmFja3dhcmRzOiBib29sZWFuIH0pID0+IHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIGZvY3VzIGV4aXRzIHRoaXMgV2lkZ2V0J3Mgb3duZXJzaGlwIHRyZWUuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gYSBgYmx1cmAgZXZlbnQuXG4gICAgICogZm9jdXMgbW92aW5nIGZyb20gd2l0aGluIHRoaXMgV2lkZ2V0J3Mgb3duZXJzaGlwIHRyZWUsIGV2ZW4gaWYgdGhlcmUgYXJlIGZsb2F0aW5nIHdpZGdldHNcbiAgICAgKiB3aWxsIG5vdCB0cmlnZ2VyIHRoaXMgZXZlbnQuIFRoaXMgaXMgd2hlbiBmb2N1cyBleGl0cyB0aGlzIHdpZGdldCBjb21wbGV0ZWx5LlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQuc291cmNlIFRoaXMgV2lkZ2V0XG4gICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZXZlbnQuZnJvbUVsZW1lbnQgVGhlIGVsZW1lbnQgd2hpY2ggbG9zdCBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBldmVudC50b0VsZW1lbnQgVGhlIGVsZW1lbnQgd2hpY2ggZ2FpbmVkIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7Q29yZS53aWRnZXQuV2lkZ2V0fSBldmVudC5mcm9tV2lkZ2V0IFRoZSB3aWRnZXQgd2hpY2ggbG9zdCBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQudG9XaWRnZXQgVGhlIHdpZGdldCB3aGljaCBnYWluZWQgZm9jdXMuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBldmVudC5iYWNrd2FyZHMgYHRydWVgIGlmIHRoZSBgdG9FbGVtZW50YCBpcyBiZWZvcmUgdGhlIGBmcm9tRWxlbWVudGAgaW4gZG9jdW1lbnQgb3JkZXIuXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXNPdXQ6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IFdpZGdldCwgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0b0VsZW1lbnQ6IEhUTUxFbGVtZW50LCBmcm9tV2lkZ2V0OiBXaWRnZXQsIHRvV2lkZ2V0OiBXaWRnZXQsIGJhY2t3YXJkczogYm9vbGVhbiB9KSA9PiB2b2lkKXxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIGEgd2lkZ2V0IHdhcyBoaWRkZW5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgRXZlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHtDb3JlLndpZGdldC5XaWRnZXR9IGV2ZW50LnNvdXJjZSBUaGUgd2lkZ2V0XG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uSGlkZTogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjwoKGV2ZW50OiB7IHNvdXJjZTogV2lkZ2V0IH0pID0+IHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHR5cGVzIGludG8gdGhpcyBmaWVsZC5cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgRXZlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHtDb3JlLndpZGdldC5GaWVsZCxhbnl9IGV2ZW50LnNvdXJjZSBUaGlzIGZpZWxkXG4gICAgICogQHBhcmFtIHtzdHJpbmcsbnVtYmVyLGJvb2xlYW4sYW55fSBldmVudC52YWx1ZSBUaGlzIGZpZWxkJ3MgdmFsdWVcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudC5ldmVudCBUaGUgdHJpZ2dlcmluZyBET00gZXZlbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25JbnB1dDogYW55ID0gbmV3IEV2ZW50RW1pdHRlcjwoKGV2ZW50OiB7IHNvdXJjZTogRmllbGR8YW55LCB2YWx1ZTogc3RyaW5nfG51bWJlcnxib29sZWFufGFueSwgZXZlbnQ6IEV2ZW50IH0pID0+IHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiBhIHdpZGdldCB3aGljaCBoYWQgYmVlbiBpbiBhIG5vbi12aXNpYmxlIHN0YXRlIGZvciBhbnkgcmVhc29uXG4gICAgICogYWNoaWV2ZXMgdmlzaWJpbGl0eS5cbiAgICAgKiAuLi5cbiAgICAgKiBbVmlldyBvbmxpbmUgZG9jcy4uLl0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1RleHRBcmVhRmllbGQjZXZlbnQtcGFpbnQpXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEV2ZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSB7Q29yZS53aWRnZXQuV2lkZ2V0fSBldmVudC5zb3VyY2UgVGhlIHdpZGdldCBiZWluZyBwYWludGVkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXZlbnQuZmlyc3RQYWludCBgdHJ1ZWAgaWYgdGhpcyBpcyB0aGUgZmlyc3QgcGFpbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUGFpbnQ6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IFdpZGdldCwgZmlyc3RQYWludDogYm9vbGVhbiB9KSA9PiB2b2lkKXxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiBhIFdpZGdldCdzIHJlYWQgb25seSBzdGF0ZSBpcyB0b2dnbGVkXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEV2ZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXZlbnQucmVhZE9ubHkgUmVhZCBvbmx5IG9yIG5vdFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblJlYWRPbmx5OiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgcmVhZE9ubHk6IGJvb2xlYW4gfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgYWZ0ZXIgYSB3aWRnZXQncyBlbGVtZW50cyBoYXZlIGJlZW4gc3luY2hyb25pemVkIGR1ZSB0byBhIGRpcmVjdCBvciBpbmRpcmVjdCBjYWxsXG4gICAgICogdG8gW3JlY29tcG9zZV0oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L1dpZGdldCNmdW5jdGlvbi1yZWNvbXBvc2UpLCBpZiB0aGlzIHJlc3VsdHMgaW4gc29tZSBjaGFuZ2UgdG8gdGhlIHdpZGdldCdzIHJlbmRlcmVkIERPTSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25SZWNvbXBvc2U6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KCgpID0+IHZvaWQpfHN0cmluZz4oKTtcbiAgICAvKipcbiAgICAgKiBGaXJlZCB3aGVuIHRoZSBlbmNhcHN1bGF0aW5nIGVsZW1lbnQgb2YgYSBXaWRnZXQgcmVzaXplcyAqb25seSB3aGVuIFttb25pdG9yUmVzaXplXShodHRwczovL2JyeW50dW0uY29tL3Byb2R1Y3RzL2dyaWQvZG9jcy9hcGkvQ29yZS93aWRnZXQvV2lkZ2V0I2NvbmZpZy1tb25pdG9yUmVzaXplKSBpcyBgdHJ1ZWAqLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQuc291cmNlIFRoaXMgV2lkZ2V0XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGV2ZW50LndpZHRoIFRoZSBuZXcgd2lkdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZXZlbnQuaGVpZ2h0IFRoZSBuZXcgaGVpZ2h0XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGV2ZW50Lm9sZFdpZHRoIFRoZSBvbGQgd2lkdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZXZlbnQub2xkSGVpZ2h0IFRoZSBvbGQgaGVpZ2h0XG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVzaXplOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgc291cmNlOiBXaWRnZXQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvbGRXaWR0aDogbnVtYmVyLCBvbGRIZWlnaHQ6IG51bWJlciB9KSA9PiB2b2lkKXxzdHJpbmc+KCk7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIGEgd2lkZ2V0IGlzIHNob3duLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQuc291cmNlIFRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25TaG93OiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyPCgoZXZlbnQ6IHsgc291cmNlOiBXaWRnZXQgfSkgPT4gdm9pZCl8c3RyaW5nPigpO1xuICAgIC8qKlxuICAgICAqIFVzZXIgY2xpY2tlZCBvbmUgb2YgdGhpcyBmaWVsZCdzIFt0cmlnZ2Vyc10oaHR0cHM6Ly9icnludHVtLmNvbS9wcm9kdWN0cy9ncmlkL2RvY3MvYXBpL0NvcmUvd2lkZ2V0L0ZpZWxkI3Byb3BlcnR5LXRyaWdnZXJzKVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBFdmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LkZpZWxkLGFueX0gZXZlbnQuc291cmNlIFRoaXMgZmllbGRcbiAgICAgKiBAcGFyYW0ge0NvcmUud2lkZ2V0LldpZGdldH0gZXZlbnQudHJpZ2dlciBUaGUgdHJpZ2dlciBhY3RpdmF0ZWQgYnkgY2xpY2sgb3IgdG91Y2ggdGFwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblRyaWdnZXI6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8KChldmVudDogeyBzb3VyY2U6IEZpZWxkfGFueSwgdHJpZ2dlcjogV2lkZ2V0IH0pID0+IHZvaWQpfHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhbmQgYXBwZW5kIHRoZSB1bmRlcmx5aW5nIHdpZGdldFxuICAgICAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdFxuICAgICAgICAgICAgbWUgPSB0aGlzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgYnJ5bnR1bUNvbmZpZ1xuICAgICAgICAgICAgfSA9IG1lLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlQ2xhc3MsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VOYW1lLFxuICAgICAgICAgICAgICAgIGJyeW50dW1Db25maWdzLFxuICAgICAgICAgICAgICAgIGJyeW50dW1FdmVudHNcbiAgICAgICAgICAgIH0gPSBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudDtcblxuICAgICAgICBicnludHVtQ29uZmlncy5maWx0ZXIocHJvcCA9PiBwcm9wIGluIHRoaXMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBXcmFwcGVySGVscGVyLmFwcGx5UHJvcFZhbHVlKGJyeW50dW1Db25maWcsIHByb3AsIHRoaXNbcHJvcF0pO1xuICAgICAgICAgICAgaWYgKFsnZmVhdHVyZXMnLCAnY29uZmlnJ10uaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBXcmFwcGVySGVscGVyLmRldldhcm5pbmdDb25maWdQcm9wKGluc3RhbmNlTmFtZSwgcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGJyeW50dW1FdmVudHMuZmlsdGVyKGV2ZW50ID0+IHRoaXNbZXZlbnRdICYmIHRoaXNbZXZlbnRdLm9ic2VydmVycy5sZW5ndGggPiAwKS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0XG4gICAgICAgICAgICAgICAgdW5jYXBpdGFsaXplID0gKHN0cjogc3RyaW5nKSA9PiBzdHIuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSksXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lID0gKHN0cjogc3RyaW5nKSA9PiB1bmNhcGl0YWxpemUoc3RyLnNsaWNlKDIpKTtcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgYnJ5bnR1bUNvbmZpZy5saXN0ZW5lcnNbZXZlbnROYW1lKGV2ZW50KV0gPSBlID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVbZXZlbnRdLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgLy8gRXZlbnRFbWl0dGVyIGRvZXMgbm90IHJldHVybiB2YWx1ZXMgaW4gdGhlIG5vcm1hbCB3YXksIHdvcmsgYXJvdW5kIGl0IGJ5IHNldHRpbmcgYHJldHVyblZhbHVlYCBmbGFnXG4gICAgICAgICAgICAgICAgLy8gaW4gQW5ndWxhciBsaXN0ZW5lcnNcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXR1cm5WYWx1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIElmIGNvbXBvbmVudCBoYXMgbm8gY29udGFpbmVyIHNwZWNpZmllZCBpbiBjb25maWcgdGhlbiB1c2UgYWRvcHQgdG8gV3JhcHBlcidzIGVsZW1lbnRcbiAgICAgICAgY29uc3RcbiAgICAgICAgICAgIGNvbnRhaW5lclBhcmFtID0gW1xuICAgICAgICAgICAgICAgICdhZG9wdCcsXG4gICAgICAgICAgICAgICAgJ2FwcGVuZFRvJyxcbiAgICAgICAgICAgICAgICAnaW5zZXJ0QWZ0ZXInLFxuICAgICAgICAgICAgICAgICdpbnNlcnRCZWZvcmUnXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgXS5maW5kKHByb3AgPT4gYnJ5bnR1bUNvbmZpZ1twcm9wXSk7XG4gICAgICAgIGlmICghY29udGFpbmVyUGFyYW0pIHtcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZU5hbWUgPT09ICdCdXR0b24nIHx8IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRSb290Tm9kZSgpIGluc3RhbmNlb2YgU2hhZG93Um9vdCkge1xuICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBzaG91bGQgYWx3YXlzIGJlIDxhPiBvciA8YnV0dG9uPiBpbnNpZGUgb3duZXIgZWxlbWVudFxuICAgICAgICAgICAgICAgIGJyeW50dW1Db25maWcuYXBwZW5kVG8gPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicnludHVtQ29uZmlnLmFkb3B0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgV3JhcHBlckhlbHBlci5kZXZXYXJuaW5nQ29udGFpbmVyKGluc3RhbmNlTmFtZSwgY29udGFpbmVyUGFyYW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBtZS5pbnN0YW5jZSA9IGluc3RhbmNlTmFtZSA9PT0gJ1dpZGdldCcgPyBXaWRnZXQuY3JlYXRlKGJyeW50dW1Db25maWcpIDogbmV3IGluc3RhbmNlQ2xhc3MoYnJ5bnR1bUNvbmZpZyk7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXYXRjaCBmb3IgY2hhbmdlc1xuICAgICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAgICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdFxuICAgICAgICAgICAgeyBpbnN0YW5jZSB9ID0gdGhpcyxcbiAgICAgICAgICAgIHsgaW5zdGFuY2VOYW1lIH0gPSBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudDtcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgY2hhbmdlc1xuICAgICAgICBPYmplY3QuZW50cmllcyhjaGFuZ2VzKS5mb3JFYWNoKChbcHJvcCwgY2hhbmdlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3RcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IChjaGFuZ2UgYXMgU2ltcGxlQ2hhbmdlKS5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgICAgeyBpbnN0YW5jZSB9ID0gdGhpcyxcbiAgICAgICAgICAgICAgICB7IGJyeW50dW1Db25maWdzT25seSwgYnJ5bnR1bVByb3BzIH0gPSBCcnludHVtVGV4dEFyZWFGaWVsZENvbXBvbmVudDtcbiAgICAgICAgICAgIGlmIChicnludHVtUHJvcHMuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBXcmFwcGVySGVscGVyLmFwcGx5UHJvcFZhbHVlKGluc3RhbmNlLCBwcm9wLCBuZXdWYWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChicnludHVtQ29uZmlnc09ubHkuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgV3JhcHBlckhlbHBlci5kZXZXYXJuaW5nVXBkYXRlUHJvcChpbnN0YW5jZU5hbWUsIHByb3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UgJiYgdGhpcy5pbnN0YW5jZS5kZXN0cm95KSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|