@dsivd/prestations-ng 15.4.9-beta2 → 15.4.9

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/CHANGELOG.md CHANGED
@@ -27,6 +27,12 @@ A change is considered **breaking** if you have to change your code or update yo
27
27
  ---
28
28
  ## [15.4.9]
29
29
 
30
+ ### Fixed
31
+
32
+ - [foehn-input-number.component.ts](projects/prestations-ng/src/foehn-input/foehn-input-number.component.ts)
33
+ - [currency-formatter.directive.ts](projects/prestations-ng/src/directives/currency-formatter.directive.ts)
34
+ - fixed a bug where input was impossible after a blur event on input "-"
35
+
30
36
  ### Added
31
37
 
32
38
  - [global.const.ts](projects/prestations-ng/src/global.const.ts)
Binary file
@@ -118,6 +118,9 @@ export class NumberCurrencyFormatterDirective {
118
118
  });
119
119
  }
120
120
  hasValueChanged(newValueWithoutFormatting) {
121
+ if (this.host.model?.toString()?.trim() === '-') {
122
+ return false;
123
+ }
121
124
  return (!this.host.model ||
122
125
  this.host.model.toString() !== newValueWithoutFormatting);
123
126
  }
@@ -137,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
137
140
  type: HostListener,
138
141
  args: ['modelChange', ['$event']]
