tuain-ng-forms-lib 17.2.20 → 17.2.22
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/.browserslistrc +16 -0
- package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
- package/.yarn/cache/tslib-npm-2.4.1-36f0ed04db-19480d6e03.zip +0 -0
- package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +11 -0
- package/package.json +2 -16
- package/src/lib/classes/forms/action.ts +117 -0
- package/src/lib/classes/forms/element.ts +26 -0
- package/src/lib/classes/forms/field.ts +522 -0
- package/src/lib/classes/forms/form.constants.ts +28 -0
- package/src/lib/classes/forms/form.ts +692 -0
- package/src/lib/classes/forms/piece-propagate.ts +47 -0
- package/src/lib/classes/forms/piece.ts +164 -0
- package/src/lib/classes/forms/section.ts +165 -0
- package/src/lib/classes/forms/subsection.ts +109 -0
- package/src/lib/classes/forms/table/action.ts +41 -0
- package/src/lib/classes/forms/table/column.ts +94 -0
- package/src/lib/classes/forms/table/row-data.ts +121 -0
- package/src/lib/classes/forms/table/table.ts +582 -0
- package/src/lib/components/elements/action.component.ts +70 -0
- package/src/lib/components/elements/field.component.ts +115 -0
- package/src/lib/components/elements/layout/element.component.ts +14 -0
- package/src/lib/components/elements/layout/form-error.component.ts +11 -0
- package/src/lib/components/elements/layout/form-header.component.ts +14 -0
- package/src/lib/components/elements/layout/piece.component.ts +60 -0
- package/src/lib/components/elements/layout/section.component.ts +52 -0
- package/src/lib/components/elements/layout/sub-section.component.ts +52 -0
- package/src/lib/components/elements/tables/table-record-action.component.ts +66 -0
- package/src/lib/components/elements/tables/table-record-field.component.ts +20 -0
- package/src/lib/components/elements/tables/table.component.ts +112 -0
- package/src/lib/components/forms/basic-form.ts +1464 -0
- package/src/lib/services/event-manager.service.ts +45 -0
- package/src/lib/services/file-manager.service.ts +7 -0
- package/src/lib/services/form-manager.service.ts +89 -0
- package/src/lib/services/icon-dictionary.service.ts +159 -0
- package/src/lib/tuain-ng-forms-lib.module.ts +40 -0
- package/{public-api.d.ts → src/public-api.ts} +5 -0
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/esm2022/lib/classes/forms/action.mjs +0 -106
- package/esm2022/lib/classes/forms/element.mjs +0 -25
- package/esm2022/lib/classes/forms/field.mjs +0 -473
- package/esm2022/lib/classes/forms/form.constants.mjs +0 -26
- package/esm2022/lib/classes/forms/form.mjs +0 -608
- package/esm2022/lib/classes/forms/piece-propagate.mjs +0 -39
- package/esm2022/lib/classes/forms/piece.mjs +0 -134
- package/esm2022/lib/classes/forms/section.mjs +0 -151
- package/esm2022/lib/classes/forms/subsection.mjs +0 -99
- package/esm2022/lib/classes/forms/table/action.mjs +0 -38
- package/esm2022/lib/classes/forms/table/column.mjs +0 -74
- package/esm2022/lib/classes/forms/table/row-data.mjs +0 -116
- package/esm2022/lib/classes/forms/table/table.mjs +0 -541
- package/esm2022/lib/components/elements/action.component.mjs +0 -70
- package/esm2022/lib/components/elements/field.component.mjs +0 -115
- package/esm2022/lib/components/elements/layout/element.component.mjs +0 -21
- package/esm2022/lib/components/elements/layout/form-error.component.mjs +0 -23
- package/esm2022/lib/components/elements/layout/form-header.component.mjs +0 -23
- package/esm2022/lib/components/elements/layout/piece.component.mjs +0 -64
- package/esm2022/lib/components/elements/layout/section.component.mjs +0 -56
- package/esm2022/lib/components/elements/layout/sub-section.component.mjs +0 -56
- package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +0 -72
- package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +0 -31
- package/esm2022/lib/components/elements/tables/table.component.mjs +0 -109
- package/esm2022/lib/components/forms/basic-form.mjs +0 -1399
- package/esm2022/lib/services/event-manager.service.mjs +0 -43
- package/esm2022/lib/services/file-manager.service.mjs +0 -7
- package/esm2022/lib/services/form-manager.service.mjs +0 -81
- package/esm2022/lib/tuain-ng-forms-lib.module.mjs +0 -71
- package/esm2022/public-api.mjs +0 -19
- package/esm2022/tuain-ng-forms-lib.mjs +0 -5
- package/fesm2022/tuain-ng-forms-lib.mjs +0 -4598
- package/fesm2022/tuain-ng-forms-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/classes/forms/action.d.ts +0 -40
- package/lib/classes/forms/element.d.ts +0 -9
- package/lib/classes/forms/field.d.ts +0 -206
- package/lib/classes/forms/form.constants.d.ts +0 -25
- package/lib/classes/forms/form.d.ts +0 -232
- package/lib/classes/forms/piece-propagate.d.ts +0 -13
- package/lib/classes/forms/piece.d.ts +0 -51
- package/lib/classes/forms/section.d.ts +0 -43
- package/lib/classes/forms/subsection.d.ts +0 -42
- package/lib/classes/forms/table/action.d.ts +0 -16
- package/lib/classes/forms/table/column.d.ts +0 -33
- package/lib/classes/forms/table/row-data.d.ts +0 -14
- package/lib/classes/forms/table/table.d.ts +0 -145
- package/lib/components/elements/action.component.d.ts +0 -22
- package/lib/components/elements/field.component.d.ts +0 -47
- package/lib/components/elements/layout/element.component.d.ts +0 -8
- package/lib/components/elements/layout/form-error.component.d.ts +0 -8
- package/lib/components/elements/layout/form-header.component.d.ts +0 -9
- package/lib/components/elements/layout/piece.component.d.ts +0 -18
- package/lib/components/elements/layout/section.component.d.ts +0 -13
- package/lib/components/elements/layout/sub-section.component.d.ts +0 -13
- package/lib/components/elements/tables/table-record-action.component.d.ts +0 -18
- package/lib/components/elements/tables/table-record-field.component.d.ts +0 -12
- package/lib/components/elements/tables/table.component.d.ts +0 -44
- package/lib/components/forms/basic-form.d.ts +0 -256
- package/lib/services/event-manager.service.d.ts +0 -11
- package/lib/services/file-manager.service.d.ts +0 -6
- package/lib/services/form-manager.service.d.ts +0 -28
- package/lib/tuain-ng-forms-lib.module.d.ts +0 -20
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import yn from 'yn';
|
|
3
|
-
import { elementTypes, NO_ERROR } from './form.constants';
|
|
4
|
-
import { FormElement } from './element';
|
|
5
|
-
const UNDEFINED = 'undefined';
|
|
6
|
-
const DEFAULT_ERROR_TYPE = 'error';
|
|
7
|
-
const DEFAULT_CAPTURE_TYPE = 'INPUT';
|
|
8
|
-
const DEFAULT_ALIGNMENT = 'left';
|
|
9
|
-
const STD_MAX_LENGTH = 50;
|
|
10
|
-
const BIG_MAX_LENGTH = 500;
|
|
11
|
-
const directChanges = [
|
|
12
|
-
'defaultEditable', 'defaultValue', 'alignment', 'required', 'errorCode', 'errorMessage', 'errorType',
|
|
13
|
-
'tooltip', 'info', 'format', 'intrinsicErrorMessage', 'outputOnly', 'captureType', 'title', 'type',
|
|
14
|
-
'maxLength', 'maxValue', 'minLength', 'minValue', 'validateOnServer', 'serverAction', 'visibleLabel',
|
|
15
|
-
'options', 'placeholder',
|
|
16
|
-
];
|
|
17
|
-
const attrs = {
|
|
18
|
-
captureType: { name: '_captureType', propagate: 'captureType' },
|
|
19
|
-
errorCode: { name: '_errorCode', propagate: 'errorCode' },
|
|
20
|
-
errorMessage: { name: '_errorMessage', propagate: 'errorMessage' },
|
|
21
|
-
errorType: { name: '_errorType', propagate: 'errorType' },
|
|
22
|
-
defaultValue: { name: '_defaultValue', propagate: 'defaultValue' },
|
|
23
|
-
defaultEditable: { name: '_defaultEditable', propagate: 'defaultEditable' },
|
|
24
|
-
fieldAlignment: { name: '_fieldAlignment', propagate: 'alignment' },
|
|
25
|
-
fieldCode: { name: '_fieldCode', propagate: 'code' },
|
|
26
|
-
fieldInfo: { name: '_fieldInfo', propagate: 'info' },
|
|
27
|
-
fieldRequired: { name: '_fieldRequired', propagate: 'required' },
|
|
28
|
-
fieldTitle: { name: '_fieldTitle', propagate: 'title' },
|
|
29
|
-
fieldType: { name: '_fieldType', propagate: 'type' },
|
|
30
|
-
fieldFormat: { name: '_fieldFormat', propagate: 'format' },
|
|
31
|
-
fieldOptions: { name: '_fieldOptions', propagate: 'options' },
|
|
32
|
-
focus: { name: '_focus', propagate: 'focus' },
|
|
33
|
-
hasChanged: { name: '_hasChanged', propagate: 'hasChanged' },
|
|
34
|
-
intrinsicErrorMessage: { name: '_intrinsicErrorMessage', propagate: null },
|
|
35
|
-
maxLength: { name: '_maxLength', propagate: 'maxLength' },
|
|
36
|
-
maxValue: { name: '_maxValue', propagate: 'maxValue' },
|
|
37
|
-
minLength: { name: '_minLength', propagate: 'minLength' },
|
|
38
|
-
minValue: { name: '_minValue', propagate: 'minValue' },
|
|
39
|
-
onValidation: { name: '_onValidation', propagate: 'onValidation' },
|
|
40
|
-
outputOnly: { name: '_outputOnly', propagate: 'outputOnly' },
|
|
41
|
-
placeholder: { name: '_placeholder', propagate: 'placeholder' },
|
|
42
|
-
tooltipText: { name: '_tooltipText', propagate: 'tooltip' },
|
|
43
|
-
validateOnServer: { name: '_validateOnServer', propagate: 'validateOnServer' },
|
|
44
|
-
value: { name: '_value', propagate: 'value' },
|
|
45
|
-
visibleLabel: { name: '_visibleLabel', propagate: 'visibleLabel' },
|
|
46
|
-
};
|
|
47
|
-
export class FieldDescriptor extends FormElement {
|
|
48
|
-
_customEvent = new Subject();
|
|
49
|
-
_editionFinish = new Subject();
|
|
50
|
-
_editionPartial = new Subject();
|
|
51
|
-
_detailRequest = new Subject();
|
|
52
|
-
_errorType = '';
|
|
53
|
-
_errorCode = '';
|
|
54
|
-
_errorMessage = '';
|
|
55
|
-
_intrinsicErrorMessage = '';
|
|
56
|
-
_minValue;
|
|
57
|
-
_maxValue;
|
|
58
|
-
_maxLength = 0;
|
|
59
|
-
_minLength = 0;
|
|
60
|
-
_focus = false;
|
|
61
|
-
_onValidation = false;
|
|
62
|
-
_validateOnServer = false;
|
|
63
|
-
_value;
|
|
64
|
-
_visibleLabel = false;
|
|
65
|
-
_captureType = '';
|
|
66
|
-
_defaultValue = '';
|
|
67
|
-
_defaultEditable = false;
|
|
68
|
-
_externalValue;
|
|
69
|
-
_fieldAlignment = '';
|
|
70
|
-
_fieldInfo = '';
|
|
71
|
-
_fieldRequired = false;
|
|
72
|
-
_fieldTitle = '';
|
|
73
|
-
_fieldType = '';
|
|
74
|
-
_fieldFormat = null;
|
|
75
|
-
_hasChanged = false;
|
|
76
|
-
_outputOnly = false;
|
|
77
|
-
_tooltipText = '';
|
|
78
|
-
_placeholder = '';
|
|
79
|
-
_fieldCode = '';
|
|
80
|
-
_fieldOptions = null;
|
|
81
|
-
constructor(inputFieldReceived, formConfig) {
|
|
82
|
-
super(inputFieldReceived, formConfig);
|
|
83
|
-
this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.fields ?? [];
|
|
84
|
-
this.elementType = elementTypes.field;
|
|
85
|
-
const fld = (inputFieldReceived) ? inputFieldReceived : {};
|
|
86
|
-
this.setAttr(attrs.fieldCode, fld.fieldCode);
|
|
87
|
-
this.title = fld.fieldTitle ?? this._fieldCode;
|
|
88
|
-
this.placeholder = fld.placeholder ?? this.title;
|
|
89
|
-
this.type = fld.fieldTypeCode;
|
|
90
|
-
this.captureType = fld.captureType ?? DEFAULT_CAPTURE_TYPE;
|
|
91
|
-
const defaultValue = fld.defaultValue ?? null;
|
|
92
|
-
if (this._fieldType === this._formConfig.fieldTypes.boolean) {
|
|
93
|
-
this.defaultValue = defaultValue ?? false;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.defaultValue = defaultValue;
|
|
97
|
-
}
|
|
98
|
-
const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this._fieldType] != null)
|
|
99
|
-
? this._formConfig.tableFieldStyles[this._fieldType]['text-align'] : DEFAULT_ALIGNMENT;
|
|
100
|
-
const fieldAlignment = (fld.alignment != null) ? fld.alignment.toLowerCase() : defaultTypeAlignment;
|
|
101
|
-
this.alignment = fieldAlignment;
|
|
102
|
-
this.info = fld.info || '';
|
|
103
|
-
let fieldFormat;
|
|
104
|
-
try {
|
|
105
|
-
if (fld.format && typeof fld.format === 'string') {
|
|
106
|
-
fieldFormat = new RegExp(fld.format);
|
|
107
|
-
}
|
|
108
|
-
else if (fld.format?.regExp) {
|
|
109
|
-
fieldFormat = new RegExp(fld.format?.regExp);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (e) {
|
|
113
|
-
fieldFormat = null;
|
|
114
|
-
}
|
|
115
|
-
this.format = fieldFormat;
|
|
116
|
-
this.validateOnServer = fld.serverAction ?? false;
|
|
117
|
-
this.tooltip = fld.tooltip || '';
|
|
118
|
-
this.defaultEditable = this.enabled;
|
|
119
|
-
this.required = fld.required ?? false;
|
|
120
|
-
this.outputOnly = fld.outputOnly ?? false;
|
|
121
|
-
this.minLength = fld.minLength ?? 0;
|
|
122
|
-
this.maxLength = fld.maxLength || (this._captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);
|
|
123
|
-
this.intrinsicErrorMessage = this._formConfig?.fieldValidations?.[this._fieldType]?.message
|
|
124
|
-
?? this._formConfig?.fieldValidations?.DEFAULT?.message ?? '';
|
|
125
|
-
this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);
|
|
126
|
-
this.setEditable(fld.editable ?? true);
|
|
127
|
-
this.visibleLabel = fld.visibleLabel ?? true;
|
|
128
|
-
this.setVisibility(fld.visible);
|
|
129
|
-
this.options = fld.fieldOptions;
|
|
130
|
-
this._setValue(fld.fieldValue ?? this._defaultValue ?? '');
|
|
131
|
-
}
|
|
132
|
-
get alignment() { return this._fieldAlignment; }
|
|
133
|
-
set alignment(alignment) { this.setAttr(attrs.fieldAlignment, alignment); }
|
|
134
|
-
get backend() { return this._validateOnServer; }
|
|
135
|
-
get captureType() { return this._captureType; }
|
|
136
|
-
set captureType(captureType) { this.setAttr(attrs.captureType, captureType); }
|
|
137
|
-
get placeholder() { return this._placeholder; }
|
|
138
|
-
set placeholder(placeholder) { this.setAttr(attrs.placeholder, placeholder); }
|
|
139
|
-
get code() { return this._fieldCode; }
|
|
140
|
-
get defaultValue() { return this._defaultValue; }
|
|
141
|
-
set defaultValue(defaultValue) { this.setAttr(attrs.defaultValue, defaultValue); }
|
|
142
|
-
get defaultEditable() { return this._defaultEditable; }
|
|
143
|
-
set defaultEditable(editable) { this.setAttr(attrs.defaultEditable, editable); }
|
|
144
|
-
get detailRequest() { return this._detailRequest.asObservable(); }
|
|
145
|
-
get customEvent() { return this._customEvent.asObservable(); }
|
|
146
|
-
get editionFinish() { return this._editionFinish.asObservable(); }
|
|
147
|
-
get editionPartial() { return this._editionPartial.asObservable(); }
|
|
148
|
-
get empty() {
|
|
149
|
-
const fieldCurrentValue = this.value;
|
|
150
|
-
if (fieldCurrentValue === undefined || fieldCurrentValue === null) {
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
if (this._fieldType === this._formConfig.fieldTypes.array
|
|
154
|
-
&& Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0) {
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
;
|
|
158
|
-
if (this._fieldType === this._formConfig.fieldTypes.phone) {
|
|
159
|
-
if (!Array.isArray(fieldCurrentValue)) {
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
162
|
-
if (fieldCurrentValue.length !== 2 || !fieldCurrentValue[0] || !fieldCurrentValue[1]) {
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
;
|
|
168
|
-
const arrayFieldTypes = this._formConfig.arrayFieldTypes ?? null;
|
|
169
|
-
if (arrayFieldTypes && Object.keys(arrayFieldTypes).includes(this._fieldType)) {
|
|
170
|
-
let arraySize = arrayFieldTypes[this._fieldType];
|
|
171
|
-
arraySize = !Number.isNaN(+arraySize) ? +arraySize : 0;
|
|
172
|
-
if (arraySize === 0) {
|
|
173
|
-
return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0);
|
|
174
|
-
}
|
|
175
|
-
return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length < arraySize);
|
|
176
|
-
}
|
|
177
|
-
;
|
|
178
|
-
return fieldCurrentValue === '';
|
|
179
|
-
}
|
|
180
|
-
get error() { return { type: this._errorType, code: this._errorCode, message: this._errorMessage }; }
|
|
181
|
-
set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE); }
|
|
182
|
-
get errorCode() { return this._errorCode; }
|
|
183
|
-
set errorCode(code) { this.setError(code, this._errorMessage); }
|
|
184
|
-
get errorMessage() { return this._errorMessage; }
|
|
185
|
-
set errorMessage(msg) { this.setError(this._errorCode, msg); }
|
|
186
|
-
get errorType() { return this._errorType; }
|
|
187
|
-
get externalValue() { return this._externalValue; }
|
|
188
|
-
get format() { return this._fieldFormat; }
|
|
189
|
-
set format(format) { this.setAttr(attrs.fieldFormat, format); }
|
|
190
|
-
get hasChanged() { return this._hasChanged; }
|
|
191
|
-
set hasChanged(hasChanged) { this.setAttr(attrs.hasChanged, hasChanged); }
|
|
192
|
-
get info() { return this._fieldInfo; }
|
|
193
|
-
set info(newInfo) { this.setAttr(attrs.fieldInfo, newInfo); }
|
|
194
|
-
set intrinsicErrorMessage(message) { this.setAttr(attrs.intrinsicErrorMessage, message); }
|
|
195
|
-
get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }
|
|
196
|
-
set maxLength(requiredMaxLength) { this.setAttr(attrs.maxLength, requiredMaxLength ? +requiredMaxLength : null); }
|
|
197
|
-
get maxValue() { return this._maxValue; }
|
|
198
|
-
set maxValue(inputMaxValue) {
|
|
199
|
-
let maxValue = inputMaxValue;
|
|
200
|
-
if (this._fieldType === this._formConfig.fieldTypes.date) {
|
|
201
|
-
maxValue = new Date(maxValue);
|
|
202
|
-
}
|
|
203
|
-
this.setAttr(attrs.maxValue, maxValue);
|
|
204
|
-
}
|
|
205
|
-
get minLength() { return this._minLength; }
|
|
206
|
-
set minLength(requiredMinLength) {
|
|
207
|
-
this.setAttr(attrs.minLength, requiredMinLength ? +requiredMinLength : null);
|
|
208
|
-
}
|
|
209
|
-
get minValue() { return this._minValue; }
|
|
210
|
-
set minValue(inputMinValue) {
|
|
211
|
-
let minValue = inputMinValue;
|
|
212
|
-
if (this._fieldType === this._formConfig.fieldTypes.date) {
|
|
213
|
-
minValue = new Date(minValue);
|
|
214
|
-
}
|
|
215
|
-
this.setAttr(attrs.minValue, minValue);
|
|
216
|
-
}
|
|
217
|
-
get name() { return this._fieldCode; }
|
|
218
|
-
get options() {
|
|
219
|
-
return this._fieldOptions?.map(option => {
|
|
220
|
-
const optionCopy = { ...option };
|
|
221
|
-
return optionCopy;
|
|
222
|
-
}) ?? [];
|
|
223
|
-
}
|
|
224
|
-
set options(newOptions) {
|
|
225
|
-
if ((!this._formConfig.captureTypesWithOptions.includes(this._captureType))
|
|
226
|
-
|| typeof newOptions === UNDEFINED || !newOptions
|
|
227
|
-
|| !Array.isArray(newOptions)) {
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
let fieldOptions = newOptions.map((option) => {
|
|
231
|
-
if (option.text !== undefined && option.text !== null
|
|
232
|
-
&& option.value !== undefined && option.value !== null) {
|
|
233
|
-
return { fieldOptionValue: option.text, fieldOptionId: option.value };
|
|
234
|
-
}
|
|
235
|
-
return option;
|
|
236
|
-
});
|
|
237
|
-
fieldOptions = (fieldOptions && Array.isArray(fieldOptions)
|
|
238
|
-
&& fieldOptions.length > 0) ? fieldOptions : [];
|
|
239
|
-
this.setAttr(attrs.fieldOptions, fieldOptions);
|
|
240
|
-
if (this._value) {
|
|
241
|
-
if (this._fieldType === this._formConfig.fieldTypes.array && Array.isArray(this._value)) {
|
|
242
|
-
const fieldValue = this._value?.filter(item => this._fieldOptions?.find(opt => opt.fieldOptionId === item));
|
|
243
|
-
this.setAttr(attrs.value, fieldValue);
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
const valInOptions = this._fieldOptions?.find(item => item.fieldOptionId === this._value);
|
|
247
|
-
if (!valInOptions) {
|
|
248
|
-
this._setValue('');
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (this._fieldRequired && this._fieldOptions?.length === 1 && this._value !== this._fieldOptions?.[0].fieldOptionId) {
|
|
253
|
-
this._setValue(this._fieldOptions?.[0].fieldOptionId);
|
|
254
|
-
this.notifyEditionFinish();
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
get optionText() { return this._fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null; }
|
|
258
|
-
get outputOnly() { return this._outputOnly; }
|
|
259
|
-
set outputOnly(outputOnly) { this.setAttr(attrs.outputOnly, outputOnly); }
|
|
260
|
-
get required() { return this._fieldRequired; }
|
|
261
|
-
set required(required) { this.setAttr(attrs.fieldRequired, required ?? false); }
|
|
262
|
-
get title() { return this._fieldTitle; }
|
|
263
|
-
set title(title) { this.setAttr(attrs.fieldTitle, title?.toString() ?? ''); }
|
|
264
|
-
get tooltip() { return this._tooltipText; }
|
|
265
|
-
set tooltip(tooltip) { this.setAttr(attrs.tooltipText, tooltip); }
|
|
266
|
-
get type() { return this._fieldType; }
|
|
267
|
-
set type(fieldType) { this.setAttr(attrs.fieldType, fieldType); }
|
|
268
|
-
get onValidation() { return this._onValidation; }
|
|
269
|
-
get validating() { return this._onValidation; }
|
|
270
|
-
set validating(isValidating) { this.setAttr(attrs.onValidation, isValidating); }
|
|
271
|
-
get value() {
|
|
272
|
-
return (this._fieldType === this._formConfig.fieldTypes.boolean
|
|
273
|
-
|| this._fieldType === this._formConfig.fieldTypes.check) ? yn(this._value) : this._value;
|
|
274
|
-
}
|
|
275
|
-
get validateOnServer() { return this._validateOnServer; }
|
|
276
|
-
set validateOnServer(validateOnServer) { this.setAttr(attrs.validateOnServer, validateOnServer); }
|
|
277
|
-
get serverAction() { return this._validateOnServer; }
|
|
278
|
-
set serverAction(validateOnServer) { this.validateOnServer = validateOnServer; }
|
|
279
|
-
set value(newValue) { this._setValue(newValue); }
|
|
280
|
-
get visibleLabel() { return this._visibleLabel; }
|
|
281
|
-
set visibleLabel(visibleLabel) { this.setAttr(attrs.visibleLabel, visibleLabel); }
|
|
282
|
-
/**
|
|
283
|
-
* @deprecated Use value
|
|
284
|
-
*/
|
|
285
|
-
get fieldValue() { return this.value; }
|
|
286
|
-
/**
|
|
287
|
-
* @deprecated Use hasChanged
|
|
288
|
-
*/
|
|
289
|
-
changed(hasChanged = true) { this.hasChanged = hasChanged; }
|
|
290
|
-
clean() { this._setValue(this._defaultValue || ''); this.resetError(); }
|
|
291
|
-
focus() { this.setAttr(attrs.focus, true); }
|
|
292
|
-
getErrorCode() { return this.error.code; }
|
|
293
|
-
setErrorCode(code) { this.setError(code, this._errorMessage); }
|
|
294
|
-
getErrorMessage() { return this.error.message; }
|
|
295
|
-
setErrorMessage(msg) { this.setError(this._errorCode, msg); }
|
|
296
|
-
getRequired() { return this.required; }
|
|
297
|
-
hasError() { return this._errorCode !== NO_ERROR; }
|
|
298
|
-
hideLabel() { this.visibleLabel = false; }
|
|
299
|
-
resetError() { (this._errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }
|
|
300
|
-
setEditable(editable = true) { (editable) ? this.enable() : this.disable(); }
|
|
301
|
-
setValue(newValue, widgetUpdate = true) { this._setValue(newValue, widgetUpdate); }
|
|
302
|
-
showLabel() { this.visibleLabel = true; }
|
|
303
|
-
/**
|
|
304
|
-
* @deprecated Use code
|
|
305
|
-
*/
|
|
306
|
-
get fieldCode() { return this._fieldCode; }
|
|
307
|
-
/**
|
|
308
|
-
* @deprecated Use title
|
|
309
|
-
*/
|
|
310
|
-
setLabel(label) { this.title = label; }
|
|
311
|
-
/**
|
|
312
|
-
* @deprecated Use required
|
|
313
|
-
*/
|
|
314
|
-
setRequired(required) { this.required = required; }
|
|
315
|
-
/**
|
|
316
|
-
* @deprecated Use changed
|
|
317
|
-
*/
|
|
318
|
-
setChanged(hasChanged) { this.changed(hasChanged); }
|
|
319
|
-
/**
|
|
320
|
-
* @deprecated Use value
|
|
321
|
-
*/
|
|
322
|
-
getValue() { return this.value; }
|
|
323
|
-
/**
|
|
324
|
-
* @deprecated Use empty
|
|
325
|
-
*/
|
|
326
|
-
isEmpty() { return this.empty; }
|
|
327
|
-
/**
|
|
328
|
-
* @deprecated Use error
|
|
329
|
-
*/
|
|
330
|
-
getError() { return this.error; }
|
|
331
|
-
/**
|
|
332
|
-
* @deprecated Use optionText
|
|
333
|
-
*/
|
|
334
|
-
getOptionText() { return this.optionText; }
|
|
335
|
-
/**
|
|
336
|
-
* @deprecated Use options
|
|
337
|
-
*/
|
|
338
|
-
getFieldOptions() { return this.options; }
|
|
339
|
-
/**
|
|
340
|
-
* @deprecated Use options
|
|
341
|
-
*/
|
|
342
|
-
setFieldOptions(newOptions) { return this.options = newOptions; }
|
|
343
|
-
/**
|
|
344
|
-
* @deprecated Use intrinsicErrorMessage
|
|
345
|
-
*/
|
|
346
|
-
setIntrinsicErrorMessage(message) { this.intrinsicErrorMessage = message; }
|
|
347
|
-
/**
|
|
348
|
-
* @deprecated Use maxValue
|
|
349
|
-
*/
|
|
350
|
-
setMaxValue(inputMaxValue) { this.maxValue = inputMaxValue; }
|
|
351
|
-
/**
|
|
352
|
-
* @deprecated Use minValue
|
|
353
|
-
*/
|
|
354
|
-
setMinValue(inputMinValue) { this.minValue = inputMinValue; }
|
|
355
|
-
/**
|
|
356
|
-
* @deprecated Use showLabel
|
|
357
|
-
*/
|
|
358
|
-
setVisibleLabel(visibleLabel) { this.visibleLabel = visibleLabel; }
|
|
359
|
-
notifyEditionPartial() {
|
|
360
|
-
this.resetError();
|
|
361
|
-
this._editionPartial.next({ code: this._fieldCode, intrinsicValidation: true });
|
|
362
|
-
}
|
|
363
|
-
triggerCustomEvent(eventName, eventData) {
|
|
364
|
-
this._customEvent.next({ code: this._fieldCode, eventName, eventData });
|
|
365
|
-
}
|
|
366
|
-
notifyEditionFinish() {
|
|
367
|
-
const fieldValue = this.value;
|
|
368
|
-
this.resetError();
|
|
369
|
-
const validationConfig = this._formConfig.fieldValidations?.[this._fieldType] ?? {};
|
|
370
|
-
const { type, validation } = validationConfig;
|
|
371
|
-
let message = validationConfig?.message;
|
|
372
|
-
let intrinsicValidation = true;
|
|
373
|
-
if (fieldValue && (validation || this._fieldFormat)) {
|
|
374
|
-
if (type === 'regexp') {
|
|
375
|
-
intrinsicValidation = (validation?.test(fieldValue) ?? true)
|
|
376
|
-
&& (this._fieldFormat?.test(fieldValue) ?? true);
|
|
377
|
-
}
|
|
378
|
-
else if (type === 'function' && typeof validation === 'function') {
|
|
379
|
-
const { valid, message: customMessage } = validation(fieldValue, this);
|
|
380
|
-
intrinsicValidation = valid;
|
|
381
|
-
message = customMessage;
|
|
382
|
-
}
|
|
383
|
-
if (!intrinsicValidation) {
|
|
384
|
-
this.setError('99', message ?? this._intrinsicErrorMessage);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
if (intrinsicValidation && fieldValue && this._minValue && fieldValue < this._minValue) {
|
|
388
|
-
intrinsicValidation = false;
|
|
389
|
-
this.setError('99', 'Campo con valor inferior al mínimo');
|
|
390
|
-
}
|
|
391
|
-
if (intrinsicValidation && fieldValue && this._maxValue && fieldValue > this._maxValue) {
|
|
392
|
-
intrinsicValidation = false;
|
|
393
|
-
this.setError('99', 'Campo con valor superior al máximo');
|
|
394
|
-
}
|
|
395
|
-
if (intrinsicValidation && fieldValue && typeof fieldValue === 'string'
|
|
396
|
-
&& this._minLength && fieldValue?.length < this._minLength) {
|
|
397
|
-
intrinsicValidation = false;
|
|
398
|
-
this.setError('99', `Longitud de ${this._fieldTitle} debe ser de al menos ${this._minLength}`);
|
|
399
|
-
}
|
|
400
|
-
this._editionFinish.next({ code: this._fieldCode, intrinsicValidation });
|
|
401
|
-
}
|
|
402
|
-
notifyEditionDetailRequest(detail) {
|
|
403
|
-
const detailEvent = { code: this._fieldCode, detail };
|
|
404
|
-
this._detailRequest.next(detailEvent);
|
|
405
|
-
}
|
|
406
|
-
setError(code, message, type = DEFAULT_ERROR_TYPE) {
|
|
407
|
-
this.setAttr(attrs.errorCode, code ?? NO_ERROR);
|
|
408
|
-
this.setAttr(attrs.errorType, (this._errorCode === NO_ERROR) ? '' : type);
|
|
409
|
-
this.setAttr(attrs.errorMessage, message ?? '');
|
|
410
|
-
}
|
|
411
|
-
updateFromServer(fld) {
|
|
412
|
-
const fieldKeys = Object.keys(fld);
|
|
413
|
-
for (let index = 0; index < fieldKeys.length; index++) {
|
|
414
|
-
const attrName = fieldKeys[index];
|
|
415
|
-
const attrValue = fld[attrName];
|
|
416
|
-
if (directChanges.includes(attrName)) {
|
|
417
|
-
this[attrName] = attrValue;
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
(attrName === 'label') && (this.title = attrValue);
|
|
421
|
-
(attrName === 'labelVisible') && (this.visibleLabel = attrValue);
|
|
422
|
-
(attrName === 'editable') && this.setEditable(attrValue);
|
|
423
|
-
(attrName === 'visible') && this.setVisibility(attrValue);
|
|
424
|
-
(attrName === 'value') && (this._setValue(attrValue) && (this.hasChanged = false));
|
|
425
|
-
(attrName === 'fieldValue') && (this._setValue(attrValue) && (this.hasChanged = false));
|
|
426
|
-
(attrName === 'fieldOptions') && (this.options = attrValue);
|
|
427
|
-
(attrName === 'fieldTitle') && (this.title = attrValue);
|
|
428
|
-
(attrName === 'fieldTypeCode') && (this.type = attrValue);
|
|
429
|
-
(attrName === 'fieldType') && (this.type = attrValue);
|
|
430
|
-
(attrName === 'tooltipText') && (this.tooltip = attrValue);
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
_setValue(newValue, widgetUpdate = true) {
|
|
435
|
-
if (typeof newValue === UNDEFINED) {
|
|
436
|
-
return true;
|
|
437
|
-
}
|
|
438
|
-
if (newValue === null && this.required) {
|
|
439
|
-
return true;
|
|
440
|
-
}
|
|
441
|
-
let newFinalValue;
|
|
442
|
-
if (this._fieldType === this._formConfig.fieldTypes.boolean
|
|
443
|
-
|| this._fieldType === this._formConfig.fieldTypes.check) {
|
|
444
|
-
newFinalValue = yn(newValue) ?? false;
|
|
445
|
-
}
|
|
446
|
-
else if (this._fieldType === this._formConfig.fieldTypes.array
|
|
447
|
-
|| this._fieldType === this._formConfig.fieldTypes.map) {
|
|
448
|
-
if (newValue === null || newValue === '') {
|
|
449
|
-
newFinalValue = [];
|
|
450
|
-
}
|
|
451
|
-
else if (Array.isArray(newValue)) {
|
|
452
|
-
newFinalValue = newValue;
|
|
453
|
-
}
|
|
454
|
-
else {
|
|
455
|
-
newFinalValue = newValue.toString().split(',');
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
newFinalValue = newValue;
|
|
460
|
-
}
|
|
461
|
-
if (this._value !== newFinalValue) {
|
|
462
|
-
this._hasChanged = true;
|
|
463
|
-
if (widgetUpdate) {
|
|
464
|
-
this.setAttr(attrs.value, newFinalValue);
|
|
465
|
-
}
|
|
466
|
-
else {
|
|
467
|
-
this._value = newFinalValue;
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
return true;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLGFBQWEsR0FBRztJQUNwQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVc7SUFDcEcsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTTtJQUNsRyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7SUFDcEcsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQy9ELFNBQVMsRUFBRSxFQUFF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QUNOLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeW4gZnJvbSAneW4nO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzLCBOT19FUlJPUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuXG5jb25zdCBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblxuY29uc3QgREVGQVVMVF9FUlJPUl9UWVBFID0gJ2Vycm9yJztcbmNvbnN0IERFRkFVTFRfQ0FQVFVSRV9UWVBFID0gJ0lOUFVUJztcbmNvbnN0IERFRkFVTFRfQUxJR05NRU5UID0gJ2xlZnQnO1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmNvbnN0IGRpcmVjdENoYW5nZXMgPSBbXG4gICdkZWZhdWx0RWRpdGFibGUnLCAnZGVmYXVsdFZhbHVlJywgJ2FsaWdubWVudCcsICdyZXF1aXJlZCcsICdlcnJvckNvZGUnLCAnZXJyb3JNZXNzYWdlJywgJ2Vycm9yVHlwZScsXG4gICd0b29sdGlwJywgJ2luZm8nLCAnZm9ybWF0JywgJ2ludHJpbnNpY0Vycm9yTWVzc2FnZScsICdvdXRwdXRPbmx5JywgJ2NhcHR1cmVUeXBlJywgJ3RpdGxlJywgJ3R5cGUnLFxuICAnbWF4TGVuZ3RoJywgJ21heFZhbHVlJywgJ21pbkxlbmd0aCcsICdtaW5WYWx1ZScsICd2YWxpZGF0ZU9uU2VydmVyJywgJ3NlcnZlckFjdGlvbicsICd2aXNpYmxlTGFiZWwnLFxuICAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsXG5dO1xuXG5jb25zdCBhdHRycyA9IHtcbiAgY2FwdHVyZVR5cGU6IHsgbmFtZTogJ19jYXB0dXJlVHlwZScsIHByb3BhZ2F0ZTogJ2NhcHR1cmVUeXBlJyB9LFxuICBlcnJvckNvZGU6IHsgbmFtZTogJ19lcnJvckNvZGUnLCBwcm9wYWdhdGU6ICdlcnJvckNvZGUnIH0sXG4gIGVycm9yTWVzc2FnZTogeyBuYW1lOiAnX2Vycm9yTWVzc2FnZScsIHByb3BhZ2F0ZTogJ2Vycm9yTWVzc2FnZScgfSxcbiAgZXJyb3JUeXBlOiB7IG5hbWU6ICdfZXJyb3JUeXBlJywgcHJvcGFnYXRlOiAnZXJyb3JUeXBlJyB9LFxuICBkZWZhdWx0VmFsdWU6IHsgbmFtZTogJ19kZWZhdWx0VmFsdWUnLCBwcm9wYWdhdGU6ICdkZWZhdWx0VmFsdWUnIH0sXG4gIGRlZmF1bHRFZGl0YWJsZTogeyBuYW1lOiAnX2RlZmF1bHRFZGl0YWJsZScsIHByb3BhZ2F0ZTogJ2RlZmF1bHRFZGl0YWJsZScgfSxcbiAgZmllbGRBbGlnbm1lbnQ6IHsgbmFtZTogJ19maWVsZEFsaWdubWVudCcsIHByb3BhZ2F0ZTogJ2FsaWdubWVudCcgfSxcbiAgZmllbGRDb2RlOiB7IG5hbWU6ICdfZmllbGRDb2RlJywgcHJvcGFnYXRlOiAnY29kZScgfSxcbiAgZmllbGRJbmZvOiB7IG5hbWU6ICdfZmllbGRJbmZvJywgcHJvcGFnYXRlOiAnaW5mbycgfSxcbiAgZmllbGRSZXF1aXJlZDogeyBuYW1lOiAnX2ZpZWxkUmVxdWlyZWQnLCBwcm9wYWdhdGU6ICdyZXF1aXJlZCcgfSxcbiAgZmllbGRUaXRsZTogeyBuYW1lOiAnX2ZpZWxkVGl0bGUnLCBwcm9wYWdhdGU6ICd0aXRsZScgfSxcbiAgZmllbGRUeXBlOiB7IG5hbWU6ICdfZmllbGRUeXBlJywgcHJvcGFnYXRlOiAndHlwZScgfSxcbiAgZmllbGRGb3JtYXQ6IHsgbmFtZTogJ19maWVsZEZvcm1hdCcsIHByb3BhZ2F0ZTogJ2Zvcm1hdCcgfSxcbiAgZmllbGRPcHRpb25zOiB7IG5hbWU6ICdfZmllbGRPcHRpb25zJywgcHJvcGFnYXRlOiAnb3B0aW9ucycgfSxcbiAgZm9jdXM6IHsgbmFtZTogJ19mb2N1cycsIHByb3BhZ2F0ZTogJ2ZvY3VzJyB9LFxuICBoYXNDaGFuZ2VkOiB7IG5hbWU6ICdfaGFzQ2hhbmdlZCcsIHByb3BhZ2F0ZTogJ2hhc0NoYW5nZWQnIH0sXG4gIGludHJpbnNpY0Vycm9yTWVzc2FnZTogeyBuYW1lOiAnX2ludHJpbnNpY0Vycm9yTWVzc2FnZScsIHByb3BhZ2F0ZTogbnVsbCB9LFxuICBtYXhMZW5ndGg6IHsgbmFtZTogJ19tYXhMZW5ndGgnLCBwcm9wYWdhdGU6ICdtYXhMZW5ndGgnIH0sXG4gIG1heFZhbHVlOiB7IG5hbWU6ICdfbWF4VmFsdWUnLCBwcm9wYWdhdGU6ICdtYXhWYWx1ZScgfSxcbiAgbWluTGVuZ3RoOiB7IG5hbWU6ICdfbWluTGVuZ3RoJywgcHJvcGFnYXRlOiAnbWluTGVuZ3RoJyB9LFxuICBtaW5WYWx1ZTogeyBuYW1lOiAnX21pblZhbHVlJywgcHJvcGFnYXRlOiAnbWluVmFsdWUnIH0sXG4gIG9uVmFsaWRhdGlvbjogeyBuYW1lOiAnX29uVmFsaWRhdGlvbicsIHByb3BhZ2F0ZTogJ29uVmFsaWRhdGlvbicgfSxcbiAgb3V0cHV0T25seTogeyBuYW1lOiAnX291dHB1dE9ubHknLCBwcm9wYWdhdGU6ICdvdXRwdXRPbmx5JyB9LFxuICBwbGFjZWhvbGRlcjogeyBuYW1lOiAnX3BsYWNlaG9sZGVyJywgcHJvcGFnYXRlOiAncGxhY2Vob2xkZXInIH0sXG4gIHRvb2x0aXBUZXh0OiB7IG5hbWU6ICdfdG9vbHRpcFRleHQnLCBwcm9wYWdhdGU6ICd0b29sdGlwJyB9LFxuICB2YWxpZGF0ZU9uU2VydmVyOiB7IG5hbWU6ICdfdmFsaWRhdGVPblNlcnZlcicsIHByb3BhZ2F0ZTogJ3ZhbGlkYXRlT25TZXJ2ZXInIH0sXG4gIHZhbHVlOiB7IG5hbWU6ICdfdmFsdWUnLCBwcm9wYWdhdGU6ICd2YWx1ZScgfSxcbiAgdmlzaWJsZUxhYmVsOiB7IG5hbWU6ICdfdmlzaWJsZUxhYmVsJywgcHJvcGFnYXRlOiAndmlzaWJsZUxhYmVsJyB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxFdmVudCB7XG4gIGNvZGU6IHN0cmluZztcbiAgZGV0YWlsOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRPcHRpb24ge1xuICBmaWVsZE9wdGlvblZhbHVlOiBzdHJpbmc7XG4gIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkRGVzY3JpcHRvciBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tRXZlbnQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8RGV0YWlsRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZXJyb3JUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JDb2RlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfbWluVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfbWF4TGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9taW5MZW5ndGg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29uVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWxpZGF0ZU9uU2VydmVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX3Zpc2libGVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jYXB0dXJlVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZTogYW55ID0gJyc7XG4gIHByaXZhdGUgX2RlZmF1bHRFZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9leHRlcm5hbFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX2ZpZWxkQWxpZ25tZW50OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRJbmZvOiBhbnkgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRUeXBlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZmllbGRGb3JtYXQ6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9oYXNDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX291dHB1dE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdG9vbHRpcFRleHQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkT3B0aW9uczogRmllbGRPcHRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnPy5wcm9wYWdhdGlvbkN1c3RvbUF0dHJpYnV0ZXM/LmZpZWxkcyA/PyBbXTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLmZpZWxkO1xuICAgIGNvbnN0IGZsZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkQ29kZSwgZmxkLmZpZWxkQ29kZSk7XG4gICAgdGhpcy50aXRsZSA9IGZsZC5maWVsZFRpdGxlID8/IHRoaXMuX2ZpZWxkQ29kZTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmxkLnBsYWNlaG9sZGVyID8/IHRoaXMudGl0bGU7XG4gICAgdGhpcy50eXBlID0gZmxkLmZpZWxkVHlwZUNvZGU7XG4gICAgdGhpcy5jYXB0dXJlVHlwZSA9IGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRTtcblxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGZsZC5kZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbikge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWUgPz8gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXSAhPSBudWxsKVxuICAgICAgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5fZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuYWxpZ25tZW50ID0gZmllbGRBbGlnbm1lbnQ7XG4gICAgdGhpcy5pbmZvID0gZmxkLmluZm8gfHwgJyc7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBpZiAoZmxkLmZvcm1hdCAmJiB0eXBlb2YgZmxkLmZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChmbGQuZm9ybWF0Py5yZWdFeHApIHtcbiAgICAgICAgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZsZC5mb3JtYXQ/LnJlZ0V4cCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmZvcm1hdCA9IGZpZWxkRm9ybWF0O1xuICAgIHRoaXMudmFsaWRhdGVPblNlcnZlciA9IGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy50b29sdGlwID0gZmxkLnRvb2x0aXAgfHwgJyc7XG4gICAgdGhpcy5kZWZhdWx0RWRpdGFibGUgPSB0aGlzLmVuYWJsZWQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9IGZsZC5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB0aGlzLm91dHB1dE9ubHkgPSBmbGQub3V0cHV0T25seSA/PyBmYWxzZTtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IGZsZC5taW5MZW5ndGggPz8gMDtcbiAgICB0aGlzLm1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggfHwgKHRoaXMuX2NhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSB0aGlzLl9mb3JtQ29uZmlnPy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXT8ubWVzc2FnZVxuICAgICAgPz8gdGhpcy5fZm9ybUNvbmZpZz8uZmllbGRWYWxpZGF0aW9ucz8uREVGQVVMVD8ubWVzc2FnZSA/PyAnJztcblxuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMudmlzaWJsZUxhYmVsID0gZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5vcHRpb25zID0gZmxkLmZpZWxkT3B0aW9ucztcbiAgICB0aGlzLl9zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSA/PyB0aGlzLl9kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IGFsaWdubWVudCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQWxpZ25tZW50OyB9XG4gIHNldCBhbGlnbm1lbnQoYWxpZ25tZW50KSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEFsaWdubWVudCwgYWxpZ25tZW50KTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBnZXQgY2FwdHVyZVR5cGUoKSB7IHJldHVybiB0aGlzLl9jYXB0dXJlVHlwZTsgfVxuICBzZXQgY2FwdHVyZVR5cGUoY2FwdHVyZVR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmNhcHR1cmVUeXBlLCBjYXB0dXJlVHlwZSk7IH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcik7IH1cblxuICBnZXQgY29kZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQ29kZTsgfVxuICBnZXQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlOyB9XG4gIHNldCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0VmFsdWUsIGRlZmF1bHRWYWx1ZSk7IH1cbiAgZ2V0IGRlZmF1bHRFZGl0YWJsZSgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRFZGl0YWJsZTsgfVxuICBzZXQgZGVmYXVsdEVkaXRhYmxlKGVkaXRhYmxlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5kZWZhdWx0RWRpdGFibGUsIGVkaXRhYmxlKTsgfVxuICBnZXQgZGV0YWlsUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXMuX2RldGFpbFJlcXVlc3QuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGN1c3RvbUV2ZW50KCkgeyByZXR1cm4gdGhpcy5fY3VzdG9tRXZlbnQuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggIT09IDIgfHwgIWZpZWxkQ3VycmVudFZhbHVlWzBdIHx8ICFmaWVsZEN1cnJlbnRWYWx1ZVsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIGNvbnN0IGFycmF5RmllbGRUeXBlcyA9IHRoaXMuX2Zvcm1Db25maWcuYXJyYXlGaWVsZFR5cGVzID8/IG51bGw7XG4gICAgaWYgKGFycmF5RmllbGRUeXBlcyAmJiBPYmplY3Qua2V5cyhhcnJheUZpZWxkVHlwZXMpLmluY2x1ZGVzKHRoaXMuX2ZpZWxkVHlwZSkpIHtcbiAgICAgIGxldCBhcnJheVNpemUgPSBhcnJheUZpZWxkVHlwZXNbdGhpcy5fZmllbGRUeXBlXTtcbiAgICAgIGFycmF5U2l6ZSA9ICFOdW1iZXIuaXNOYU4oK2FycmF5U2l6ZSkgPyArYXJyYXlTaXplIDogMDtcbiAgICAgIGlmIChhcnJheVNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPCBhcnJheVNpemUpO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJztcbiAgfVxuXG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5fZXJyb3JUeXBlLCBjb2RlOiB0aGlzLl9lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuX2Vycm9yTWVzc2FnZSB9OyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKSB9XG4gIGdldCBlcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGU7IH1cbiAgc2V0IGVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXQgZXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5fZXJyb3JNZXNzYWdlOyB9XG4gIHNldCBlcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5fZXJyb3JDb2RlLCBtc2cpOyB9XG4gIGdldCBlcnJvclR5cGUoKSB7IHJldHVybiB0aGlzLl9lcnJvclR5cGU7IH1cbiAgZ2V0IGV4dGVybmFsVmFsdWUoKSB7IHJldHVybiB0aGlzLl9leHRlcm5hbFZhbHVlOyB9XG4gIGdldCBmb3JtYXQoKSB7IHJldHVybiB0aGlzLl9maWVsZEZvcm1hdDsgfVxuICBzZXQgZm9ybWF0KGZvcm1hdCkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRGb3JtYXQsIGZvcm1hdCk7IH1cbiAgZ2V0IGhhc0NoYW5nZWQoKSB7IHJldHVybiB0aGlzLl9oYXNDaGFuZ2VkOyB9XG4gIHNldCBoYXNDaGFuZ2VkKGhhc0NoYW5nZWQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG5cbiAgZ2V0IGluZm8oKSB7IHJldHVybiB0aGlzLl9maWVsZEluZm87IH1cbiAgc2V0IGluZm8obmV3SW5mbzogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZEluZm8sIG5ld0luZm8pOyB9XG4gIHNldCBpbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihhdHRycy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIG1lc3NhZ2UpOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkgeyB0aGlzLnNldEF0dHIoYXR0cnMubWF4TGVuZ3RoLCByZXF1aXJlZE1heExlbmd0aCA/ICtyZXF1aXJlZE1heExlbmd0aCA6IG51bGwpOyB9XG4gIGdldCBtYXhWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX21heFZhbHVlOyB9XG5cbiAgc2V0IG1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtYXhWYWx1ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCkgeyByZXR1cm4gdGhpcy5fbWluTGVuZ3RoOyB9XG4gIHNldCBtaW5MZW5ndGgocmVxdWlyZWRNaW5MZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5taW5MZW5ndGgsIHJlcXVpcmVkTWluTGVuZ3RoID8gK3JlcXVpcmVkTWluTGVuZ3RoIDogbnVsbCk7XG4gIH1cbiAgZ2V0IG1pblZhbHVlKCkgeyByZXR1cm4gdGhpcy5fbWluVmFsdWU7IH1cblxuICBzZXQgbWluVmFsdWUoaW5wdXRNaW5WYWx1ZSkge1xuICAgIGxldCBtaW5WYWx1ZSA9IGlucHV0TWluVmFsdWU7XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGUpIHtcbiAgICAgIG1pblZhbHVlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoYXR0cnMubWluVmFsdWUsIG1pblZhbHVlKTtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogRmllbGRPcHRpb25bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbnM/Lm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29weTogRmllbGRPcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgcmV0dXJuIG9wdGlvbkNvcHk7XG4gICAgfSkgPz8gW107XG4gIH1cblxuICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCghdGhpcy5fZm9ybUNvbmZpZy5jYXB0dXJlVHlwZXNXaXRoT3B0aW9ucy5pbmNsdWRlcyh0aGlzLl9jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkT3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fdmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zPy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuX3NldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRSZXF1aXJlZCAmJiB0aGlzLl9maWVsZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLl92YWx1ZSAhPT0gdGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICB0aGlzLm5vdGlmeUVkaXRpb25GaW5pc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpPy5maWVsZE9wdGlvblZhbHVlID8/IG51bGw7IH1cbiAgZ2V0IG91dHB1dE9ubHkoKSB7IHJldHVybiB0aGlzLl9vdXRwdXRPbmx5OyB9XG4gIHNldCBvdXRwdXRPbmx5KG91dHB1dE9ubHkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm91dHB1dE9ubHksIG91dHB1dE9ubHkpOyB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZFJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRUaXRsZTsgfVxuICBzZXQgdGl0bGUodGl0bGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVGl0bGUsIHRpdGxlPy50b1N0cmluZygpID8/ICcnKTsgfVxuICBnZXQgdG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX3Rvb2x0aXBUZXh0OyB9XG4gIHNldCB0b29sdGlwKHRvb2x0aXApIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnRvb2x0aXBUZXh0LCB0b29sdGlwKTsgfVxuICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTsgfVxuICBzZXQgdHlwZShmaWVsZFR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVHlwZSwgZmllbGRUeXBlKTsgfVxuICBnZXQgb25WYWxpZGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW5cbiAgICAgIHx8IHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrKSA/IHluKHRoaXMuX3ZhbHVlKSA6IHRoaXMuX3ZhbHVlO1xuICB9XG4gIGdldCB2YWxpZGF0ZU9uU2VydmVyKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgdmFsaWRhdGVPblNlcnZlcih2YWxpZGF0ZU9uU2VydmVyKSB7IHRoaXMuc2V0QXR0cihhdHRycy52YWxpZGF0ZU9uU2VydmVyLCB2YWxpZGF0ZU9uU2VydmVyKTsgfVxuICBnZXQgc2VydmVyQWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuICBzZXQgc2VydmVyQWN0aW9uKHZhbGlkYXRlT25TZXJ2ZXI6IGJvb2xlYW4pIHsgdGhpcy52YWxpZGF0ZU9uU2VydmVyID0gdmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cbiAgZ2V0IHZpc2libGVMYWJlbCgpIHsgcmV0dXJuIHRoaXMuX3Zpc2libGVMYWJlbDsgfVxuICBzZXQgdmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMudmlzaWJsZUxhYmVsLCB2aXNpYmxlTGFiZWwpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB2YWx1ZVxuICAgKi9cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBoYXNDaGFuZ2VkXG4gICAqL1xuICBjaGFuZ2VkKGhhc0NoYW5nZWQgPSB0cnVlKSB7IHRoaXMuaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQ7IH1cblxuICBjbGVhbigpIHsgdGhpcy5fc2V0VmFsdWUodGhpcy5fZGVmYXVsdFZhbHVlIHx8ICcnKTsgdGhpcy5yZXNldEVycm9yKCk7IH1cbiAgZm9jdXMoKSB7IHRoaXMuc2V0QXR0cihhdHRycy5mb2N1cywgdHJ1ZSk7IH1cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5lcnJvci5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmVycm9yLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuX2Vycm9yQ29kZSwgbXNnKTsgfVxuICBnZXRSZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMucmVxdWlyZWQ7IH1cbiAgaGFzRXJyb3IoKSB7IHJldHVybiB0aGlzLl9lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy52aXNpYmxlTGFiZWwgPSBmYWxzZTsgfVxuICByZXNldEVycm9yKCkgeyAodGhpcy5fZXJyb3JDb2RlICE9PSBOT19FUlJPUikgJiYgdGhpcy5zZXRFcnJvcihOT19FUlJPUiwgbnVsbCk7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cbiAgc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSA9IHRydWUpIHsgdGhpcy5fc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSk7IH1cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IHRydWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNvZGVcbiAgICovXG4gIGdldCBmaWVsZENvZGUoKSB7IHJldHVybiB0aGlzLl9maWVsZENvZGU7IH1cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGl0bGVcbiAgICovXG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMudGl0bGUgPSBsYWJlbDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcmVxdWlyZWRcbiAgICovXG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgY2hhbmdlZFxuICAgKi9cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuY2hhbmdlZChoYXNDaGFuZ2VkKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdmFsdWVcbiAgICovXG4gIGdldFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBlbXB0eVxuICAgKi9cbiAgaXNFbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZW1wdHkgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXJyb3JcbiAgICovXG4gIGdldEVycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvcjsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uVGV4dFxuICAgKi9cbiAgZ2V0T3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMub3B0aW9uVGV4dDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugb3B0aW9uc1xuICAgKi9cbiAgZ2V0RmllbGRPcHRpb25zKCkgeyByZXR1cm4gdGhpcy5vcHRpb25zOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBvcHRpb25zXG4gICAqL1xuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykgeyByZXR1cm4gdGhpcy5vcHRpb25zID0gbmV3T3B0aW9uczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgaW50cmluc2ljRXJyb3JNZXNzYWdlXG4gICAqL1xuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuaW50cmluc2ljRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgbWF4VmFsdWVcbiAgICovXG4gIHNldE1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHsgdGhpcy5tYXhWYWx1ZSA9IGlucHV0TWF4VmFsdWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIG1pblZhbHVlXG4gICAqL1xuICBzZXRNaW5WYWx1ZShpbnB1dE1pblZhbHVlKSB7IHRoaXMubWluVmFsdWUgPSBpbnB1dE1pblZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBzaG93TGFiZWxcbiAgICovXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cblxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb246IHRydWUgfSk7XG4gIH1cblxuICB0cmlnZ2VyQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCBldmVudERhdGEpIHtcbiAgICB0aGlzLl9jdXN0b21FdmVudC5uZXh0KHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBldmVudE5hbWUsIGV2ZW50RGF0YSB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25GaW5pc2goKSB7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG4gICAgY29uc3QgdmFsaWRhdGlvbkNvbmZpZyA9IHRoaXMuX2Zvcm1Db25maWcuZmllbGRWYWxpZGF0aW9ucz8uW3RoaXMuX2ZpZWxkVHlwZV0gPz8ge307XG4gICAgY29uc3QgeyB0eXBlLCB2YWxpZGF0aW9uIH0gPSB2YWxpZGF0aW9uQ29uZmlnO1xuICAgIGxldCBtZXNzYWdlID0gdmFsaWRhdGlvbkNvbmZpZz8ubWVzc2FnZTtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgaWYgKGZpZWxkVmFsdWUgJiYgKHZhbGlkYXRpb24gfHwgdGhpcy5fZmllbGRGb3JtYXQpKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3JlZ2V4cCcpIHtcbiAgICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9ICh2YWxpZGF0aW9uPy50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICAgJiYgKHRoaXMuX2ZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWxpZGF0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsaWQsIG1lc3NhZ2U6IGN1c3RvbU1lc3NhZ2UgfSA9IHZhbGlkYXRpb24oZmllbGRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSB2YWxpZDtcbiAgICAgICAgbWVzc2FnZSA9IGN1c3RvbU1lc3NhZ2U7XG4gICAgICB9XG4gICAgICBpZiAoIWludHJpbnNpY1ZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcignOTknLCBtZXNzYWdlID8/IHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdGhpcy5fbWluVmFsdWUgJiYgZmllbGRWYWx1ZSA8IHRoaXMuX21pblZhbHVlKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsICdDYW1wbyBjb24gdmFsb3IgaW5mZXJpb3IgYWwgbcOtbmltbycpO1xuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHRoaXMuX21heFZhbHVlICYmIGZpZWxkVmFsdWUgPiB0aGlzLl9tYXhWYWx1ZSkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCAnQ2FtcG8gY29uIHZhbG9yIHN1cGVyaW9yIGFsIG3DoXhpbW8nKTtcbiAgICB9XG4gICAgaWYgKGludHJpbnNpY1ZhbGlkYXRpb24gJiYgZmllbGRWYWx1ZSAmJiB0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICYmIHRoaXMuX21pbkxlbmd0aCAmJiBmaWVsZFZhbHVlPy5sZW5ndGggPCB0aGlzLl9taW5MZW5ndGgpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgYExvbmdpdHVkIGRlICR7dGhpcy5fZmllbGRUaXRsZX0gZGViZSBzZXIgZGUgYWwgbWVub3MgJHt0aGlzLl9taW5MZW5ndGh9YCk7XG4gICAgfVxuICAgIHRoaXMuX2VkaXRpb25GaW5pc2gubmV4dCh7IGNvZGU6IHRoaXMuX2ZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25EZXRhaWxSZXF1ZXN0KGRldGFpbDogYW55KSB7XG4gICAgY29uc3QgZGV0YWlsRXZlbnQ6IERldGFpbEV2ZW50ID0geyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGRldGFpbCB9O1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dChkZXRhaWxFdmVudCk7XG4gIH1cblxuICBzZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlID0gREVGQVVMVF9FUlJPUl9UWVBFKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yQ29kZSwgY29kZSA/PyBOT19FUlJPUik7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yVHlwZSwgKHRoaXMuX2Vycm9yQ29kZSA9PT0gTk9fRVJST1IpID8gJycgOiB0eXBlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZXJyb3JNZXNzYWdlLCBtZXNzYWdlID8/ICcnKTtcbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIoZmxkKSB7XG4gICAgY29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmxkKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYXR0ck5hbWUgPSBmaWVsZEtleXNbaW5kZXhdO1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gZmxkW2F0dHJOYW1lXTtcbiAgICAgIGlmIChkaXJlY3RDaGFuZ2VzLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICB0aGlzW2F0dHJOYW1lXSA9IGF0dHJWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2xhYmVsJykgJiYgKHRoaXMudGl0bGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdsYWJlbFZpc2libGUnKSAmJiAodGhpcy52aXNpYmxlTGFiZWwgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdlZGl0YWJsZScpICYmIHRoaXMuc2V0RWRpdGFibGUoYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAndmlzaWJsZScpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd2YWx1ZScpICYmICh0aGlzLl9zZXRWYWx1ZShhdHRyVmFsdWUpICYmICh0aGlzLmhhc0NoYW5nZWQgPSBmYWxzZSkpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFZhbHVlJykgJiYgKHRoaXMuX3NldFZhbHVlKGF0dHJWYWx1ZSkgJiYgKHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlKSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkT3B0aW9ucycpICYmICh0aGlzLm9wdGlvbnMgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFRpdGxlJykgJiYgKHRoaXMudGl0bGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFR5cGVDb2RlJykgJiYgKHRoaXMudHlwZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVHlwZScpICYmICh0aGlzLnR5cGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd0b29sdGlwVGV4dCcpICYmICh0aGlzLnRvb2x0aXAgPSBhdHRyVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhblxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2spIHtcbiAgICAgIG5ld0ZpbmFsVmFsdWUgPSB5bihuZXdWYWx1ZSkgPz8gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMubWFwKSB7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwgfHwgbmV3VmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJywnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuX2hhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgaWYgKHdpZGdldFVwZGF0ZSkge1xuICAgICAgICB0aGlzLnNldEF0dHIoYXR0cnMudmFsdWUsIG5ld0ZpbmFsVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBuZXdGaW5hbFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export const NO_ERROR = '00';
|
|
2
|
-
export const HEADER = 'HEADER';
|
|
3
|
-
export const elementTypes = {
|
|
4
|
-
action: 'ACTION',
|
|
5
|
-
field: 'FIELD',
|
|
6
|
-
table: 'TABLE',
|
|
7
|
-
};
|
|
8
|
-
export const formActions = {
|
|
9
|
-
tableAction: 'TABLEACTION',
|
|
10
|
-
getData: 'GETDATA',
|
|
11
|
-
getTableData: 'GETTABLEDATA',
|
|
12
|
-
validate: 'VALIDATE',
|
|
13
|
-
};
|
|
14
|
-
export const operators = {
|
|
15
|
-
G: 'G',
|
|
16
|
-
L: 'L',
|
|
17
|
-
GE: 'GE',
|
|
18
|
-
LE: 'LE',
|
|
19
|
-
EQ: 'EQ',
|
|
20
|
-
NEQ: 'NEQ',
|
|
21
|
-
HAS: 'HAS',
|
|
22
|
-
NOTHAS: 'NOTHAS',
|
|
23
|
-
BETWEEN: 'BETWEEN',
|
|
24
|
-
IN: 'IN',
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLFVBQVU7Q0FDckIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxJQUFJO0NBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOT19FUlJPUiA9ICcwMCc7XG5leHBvcnQgY29uc3QgSEVBREVSID0gJ0hFQURFUic7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50VHlwZXMgPSB7XG4gIGFjdGlvbjogJ0FDVElPTicsXG4gIGZpZWxkOiAnRklFTEQnLFxuICB0YWJsZTogJ1RBQkxFJyxcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtQWN0aW9ucyA9IHtcbiAgdGFibGVBY3Rpb246ICdUQUJMRUFDVElPTicsXG4gIGdldERhdGE6ICdHRVREQVRBJyxcbiAgZ2V0VGFibGVEYXRhOiAnR0VUVEFCTEVEQVRBJyxcbiAgdmFsaWRhdGU6ICdWQUxJREFURScsXG59O1xuXG5leHBvcnQgY29uc3Qgb3BlcmF0b3JzID0ge1xuICBHOiAnRycsXG4gIEw6ICdMJyxcbiAgR0U6ICdHRScsXG4gIExFOiAnTEUnLFxuICBFUTogJ0VRJyxcbiAgTkVROiAnTkVRJyxcbiAgSEFTOiAnSEFTJyxcbiAgTk9USEFTOiAnTk9USEFTJyxcbiAgQkVUV0VFTjogJ0JFVFdFRU4nLFxuICBJTjogJ0lOJyxcbn07XG4iXX0=
|