@wavemaker/app-ng-runtime 11.5.0-next.24746 → 11.5.0-next.26221
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.
- app-ng-runtime/components/base/bundles/index.umd.js +11 -8
- app-ng-runtime/components/base/esm2020/widgets/common/base/base-field-validations.mjs +12 -9
- app-ng-runtime/components/base/fesm2015/index.mjs +11 -8
- app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/base/fesm2020/index.mjs +11 -8
- app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
- app-ng-runtime/components/input/default/bundles/index.umd.js +1 -1
- app-ng-runtime/components/input/default/esm2020/base-form-custom.component.mjs +2 -2
- app-ng-runtime/components/input/default/fesm2015/index.mjs +1 -1
- app-ng-runtime/components/input/default/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/fesm2020/index.mjs +1 -1
- app-ng-runtime/components/input/default/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +1 -1
- app-ng-runtime/core/esm2020/utils/watcher.mjs +2 -2
- app-ng-runtime/core/fesm2015/index.mjs +1 -1
- app-ng-runtime/core/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/core/fesm2020/index.mjs +1 -1
- app-ng-runtime/core/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +2 -1
- app-ng-runtime/variables/esm2020/service/variables.service.mjs +3 -2
- app-ng-runtime/variables/fesm2015/index.mjs +2 -1
- app-ng-runtime/variables/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/variables/fesm2020/index.mjs +2 -1
- app-ng-runtime/variables/fesm2020/index.mjs.map +1 -1
|
@@ -4648,9 +4648,9 @@
|
|
|
4648
4648
|
if (this.widgetContext.ngform) {
|
|
4649
4649
|
this.widgetControl.setValidators(this.instance._validators);
|
|
4650
4650
|
const opt = {};
|
|
4651
|
-
// updating the value only when prevData is not equal to current value.
|
|
4651
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4652
4652
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4653
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4653
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4654
4654
|
opt['emitEvent'] = false;
|
|
4655
4655
|
}
|
|
4656
4656
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -4707,9 +4707,9 @@
|
|
|
4707
4707
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
4708
4708
|
if (this.widgetContext.ngform.touched) {
|
|
4709
4709
|
const opt = {};
|
|
4710
|
-
// updating the value only when prevData is not equal to current value.
|
|
4710
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4711
4711
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4712
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4712
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4713
4713
|
opt['emitEvent'] = false;
|
|
4714
4714
|
}
|
|
4715
4715
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -4776,9 +4776,9 @@
|
|
|
4776
4776
|
this.applyDefaultValidators();
|
|
4777
4777
|
if (this._asyncValidatorFn) {
|
|
4778
4778
|
const opt = {};
|
|
4779
|
-
// updating the value only when prevData is not equal to current value.
|
|
4779
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4780
4780
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4781
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4781
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4782
4782
|
opt['emitEvent'] = false;
|
|
4783
4783
|
}
|
|
4784
4784
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
@@ -4799,13 +4799,16 @@
|
|
|
4799
4799
|
this.applyDefaultValidators();
|
|
4800
4800
|
}, watchName));
|
|
4801
4801
|
}
|
|
4802
|
+
isNullOrEmptyOrFalsy(value) {
|
|
4803
|
+
return _.isEmpty(value);
|
|
4804
|
+
}
|
|
4802
4805
|
// invokes both custom sync validations and default validations.
|
|
4803
4806
|
applyDefaultValidators() {
|
|
4804
4807
|
const validators = this.getDefaultValidators();
|
|
4805
4808
|
const opt = {};
|
|
4806
|
-
// updating the value only when prevData is not equal to current value.
|
|
4809
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4807
4810
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4808
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4811
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4809
4812
|
opt['emitEvent'] = false;
|
|
4810
4813
|
}
|
|
4811
4814
|
this.widgetControl.setValidators(_.concat(this._syncValidators || [], validators));
|
|
@@ -65,9 +65,9 @@ export class BaseFieldValidations {
|
|
|
65
65
|
if (this.widgetContext.ngform) {
|
|
66
66
|
this.widgetControl.setValidators(this.instance._validators);
|
|
67
67
|
const opt = {};
|
|
68
|
-
// updating the value only when prevData is not equal to current value.
|
|
68
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
69
69
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
70
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
70
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
71
71
|
opt['emitEvent'] = false;
|
|
72
72
|
}
|
|
73
73
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -124,9 +124,9 @@ export class BaseFieldValidations {
|
|
|
124
124
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
125
125
|
if (this.widgetContext.ngform.touched) {
|
|
126
126
|
const opt = {};
|
|
127
|
-
// updating the value only when prevData is not equal to current value.
|
|
127
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
128
128
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
129
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
129
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
130
130
|
opt['emitEvent'] = false;
|
|
131
131
|
}
|
|
132
132
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -193,9 +193,9 @@ export class BaseFieldValidations {
|
|
|
193
193
|
this.applyDefaultValidators();
|
|
194
194
|
if (this._asyncValidatorFn) {
|
|
195
195
|
const opt = {};
|
|
196
|
-
// updating the value only when prevData is not equal to current value.
|
|
196
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
197
197
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
198
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
198
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
199
199
|
opt['emitEvent'] = false;
|
|
200
200
|
}
|
|
201
201
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
@@ -216,13 +216,16 @@ export class BaseFieldValidations {
|
|
|
216
216
|
this.applyDefaultValidators();
|
|
217
217
|
}, watchName));
|
|
218
218
|
}
|
|
219
|
+
isNullOrEmptyOrFalsy(value) {
|
|
220
|
+
return _.isEmpty(value);
|
|
221
|
+
}
|
|
219
222
|
// invokes both custom sync validations and default validations.
|
|
220
223
|
applyDefaultValidators() {
|
|
221
224
|
const validators = this.getDefaultValidators();
|
|
222
225
|
const opt = {};
|
|
223
|
-
// updating the value only when prevData is not equal to current value.
|
|
226
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
224
227
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
225
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
228
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
226
229
|
opt['emitEvent'] = false;
|
|
227
230
|
}
|
|
228
231
|
this.widgetControl.setValidators(_.concat(this._syncValidators || [], validators));
|
|
@@ -258,4 +261,4 @@ export class BaseFieldValidations {
|
|
|
258
261
|
}
|
|
259
262
|
}
|
|
260
263
|
}
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWVsZC12YWxpZGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWZpZWxkLXZhbGlkYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZFLE1BQU0saUJBQWlCLEdBQUc7SUFDdEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsVUFBVTtJQUNmLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGFBQWEsRUFBQyxlQUFlO0NBQ2hDLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBb0I3QixZQUFZLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBZTtRQUN2RixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxjQUFj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cnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFZBTElEQVRPUiwgJHdhdGNoLCAkdW53YXRjaCwgRm9ybVdpZGdldFR5cGUgfSBmcm9tICdAd20vY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgREVGQVVMVF9WQUxJREFUT1IgPSB7XG4gICAgcGF0dGVybjogJ3JlZ2V4cCcsXG4gICAgbWF4OiAnbWF4dmFsdWUnLFxuICAgIG1pbjogJ21pbnZhbHVlJyxcbiAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcbiAgICBtYXhsZW5ndGg6ICdtYXhjaGFycycsXG4gICAgbWluZGF0ZTogJ21pbmRhdGUnLFxuICAgIG1heGRhdGU6ICdtYXhkYXRlJyxcbiAgICBleGNsdWRlZGF0ZXM6ICdleGNsdWRlZGF0ZXMnLFxuICAgIGV4Y2x1ZGVkYXlzOiAnZXhjbHVkZWRheXMnLFxuICAgIGludmFsaWROdW1iZXI6J2ludmFsaWROdW1iZXInXG59O1xuXG5leHBvcnQgY2xhc3MgQmFzZUZpZWxkVmFsaWRhdGlvbnMge1xuICAgIHByaXZhdGUgaGFzVmFsaWRhdG9ycztcblxuICAgIC8vIEluc3RhbmNlIG9mIHRoZSBkaXJlY3RpdmUgdGFibGUtY29sdW1uLCBmb3JtLWZpZWxkLi5cbiAgICBwcml2YXRlIGluc3RhbmNlO1xuICAgIC8vIElubGluZSBmb3JtIHdpZGdldFxuICAgIHB1YmxpYyBmb3Jtd2lkZ2V0O1xuICAgIC8vIFdpZGdldCB0eXBlXG4gICAgcHJpdmF0ZSB3aWRnZXR0eXBlO1xuICAgIC8vIEZyb20gY29udHJvbFxuICAgIHByaXZhdGUgd2lkZ2V0Q29udHJvbDtcbiAgICAvLyBQYXJlbnQgd2lkZ2V0IGNvbnRleHQgVGFibGUsIEZvcm0uLlxuICAgIHByaXZhdGUgd2lkZ2V0Q29udGV4dDtcbiAgICAvLyBPcHRpb25hbCB0YWJsZSBjb2x1bW4gdHlwZSBxdWlja2VkaXQgbmV3cm93LyBpbmxpbmUgZWRpdFxuICAgIHByaXZhdGUgdGFibGVGaWVsZFR5cGU7XG5cbiAgICBwcml2YXRlIGRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlczogYW55O1xuICAgIHByaXZhdGUgX3N5bmNWYWxpZGF0b3JzOiBhbnk7XG4gICAgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JGbjogYW55O1xuXG4gICAgY29uc3RydWN0b3IoaW5zdGFuY2UsIGZvcm13aWRnZXQsIHdpZGdldHR5cGUsIHdpZGdldENvbnRyb2wsIHdpZGdldENvbnRleHQsIHRhYmxlRmllbGRUeXBlPyl7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgdGhpcy5mb3Jtd2lkZ2V0ID0gZm9ybXdpZGdldDtcbiAgICAgICAgdGhpcy53aWRnZXR0eXBlID0gd2lkZ2V0dHlwZTtcbiAgICAgICAgdGhpcy53aWRnZXRDb250cm9sID0gd2lkZ2V0Q29udHJvbDtcbiAgICAgICAgdGhpcy53aWRnZXRDb250ZXh0ID0gd2lkZ2V0Q29udGV4dDtcblxuICAgICAgICB0aGlzLmRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlcyA9IFtdO1xuICAgICAgICBpZiAodGFibGVGaWVsZFR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVGaWVsZFR5cGUgPSB0YWJsZUZpZWxkVHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGNvbGxlY3Rpb24gb2Ygc3VwcG9ydGVkIGRlZmF1bHQgdmFsaWRhdG9yc1xuICAgIHByaXZhdGUgZ2V0RGVmYXVsdFZhbGlkYXRvcnMoKSB7XG4gICAgICAgIGNvbnN0IF92YWxpZGF0b3IgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UucmVxdWlyZWQgJiYgdGhpcy5pbnN0YW5jZS5zaG93ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgLy8gRm9yIGNoZWNrYm94L3RvZ2dsZSB3aWRnZXQsIHJlcXVpcmVkIHZhbGlkYXRpb24gc2hvdWxkIGNvbnNpZGVyIHRydWUgdmFsdWUgb25seVxuICAgICAgICAgICAgaWYgKHRoaXMud2lkZ2V0dHlwZSA9PT0gRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1ggfHwgdGhpcy53aWRnZXR0eXBlID09PSBGb3JtV2lkZ2V0VHlwZS5UT0dHTEUpIHtcbiAgICAgICAgICAgICAgICBfdmFsaWRhdG9yLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdmFsaWRhdG9yLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UubWF4Y2hhcnMpIHtcbiAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmluc3RhbmNlLm1heGNoYXJzKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UubWludmFsdWUpIHtcbiAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLmluc3RhbmNlLm1pbnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UubWF4dmFsdWUgJiYgdGhpcy53aWRnZXR0eXBlICE9PSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkcpIHtcbiAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLm1heCh0aGlzLmluc3RhbmNlLm1heHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UucmVnZXhwKSB7XG4gICAgICAgICAgICBfdmFsaWRhdG9yLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuaW5zdGFuY2UucmVnZXhwKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZm9ybXdpZGdldCAmJiBfLmlzRnVuY3Rpb24odGhpcy5mb3Jtd2lkZ2V0LnZhbGlkYXRlKSkge1xuICAgICAgICAgICAgX3ZhbGlkYXRvci5wdXNoKHRoaXMuZm9ybXdpZGdldC52YWxpZGF0ZS5iaW5kKHRoaXMuZm9ybXdpZGdldCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdmFsaWRhdG9yO1xuICAgIH1cblxuICAgIC8vIE9uIGNoYW5nZSBvZiBhbnkgdmFsaWRhdGlvbiBwcm9wZXJ0eSwgc2V0IHRoZSBhbmd1bGFyIGZvcm0gdmFsaWRhdG9yc1xuICAgIHNldFVwVmFsaWRhdG9ycyhjdXN0b21WYWxpZGF0b3I/KSB7XG4gICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc3RhbmNlLl92YWxpZGF0b3JzID0gdGhpcy5nZXREZWZhdWx0VmFsaWRhdG9ycygpO1xuXG4gICAgICAgIGlmIChjdXN0b21WYWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuX3ZhbGlkYXRvcnMucHVzaChjdXN0b21WYWxpZGF0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud2lkZ2V0Q29udGV4dC5uZ2Zvcm0pIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuaW5zdGFuY2UuX3ZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgY29uc3Qgb3B0ID0ge307XG4gICAgICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFsdWUgb25seSB3aGVuIHByZXZEYXRhIGlzIG5vdCBlcXVhbCB0byBjdXJyZW50IHZhbHVlLlxuICAgICAgICAgICAgLy8gZW1pdEV2ZW50IGZsYWcgd2lsbCBwcmV2ZW50IGZyb20gZW1pdHRpbmcgdGhlIHZhbHVlQ2hhbmdlcyB3aGVuIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBwcmV2RGF0YXZhbHVlLlxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybXdpZGdldCAmJiB0aGlzLmluc3RhbmNlLnZhbHVlID09PSB0aGlzLmZvcm13aWRnZXQucHJldkRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9wdFsnZW1pdEV2ZW50J10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQcm9taXNlTGlzdCh2YWxpZGF0b3JzKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBfLmZvckVhY2godmFsaWRhdG9ycywgKGZuLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgbGV0IHByb21pc2UgPSBmbjtcbiAgICAgICAgICAgIGlmIChmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIGZuLmJpbmQpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlID0gZm4odGhpcy53aWRnZXRDb250cm9sLCB0aGlzLndpZGdldENvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvbWlzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cblxuICAgIC8vIHRoaXMgbWV0aG9kIHNldHMgdGhlIGFzeW5jVmFsaWRhdGlvbiBvbiB0aGUgZm9ybSBmaWVsZC4gQXNzaWducyB2YWxpZGF0aW9ubWVzc2FnZXMgZnJvbSB0aGUgcmV0dXJuZWQgcmVzcG9uc2VcbiAgICBzZXRBc3luY1ZhbGlkYXRvcnModmFsaWRhdG9ycykge1xuICAgICAgICB0aGlzLl9hc3luY1ZhbGlkYXRvckZuID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5nZXRQcm9taXNlTGlzdCh2YWxpZGF0b3JzKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsaWRhdGlvbm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgZXJyIG9iaiBoYXMgdmFsaWRhdGlvbk1lc3NhZ2Uga2V5LCB0aGVuIHNldCB2YWxpZGF0aW9uTWVzc2FnZSB1c2luZyB0aGlzIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsc2UgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3Qga2V5IGluIHRoZSBlcnIgb2JqZWN0IGFzIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5oYXNPd25Qcm9wZXJ0eSgnZXJyb3JNZXNzYWdlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsaWRhdGlvbm1lc3NhZ2UgPSBfLmdldChlcnIsICdlcnJvck1lc3NhZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBfLmtleXMoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsaWRhdGlvbm1lc3NhZ2UgPSAoZXJyW2tleXNbMF1dKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvcm0gY29udHJvbCBzdGF0dXMgaXMgbm90IGNoYW5nZWQgZnJvbSBwZW5kaW5nLiBUaGlzIGlzIGFuIGFuZ3VsYXIgaXNzdWUgcmVmZXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTMyMDBcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tGb3JTdGF0dXNDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53aWRnZXRDb250cm9sLnN0YXR1cyA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yU3RhdHVzQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5vblN0YXR1c0NoYW5nZSh0aGlzLndpZGdldENvbnRyb2wuc3RhdHVzLCB0aGlzLnRhYmxlRmllbGRUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjaGVja0ZvclN0YXR1c0NoYW5nZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoW3RoaXMuX2FzeW5jVmFsaWRhdG9yRm4oKV0pO1xuICAgICAgICBpZih0aGlzLndpZGdldENvbnRleHQubmdmb3JtLnRvdWNoZWQpe1xuICAgICAgICAgICAgY29uc3Qgb3B0ID0ge307XG4gICAgICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFsdWUgb25seSB3aGVuIHByZXZEYXRhIGlzIG5vdCBlcXVhbCB0byBjdXJyZW50IHZhbHVlLlxuICAgICAgICAgICAgLy8gZW1pdEV2ZW50IGZsYWcgd2lsbCBwcmV2ZW50IGZyb20gZW1pdHRpbmcgdGhlIHZhbHVlQ2hhbmdlcyB3aGVuIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBwcmV2RGF0YXZhbHVlLlxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybXdpZGdldCAmJiB0aGlzLmluc3RhbmNlLnZhbHVlID09PSB0aGlzLmZvcm13aWRnZXQucHJldkRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIG9wdFsnZW1pdEV2ZW50J10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0RlZmF1bHRWYWxpZGF0b3IodHlwZSkge1xuICAgICAgICByZXR1cm4gXy5nZXQoVkFMSURBVE9SLCBfLnRvVXBwZXIodHlwZSkpO1xuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgdmFsaWRhdG9yIGlzIGJvdW5kIHRvIGEgZnVuY3Rpb24gdGhlbiB3YXRjaCBmb3IgdmFsdWUgY2hhbmdlc1xuICAgIC8vIG90aGVyd2lzZSBzZXQgdGhlIHZhbHVlIG9mIGRlZmF1bHQgdmFsaWRhdG9yIGRpcmVjdGx5XG4gICAgc2V0RGVmYXVsdFZhbGlkYXRvcihrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAvLyBwYXNzaW5nIGZvcm1maWVsZCBhbmQgZm9ybSBhcyBhcmd1bWVudHMgdG8gdGhlIGRlZmF1bHQgdmFsaWRhdG9yIGZ1bmN0aW9uXG4gICAgICAgICAgICB0aGlzLndhdGNoRGVmYXVsdFZhbGlkYXRvckV4cHIodmFsdWUuYmluZCh1bmRlZmluZWQsIHRoaXMud2lkZ2V0Q29udHJvbCwgdGhpcy53aWRnZXRDb250ZXh0KSwga2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2Uud2lkZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2Vba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgZGVmYXVsdCB2YWxpZGF0aW9uIG9uIHRoZSBmb3JtIGZpZWxkXG4gICAgc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIGxldCBfY2xvbmVWYWxpZGF0b3JzID0gXy5jbG9uZURlZXAodmFsaWRhdG9ycyk7XG4gICAgICAgIHRoaXMuaGFzVmFsaWRhdG9ycyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3N5bmNWYWxpZGF0b3JzID0gW107XG4gICAgICAgIF8uZm9yRWFjaChfY2xvbmVWYWxpZGF0b3JzLCAob2JqLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLy8gY3VzdG9tIHZhbGlkYXRpb24gaXMgYm91bmQgdG8gZnVuY3Rpb24uXG4gICAgICAgICAgICBpZiAob2JqICYmIG9iaiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gcGFzc2luZyBmb3JtZmllbGQgYW5kIGZvcm0gYXMgYXJndW1lbnRzIHRvIHRoZSBvYmogKGkuZS4gdmFsaWRhdG9yIGZ1bmN0aW9uKVxuICAgICAgICAgICAgICAgIF9jbG9uZVZhbGlkYXRvcnNbaW5kZXhdID0gb2JqLmJpbmQodW5kZWZpbmVkLCB0aGlzLndpZGdldENvbnRyb2wsIHRoaXMud2lkZ2V0Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3luY1ZhbGlkYXRvcnMucHVzaChfY2xvbmVWYWxpZGF0b3JzW2luZGV4XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyBmb3IgZGVmYXVsdCB2YWxpZGF0b3IgbGlrZSByZXF1aXJlZCwgbWF4Y2hhcnMgZXRjLlxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IF8uZ2V0KG9iaiwgJ3R5cGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlc1trZXldID0gXy5nZXQob2JqLCAnZXJyb3JNZXNzYWdlJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0VmFsaWRhdG9yKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBfLmdldChvYmosICd2YWxpZGF0b3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsaWRhdG9yKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBfY2xvbmVWYWxpZGF0b3JzW2luZGV4XSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gX3N5bmNWYWxpZGF0b3JzIGNvbnRhaW5zIGFsbCB0aGUgY3VzdG9tIHZhbGlkYXRpb25zIG9uIHRoZSBmb3JtIGZpZWxkLiB3aWxsIG5vdCBpbmNsdWRlIGRlZmF1bHQgdmFsaWRhdG9ycy5cbiAgICAgICAgdGhpcy5fc3luY1ZhbGlkYXRvcnMgPSBfLmZpbHRlcihfY2xvbmVWYWxpZGF0b3JzLCB2YWwgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICB9XG5cbiAgICBvYnNlcnZlT24oZmllbGRzLCBjb250ZXh0KSB7XG4gICAgICAgIF8uZm9yRWFjaChmaWVsZHMsIGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1maWVsZCA9IF8uZmluZCh0aGlzLndpZGdldENvbnRleHRbY29udGV4dF0sIHsna2V5JzogZmllbGR9KTtcbiAgICAgICAgICAgIGlmIChmb3JtZmllbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1maWVsZC5ub3RpZnlGb3JGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWZpZWxkLm5vdGlmeUZvckZpZWxkcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtZmllbGQubm90aWZ5Rm9yRmllbGRzLnB1c2godGhpcy5pbnN0YW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FzeW5jVmFsaWRhdG9yRm4pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IHt9O1xuICAgICAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIG9ubHkgd2hlbiBwcmV2RGF0YSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2YWx1ZS5cbiAgICAgICAgICAgIC8vIGVtaXRFdmVudCBmbGFnIHdpbGwgcHJldmVudCBmcm9tIGVtaXR0aW5nIHRoZSB2YWx1ZUNoYW5nZXMgd2hlbiB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgcHJldkRhdGF2YWx1ZS5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm13aWRnZXQgJiYgdGhpcy5pbnN0YW5jZS52YWx1ZSA9PT0gdGhpcy5mb3Jtd2lkZ2V0LnByZXZEYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvcHRbJ2VtaXRFdmVudCddID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLndpZGdldENvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKFt0aGlzLl9hc3luY1ZhbGlkYXRvckZuKCldKTtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2hvdyB0aGUgdmFsaWRhdGlvbiBlcnJvcyBzaG93IHdoZW4gZm9ybSBpcyB0b3VjaGVkIGFuZCBub3Qgb24gbG9hZC4gVGhpcyBqdXN0IGhpZ2hsaWdodHMgdGhlIGZpZWxkIHRoYXQgaXMgc3Vic2NyaWJlZCBmb3IgY2hhbmdlcy5cbiAgICAgICAgaWYgKHRoaXMud2lkZ2V0Q29udGV4dC5uZ2Zvcm0udG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdhdGNoZXMgZm9yIGNoYW5nZXMgaW4gdGhlIGJvdW5kIGZ1bmN0aW9uIGZvciBkZWZhdWx0IHZhbGlkYXRvcnMuXG4gICAgd2F0Y2hEZWZhdWx0VmFsaWRhdG9yRXhwcihmbiwga2V5KSB7XG4gICAgICAgIGNvbnN0IHdhdGNoTmFtZSA9IGAke3RoaXMuaW5zdGFuY2Uud2lkZ2V0SWR9X2AgKyBrZXkgKyAnX2Zvcm1GaWVsZCc7XG4gICAgICAgICR1bndhdGNoKHdhdGNoTmFtZSk7XG4gICAgICAgIC8vW1RvZG8tQ1NQXTogTmVlZCBjbGFyaXR5IGdlbmVyYXRlIHRoaXMgZXhwciBmbiBpZiBmb3JtIGlzIHByZXNlbnQgaW4gdGhlIHBhZ2VcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigkd2F0Y2goJ2JvdW5kRm4oZm4pJywgXy5leHRlbmQodGhpcy5pbnN0YW5jZSwgdGhpcy5pbnN0YW5jZS52aWV3UGFyZW50KSwge2ZufSwgKG52LCBvdikgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS53aWRnZXRba2V5XSA9IG52O1xuICAgICAgICAgICAgdGhpcy5hcHBseURlZmF1bHRWYWxpZGF0b3JzKCk7XG4gICAgICAgIH0sIHdhdGNoTmFtZSkpO1xuICAgIH1cblxuICAgIC8vIGludm9rZXMgYm90aCBjdXN0b20gc3luYyB2YWxpZGF0aW9ucyBhbmQgZGVmYXVsdCB2YWxpZGF0aW9ucy5cbiAgICBhcHBseURlZmF1bHRWYWxpZGF0b3JzKCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXREZWZhdWx0VmFsaWRhdG9ycygpO1xuICAgICAgICBjb25zdCBvcHQgPSB7fTtcbiAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIG9ubHkgd2hlbiBwcmV2RGF0YSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2YWx1ZS5cbiAgICAgICAgLy8gZW1pdEV2ZW50IGZsYWcgd2lsbCBwcmV2ZW50IGZyb20gZW1pdHRpbmcgdGhlIHZhbHVlQ2hhbmdlcyB3aGVuIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBwcmV2RGF0YXZhbHVlLlxuICAgICAgICBpZiAodGhpcy5mb3Jtd2lkZ2V0ICYmIHRoaXMuaW5zdGFuY2UudmFsdWUgPT09IHRoaXMuZm9ybXdpZGdldC5wcmV2RGF0YXZhbHVlKSB7XG4gICAgICAgICAgICBvcHRbJ2VtaXRFdmVudCddID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnNldFZhbGlkYXRvcnMoXy5jb25jYXQodGhpcy5fc3luY1ZhbGlkYXRvcnMgfHwgW10sIHZhbGlkYXRvcnMpKTtcbiAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0KTtcbiAgICAgICAgdGhpcy5zZXRDdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIHNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkge1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHRoaXMud2lkZ2V0Q29udHJvbCAmJiB0aGlzLndpZGdldENvbnRyb2wuZXJyb3JzO1xuXG4gICAgICAgIGlmICghZmllbGRFcnJvcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRFcnJvcnMuaGFzT3duUHJvcGVydHkoJ2Vycm9yTWVzc2FnZScpKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gXy5nZXQoZmllbGRFcnJvcnMsICdlcnJvck1lc3NhZ2UnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBfLmtleXMoZmllbGRFcnJvcnMpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1swXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25Nc2dLZXkgPSBfLmdldChERUZBVUxUX1ZBTElEQVRPUiwga2V5KSB8fCB0aGlzLmZvcm13aWRnZXQudmFsaWRhdGVUeXBlO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25Nc2dLZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBfLmdldCh0aGlzLmRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlcywgdmFsaWRhdGlvbk1zZ0tleSkgfHwgdGhpcy5pbnN0YW5jZS52YWxpZGF0aW9ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBpZiAobXNnICYmIG1zZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3NpbmcgZm9ybWZpZWxkIGFuZCBmb3JtIGFzIGFyZ3VtZW50cyB0byB0aGUgZXJyb3JNZXNzYWdlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gbXNnKHRoaXMud2lkZ2V0Q29udHJvbCwgdGhpcy53aWRnZXRDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gbXNnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgd2hlbiB0aGVyZSBpcyBubyB2YWxpZGF0aW9ubWVzc2FnZSBmb3IgZmllbGRzIG90aGVyIHRoYW4gZGVmYXVsdCB2YWxpZGF0b3JzLlxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsaWRhdGlvbm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWVsZC12YWxpZGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWZpZWxkLXZhbGlkYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZFLE1BQU0saUJBQWlCLEdBQUc7SUFDdEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsVUFBVTtJQUNmLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGFBQWEsRUFBQyxlQUFlO0NBQ2hDLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBb0I3QixZQUFZLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBZTtRQUN2RixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxjQUFj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SUFBSSxHQUFHLElBQUksR0FBRyxZQUFZLFFBQVEsRUFBRTtvQkFDaEMsd0VBQXdFO29CQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDakY7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7aUJBQ3pDO2FBQ0o7aUJBQU07Z0JBQ0gsd0ZBQXdGO2dCQUN4RixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQzthQUN4QztTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVkFMSURBVE9SLCAkd2F0Y2gsICR1bndhdGNoLCBGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJ0B3bS9jb3JlJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBERUZBVUxUX1ZBTElEQVRPUiA9IHtcbiAgICBwYXR0ZXJuOiAncmVnZXhwJyxcbiAgICBtYXg6ICdtYXh2YWx1ZScsXG4gICAgbWluOiAnbWludmFsdWUnLFxuICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxuICAgIG1heGxlbmd0aDogJ21heGNoYXJzJyxcbiAgICBtaW5kYXRlOiAnbWluZGF0ZScsXG4gICAgbWF4ZGF0ZTogJ21heGRhdGUnLFxuICAgIGV4Y2x1ZGVkYXRlczogJ2V4Y2x1ZGVkYXRlcycsXG4gICAgZXhjbHVkZWRheXM6ICdleGNsdWRlZGF5cycsXG4gICAgaW52YWxpZE51bWJlcjonaW52YWxpZE51bWJlcidcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlRmllbGRWYWxpZGF0aW9ucyB7XG4gICAgcHJpdmF0ZSBoYXNWYWxpZGF0b3JzO1xuXG4gICAgLy8gSW5zdGFuY2Ugb2YgdGhlIGRpcmVjdGl2ZSB0YWJsZS1jb2x1bW4sIGZvcm0tZmllbGQuLlxuICAgIHByaXZhdGUgaW5zdGFuY2U7XG4gICAgLy8gSW5saW5lIGZvcm0gd2lkZ2V0XG4gICAgcHVibGljIGZvcm13aWRnZXQ7XG4gICAgLy8gV2lkZ2V0IHR5cGVcbiAgICBwcml2YXRlIHdpZGdldHR5cGU7XG4gICAgLy8gRnJvbSBjb250cm9sXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250cm9sO1xuICAgIC8vIFBhcmVudCB3aWRnZXQgY29udGV4dCBUYWJsZSwgRm9ybS4uXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250ZXh0O1xuICAgIC8vIE9wdGlvbmFsIHRhYmxlIGNvbHVtbiB0eXBlIHF1aWNrZWRpdCBuZXdyb3cvIGlubGluZSBlZGl0XG4gICAgcHJpdmF0ZSB0YWJsZUZpZWxkVHlwZTtcblxuICAgIHByaXZhdGUgZGVmYXVsdFZhbGlkYXRvck1lc3NhZ2VzOiBhbnk7XG4gICAgcHJpdmF0ZSBfc3luY1ZhbGlkYXRvcnM6IGFueTtcbiAgICBwcml2YXRlIF9hc3luY1ZhbGlkYXRvckZuOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnN0YW5jZSwgZm9ybXdpZGdldCwgd2lkZ2V0dHlwZSwgd2lkZ2V0Q29udHJvbCwgd2lkZ2V0Q29udGV4dCwgdGFibGVGaWVsZFR5cGU/KXtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgICB0aGlzLmZvcm13aWRnZXQgPSBmb3Jtd2lkZ2V0O1xuICAgICAgICB0aGlzLndpZGdldHR5cGUgPSB3aWRnZXR0eXBlO1xuICAgICAgICB0aGlzLndpZGdldENvbnRyb2wgPSB3aWRnZXRDb250cm9sO1xuICAgICAgICB0aGlzLndpZGdldENvbnRleHQgPSB3aWRnZXRDb250ZXh0O1xuXG4gICAgICAgIHRoaXMuZGVmYXVsdFZhbGlkYXRvck1lc3NhZ2VzID0gW107XG4gICAgICAgIGlmICh0YWJsZUZpZWxkVHlwZSkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZpZWxkVHlwZSA9IHRhYmxlRmllbGRUeXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgY29sbGVjdGlvbiBvZiBzdXBwb3J0ZWQgZGVmYXVsdCB2YWxpZGF0b3JzXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsaWRhdG9ycygpIHtcbiAgICAgICAgY29uc3QgX3ZhbGlkYXRvciA9IFtdO1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS5yZXF1aXJlZCAmJiB0aGlzLmluc3RhbmNlLnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBGb3IgY2hlY2tib3gvdG9nZ2xlIHdpZGdldCwgcmVxdWlyZWQgdmFsaWRhdGlvbiBzaG91bGQgY29uc2lkZXIgdHJ1ZSB2YWx1ZSBvbmx5XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXR0eXBlID09PSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWCB8fCB0aGlzLndpZGdldHR5cGUgPT09IEZvcm1XaWRnZXRUeXBlLlRPR0dMRSkge1xuICAgICAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS5tYXhjaGFycykge1xuICAgICAgICAgICAgX3ZhbGlkYXRvci5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuaW5zdGFuY2UubWF4Y2hhcnMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS5taW52YWx1ZSkge1xuICAgICAgICAgICAgX3ZhbGlkYXRvci5wdXNoKFZhbGlkYXRvcnMubWluKHRoaXMuaW5zdGFuY2UubWludmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS5tYXh2YWx1ZSAmJiB0aGlzLndpZGdldHR5cGUgIT09IEZvcm1XaWRnZXRUeXBlLlJBVElORykge1xuICAgICAgICAgICAgX3ZhbGlkYXRvci5wdXNoKFZhbGlkYXRvcnMubWF4KHRoaXMuaW5zdGFuY2UubWF4dmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS5yZWdleHApIHtcbiAgICAgICAgICAgIF92YWxpZGF0b3IucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5pbnN0YW5jZS5yZWdleHApKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mb3Jtd2lkZ2V0ICYmIF8uaXNGdW5jdGlvbih0aGlzLmZvcm13aWRnZXQudmFsaWRhdGUpKSB7XG4gICAgICAgICAgICBfdmFsaWRhdG9yLnB1c2godGhpcy5mb3Jtd2lkZ2V0LnZhbGlkYXRlLmJpbmQodGhpcy5mb3Jtd2lkZ2V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF92YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgLy8gT24gY2hhbmdlIG9mIGFueSB2YWxpZGF0aW9uIHByb3BlcnR5LCBzZXQgdGhlIGFuZ3VsYXIgZm9ybSB2YWxpZGF0b3JzXG4gICAgc2V0VXBWYWxpZGF0b3JzKGN1c3RvbVZhbGlkYXRvcj8pIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzVmFsaWRhdG9ycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuX3ZhbGlkYXRvcnMgPSB0aGlzLmdldERlZmF1bHRWYWxpZGF0b3JzKCk7XG5cbiAgICAgICAgaWYgKGN1c3RvbVZhbGlkYXRvcikge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5fdmFsaWRhdG9ycy5wdXNoKGN1c3RvbVZhbGlkYXRvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy53aWRnZXRDb250ZXh0Lm5nZm9ybSkge1xuICAgICAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5pbnN0YW5jZS5fdmFsaWRhdG9ycyk7XG4gICAgICAgICAgICBjb25zdCBvcHQgPSB7fTtcbiAgICAgICAgICAgIC8vIHVwZGF0aW5nIHRoZSB2YWx1ZSBvbmx5IHdoZW4gcHJldkRhdGEgaXMgbm90IGVxdWFsIHRvIGN1cnJlbnQgdmFsdWUuIGFuZCBhbHNvIGluaXRpYWxseSB3aGVuICBpbnN0YW5jZS52YWx1ZSBpcyBlbXB0eSBvciBudWxsIGZvciBzb21lIHdpZGdldHMgbGlrZSBkYXRlLCBjaGVja2JveHNldFxuICAgICAgICAgICAgLy8gZW1pdEV2ZW50IGZsYWcgd2lsbCBwcmV2ZW50IGZyb20gZW1pdHRpbmcgdGhlIHZhbHVlQ2hhbmdlcyB3aGVuIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBwcmV2RGF0YXZhbHVlLlxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybXdpZGdldCAmJiAodGhpcy5pbnN0YW5jZS52YWx1ZSA9PT0gdGhpcy5mb3Jtd2lkZ2V0LnByZXZEYXRhdmFsdWUgfHwgdGhpcy5pc051bGxPckVtcHR5T3JGYWxzeSh0aGlzLmluc3RhbmNlLnZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICBvcHRbJ2VtaXRFdmVudCddID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLndpZGdldENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShvcHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UHJvbWlzZUxpc3QodmFsaWRhdG9ycykge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgXy5mb3JFYWNoKHZhbGlkYXRvcnMsIChmbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGxldCBwcm9taXNlID0gZm47XG4gICAgICAgICAgICBpZiAoZm4gaW5zdGFuY2VvZiBGdW5jdGlvbiAmJiBmbi5iaW5kKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGZuKHRoaXMud2lkZ2V0Q29udHJvbCwgdGhpcy53aWRnZXRDb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb21pc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICAvLyB0aGlzIG1ldGhvZCBzZXRzIHRoZSBhc3luY1ZhbGlkYXRpb24gb24gdGhlIGZvcm0gZmllbGQuIEFzc2lnbnMgdmFsaWRhdGlvbm1lc3NhZ2VzIGZyb20gdGhlIHJldHVybmVkIHJlc3BvbnNlXG4gICAgc2V0QXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnMpIHtcbiAgICAgICAgdGhpcy5fYXN5bmNWYWxpZGF0b3JGbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHRoaXMuZ2V0UHJvbWlzZUxpc3QodmFsaWRhdG9ycykpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGVyciBvYmogaGFzIHZhbGlkYXRpb25NZXNzYWdlIGtleSwgdGhlbiBzZXQgdmFsaWRhdGlvbk1lc3NhZ2UgdXNpbmcgdGhpcyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSBpbiB0aGUgZXJyIG9iamVjdCBhcyB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIuaGFzT3duUHJvcGVydHkoJ2Vycm9yTWVzc2FnZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gXy5nZXQoZXJyLCAnZXJyb3JNZXNzYWdlJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gXy5rZXlzKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gKGVycltrZXlzWzBdXSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JtIGNvbnRyb2wgc3RhdHVzIGlzIG5vdCBjaGFuZ2VkIGZyb20gcGVuZGluZy4gVGhpcyBpcyBhbiBhbmd1bGFyIGlzc3VlIHJlZmVyIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzMjAwXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrRm9yU3RhdHVzQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud2lkZ2V0Q29udHJvbC5zdGF0dXMgPT09ICdQRU5ESU5HJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ZvclN0YXR1c0NoYW5nZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2Uub25TdGF0dXNDaGFuZ2UodGhpcy53aWRnZXRDb250cm9sLnN0YXR1cywgdGhpcy50YWJsZUZpZWxkVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3JTdGF0dXNDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLndpZGdldENvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKFt0aGlzLl9hc3luY1ZhbGlkYXRvckZuKCldKTtcbiAgICAgICAgaWYodGhpcy53aWRnZXRDb250ZXh0Lm5nZm9ybS50b3VjaGVkKXtcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IHt9O1xuICAgICAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIG9ubHkgd2hlbiBwcmV2RGF0YSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2YWx1ZS4gYW5kIGFsc28gaW5pdGlhbGx5IHdoZW4gIGluc3RhbmNlLnZhbHVlIGlzIGVtcHR5IG9yIG51bGwgZm9yIHNvbWUgd2lkZ2V0cyBsaWtlIGRhdGUsIGNoZWNrYm94c2V0XG4gICAgICAgICAgICAvLyBlbWl0RXZlbnQgZmxhZyB3aWxsIHByZXZlbnQgZnJvbSBlbWl0dGluZyB0aGUgdmFsdWVDaGFuZ2VzIHdoZW4gdmFsdWUgaXMgZXF1YWwgdG8gdGhlIHByZXZEYXRhdmFsdWUuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3Jtd2lkZ2V0ICYmICh0aGlzLmluc3RhbmNlLnZhbHVlID09PSB0aGlzLmZvcm13aWRnZXQucHJldkRhdGF2YWx1ZSB8fCB0aGlzLmlzTnVsbE9yRW1wdHlPckZhbHN5KHRoaXMuaW5zdGFuY2UudmFsdWUpKSkge1xuICAgICAgICAgICAgICAgIG9wdFsnZW1pdEV2ZW50J10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0RlZmF1bHRWYWxpZGF0b3IodHlwZSkge1xuICAgICAgICByZXR1cm4gXy5nZXQoVkFMSURBVE9SLCBfLnRvVXBwZXIodHlwZSkpO1xuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgdmFsaWRhdG9yIGlzIGJvdW5kIHRvIGEgZnVuY3Rpb24gdGhlbiB3YXRjaCBmb3IgdmFsdWUgY2hhbmdlc1xuICAgIC8vIG90aGVyd2lzZSBzZXQgdGhlIHZhbHVlIG9mIGRlZmF1bHQgdmFsaWRhdG9yIGRpcmVjdGx5XG4gICAgc2V0RGVmYXVsdFZhbGlkYXRvcihrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAvLyBwYXNzaW5nIGZvcm1maWVsZCBhbmQgZm9ybSBhcyBhcmd1bWVudHMgdG8gdGhlIGRlZmF1bHQgdmFsaWRhdG9yIGZ1bmN0aW9uXG4gICAgICAgICAgICB0aGlzLndhdGNoRGVmYXVsdFZhbGlkYXRvckV4cHIodmFsdWUuYmluZCh1bmRlZmluZWQsIHRoaXMud2lkZ2V0Q29udHJvbCwgdGhpcy53aWRnZXRDb250ZXh0KSwga2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2Uud2lkZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2Vba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgZGVmYXVsdCB2YWxpZGF0aW9uIG9uIHRoZSBmb3JtIGZpZWxkXG4gICAgc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIGxldCBfY2xvbmVWYWxpZGF0b3JzID0gXy5jbG9uZURlZXAodmFsaWRhdG9ycyk7XG4gICAgICAgIHRoaXMuaGFzVmFsaWRhdG9ycyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3N5bmNWYWxpZGF0b3JzID0gW107XG4gICAgICAgIF8uZm9yRWFjaChfY2xvbmVWYWxpZGF0b3JzLCAob2JqLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLy8gY3VzdG9tIHZhbGlkYXRpb24gaXMgYm91bmQgdG8gZnVuY3Rpb24uXG4gICAgICAgICAgICBpZiAob2JqICYmIG9iaiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gcGFzc2luZyBmb3JtZmllbGQgYW5kIGZvcm0gYXMgYXJndW1lbnRzIHRvIHRoZSBvYmogKGkuZS4gdmFsaWRhdG9yIGZ1bmN0aW9uKVxuICAgICAgICAgICAgICAgIF9jbG9uZVZhbGlkYXRvcnNbaW5kZXhdID0gb2JqLmJpbmQodW5kZWZpbmVkLCB0aGlzLndpZGdldENvbnRyb2wsIHRoaXMud2lkZ2V0Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3luY1ZhbGlkYXRvcnMucHVzaChfY2xvbmVWYWxpZGF0b3JzW2luZGV4XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyBmb3IgZGVmYXVsdCB2YWxpZGF0b3IgbGlrZSByZXF1aXJlZCwgbWF4Y2hhcnMgZXRjLlxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IF8uZ2V0KG9iaiwgJ3R5cGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlc1trZXldID0gXy5nZXQob2JqLCAnZXJyb3JNZXNzYWdlJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0VmFsaWRhdG9yKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBfLmdldChvYmosICd2YWxpZGF0b3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsaWRhdG9yKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBfY2xvbmVWYWxpZGF0b3JzW2luZGV4XSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gX3N5bmNWYWxpZGF0b3JzIGNvbnRhaW5zIGFsbCB0aGUgY3VzdG9tIHZhbGlkYXRpb25zIG9uIHRoZSBmb3JtIGZpZWxkLiB3aWxsIG5vdCBpbmNsdWRlIGRlZmF1bHQgdmFsaWRhdG9ycy5cbiAgICAgICAgdGhpcy5fc3luY1ZhbGlkYXRvcnMgPSBfLmZpbHRlcihfY2xvbmVWYWxpZGF0b3JzLCB2YWwgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICB9XG5cbiAgICBvYnNlcnZlT24oZmllbGRzLCBjb250ZXh0KSB7XG4gICAgICAgIF8uZm9yRWFjaChmaWVsZHMsIGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1maWVsZCA9IF8uZmluZCh0aGlzLndpZGdldENvbnRleHRbY29udGV4dF0sIHsna2V5JzogZmllbGR9KTtcbiAgICAgICAgICAgIGlmIChmb3JtZmllbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1maWVsZC5ub3RpZnlGb3JGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWZpZWxkLm5vdGlmeUZvckZpZWxkcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtZmllbGQubm90aWZ5Rm9yRmllbGRzLnB1c2godGhpcy5pbnN0YW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FzeW5jVmFsaWRhdG9yRm4pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IHt9O1xuICAgICAgICAgICAgLy8gdXBkYXRpbmcgdGhlIHZhbHVlIG9ubHkgd2hlbiBwcmV2RGF0YSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2YWx1ZS4gYW5kIGFsc28gaW5pdGlhbGx5IHdoZW4gIGluc3RhbmNlLnZhbHVlIGlzIGVtcHR5IG9yIG51bGwgZm9yIHNvbWUgd2lkZ2V0cyBsaWtlIGRhdGUsIGNoZWNrYm94c2V0XG4gICAgICAgICAgICAvLyBlbWl0RXZlbnQgZmxhZyB3aWxsIHByZXZlbnQgZnJvbSBlbWl0dGluZyB0aGUgdmFsdWVDaGFuZ2VzIHdoZW4gdmFsdWUgaXMgZXF1YWwgdG8gdGhlIHByZXZEYXRhdmFsdWUuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3Jtd2lkZ2V0ICYmICh0aGlzLmluc3RhbmNlLnZhbHVlID09PSB0aGlzLmZvcm13aWRnZXQucHJldkRhdGF2YWx1ZSB8fCB0aGlzLmlzTnVsbE9yRW1wdHlPckZhbHN5KHRoaXMuaW5zdGFuY2UudmFsdWUpKSkge1xuICAgICAgICAgICAgICAgIG9wdFsnZW1pdEV2ZW50J10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Q29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoW3RoaXMuX2FzeW5jVmFsaWRhdG9yRm4oKV0pO1xuICAgICAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzaG93IHRoZSB2YWxpZGF0aW9uIGVycm9zIHNob3cgd2hlbiBmb3JtIGlzIHRvdWNoZWQgYW5kIG5vdCBvbiBsb2FkLiBUaGlzIGp1c3QgaGlnaGxpZ2h0cyB0aGUgZmllbGQgdGhhdCBpcyBzdWJzY3JpYmVkIGZvciBjaGFuZ2VzLlxuICAgICAgICBpZiAodGhpcy53aWRnZXRDb250ZXh0Lm5nZm9ybS50b3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gd2F0Y2hlcyBmb3IgY2hhbmdlcyBpbiB0aGUgYm91bmQgZnVuY3Rpb24gZm9yIGRlZmF1bHQgdmFsaWRhdG9ycy5cbiAgICB3YXRjaERlZmF1bHRWYWxpZGF0b3JFeHByKGZuLCBrZXkpIHtcbiAgICAgICAgY29uc3Qgd2F0Y2hOYW1lID0gYCR7dGhpcy5pbnN0YW5jZS53aWRnZXRJZH1fYCArIGtleSArICdfZm9ybUZpZWxkJztcbiAgICAgICAgJHVud2F0Y2god2F0Y2hOYW1lKTtcbiAgICAgICAgLy9bVG9kby1DU1BdOiBOZWVkIGNsYXJpdHkgZ2VuZXJhdGUgdGhpcyBleHByIGZuIGlmIGZvcm0gaXMgcHJlc2VudCBpbiB0aGUgcGFnZVxuICAgICAgICB0aGlzLmluc3RhbmNlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCR3YXRjaCgnYm91bmRGbihmbiknLCBfLmV4dGVuZCh0aGlzLmluc3RhbmNlLCB0aGlzLmluc3RhbmNlLnZpZXdQYXJlbnQpLCB7Zm59LCAobnYsIG92KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLndpZGdldFtrZXldID0gbnY7XG4gICAgICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICAgICAgfSwgd2F0Y2hOYW1lKSk7XG4gICAgfVxuICAgIGlzTnVsbE9yRW1wdHlPckZhbHN5KHZhbHVlKSAge1xuICAgICAgICByZXR1cm4gXy5pc0VtcHR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBpbnZva2VzIGJvdGggY3VzdG9tIHN5bmMgdmFsaWRhdGlvbnMgYW5kIGRlZmF1bHQgdmFsaWRhdGlvbnMuXG4gICAgYXBwbHlEZWZhdWx0VmFsaWRhdG9ycygpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0RGVmYXVsdFZhbGlkYXRvcnMoKTtcbiAgICAgICAgY29uc3Qgb3B0ID0ge307XG4gICAgICAgIC8vIHVwZGF0aW5nIHRoZSB2YWx1ZSBvbmx5IHdoZW4gcHJldkRhdGEgaXMgbm90IGVxdWFsIHRvIGN1cnJlbnQgdmFsdWUuIGFuZCBhbHNvIGluaXRpYWxseSB3aGVuICBpbnN0YW5jZS52YWx1ZSBpcyBlbXB0eSBvciBudWxsIGZvciBzb21lIHdpZGdldHMgbGlrZSBkYXRlLCBjaGVja2JveHNldFxuICAgICAgICAvLyBlbWl0RXZlbnQgZmxhZyB3aWxsIHByZXZlbnQgZnJvbSBlbWl0dGluZyB0aGUgdmFsdWVDaGFuZ2VzIHdoZW4gdmFsdWUgaXMgZXF1YWwgdG8gdGhlIHByZXZEYXRhdmFsdWUuXG4gICAgICAgIGlmICh0aGlzLmZvcm13aWRnZXQgJiYgKHRoaXMuaW5zdGFuY2UudmFsdWUgPT09IHRoaXMuZm9ybXdpZGdldC5wcmV2RGF0YXZhbHVlIHx8IHRoaXMuaXNOdWxsT3JFbXB0eU9yRmFsc3kodGhpcy5pbnN0YW5jZS52YWx1ZSkpKSB7XG4gICAgICAgICAgICBvcHRbJ2VtaXRFdmVudCddID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnNldFZhbGlkYXRvcnMoXy5jb25jYXQodGhpcy5fc3luY1ZhbGlkYXRvcnMgfHwgW10sIHZhbGlkYXRvcnMpKTtcbiAgICAgICAgdGhpcy53aWRnZXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0KTtcbiAgICAgICAgdGhpcy5zZXRDdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIHNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkge1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHRoaXMud2lkZ2V0Q29udHJvbCAmJiB0aGlzLndpZGdldENvbnRyb2wuZXJyb3JzO1xuXG4gICAgICAgIGlmICghZmllbGRFcnJvcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRFcnJvcnMuaGFzT3duUHJvcGVydHkoJ2Vycm9yTWVzc2FnZScpKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gXy5nZXQoZmllbGRFcnJvcnMsICdlcnJvck1lc3NhZ2UnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBfLmtleXMoZmllbGRFcnJvcnMpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1swXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25Nc2dLZXkgPSBfLmdldChERUZBVUxUX1ZBTElEQVRPUiwga2V5KSB8fCB0aGlzLmZvcm13aWRnZXQudmFsaWRhdGVUeXBlO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25Nc2dLZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBfLmdldCh0aGlzLmRlZmF1bHRWYWxpZGF0b3JNZXNzYWdlcywgdmFsaWRhdGlvbk1zZ0tleSkgfHwgdGhpcy5pbnN0YW5jZS52YWxpZGF0aW9ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBpZiAobXNnICYmIG1zZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3NpbmcgZm9ybWZpZWxkIGFuZCBmb3JtIGFzIGFyZ3VtZW50cyB0byB0aGUgZXJyb3JNZXNzYWdlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gbXNnKHRoaXMud2lkZ2V0Q29udHJvbCwgdGhpcy53aWRnZXRDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRpb25tZXNzYWdlID0gbXNnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgd2hlbiB0aGVyZSBpcyBubyB2YWxpZGF0aW9ubWVzc2FnZSBmb3IgZmllbGRzIG90aGVyIHRoYW4gZGVmYXVsdCB2YWxpZGF0b3JzLlxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsaWRhdGlvbm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -4644,9 +4644,9 @@ class BaseFieldValidations {
|
|
|
4644
4644
|
if (this.widgetContext.ngform) {
|
|
4645
4645
|
this.widgetControl.setValidators(this.instance._validators);
|
|
4646
4646
|
const opt = {};
|
|
4647
|
-
// updating the value only when prevData is not equal to current value.
|
|
4647
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4648
4648
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4649
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4649
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4650
4650
|
opt['emitEvent'] = false;
|
|
4651
4651
|
}
|
|
4652
4652
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -4703,9 +4703,9 @@ class BaseFieldValidations {
|
|
|
4703
4703
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
4704
4704
|
if (this.widgetContext.ngform.touched) {
|
|
4705
4705
|
const opt = {};
|
|
4706
|
-
// updating the value only when prevData is not equal to current value.
|
|
4706
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4707
4707
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4708
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4708
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4709
4709
|
opt['emitEvent'] = false;
|
|
4710
4710
|
}
|
|
4711
4711
|
this.widgetControl.updateValueAndValidity(opt);
|
|
@@ -4772,9 +4772,9 @@ class BaseFieldValidations {
|
|
|
4772
4772
|
this.applyDefaultValidators();
|
|
4773
4773
|
if (this._asyncValidatorFn) {
|
|
4774
4774
|
const opt = {};
|
|
4775
|
-
// updating the value only when prevData is not equal to current value.
|
|
4775
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4776
4776
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4777
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4777
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4778
4778
|
opt['emitEvent'] = false;
|
|
4779
4779
|
}
|
|
4780
4780
|
this.widgetControl.setAsyncValidators([this._asyncValidatorFn()]);
|
|
@@ -4795,13 +4795,16 @@ class BaseFieldValidations {
|
|
|
4795
4795
|
this.applyDefaultValidators();
|
|
4796
4796
|
}, watchName));
|
|
4797
4797
|
}
|
|
4798
|
+
isNullOrEmptyOrFalsy(value) {
|
|
4799
|
+
return _.isEmpty(value);
|
|
4800
|
+
}
|
|
4798
4801
|
// invokes both custom sync validations and default validations.
|
|
4799
4802
|
applyDefaultValidators() {
|
|
4800
4803
|
const validators = this.getDefaultValidators();
|
|
4801
4804
|
const opt = {};
|
|
4802
|
-
// updating the value only when prevData is not equal to current value.
|
|
4805
|
+
// updating the value only when prevData is not equal to current value. and also initially when instance.value is empty or null for some widgets like date, checkboxset
|
|
4803
4806
|
// emitEvent flag will prevent from emitting the valueChanges when value is equal to the prevDatavalue.
|
|
4804
|
-
if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
|
|
4807
|
+
if (this.formwidget && (this.instance.value === this.formwidget.prevDatavalue || this.isNullOrEmptyOrFalsy(this.instance.value))) {
|
|
4805
4808
|
opt['emitEvent'] = false;
|
|
4806
4809
|
}
|
|
4807
4810
|
this.widgetControl.setValidators(_.concat(this._syncValidators || [], validators));
|