139
142
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZm9ybWF0dGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9kaXJlY3RpdmVzL2N1cnJlbmN5LWZvcm1hdHRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDdEIsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBRXpDLHNDQUFzQztBQUN0QyxtRkFBbUY7QUFDbkYsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ25DLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1FBQ3ZDLCtFQUErRTtRQUMvRSxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxLQUFLO1NBQ1AsUUFBUSxFQUFFO1NBQ1YsSUFBSSxFQUFFO1NBQ04sT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyw0QkFBNEIsQ0FBQyxLQUFhO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE1BQU0sQ0FBQyxJQUFJLEVB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QyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsTUFBTSx5QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsRUFBRTtZQUNqRCx5RkFBeUY7WUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUN0RDtRQUVELGdGQUFnRjtRQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZUFBZSxDQUFDLHlCQUFpQztRQUNyRCxPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUsseUJBQXlCLENBQzNELENBQUM7SUFDTixDQUFDOzs4SEF0RVEsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0M7NEZBQWhDLGdDQUFnQztrQkFENUMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtxSUFVaEQsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQU83QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBTzlDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgTmdab25lLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEZvZWhuSW5wdXROdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDVVJSRU5DWV9SRUdFWFAsXG4gICAgREVDSU1BTFNfU0VQQVJBVE9SLFxuICAgIFRIT1VTQU5EU19TRVBBUkFUT1Jcbn0gZnJvbSAnLi4vc2RrLWN1cnJlbmN5L2N1cnJlbmN5LmhlbHBlcic7XG5cbi8vIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMsanNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gcmVtb3ZlRm9ybWF0dGluZyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byByZXR1cm4gbnVsbCBhcyB0aGUgYmFja2VuZCB3aWxsIGNvbnNpZGVyIHRoaXMgYXMgbm8gdmFsdWUuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoVEhPVVNBTkRTX1NFUEFSQVRPUiwgJ2cnKSwgJycpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMsanNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gZm9ybWF0V2l0aFRob3VzYW5kU2VwYXJhdG9ycyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShDVVJSRU5DWV9SRUdFWFAsIFRIT1VTQU5EU19TRVBBUkFUT1IpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMsanNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlckFzR2l2ZW4odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtpbnRnLCBkZWNdID0gcmVtb3ZlRm9ybWF0dGluZyh2YWx1ZSkuc3BsaXQoREVDSU1BTFNfU0VQQVJBVE9SKTtcblxuICAgIGlmICghIWRlYz8ubGVuZ3RoICYmIGRlYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKGludGcpICsgREVDSU1BTFNfU0VQQVJBVE9SICsgZGVjO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKGludGcpO1xuICAgIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zLGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWNpbWFsQ3VycmVuY3koXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBtYXhEZWNpbWFsQ291bnQ6IG51bWJlcixcbiAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICBhbGxvd0ZyZWVJbnB1dDogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW2ludGcsIGRlY10gPSByZW1vdmVGb3JtYXR0aW5nKHZhbHVlKS5zcGxpdChERUNJTUFMU19TRVBBUkFUT1IpO1xuXG4gICAgaWYgKGFsbG93RnJlZUlucHV0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKGludGcpICtcbiAgICAgICAgICAgIERFQ0lNQUxTX1NFUEFSQVRPUiArXG4gICAgICAgICAgICAoZGVjIHx8ICcwJykucGFkRW5kKG1heERlY2ltYWxDb3VudCwgJzAnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChtYXhEZWNpbWFsQ291bnQgPT09IDAgfHwgIW1heERlY2ltYWxDb3VudCkge1xuICAgICAgICByZXR1cm4gZm9ybWF0V2l0aFRob3VzYW5kU2VwYXJhdG9ycyhpbnRnKTtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRFbXB0eUVuZCA9ICcwJy5yZXBlYXQobWF4RGVjaW1hbENvdW50KTtcblxuICAgIGxldCBuZXdFbmQgPSBkZWMgPyBkZWMgKyB2YWxpZEVtcHR5RW5kIDogdmFsaWRFbXB0eUVuZDtcbiAgICBpZiAobmV3RW5kICYmIG5ld0VuZC5sZW5ndGggPj0gbWF4RGVjaW1hbENvdW50KSB7XG4gICAgICAgIG5ld0VuZCA9IG5ld0VuZC5zdWJzdHJpbmcoMCwgbWF4RGVjaW1hbENvdW50KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3RGVjaW1hbCA9IGludGcgKyBERUNJTUFMU19TRVBBUkFUT1IgKyBuZXdFbmQ7XG4gICAgaWYgKG5ld0RlY2ltYWwubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIG5ld0RlY2ltYWwgPSBuZXdEZWNpbWFsLnN1YnN0cmluZygwLCBtYXhMZW5ndGgpO1xuICAgIH1cblxuICAgIFssIG5ld0VuZF0gPSBuZXdEZWNpbWFsLnNwbGl0KERFQ0lNQUxTX1NFUEFSQVRPUik7XG4gICAgaWYgKCFuZXdFbmQpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMoaW50Zyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMoaW50ZykgKyBERUNJTUFMU19TRVBBUkFUT1IgKyBuZXdFbmQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9ucyxqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Tm9uRGVjaW1hbEN1cnJlbmN5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKHJlbW92ZUZvcm1hdHRpbmcodmFsdWUpKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tudW1iZXJDdXJyZW5jeUZvcm1hdHRlcl0nIH0pXG5leHBvcnQgY2xhc3MgTnVtYmVyQ3VycmVuY3lGb3JtYXR0ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgaGFzRm9jdXMgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3Q6IEZvZWhuSW5wdXROdW1iZXJDb21wb25lbnQsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gICAgb25CbHVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldEZvcm1hdHRpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gICAgb25Gb2N1cyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLmhvc3QuZm9yY2VVcGRhdGVOZ01vZGVsKHJlbW92ZUZvcm1hdHRpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb2RlbENoYW5nZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghIXZhbHVlICYmICF0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHNvbWV0aW1lcywgd2hlbiB0aGUgdmlldyBpcyBcInNpbXBsZVwiIGFuZCBkb2Vzbid0IHJlcXVpcmUgbG90IGEgcHJvY2Vzc2luZ1xuICAgICAgICAvLyB3ZSBhcnJpdmUgaW4gdGhpcyBtZXRob2Qgd2l0aCB0aGlzLmhvc3QubW9kZWwgbm90IGFscmVhZHkgaW5pdGlhbGl6ZWQsIHNvIHRoZSBmb3JtYXR0aW5nIGlzIG5vdCB3b3JraW5nXG4gICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRGb3JtYXR0aW5nKHRoaXMuaG9zdC5tb2RlbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9ybWF0dGluZyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIEhvb2tzIG9uIHRoZSBpbnB1dHMgb2YgdGhlIGNvbXBvbmVudCB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yXG5cbiAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5ob3N0LmFsbG93RnJlZUlucHV0ICYmICF0aGlzLmhvc3QuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdE51bWJlckFzR2l2ZW4odmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmhvc3QuYWxsb3dEZWNpbWFsXG4gICAgICAgICAgICAgICAgPyBmb3JtYXREZWNpbWFsQ3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Lm1heERlY2ltYWxDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3QubWF4bGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5hbGxvd0ZyZWVJbnB1dFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogZm9ybWF0Tm9uRGVjaW1hbEN1cnJlbmN5KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlV2l0aG91dEZvcm1hdHRpbmcgPSByZW1vdmVGb3JtYXR0aW5nKGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzVmFsdWVDaGFuZ2VkKG5ld1ZhbHVlV2l0aG91dEZvcm1hdHRpbmcpKSB7XG4gICAgICAgICAgICAvLyBTaW5jZSB3ZSBoYXZlIGFsdGVyZWQgdGhlIG1vZGVsIChpLmUuIGJ5IHJlbW92aW5nIHNvbWUgZGVjaW1hbHMpLCB3ZSBoYXZlIHRvIHVwZGF0ZSBpdFxuICAgICAgICAgICAgdGhpcy5ob3N0LnVwZGF0ZU5nTW9kZWwobmV3VmFsdWVXaXRob3V0Rm9ybWF0dGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEdWUgdG8gbmdNb2RlbCBiZWluZyBwb3NzaWJseSB1cGRhdGVkLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIGEgbWljcm8gdGFzayBlbXB0eVxuICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIGluamVjdGlvbiBub24tZGVjaW1hbCBjaGFyYWN0ZXJzLCBoZW5jZSB0aGUgZm9yY2UuXG4gICAgICAgICAgICB0aGlzLmhvc3QuZm9yY2VVcGRhdGVOZ01vZGVsKGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZUNoYW5nZWQobmV3VmFsdWVXaXRob3V0Rm9ybWF0dGluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5ob3N0Lm1vZGVsIHx8XG4gICAgICAgICAgICB0aGlzLmhvc3QubW9kZWwudG9TdHJpbmcoKSAhPT0gbmV3VmFsdWVXaXRob3V0Rm9ybWF0dGluZ1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZm9ybWF0dGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9kaXJlY3RpdmVzL2N1cnJlbmN5LWZvcm1hdHRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDdEIsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBRXpDLHNDQUFzQztBQUN0QyxtRkFBbUY7QUFDbkYsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ25DLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1FBQ3ZDLCtFQUErRTtRQUMvRSxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxLQUFLO1NBQ1AsUUFBUSxFQUFFO1NBQ1YsSUFBSSxFQUFFO1NBQ04sT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyw0QkFBNEIsQ0FBQyxLQUFhO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFdEUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3BDLE9BQU8sNEJBQTRCLENBQUMsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0tBQ3hFO1NBQU07UUFDSCxPQUFPLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzdDO0FBQ0wsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUscUJBQXFCLENBQ2pDLEtBQWEsRUFDYixlQUF1QixFQUN2QixTQUFpQixFQUNqQixjQUF1QjtJQUV2QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRFLElBQUksY0FBYyxFQUFFO1FBQ2hCLE9BQU8sQ0FDSCw0QkFBNEIsQ0FBQyxJQUFJLENBQUM7WUFDbEMsa0JBQWtCO1lBQ2xCLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQzVDLENBQUM7S0FDTDtJQUVELElBQUksZUFBZSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUMzQyxPQUFPLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzdDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVsRCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUN2RCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLGVBQWUsRUFBRTtRQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDakQ7SUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0lBQ3BELElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUU7UUFDL0IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ25EO0lBRUQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1QsT0FBTyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM3QztJQUVELE9BQU8sNEJBQTRCLENBQUMsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQzVFLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWE7SUFDbEQsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDdkMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE9BQU8sNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsOERBQThEO0FBRTlELE1BQU0sT0FBTyxnQ0FBZ0M7SUFHekMsWUFDWSxJQUErQixFQUMvQixNQUFjO1FBRGQsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpsQixhQUFRLEdBQUcsS0FBSyxDQUFDO0lBS3RCLENBQUM7SUFHSixNQUFNLENBQUMsS0FBYTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBYTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUdELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osNEVBQTRFO1FBQzVFLDBHQUEwRztRQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhO1FBQy9CLGlFQUFpRTtRQUVqRSxJQUFJLGNBQWMsR0FBVyxJQUFJLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JELGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQzthQUFNO1lBQ0gsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDbkMsQ0FBQyxDQUFDLHFCQUFxQixDQUNqQixLQUFLLEVBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FDM0I7Z0JBQ0gsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsTUFBTSx5QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsRUFBRTtZQUNqRCx5RkFBeUY7WUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUN0RDtRQUVELGdGQUFnRjtRQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZUFBZSxDQUFDLHlCQUFpQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtZQUM3QyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyx5QkFBeUIsQ0FDM0QsQ0FBQztJQUNOLENBQUM7OzhIQXpFUSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQzs0RkFBaEMsZ0NBQWdDO2tCQUQ1QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO3FJQVVoRCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBTzdDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFPOUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgRm9laG5JbnB1dE51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENVUlJFTkNZX1JFR0VYUCxcbiAgICBERUNJTUFMU19TRVBBUkFUT1IsXG4gICAgVEhPVVNBTkRTX1NFUEFSQVRPUlxufSBmcm9tICcuLi9zZGstY3VycmVuY3kvY3VycmVuY3kuaGVscGVyJztcblxuLy8gZXNsaW50LWRpc2FibGUgbWF4LWNsYXNzZXMtcGVyLWZpbGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9ucyxqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiByZW1vdmVGb3JtYXR0aW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIHJldHVybiBudWxsIGFzIHRoZSBiYWNrZW5kIHdpbGwgY29uc2lkZXIgdGhpcyBhcyBubyB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIC50b1N0cmluZygpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChUSE9VU0FORFNfU0VQQVJBVE9SLCAnZycpLCAnJyk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9ucyxqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKENVUlJFTkNZX1JFR0VYUCwgVEhPVVNBTkRTX1NFUEFSQVRPUik7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9ucyxqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyQXNHaXZlbih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW2ludGcsIGRlY10gPSByZW1vdmVGb3JtYXR0aW5nKHZhbHVlKS5zcGxpdChERUNJTUFMU19TRVBBUkFUT1IpO1xuXG4gICAgaWYgKCEhZGVjPy5sZW5ndGggJiYgZGVjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMoaW50ZykgKyBERUNJTUFMU19TRVBBUkFUT1IgKyBkZWM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMoaW50Zyk7XG4gICAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnMsanNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERlY2ltYWxDdXJyZW5jeShcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG1heERlY2ltYWxDb3VudDogbnVtYmVyLFxuICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgIGFsbG93RnJlZUlucHV0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBbaW50ZywgZGVjXSA9IHJlbW92ZUZvcm1hdHRpbmcodmFsdWUpLnNwbGl0KERFQ0lNQUxTX1NFUEFSQVRPUik7XG5cbiAgICBpZiAoYWxsb3dGcmVlSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMoaW50ZykgK1xuICAgICAgICAgICAgREVDSU1BTFNfU0VQQVJBVE9SICtcbiAgICAgICAgICAgIChkZWMgfHwgJzAnKS5wYWRFbmQobWF4RGVjaW1hbENvdW50LCAnMCcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG1heERlY2ltYWxDb3VudCA9PT0gMCB8fCAhbWF4RGVjaW1hbENvdW50KSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXaXRoVGhvdXNhbmRTZXBhcmF0b3JzKGludGcpO1xuICAgIH1cbiAgICBjb25zdCB2YWxpZEVtcHR5RW5kID0gJzAnLnJlcGVhdChtYXhEZWNpbWFsQ291bnQpO1xuXG4gICAgbGV0IG5ld0VuZCA9IGRlYyA/IGRlYyArIHZhbGlkRW1wdHlFbmQgOiB2YWxpZEVtcHR5RW5kO1xuICAgIGlmIChuZXdFbmQgJiYgbmV3RW5kLmxlbmd0aCA+PSBtYXhEZWNpbWFsQ291bnQpIHtcbiAgICAgICAgbmV3RW5kID0gbmV3RW5kLnN1YnN0cmluZygwLCBtYXhEZWNpbWFsQ291bnQpO1xuICAgIH1cblxuICAgIGxldCBuZXdEZWNpbWFsID0gaW50ZyArIERFQ0lNQUxTX1NFUEFSQVRPUiArIG5ld0VuZDtcbiAgICBpZiAobmV3RGVjaW1hbC5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgbmV3RGVjaW1hbCA9IG5ld0RlY2ltYWwuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7XG4gICAgfVxuXG4gICAgWywgbmV3RW5kXSA9IG5ld0RlY2ltYWwuc3BsaXQoREVDSU1BTFNfU0VQQVJBVE9SKTtcbiAgICBpZiAoIW5ld0VuZCkge1xuICAgICAgICByZXR1cm4gZm9ybWF0V2l0aFRob3VzYW5kU2VwYXJhdG9ycyhpbnRnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0V2l0aFRob3VzYW5kU2VwYXJhdG9ycyhpbnRnKSArIERFQ0lNQUxTX1NFUEFSQVRPUiArIG5ld0VuZDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zLGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROb25EZWNpbWFsQ3VycmVuY3kodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdFdpdGhUaG91c2FuZFNlcGFyYXRvcnMocmVtb3ZlRm9ybWF0dGluZyh2YWx1ZSkpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW251bWJlckN1cnJlbmN5Rm9ybWF0dGVyXScgfSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJDdXJyZW5jeUZvcm1hdHRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBoYXNGb2N1cyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaG9zdDogRm9laG5JbnB1dE51bWJlckNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcbiAgICBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0Rm9ybWF0dGluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcbiAgICBvbkZvY3VzKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMuaG9zdC5mb3JjZVVwZGF0ZU5nTW9kZWwocmVtb3ZlRm9ybWF0dGluZyh2YWx1ZSkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vZGVsQ2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdmFsdWUgJiYgIXRoaXMuaGFzRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybWF0dGluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gc29tZXRpbWVzLCB3aGVuIHRoZSB2aWV3IGlzIFwic2ltcGxlXCIgYW5kIGRvZXNuJ3QgcmVxdWlyZSBsb3QgYSBwcm9jZXNzaW5nXG4gICAgICAgIC8vIHdlIGFycml2ZSBpbiB0aGlzIG1ldGhvZCB3aXRoIHRoaXMuaG9zdC5tb2RlbCBub3QgYWxyZWFkeSBpbml0aWFsaXplZCwgc28gdGhlIGZvcm1hdHRpbmcgaXMgbm90IHdvcmtpbmdcbiAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRpbmcodGhpcy5ob3N0Lm1vZGVsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGb3JtYXR0aW5nKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gSG9va3Mgb24gdGhlIGlucHV0cyBvZiB0aGUgY29tcG9uZW50IHRvIGN1c3RvbWl6ZSB0aGUgYmVoYXZpb3JcblxuICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWU6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmhvc3QuYWxsb3dGcmVlSW5wdXQgJiYgIXRoaXMuaG9zdC5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0TnVtYmVyQXNHaXZlbih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuaG9zdC5hbGxvd0RlY2ltYWxcbiAgICAgICAgICAgICAgICA/IGZvcm1hdERlY2ltYWxDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3QubWF4RGVjaW1hbENvdW50LFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5tYXhsZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0LmFsbG93RnJlZUlucHV0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBmb3JtYXROb25EZWNpbWFsQ3VycmVuY3kodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVXaXRob3V0Rm9ybWF0dGluZyA9IHJlbW92ZUZvcm1hdHRpbmcoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5oYXNWYWx1ZUNoYW5nZWQobmV3VmFsdWVXaXRob3V0Rm9ybWF0dGluZykpIHtcbiAgICAgICAgICAgIC8vIFNpbmNlIHdlIGhhdmUgYWx0ZXJlZCB0aGUgbW9kZWwgKGkuZS4gYnkgcmVtb3Zpbmcgc29tZSBkZWNpbWFscyksIHdlIGhhdmUgdG8gdXBkYXRlIGl0XG4gICAgICAgICAgICB0aGlzLmhvc3QudXBkYXRlTmdNb2RlbChuZXdWYWx1ZVdpdGhvdXRGb3JtYXR0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIER1ZSB0byBuZ01vZGVsIGJlaW5nIHBvc3NpYmx5IHVwZGF0ZWQsIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5XG4gICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gV2UncmUgaW5qZWN0aW9uIG5vbi1kZWNpbWFsIGNoYXJhY3RlcnMsIGhlbmNlIHRoZSBmb3JjZS5cbiAgICAgICAgICAgIHRoaXMuaG9zdC5mb3JjZVVwZGF0ZU5nTW9kZWwoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1ZhbHVlQ2hhbmdlZChuZXdWYWx1ZVdpdGhvdXRGb3JtYXR0aW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuaG9zdC5tb2RlbD8udG9TdHJpbmcoKT8udHJpbSgpID09PSAnLScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuaG9zdC5tb2RlbCB8fFxuICAgICAgICAgICAgdGhpcy5ob3N0Lm1vZGVsLnRvU3RyaW5nKCkgIT09IG5ld1ZhbHVlV2l0aG91dEZvcm1hdHRpbmdcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -70,11 +70,12 @@ export class FoehnInputNumberComponent extends FoehnInputStringComponent {
70
70
  this.setToEmpty(value);
71
71
  return;
72
72
  }
73
+ const isDeleting = value.toString()?.length < this.model?.length;
73
74
  let cleanNumber;
74
75
  if (!this.allowFreeInput) {
75
76
  cleanNumber = this.getCleanNumber(value.toString());
76
77
  const isModelValid = this.isModelValid(cleanNumber);
77
- if (!isModelValid) {
78
+ if (!isModelValid && !isDeleting) {
78
79
  cleanNumber = this.model;
79
80
  }
80
81
  }
@@ -86,7 +87,8 @@ export class FoehnInputNumberComponent extends FoehnInputStringComponent {
86
87
  : noCommaString;
87
88
  // check that it is a number in any of its possible form
88
89
  // to avoid -3.14-23--534
89
- if (!NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber)) {
90
+ if (!NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber) &&
91
+ !isDeleting) {
90
92
  cleanNumber = this.model;
91
93
  }
92
94
  }
@@ -271,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
271
273
  }], model: [{
272
274
  type: Input
273
275
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFJUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLDBDQUEwQyxFQUMxQyw4QkFBOEIsRUFDOUIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFFSCxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ3RCLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7QUFFcEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQWNyRSxNQUFNLE9BQU8seUJBQ1QsU0FBUSx5QkFBeUI7SUFtQmpDLFlBQ1ksY0FBOEIsRUFDOUIsaUJBQXVDO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBSEEs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QUNOLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLE9BQU8scUJBQXFCLENBQ3hCLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsY0FBYyxDQUN0QixDQUFDO1NBQ0w7UUFDRCxPQUFPLHdCQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3VIQXJTUSx5QkFBeUI7MkdBQXpCLHlCQUF5QiwyUEFSdkI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osc0VDOUNMLGl3RkFpRkE7NEZEakNhLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDSSxvQkFBb0IsYUFHbkI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO3dJQU1ELG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBa0JGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDTEVBTl9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTixcbiAgICBDTEVBTl9ORUdBVElWRV9BTkRfREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgQ0xFQU5fTkVHQVRJVkVfTlVNQkVSU19QQVRURVJOLFxuICAgIENMRUFOX05VTUJFUlNfUEFUVEVSTixcbiAgICBERUNJTUFMX05VTUJFUlNfUEFUVEVSTixcbiAgICBIVE1MX0RFQ0lNQUxfUEFUVEVSTixcbiAgICBIVE1MX05PX0RFQ0lNQUxfUEFUVEVSTixcbiAgICBORUdBVElWRV9BTkRfREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgTkVHQVRJVkVfTlVNQkVSU19QQVRURVJOLFxuICAgIE5VTUJFUlNfUEFUVEVSTlxufSBmcm9tICcuL3BhdHRlcm4uY29uc3QnO1xuaW1wb3J0IHsgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtc3RyaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBDdXJyZW5jeUhlbHBlcixcbiAgICBERUNJTUFMU19TRVBBUkFUT1Jcbn0gZnJvbSAnLi4vc2RrLWN1cnJlbmN5L2N1cnJlbmN5LmhlbHBlcic7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtcbiAgICBmb3JtYXREZWNpbWFsQ3VycmVuY3ksXG4gICAgZm9ybWF0Tm9uRGVjaW1hbEN1cnJlbmN5LFxuICAgIGZvcm1hdE51bWJlckFzR2l2ZW5cbn0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jdXJyZW5jeS1mb3JtYXR0ZXIuZGlyZWN0aXZlJztcblxuY29uc3QgaXNEZWZpbmVkID0gKHZhbHVlOiBudW1iZXIpOiBib29sZWFuID0+IHZhbHVlID09PSAwIHx8ICEhdmFsdWU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXROdW1iZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5JbnB1dE51bWJlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZVN0YW5kYXJkSGVscFRleHQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dEZWNpbWFsOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxvd05lZ2F0aXZlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhEZWNpbWFsQ291bnQgPSAyO1xuXG4gICAgQElucHV0KClcbiAgICBhbGxvd0ZyZWVJbnB1dCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsSGVscFRleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGN1cnJlbmN5SGVscGVyOiBDdXJyZW5jeUhlbHBlcixcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBnZXQgbW9kZWwoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gSWYgdGhlIHNldHRlciBpcyBvdmVycmlkZGVuLCBpdCdzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIHRoZSBnZXR0ZXIgdG9vLlxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbF87XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9kZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgdHJpZ2dlciB0aGUgY29tcG9uZW50J3MgdmVyc2lvbiBvZiB1cGRhdGVOZ01vZGVsIHN0cmFpdCBhd2F5IGFzIHRoaXMgbWlnaHRcbiAgICAgICAgLy8gYmUgY2FsbGVkIGJlZm9yZSBhbGxvd0RlY2ltYWwgb3IgYWxsb3dOZWdhdGl2ZSBhcmUgcHJvcGVybHkgc2V0IChiZWZvcmUgdGhlIGluaXQgbGlmZWN5Y2xlXG4gICAgICAgIC8vIG9mIHRoZSBjb21wb25lbnQpLiBUaGlzIGlzIGNyaXRpY2FsIHRvIG5vdCByZS1mb3JtYXQgdGhlIGlucHV0IGJlZm9yZSB0aGUgT25Jbml0LCBvdGhlcndpc2VcbiAgICAgICAgLy8gd2UgbWlnaHQgZW5kIHVwIHdpdGggaW52YWxpZCB2YWx1ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIHRoaXMudXBkYXRlTmdNb2RlbCBpcyBjYWxsZWQgaW1wbGljaXRseVxuICAgICAgICAvLyBhcyBzdXBlci51cGRhdGVOZ01vZGVsIHdpbGwgZW1pdCBhIGNoYW5nZSBvbiB0aGlzLm1vZGVsQ2hhbmdlLlxuICAgICAgICAvLyBGSVhNRSB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIGJlIHJlZmFjdG9yZWQuXG4gICAgICAgIHN1cGVyLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcblxuICAgICAgICAvLyBQYXR0ZXJuIHVzZWQgb25seSBmb3IgbnVtcGFkIHRyaWdnZXIgb24gbW9iaWxlIHBob25lc1xuICAgICAgICB0aGlzLnBhdHRlcm4gPSB0aGlzLmFsbG93RGVjaW1hbFxuICAgICAgICAgICAgPyBIVE1MX0RFQ0lNQUxfUEFUVEVSTlxuICAgICAgICAgICAgOiBIVE1MX05PX0RFQ0lNQUxfUEFUVEVSTjtcblxuICAgICAgICB0aGlzLm1heGxlbmd0aCA9ICEhdGhpcy5tYXhsZW5ndGggPyB0aGlzLm1heGxlbmd0aCA6IDk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzID0gT2JqZWN0LmtleXMoY2hhbmdlcylcbiAgICAgICAgICAgIC5maWx0ZXIoayA9PiBrICE9PSAnbW9kZWwnKVxuICAgICAgICAgICAgLm1hcChrID0+IGNoYW5nZXNba10pXG4gICAgICAgICAgICAuZmluZChjaGFuZ2UgPT4gY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGhlbHBUZXh0SGFzQ2hhbmdlZCA9XG4gICAgICAgICAgICBjaGFuZ2VzLmhlbHBUZXh0Py5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuaGVscFRleHQ/LnByZXZpb3VzVmFsdWU7XG5cbiAgICAgICAgaWYgKGhlbHBUZXh0SGFzQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsSGVscFRleHQgPSBjaGFuZ2VzLmhlbHBUZXh0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUhlbHBUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dGcmVlSW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRNYXhMZW5ndGgoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9FbXB0eSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2xlYW5OdW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5hbGxvd0ZyZWVJbnB1dCkge1xuICAgICAgICAgICAgY2xlYW5OdW1iZXIgPSB0aGlzLmdldENsZWFuTnVtYmVyKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgaXNNb2RlbFZhbGlkID0gdGhpcy5pc01vZGVsVmFsaWQoY2xlYW5OdW1iZXIpO1xuICAgICAgICAgICAgaWYgKCFpc01vZGVsVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhbk51bWJlciA9IHRoaXMubW9kZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub0NvbW1hU3RyaW5nID0gdGhpcy5yZXBsYWNlQ29tbWFXaXRoRG90KHZhbHVlKTtcbiAgICAgICAgICAgIGNsZWFuTnVtYmVyID1cbiAgICAgICAgICAgICAgICBub0NvbW1hU3RyaW5nICYmIHR5cGVvZiBub0NvbW1hU3RyaW5nID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IG5vQ29tbWFTdHJpbmcucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xFQU5fTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBub0NvbW1hU3RyaW5nO1xuICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBpdCBpcyBhIG51bWJlciBpbiBhbnkgb2YgaXRzIHBvc3NpYmxlIGZvcm1cbiAgICAgICAgICAgIC8vIHRvIGF2b2lkIC0zLjE0LTIzLS01MzRcbiAgICAgICAgICAgIGlmICghTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLnRlc3QoY2xlYW5OdW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgY2xlYW5OdW1iZXIgPSB0aGlzLm1vZGVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIudXBkYXRlTmdNb2RlbChjbGVhbk51bWJlcik7XG5cbiAgICAgICAgLy8gTmVlZCB0byB1cGRhdGUgSFRNTCBpbnB1dCB2YWx1ZSBiZWNhdXNlIHdlIGxldCB1c2VyIGlucHV0IHdoYXQgaGUgd2FudHMgYW5kIHRoZW4gd2UgY2xlYW4gbW9kZWxcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dEVsZW1lbnRWYWx1ZShjbGVhbk51bWJlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG8gYmUgdXNlZCBmb3IgcG9zdC1mb3JtYXR0aW5nIGJ5IGRpcmVjdGl2ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgb2YgbW9kZWxcbiAgICAgKi9cbiAgICBmb3JjZVVwZGF0ZU5nTW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0RWxlbWVudFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RyaW5nQVZhbGlkTnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWRhdGlvblJlZ2V4KCkudGVzdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01vZGVsVmFsaWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1N0cmluZ0FWYWxpZE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZGF0aW9uUmVnZXgoaXNGb3JDbGVhbjogYm9vbGVhbiA9IGZhbHNlKTogUmVnRXhwIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsIHx8IHRoaXMuYWxsb3dOZWdhdGl2ZSkge1xuICAgICAgICAgICAgLy8gQWxsb3cgZGVjaW1hbCBhbmQgbmVnYXRpdmVcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCAmJiB0aGlzLmFsbG93TmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWlzRm9yQ2xlYW5cbiAgICAgICAgICAgICAgICAgICAgPyBORUdBVElWRV9BTkRfREVDSU1BTF9OVU1CRVJTX1BBVFRFUk5cbiAgICAgICAgICAgICAgICAgICAgOiBDTEVBTl9ORUdBVElWRV9BTkRfREVDSU1BTF9OVU1CRVJTX1BBVFRFUk47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBbGxvdyBkZWNpbWFsXG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWlzRm9yQ2xlYW5cbiAgICAgICAgICAgICAgICAgICAgPyBERUNJTUFMX05VTUJFUlNfUEFUVEVSTlxuICAgICAgICAgICAgICAgICAgICA6IENMRUFOX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWxsb3cgbmVnYXRpdmVcbiAgICAgICAgICAgIHJldHVybiAhaXNGb3JDbGVhblxuICAgICAgICAgICAgICAgID8gTkVHQVRJVkVfTlVNQkVSU19QQVRURVJOXG4gICAgICAgICAgICAgICAgOiBDTEVBTl9ORUdBVElWRV9OVU1CRVJTX1BBVFRFUk47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc0ZvckNsZWFuID8gTlVNQkVSU19QQVRURVJOIDogQ0xFQU5fTlVNQkVSU19QQVRURVJOO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZUNvbW1hV2l0aERvdCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKCcsJywgJ2cnKSwgREVDSU1BTFNfU0VQQVJBVE9SKVxuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vbk51bWVyaWNDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyB2YWx1ZS5yZXBsYWNlKHRoaXMuZ2V0VmFsaWRhdGlvblJlZ2V4KHRydWUpLCAnJylcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhbkRlY2ltYWxzKFxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgICBzZXBhcmF0b3I6IHN0cmluZyA9IERFQ0lNQUxTX1NFUEFSQVRPUlxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMuYWxsb3dEZWNpbWFsIHx8ICF2YWx1ZS5pbmNsdWRlcyhzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbaW50ZywgZGVjXSA9IHZhbHVlLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IGNsZWFuRGVjID0gZGVjLnN1YnN0cmluZygwLCB0aGlzLm1heERlY2ltYWxDb3VudCk7XG5cbiAgICAgICAgcmV0dXJuIGludGcgKyBzZXBhcmF0b3IgKyBjbGVhbkRlYztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENsZWFuTnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub0NvbW1hU3RyaW5nID0gdGhpcy5yZXBsYWNlQ29tbWFXaXRoRG90KHZhbHVlKTtcbiAgICAgICAgY29uc3QgY2xlYW5EZWNpbWFscyA9IHRoaXMuY2xlYW5EZWNpbWFscyhub0NvbW1hU3RyaW5nKTtcbiAgICAgICAgY29uc3QgY2xlYW5OdW1iZXIgPSB0aGlzLnJlbW92ZU5vbk51bWVyaWNDaGFyYWN0ZXJzKGNsZWFuRGVjaW1hbHMpO1xuXG4gICAgICAgIGlmIChjbGVhbk51bWJlciAmJiBjbGVhbk51bWJlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGVhbk51bWJlci5zdWJzdHJpbmcoMCwgdGhpcy5nZXRNYXhMZW5ndGgoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xlYW5OdW1iZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnB1dEVsZW1lbnRWYWx1ZShjbGVhbk51bWJlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdXBkYXRlIHRoZSBuYXRpdmUgZWxlbWVudCBpZiBpdCBkb2Vzbid0IHlldCBleGlzdC5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0RWxlbVZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0RWxlbVZhbHVlICE9PSBjbGVhbk51bWJlcikge1xuICAgICAgICAgICAgLy8gTmVlZCB0byB1cGRhdGUgSFRNTCBpbnB1dCB2YWx1ZSBiZWNhdXNlIHdlIGxldCB1c2VyIGlucHV0IHdoYXQgaGUgd2FudHMgYW5kIHRoZW4gd2UgY2xlYW4gbW9kZWxcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBjbGVhbk51bWJlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VG9FbXB0eSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIEVtcHR5IG1lYW5zIG51bGwsIG90aGVyd2lzZSB0aGUgYmFja2VuZCBkb2Vzbid0IGhhbmRsZSBudW1iZXJzIHByb3Blcmx5LiBXZSBoYXZlIHRvIGtlZXAgJ3VuZGVmaW5lZCdcbiAgICAgICAgLy8gaWYgJ3VuZGVmaW5lZCcgb3RoZXJ3aXNlIEFuZ3VsYXIgY29tcGxhaW5zIGFib3V0IHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgYmVpbmcgY2hhbmdlZCB3aXRob3V0IHVwZGF0aW5nXG4gICAgICAgIC8vIHRoZSB2aWV3LlxuICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gdmFsdWUgPT09ICcnID8gbnVsbCA6IHZhbHVlO1xuICAgICAgICBzdXBlci51cGRhdGVOZ01vZGVsKGVtcHR5VmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0RWxlbWVudFZhbHVlKGVtcHR5VmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlSGVscFRleHQoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuaGlkZVN0YW5kYXJkSGVscFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuaGVscFRleHQgPSB0aGlzLmluaXRpYWxIZWxwVGV4dDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd0ZyZWVJbnB1dCkge1xuICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLm1pbikgJiYgaXNEZWZpbmVkKHRoaXMubWF4KSkge1xuICAgICAgICAgICAgICAgIGlmICghIXRoaXMuaW5pdGlhbEhlbHBUZXh0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9IGAke3RoaXMuaW5pdGlhbEhlbHBUZXh0fTxici8+YDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlbHBUZXh0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuaGVscFRleHQgKz0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtbnVtYmVyLnN0YW5kYXJkLWhlbHAtdGV4dC5sYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblZhbHVlOiBmb3JtYXROdW1iZXJBc0dpdmVuKHRoaXMubWluLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWU6IGZvcm1hdE51bWJlckFzR2l2ZW4odGhpcy5tYXgudG9TdHJpbmcoKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISF0aGlzLmluaXRpYWxIZWxwVGV4dD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhlbHBUZXh0ID0gYCR7dGhpcy5pbml0aWFsSGVscFRleHR9PGJyLz5gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF4SW50ZWdlckNvdW50ID0gdGhpcy5hbGxvd0RlY2ltYWxcbiAgICAgICAgICAgID8gdGhpcy5tYXhsZW5ndGggLSB0aGlzLm1heERlY2ltYWxDb3VudCAtIDFcbiAgICAgICAgICAgIDogdGhpcy5tYXhsZW5ndGg7XG5cbiAgICAgICAgbGV0IG1heEFzU3RyaW5nO1xuICAgICAgICBpZiAoISF0aGlzLm1heCkge1xuICAgICAgICAgICAgbWF4QXNTdHJpbmcgPSB0aGlzLm1heDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1heEFzU3RyaW5nID0gJzknLnJlcGVhdChtYXhJbnRlZ2VyQ291bnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgbWF4QXNTdHJpbmcgKz0gYC4keyc5Jy5yZXBlYXQodGhpcy5tYXhEZWNpbWFsQ291bnQpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWluQXNTdHJpbmc7XG4gICAgICAgIGlmICh0aGlzLm1pbikge1xuICAgICAgICAgICAgbWluQXNTdHJpbmcgPSB0aGlzLm1pbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1pbkFzU3RyaW5nID0gdGhpcy5hbGxvd05lZ2F0aXZlXG4gICAgICAgICAgICAgICAgPyBgLSR7JzknLnJlcGVhdChtYXhJbnRlZ2VyQ291bnQgLSAxKX1gXG4gICAgICAgICAgICAgICAgOiAnMCc7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICBtaW5Bc1N0cmluZyArPSB0aGlzLmFsbG93TmVnYXRpdmVcbiAgICAgICAgICAgICAgICAgICAgPyBgLiR7JzknLnJlcGVhdCh0aGlzLm1heERlY2ltYWxDb3VudCB8fCAwKX1gXG4gICAgICAgICAgICAgICAgICAgIDogYC4keycwJy5yZXBlYXQodGhpcy5tYXhEZWNpbWFsQ291bnQgfHwgMCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGVscFRleHQgKz0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LW51bWJlci5zdGFuZGFyZC1oZWxwLXRleHQubGFiZWwnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1pblZhbHVlOiB0aGlzLmZvcm1hdFZhbHVlKG1pbkFzU3RyaW5nKSxcbiAgICAgICAgICAgICAgICBtYXhWYWx1ZTogdGhpcy5mb3JtYXRWYWx1ZShtYXhBc1N0cmluZylcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXREZWNpbWFsQ3VycmVuY3koXG4gICAgICAgICAgICAgICAgdmFsdWU/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhEZWNpbWFsQ291bnQsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhsZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvd0ZyZWVJbnB1dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0Tm9uRGVjaW1hbEN1cnJlbmN5KHZhbHVlPy50b1N0cmluZygpKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIGNsZWFyYWJsZS1pbnB1dC1mb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImxhYmVsICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiBsYWJlbFN0eWxlTW9kaWZpZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8Zm9laG4taGVscC1tb2RhbFxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVQYWRkaW5nQnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiISFoZWxwTW9kYWxcIlxuICAgICAgICAgICAgW21vZGFsQ29udGVudF09XCJoZWxwTW9kYWxcIlxuICAgICAgICA+PC9mb2Vobi1oZWxwLW1vZGFsPlxuICAgIDwvZGl2PlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJoZWxwVGV4dCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxpbnB1dFxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBoYXNJbmhlcml0RXJyb3JGcm9tUGFyZW50KClcIlxuICAgICAgICBbY2xhc3MuY2xlYXJhYmxlLWlucHV0XT1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwiZ2V0TWF4TGVuZ3RoKClcIlxuICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiZ2V0QXV0b0NvbXBsZXRlKClcIlxuICAgICAgICBbYXR0ci5hdXRvY2FwaXRhbGl6ZV09XCJhdXRvY2FwaXRhbGl6ZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgICBbYXR0ci5wYXR0ZXJuXT1cInBhdHRlcm5cIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVOZ01vZGVsKCRldmVudClcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlQ2hhbmdlKGVudHJ5Q29tcG9uZW50LnZhbHVlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICdDbGVhckJ1dHRvbidcIlxuICAgICAgICAqbmdJZj1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24gYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgY2xhc3M9XCJjbGVhcmFibGUtaW5wdXQtY2xlYXItYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgdGl0bGU9XCJSw6lpbml0aWFsaXNlciBsZSBjaGFtcHNcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFJUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLDBDQUEwQyxFQUMxQyw4QkFBOEIsRUFDOUIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFFSCxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ3RCLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7QUFFcEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQWNyRSxNQUFNLE9BQU8seUJBQ1QsU0FBUSx5QkFBeUI7SUFtQmpDLFlBQ1ksY0FBOEIsRUFDOUIsaUJBQXVDO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBSEEs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QTZDLEVBQzdDO1lBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztTQUMxQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXNCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixPQUFPLHFCQUFxQixDQUN4QixLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FDdEIsQ0FBQztTQUNMO1FBQ0QsT0FBTyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOzt1SEF6U1EseUJBQXlCOzJHQUF6Qix5QkFBeUIsMlBBUnZCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLHNFQzlDTCxpd0ZBaUZBOzRGRGpDYSx5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBR25CO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjt3SUFNRCxvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQWtCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ0xFQU5fREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgQ0xFQU5fTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgIENMRUFOX05FR0FUSVZFX05VTUJFUlNfUEFUVEVSTixcbiAgICBDTEVBTl9OVU1CRVJTX1BBVFRFUk4sXG4gICAgREVDSU1BTF9OVU1CRVJTX1BBVFRFUk4sXG4gICAgSFRNTF9ERUNJTUFMX1BBVFRFUk4sXG4gICAgSFRNTF9OT19ERUNJTUFMX1BBVFRFUk4sXG4gICAgTkVHQVRJVkVfQU5EX0RFQ0lNQUxfTlVNQkVSU19QQVRURVJOLFxuICAgIE5FR0FUSVZFX05VTUJFUlNfUEFUVEVSTixcbiAgICBOVU1CRVJTX1BBVFRFUk5cbn0gZnJvbSAnLi9wYXR0ZXJuLmNvbnN0JztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LXN0cmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ3VycmVuY3lIZWxwZXIsXG4gICAgREVDSU1BTFNfU0VQQVJBVE9SXG59IGZyb20gJy4uL3Nkay1jdXJyZW5jeS9jdXJyZW5jeS5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7XG4gICAgZm9ybWF0RGVjaW1hbEN1cnJlbmN5LFxuICAgIGZvcm1hdE5vbkRlY2ltYWxDdXJyZW5jeSxcbiAgICBmb3JtYXROdW1iZXJBc0dpdmVuXG59IGZyb20gJy4uL2RpcmVjdGl2ZXMvY3VycmVuY3ktZm9ybWF0dGVyLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGlzRGVmaW5lZCA9ICh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiA9PiB2YWx1ZSA9PT0gMCB8fCAhIXZhbHVlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1pbnB1dC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXROdW1iZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIGhpZGVTdGFuZGFyZEhlbHBUZXh0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RGVjaW1hbDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOZWdhdGl2ZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RGVjaW1hbENvdW50ID0gMjtcblxuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGcmVlSW5wdXQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaW5pdGlhbEhlbHBUZXh0OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjdXJyZW5jeUhlbHBlcjogQ3VycmVuY3lIZWxwZXIsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIElmIHRoZSBzZXR0ZXIgaXMgb3ZlcnJpZGRlbiwgaXQncyBjcml0aWNhbCB0byBvdmVycmlkZSB0aGUgZ2V0dGVyIHRvby5cbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWxfO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1vZGVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gVGhpcyBkb2Vzbid0IHRyaWdnZXIgdGhlIGNvbXBvbmVudCdzIHZlcnNpb24gb2YgdXBkYXRlTmdNb2RlbCBzdHJhaXQgYXdheSBhcyB0aGlzIG1pZ2h0XG4gICAgICAgIC8vIGJlIGNhbGxlZCBiZWZvcmUgYWxsb3dEZWNpbWFsIG9yIGFsbG93TmVnYXRpdmUgYXJlIHByb3Blcmx5IHNldCAoYmVmb3JlIHRoZSBpbml0IGxpZmVjeWNsZVxuICAgICAgICAvLyBvZiB0aGUgY29tcG9uZW50KS4gVGhpcyBpcyBjcml0aWNhbCB0byBub3QgcmUtZm9ybWF0IHRoZSBpbnB1dCBiZWZvcmUgdGhlIE9uSW5pdCwgb3RoZXJ3aXNlXG4gICAgICAgIC8vIHdlIG1pZ2h0IGVuZCB1cCB3aXRoIGludmFsaWQgdmFsdWUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiB0aGlzLnVwZGF0ZU5nTW9kZWwgaXMgY2FsbGVkIGltcGxpY2l0bHlcbiAgICAgICAgLy8gYXMgc3VwZXIudXBkYXRlTmdNb2RlbCB3aWxsIGVtaXQgYSBjaGFuZ2Ugb24gdGhpcy5tb2RlbENoYW5nZS5cbiAgICAgICAgLy8gRklYTUUgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBiZSByZWZhY3RvcmVkLlxuICAgICAgICBzdXBlci51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XG5cbiAgICAgICAgLy8gUGF0dGVybiB1c2VkIG9ubHkgZm9yIG51bXBhZCB0cmlnZ2VyIG9uIG1vYmlsZSBwaG9uZXNcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0gdGhpcy5hbGxvd0RlY2ltYWxcbiAgICAgICAgICAgID8gSFRNTF9ERUNJTUFMX1BBVFRFUk5cbiAgICAgICAgICAgIDogSFRNTF9OT19ERUNJTUFMX1BBVFRFUk47XG5cbiAgICAgICAgdGhpcy5tYXhsZW5ndGggPSAhIXRoaXMubWF4bGVuZ3RoID8gdGhpcy5tYXhsZW5ndGggOiA5O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlcyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gayAhPT0gJ21vZGVsJylcbiAgICAgICAgICAgIC5tYXAoayA9PiBjaGFuZ2VzW2tdKVxuICAgICAgICAgICAgLmZpbmQoY2hhbmdlID0+IGNoYW5nZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlKTtcblxuICAgICAgICBjb25zdCBoZWxwVGV4dEhhc0NoYW5nZWQgPVxuICAgICAgICAgICAgY2hhbmdlcy5oZWxwVGV4dD8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmhlbHBUZXh0Py5wcmV2aW91c1ZhbHVlO1xuXG4gICAgICAgIGlmIChoZWxwVGV4dEhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbEhlbHBUZXh0ID0gY2hhbmdlcy5oZWxwVGV4dC5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VIZWxwVGV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93RnJlZUlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0TWF4TGVuZ3RoKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTmdNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRvRW1wdHkodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRGVsZXRpbmcgPSB2YWx1ZS50b1N0cmluZygpPy5sZW5ndGggPCB0aGlzLm1vZGVsPy5sZW5ndGg7XG5cbiAgICAgICAgbGV0IGNsZWFuTnVtYmVyO1xuICAgICAgICBpZiAoIXRoaXMuYWxsb3dGcmVlSW5wdXQpIHtcbiAgICAgICAgICAgIGNsZWFuTnVtYmVyID0gdGhpcy5nZXRDbGVhbk51bWJlcih2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTW9kZWxWYWxpZCA9IHRoaXMuaXNNb2RlbFZhbGlkKGNsZWFuTnVtYmVyKTtcbiAgICAgICAgICAgIGlmICghaXNNb2RlbFZhbGlkICYmICFpc0RlbGV0aW5nKSB7XG4gICAgICAgICAgICAgICAgY2xlYW5OdW1iZXIgPSB0aGlzLm1vZGVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9Db21tYVN0cmluZyA9IHRoaXMucmVwbGFjZUNvbW1hV2l0aERvdCh2YWx1ZSk7XG4gICAgICAgICAgICBjbGVhbk51bWJlciA9XG4gICAgICAgICAgICAgICAgbm9Db21tYVN0cmluZyAmJiB0eXBlb2Ygbm9Db21tYVN0cmluZyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBub0NvbW1hU3RyaW5nLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIENMRUFOX05FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbm9Db21tYVN0cmluZztcbiAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgaXQgaXMgYSBudW1iZXIgaW4gYW55IG9mIGl0cyBwb3NzaWJsZSBmb3JtXG4gICAgICAgICAgICAvLyB0byBhdm9pZCAtMy4xNC0yMy0tNTM0XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIU5FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTi50ZXN0KGNsZWFuTnVtYmVyKSAmJlxuICAgICAgICAgICAgICAgICFpc0RlbGV0aW5nXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjbGVhbk51bWJlciA9IHRoaXMubW9kZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci51cGRhdGVOZ01vZGVsKGNsZWFuTnVtYmVyKTtcblxuICAgICAgICAvLyBOZWVkIHRvIHVwZGF0ZSBIVE1MIGlucHV0IHZhbHVlIGJlY2F1c2Ugd2UgbGV0IHVzZXIgaW5wdXQgd2hhdCBoZSB3YW50cyBhbmQgdGhlbiB3ZSBjbGVhbiBtb2RlbFxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0RWxlbWVudFZhbHVlKGNsZWFuTnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUbyBiZSB1c2VkIGZvciBwb3N0LWZvcm1hdHRpbmcgYnkgZGlyZWN0aXZlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBvZiBtb2RlbFxuICAgICAqL1xuICAgIGZvcmNlVXBkYXRlTmdNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWxfID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTdHJpbmdBVmFsaWROdW1iZXIodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZGF0aW9uUmVnZXgoKS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxWYWxpZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU3RyaW5nQVZhbGlkTnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkYXRpb25SZWdleChpc0ZvckNsZWFuOiBib29sZWFuID0gZmFsc2UpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwgfHwgdGhpcy5hbGxvd05lZ2F0aXZlKSB7XG4gICAgICAgICAgICAvLyBBbGxvdyBkZWNpbWFsIGFuZCBuZWdhdGl2ZVxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsICYmIHRoaXMuYWxsb3dOZWdhdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNGb3JDbGVhblxuICAgICAgICAgICAgICAgICAgICA/IE5FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTlxuICAgICAgICAgICAgICAgICAgICA6IENMRUFOX05FR0FUSVZFX0FORF9ERUNJTUFMX05VTUJFUlNfUEFUVEVSTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFsbG93IGRlY2ltYWxcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNGb3JDbGVhblxuICAgICAgICAgICAgICAgICAgICA/IERFQ0lNQUxfTlVNQkVSU19QQVRURVJOXG4gICAgICAgICAgICAgICAgICAgIDogQ0xFQU5fREVDSU1BTF9OVU1CRVJTX1BBVFRFUk47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBbGxvdyBuZWdhdGl2ZVxuICAgICAgICAgICAgcmV0dXJuICFpc0ZvckNsZWFuXG4gICAgICAgICAgICAgICAgPyBORUdBVElWRV9OVU1CRVJTX1BBVFRFUk5cbiAgICAgICAgICAgICAgICA6IENMRUFOX05FR0FUSVZFX05VTUJFUlNfUEFUVEVSTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzRm9yQ2xlYW4gPyBOVU1CRVJTX1BBVFRFUk4gOiBDTEVBTl9OVU1CRVJTX1BBVFRFUk47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXBsYWNlQ29tbWFXaXRoRG90KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoJywnLCAnZycpLCBERUNJTUFMU19TRVBBUkFUT1IpXG4gICAgICAgICAgICA6IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlTm9uTnVtZXJpY0NoYXJhY3RlcnModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHZhbHVlLnJlcGxhY2UodGhpcy5nZXRWYWxpZGF0aW9uUmVnZXgodHJ1ZSksICcnKVxuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuRGVjaW1hbHMoXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIHNlcGFyYXRvcjogc3RyaW5nID0gREVDSU1BTFNfU0VQQVJBVE9SXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5hbGxvd0RlY2ltYWwgfHwgIXZhbHVlLmluY2x1ZGVzKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtpbnRnLCBkZWNdID0gdmFsdWUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgY2xlYW5EZWMgPSBkZWMuc3Vic3RyaW5nKDAsIHRoaXMubWF4RGVjaW1hbENvdW50KTtcblxuICAgICAgICByZXR1cm4gaW50ZyArIHNlcGFyYXRvciArIGNsZWFuRGVjO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2xlYW5OdW1iZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vQ29tbWFTdHJpbmcgPSB0aGlzLnJlcGxhY2VDb21tYVdpdGhEb3QodmFsdWUpO1xuICAgICAgICBjb25zdCBjbGVhbkRlY2ltYWxzID0gdGhpcy5jbGVhbkRlY2ltYWxzKG5vQ29tbWFTdHJpbmcpO1xuICAgICAgICBjb25zdCBjbGVhbk51bWJlciA9IHRoaXMucmVtb3ZlTm9uTnVtZXJpY0NoYXJhY3RlcnMoY2xlYW5EZWNpbWFscyk7XG5cbiAgICAgICAgaWYgKGNsZWFuTnVtYmVyICYmIGNsZWFuTnVtYmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsZWFuTnVtYmVyLnN1YnN0cmluZygwLCB0aGlzLmdldE1heExlbmd0aCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjbGVhbk51bWJlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUlucHV0RWxlbWVudFZhbHVlKGNsZWFuTnVtYmVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1cGRhdGUgdGhlIG5hdGl2ZSBlbGVtZW50IGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5wdXRFbGVtVmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICBpZiAoaW5wdXRFbGVtVmFsdWUgIT09IGNsZWFuTnVtYmVyKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHVwZGF0ZSBIVE1MIGlucHV0IHZhbHVlIGJlY2F1c2Ugd2UgbGV0IHVzZXIgaW5wdXQgd2hhdCBoZSB3YW50cyBhbmQgdGhlbiB3ZSBjbGVhbiBtb2RlbFxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IGNsZWFuTnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb0VtcHR5KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgbWVhbnMgbnVsbCwgb3RoZXJ3aXNlIHRoZSBiYWNrZW5kIGRvZXNuJ3QgaGFuZGxlIG51bWJlcnMgcHJvcGVybHkuIFdlIGhhdmUgdG8ga2VlcCAndW5kZWZpbmVkJ1xuICAgICAgICAvLyBpZiAndW5kZWZpbmVkJyBvdGhlcndpc2UgQW5ndWxhciBjb21wbGFpbnMgYWJvdXQgdGhlIHZhbHVlIG9mIHRoZSBtb2RlbCBiZWluZyBjaGFuZ2VkIHdpdGhvdXQgdXBkYXRpbmdcbiAgICAgICAgLy8gdGhlIHZpZXcuXG4gICAgICAgIGNvbnN0IGVtcHR5VmFsdWUgPSB2YWx1ZSA9PT0gJycgPyBudWxsIDogdmFsdWU7XG4gICAgICAgIHN1cGVyLnVwZGF0ZU5nTW9kZWwoZW1wdHlWYWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRFbGVtZW50VmFsdWUoZW1wdHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VIZWxwVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5oaWRlU3RhbmRhcmRIZWxwVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9IHRoaXMuaW5pdGlhbEhlbHBUZXh0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmFsbG93RnJlZUlucHV0KSB7XG4gICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMubWluKSAmJiBpc0RlZmluZWQodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEhdGhpcy5pbml0aWFsSGVscFRleHQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlbHBUZXh0ID0gYCR7dGhpcy5pbml0aWFsSGVscFRleHR9PGJyLz5gO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVscFRleHQgPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1udW1iZXIuc3RhbmRhcmQtaGVscC10ZXh0LmxhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluVmFsdWU6IGZvcm1hdE51bWJlckFzR2l2ZW4odGhpcy5taW4udG9TdHJpbmcoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZTogZm9ybWF0TnVtYmVyQXNHaXZlbih0aGlzLm1heC50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMuaW5pdGlhbEhlbHBUZXh0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGVscFRleHQgPSBgJHt0aGlzLmluaXRpYWxIZWxwVGV4dH08YnIvPmA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlbHBUZXh0ID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhJbnRlZ2VyQ291bnQgPSB0aGlzLmFsbG93RGVjaW1hbFxuICAgICAgICAgICAgPyB0aGlzLm1heGxlbmd0aCAtIHRoaXMubWF4RGVjaW1hbENvdW50IC0gMVxuICAgICAgICAgICAgOiB0aGlzLm1heGxlbmd0aDtcblxuICAgICAgICBsZXQgbWF4QXNTdHJpbmc7XG4gICAgICAgIGlmICghIXRoaXMubWF4KSB7XG4gICAgICAgICAgICBtYXhBc1N0cmluZyA9IHRoaXMubWF4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF4QXNTdHJpbmcgPSAnOScucmVwZWF0KG1heEludGVnZXJDb3VudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICBtYXhBc1N0cmluZyArPSBgLiR7JzknLnJlcGVhdCh0aGlzLm1heERlY2ltYWxDb3VudCl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtaW5Bc1N0cmluZztcbiAgICAgICAgaWYgKHRoaXMubWluKSB7XG4gICAgICAgICAgICBtaW5Bc1N0cmluZyA9IHRoaXMubWluO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWluQXNTdHJpbmcgPSB0aGlzLmFsbG93TmVnYXRpdmVcbiAgICAgICAgICAgICAgICA/IGAtJHsnOScucmVwZWF0KG1heEludGVnZXJDb3VudCAtIDEpfWBcbiAgICAgICAgICAgICAgICA6ICcwJztcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgICAgIG1pbkFzU3RyaW5nICs9IHRoaXMuYWxsb3dOZWdhdGl2ZVxuICAgICAgICAgICAgICAgICAgICA/IGAuJHsnOScucmVwZWF0KHRoaXMubWF4RGVjaW1hbENvdW50IHx8IDApfWBcbiAgICAgICAgICAgICAgICAgICAgOiBgLiR7JzAnLnJlcGVhdCh0aGlzLm1heERlY2ltYWxDb3VudCB8fCAwKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oZWxwVGV4dCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZm9laG4taW5wdXQtbnVtYmVyLnN0YW5kYXJkLWhlbHAtdGV4dC5sYWJlbCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWU6IHRoaXMuZm9ybWF0VmFsdWUobWluQXNTdHJpbmcpLFxuICAgICAgICAgICAgICAgIG1heFZhbHVlOiB0aGlzLmZvcm1hdFZhbHVlKG1heEFzU3RyaW5nKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERlY2ltYWxDdXJyZW5jeShcbiAgICAgICAgICAgICAgICB2YWx1ZT8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0aGlzLm1heERlY2ltYWxDb3VudCxcbiAgICAgICAgICAgICAgICB0aGlzLm1heGxlbmd0aCxcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG93RnJlZUlucHV0XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXROb25EZWNpbWFsQ3VycmVuY3kodmFsdWU/LnRvU3RyaW5nKCkpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY2xlYXJhYmxlLWlucHV0LWZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGFiZWwgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxmb2Vobi1oZWxwLW1vZGFsXG4gICAgICAgICAgICBjbGFzcz1cInJlbW92ZVBhZGRpbmdCdXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCIhIWhlbHBNb2RhbFwiXG4gICAgICAgICAgICBbbW9kYWxDb250ZW50XT1cImhlbHBNb2RhbFwiXG4gICAgICAgID48L2ZvZWhuLWhlbHAtbW9kYWw+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGlucHV0XG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IGhhc0luaGVyaXRFcnJvckZyb21QYXJlbnQoKVwiXG4gICAgICAgIFtjbGFzcy5jbGVhcmFibGUtaW5wdXRdPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJnZXRNYXhMZW5ndGgoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJnZXRBdXRvQ29tcGxldGUoKVwiXG4gICAgICAgIFthdHRyLmF1dG9jYXBpdGFsaXplXT1cImF1dG9jYXBpdGFsaXplXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoZW50cnlDb21wb25lbnQudmFsdWUpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0NsZWFyQnV0dG9uJ1wiXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiY2xlYXJhYmxlLWlucHV0LWNsZWFyLWJ1dHRvbiBidG5cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICBjbGFzcz1cImNsZWFyYWJsZS1pbnB1dC1jbGVhci1idXR0b24taWNvblwiXG4gICAgICAgICAgICB0aXRsZT1cIlLDqWluaXRpYWxpc2VyIGxlIGNoYW1wc1wiXG4gICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -7083,6 +7083,10 @@ class NumberCurrencyFormatterDirective {
7083
7083
  });
7084
7084
  }
7085
7085
  hasValueChanged(newValueWithoutFormatting) {
7086
+ var _a, _b;
7087
+ if (((_b = (_a = this.host.model) === null || _a === void 0 ? void 0 : _a.toString()) === null || _b === void 0 ? void 0 : _b.trim()) === '-') {
7088
+ return false;
7089
+ }
7086
7090
  return (!this.host.model ||
7087
7091
  this.host.model.toString() !== newValueWithoutFormatting);
7088
7092
  }
@@ -7156,15 +7160,17 @@ class FoehnInputNumberComponent extends FoehnInputStringComponent {
7156
7160
  return super.getMaxLength();
7157
7161
  }
7158
7162
  updateNgModel(value) {
7163
+ var _a, _b;
7159
7164
  if (this.isEmpty(value)) {
7160
7165
  this.setToEmpty(value);
7161
7166
  return;
7162
7167
  }
7168
+ const isDeleting = ((_a = value.toString()) === null || _a === void 0 ? void 0 : _a.length) < ((_b = this.model) === null || _b === void 0 ? void 0 : _b.length);
7163
7169
  let cleanNumber;
7164
7170
  if (!this.allowFreeInput) {
7165
7171
  cleanNumber = this.getCleanNumber(value.toString());
7166
7172
  const isModelValid = this.isModelValid(cleanNumber);
7167
- if (!isModelValid) {
7173
+ if (!isModelValid && !isDeleting) {
7168
7174
  cleanNumber = this.model;
7169
7175
  }
7170
7176
  }
@@ -7176,7 +7182,8 @@ class FoehnInputNumberComponent extends FoehnInputStringComponent {
7176
7182
  : noCommaString;
7177
7183
  // check that it is a number in any of its possible form
7178
7184
  // to avoid -3.14-23--534
7179
- if (!NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber)) {
7185
+ if (!NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber) &&
7186
+ !isDeleting) {
7180
7187
  cleanNumber = this.model;
7181
7188
  }
7182
7189
  }