@porscheinformatik/clr-addons 10.4.1 → 10.4.5
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/bundles/clr-addons.umd.js +58 -23
- package/bundles/clr-addons.umd.js.map +1 -1
- package/clr-addons.metadata.json +1 -1
- package/esm2015/numericfield/numeric-field.js +18 -7
- package/esm2015/numericfield/numeric-field.ngsummary.json +1 -1
- package/fesm2015/clr-addons.js +20 -8
- package/fesm2015/clr-addons.js.map +1 -1
- package/numericfield/numeric-field.d.ts +2 -1
- package/package.json +1 -1
- package/src/main-nav-group/main-nav-group.scss +7 -2
- package/src/themes/phs/css.overrides.scss +5 -0
- package/styles/clr-addons-phs.css +13 -7
- package/styles/clr-addons-phs.css.map +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
- package/bundles/clr-addons.umd.min.js +0 -17
- package/bundles/clr-addons.umd.min.js.map +0 -1
|
@@ -21,11 +21,11 @@ export class ClrNumericField {
|
|
|
21
21
|
this.autofillDecimals = false;
|
|
22
22
|
this.decimalSeparator = ',';
|
|
23
23
|
this.groupingSeparator = '.';
|
|
24
|
-
this.unit = null;
|
|
25
24
|
this.unitPosition = 'right';
|
|
26
25
|
this.numericValueChanged = new EventEmitter();
|
|
27
26
|
this.displayValue = '';
|
|
28
27
|
this.originalValue = NaN;
|
|
28
|
+
this._unit = null;
|
|
29
29
|
this.allowedKeys = new Set(NUMBERS);
|
|
30
30
|
/* Control Values Accessor Stuff below */
|
|
31
31
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -40,6 +40,16 @@ export class ClrNumericField {
|
|
|
40
40
|
this.handleInputChanged();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
set unit(value) {
|
|
44
|
+
if (value != this._unit) {
|
|
45
|
+
this._unit = value;
|
|
46
|
+
if (this.unitSpan != null) {
|
|
47
|
+
this.unitSpan.innerHTML = '';
|
|
48
|
+
const newUnitText = this.renderer.createText(value);
|
|
49
|
+
this.renderer.appendChild(this.unitSpan, newUnitText);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
43
53
|
registerOnChange(fn) {
|
|
44
54
|
this.onChange = fn;
|
|
45
55
|
}
|
|
@@ -257,7 +267,7 @@ export class ClrNumericField {
|
|
|
257
267
|
injectUnitSymbol() {
|
|
258
268
|
// Need to inject the unit symbol when the input element width is set to its actual value,
|
|
259
269
|
// otherwise the icon wont show in the correct position
|
|
260
|
-
if (!!this.
|
|
270
|
+
if (!!this._unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {
|
|
261
271
|
// Get the input wrapper and apply necessary styles
|
|
262
272
|
const inputWrapper = this.inputEl.nativeElement.parentNode;
|
|
263
273
|
this.renderer.addClass(inputWrapper, 'numeric-input-wrapper');
|
|
@@ -265,7 +275,7 @@ export class ClrNumericField {
|
|
|
265
275
|
if (!this.unitSpan) {
|
|
266
276
|
this.unitSpan = this.renderer.createElement('span');
|
|
267
277
|
this.renderer.addClass(this.unitSpan, 'unit');
|
|
268
|
-
const unitSymbol = this.renderer.createText(this.
|
|
278
|
+
const unitSymbol = this.renderer.createText(this._unit);
|
|
269
279
|
this.renderer.appendChild(this.unitSpan, unitSymbol);
|
|
270
280
|
this.renderer.appendChild(inputWrapper, this.unitSpan);
|
|
271
281
|
}
|
|
@@ -297,7 +307,8 @@ export class ClrNumericField {
|
|
|
297
307
|
}
|
|
298
308
|
roundOrTruncate(value) {
|
|
299
309
|
const method = this.roundValue ? 'round' : value < 0 ? 'ceil' : 'floor';
|
|
300
|
-
|
|
310
|
+
// 16 is the highest precision before numbers have weird behaviour. see https://stackoverflow.com/q/21472828/15120942
|
|
311
|
+
return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toPrecision(16)) / Math.pow(10, this.decimalPlaces);
|
|
301
312
|
}
|
|
302
313
|
}
|
|
303
314
|
ClrNumericField.decorators = [
|
|
@@ -329,9 +340,9 @@ ClrNumericField.propDecorators = {
|
|
|
329
340
|
autofillDecimals: [{ type: Input, args: ['clrAutofillDecimals',] }],
|
|
330
341
|
decimalSeparator: [{ type: Input, args: ['clrDecimalSep',] }],
|
|
331
342
|
groupingSeparator: [{ type: Input, args: ['clrGroupingSep',] }],
|
|
332
|
-
unit: [{ type: Input, args: ['clrUnit',] }],
|
|
333
343
|
unitPosition: [{ type: Input, args: ['clrUnitPosition',] }],
|
|
334
344
|
numericValueChanged: [{ type: Output, args: ['clrNumericValueChange',] }],
|
|
335
|
-
numericValue: [{ type: Input, args: ['clrNumericValue',] }]
|
|
345
|
+
numericValue: [{ type: Input, args: ['clrNumericValue',] }],
|
|
346
|
+
unit: [{ type: Input, args: ['clrUnit',] }]
|
|
336
347
|
};
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL251bWVyaWNmaWVsZC9udW1lcmljLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQWtCNUUsTUFBTSxPQUFPLGVBQWU7SUFvRDFCLFlBQW9CLFFBQW1CLEVBQVUsT0FBbUI7UUFBaEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFuRDdDLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxHQUFH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QUM7d0JBQzlDLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7OztZQTFCQyxTQUFTO1lBUFQsVUFBVTs7O3dCQW1DVCxLQUFLLFNBQUMsY0FBYzs0QkFDcEIsS0FBSyxTQUFDLGtCQUFrQjt5QkFDeEIsS0FBSyxTQUFDLHNCQUFzQjsrQkFDNUIsS0FBSyxTQUFDLHFCQUFxQjsrQkFDM0IsS0FBSyxTQUFDLGVBQWU7Z0NBQ3JCLEtBQUssU0FBQyxnQkFBZ0I7bUJBQ3RCLEtBQUssU0FBQyxTQUFTOzJCQUNmLEtBQUssU0FBQyxpQkFBaUI7a0NBQ3ZCLE1BQU0sU0FBQyx1QkFBdUI7MkJBUzlCLEtBQUssU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmNvbnN0IE5FR0FUSVZFID0gJy0nO1xuY29uc3QgQkFDS19LRVlDT0RFID0gODtcbmNvbnN0IERFTF9LRVlDT0RFID0gNDY7XG5jb25zdCBDT05UUk9MX0tFWUNPREVTX1VQUEVSX0JPUkRFUiA9IDQ2O1xuY29uc3QgT1RIRVJfQ09OVFJPTF9LRVlTID0gbmV3IFNldChbMjI0LCA5MSwgOTNdKTtcbmNvbnN0IE5VTUJFUlMgPSBuZXcgU2V0KFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOSddKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nsck51bWVyaWNdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MudGV4dC1yaWdodF0nOiAndGV4dEFsaWduID09PSBcInJpZ2h0XCInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGlucHV0KSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJOdW1lcmljRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyTnVtZXJpY0ZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCdjbHJUZXh0QWxpZ24nKSB0ZXh0QWxpZ24gPSAncmlnaHQnO1xuICBASW5wdXQoJ2NsckRlY2ltYWxQbGFjZXMnKSBkZWNpbWFsUGxhY2VzID0gMjtcbiAgQElucHV0KCdjbHJSb3VuZERpc3BsYXlWYWx1ZScpIHJvdW5kVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCdjbHJBdXRvZmlsbERlY2ltYWxzJykgYXV0b2ZpbGxEZWNpbWFscyA9IGZhbHNlO1xuICBASW5wdXQoJ2NsckRlY2ltYWxTZXAnKSBkZWNpbWFsU2VwYXJhdG9yID0gJywnO1xuICBASW5wdXQoJ2Nsckdyb3VwaW5nU2VwJykgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLic7XG4gIEBJbnB1dCgnY2xyVW5pdCcpIHVuaXQ6IHN0cmluZyA9IG51bGw7XG4gIEBJbnB1dCgnY2xyVW5pdFBvc2l0aW9uJykgdW5pdFBvc2l0aW9uID0gJ3JpZ2h0JztcbiAgQE91dHB1dCgnY2xyTnVtZXJpY1ZhbHVlQ2hhbmdlJykgbnVtZXJpY1ZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgZGlzcGxheVZhbHVlID0gJyc7XG4gIHByaXZhdGUgb3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgcHJpdmF0ZSBfbnVtZXJpY1ZhbHVlOiBudW1iZXI7XG4gIHByaXZhdGUgaW5wdXRDaGFuZ2VMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBrZXl1cExpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGtleWRvd25MaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBASW5wdXQoJ2Nsck51bWVyaWNWYWx1ZScpXG4gIHNldCBudW1lcmljVmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9udW1lcmljVmFsdWUgIT09IHZhbHVlICYmICEoaXNOYU4odGhpcy5fbnVtZXJpY1ZhbHVlKSAmJiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBudWxsKSkpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fbnVtZXJpY1ZhbHVlID0gdGhpcy5yb3VuZE9yVHJ1bmNhdGUodmFsdWUpO1xuICAgICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuaXRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHByaXZhdGUgYWxsb3dlZEtleXMgPSBuZXcgU2V0KE5VTUJFUlMpO1xuXG4gIC8qIENvbnRyb2wgVmFsdWVzIEFjY2Vzc29yIFN0dWZmIGJlbG93ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2UgPSAoXzogbnVtYmVyKTogdm9pZCA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWVyaWNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGlucHV0RWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyogbmVlZHMgdG8gYmUgcGFyc2VkIGFzIG51bWJlciBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGFzIHN0cmluZyBmcm9tIHVzZXIgaW5wdXQgKi9cbiAgICB0aGlzLmRlY2ltYWxQbGFjZXMgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5kZWNpbWFsUGxhY2VzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB0aGlzLmFsbG93ZWRLZXlzLmFkZChORUdBVElWRSk7XG4gICAgdGhpcy5hbGxvd2VkS2V5cy5hZGQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAnYmx1cicsIGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuZm9ybWF0SW5wdXQoZXZlbnQudGFyZ2V0LCB0cnVlKTtcbiAgICB9KTtcblxuICAgIHRoaXMua2V5dXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCBldmVudCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmtleUNvZGUgPT09IEJBQ0tfS0VZQ09ERSB8fFxuICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBDT05UUk9MX0tFWUNPREVTX1VQUEVSX0JPUkRFUiAmJiAhT1RIRVJfQ09OVFJPTF9LRVlTLmhhcyhldmVudC5rZXlDb2RlKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5rZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFsbG93ZWRLZXlzLmhhcyhldmVudC5rZXkpIHx8XG4gICAgICAgIChldmVudC5rZXlDb2RlIDw9IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmIGV2ZW50LmtleUNvZGUgPiAwKSB8fFxuICAgICAgICBldmVudC5tZXRhS2V5IHx8XG4gICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgZXZlbnQuYWx0S2V5XG4gICAgICApIHtcbiAgICAgICAgLyogYWxsb3cgbmVnYXRpdmUgc2lnbiBvbmx5IGFzIGZpcnN0IGNoYXJhY3RlciBhbmQgbm9uZSBleGlzdHMgb3V0c2lkZSBvZiB0ZXh0IHNlbGVjdGlvbiAqL1xuICAgICAgICBjb25zdCBpbmRleE5lZ2F0aXZlU2lnbiA9IHZhbHVlLmluZGV4T2YoTkVHQVRJVkUpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQua2V5ID09PSBORUdBVElWRSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiAwIHx8IGluZGV4TmVnYXRpdmVTaWduID4gLTEpICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCB8fFxuICAgICAgICAgICAgIShpbmRleE5lZ2F0aXZlU2lnbiA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhOZWdhdGl2ZVNpZ24gPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIG5vIGR1cGxpY2F0ZSBkZWNpbWFsIHNlcGFyYXRvcnMgKi9cbiAgICAgICAgY29uc3QgaW5kZXhEZWNpbWFsU2VwID0gdmFsdWUuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQua2V5ID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgJiZcbiAgICAgICAgICAoaW5kZXhEZWNpbWFsU2VwID4gLTEgfHwgdGhpcy5kZWNpbWFsUGxhY2VzID09PSAwKSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgfHxcbiAgICAgICAgICAgICEoaW5kZXhEZWNpbWFsU2VwID49IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJiBpbmRleERlY2ltYWxTZXAgPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHByZXZlbnQgdG9vIG1hbnkgZGVjaW1hbCBwbGFjZXMgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgIE5VTUJFUlMuaGFzKGV2ZW50LmtleSkgJiZcbiAgICAgICAgICBpbmRleERlY2ltYWxTZXAgPiAtMSAmJlxuICAgICAgICAgIGluZGV4RGVjaW1hbFNlcCA8IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJlxuICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCAmJlxuICAgICAgICAgIHZhbHVlLmxlbmd0aCA+IGluZGV4RGVjaW1hbFNlcCArIHRoaXMuZGVjaW1hbFBsYWNlc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKiB3aGVuIGRlbGV0aW5nIHRob3VzYW5kIHNlcGFyYXRvciwgcmVtb3ZlIHRoZSBkaWdpdCBiZWZvcmUgb3IgYWZ0ZXIgaXQgKi9cbiAgICAgICAgY29uc3QgY3Vyc29yU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICAgICAgaWYgKGN1cnNvclN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEJBQ0tfS0VZQ09ERSAmJiB2YWx1ZS5zdWJzdHIoY3Vyc29yU3RhcnQgLSAxLCAxKSA9PT0gdGhpcy5ncm91cGluZ1NlcGFyYXRvcikge1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIGN1cnNvclN0YXJ0IC0gMikgKyB2YWx1ZS5zdWJzdHJpbmcoY3Vyc29yU3RhcnQgLSAxLCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCA9IGN1cnNvclN0YXJ0IC0gMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IERFTF9LRVlDT0RFICYmIHZhbHVlLnN1YnN0cihjdXJzb3JTdGFydCwgMSkgPT09IHRoaXMuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCArIDEpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0ICsgMiwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0VW5pdFN5bWJvbCgpO1xuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW5wdXQoXG4gICAgICB0aGlzLmZvcm1hdE51bWJlcih0aGlzLl9udW1lcmljVmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1suXScsICdnJyksIHRoaXMuZGVjaW1hbFNlcGFyYXRvciksIHRydWUpLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBmb3JtYXRJbnB1dChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBmaW5hbEZvcm1hdHRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3JQb3MgPSBlbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IGxlbmd0aCA9IGVsZW1lbnQudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IHNldEN1cnNvciA9IHRoaXMuZGlzcGxheVZhbHVlICE9PSBlbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5wdXQodGhpcy5mb3JtYXROdW1iZXIoZWxlbWVudC52YWx1ZSwgZmluYWxGb3JtYXR0aW5nKSwgZmFsc2UpO1xuICAgIGlmIChzZXRDdXJzb3IpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBlbGVtZW50LnNlbGVjdGlvbkVuZCA9IE1hdGgubWF4KGN1cnNvclBvcyArIGVsZW1lbnQudmFsdWUubGVuZ3RoIC0gbGVuZ3RoLCAwKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IHN0cmluZywgZmluYWxGb3JtYXR0aW5nOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5zdHJpcCh2YWx1ZSwgZmluYWxGb3JtYXR0aW5nKTtcblxuICAgIC8qIGFkZCBncm91cGluZyBzZXBhcmF0b3IgKi9cbiAgICBjb25zdCBkZWNpbWFsSW5kZXggPSByZXN1bHQuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSByZXN1bHRbMF0gPT09IE5FR0FUSVZFO1xuICAgIGxldCBpID0gZGVjaW1hbEluZGV4ID4gLTEgPyBkZWNpbWFsSW5kZXggOiByZXN1bHQubGVuZ3RoO1xuICAgIHdoaWxlIChpID4gKGlzTmVnYXRpdmUgPyA0IDogMykpIHtcbiAgICAgIGkgLT0gMztcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgaSkgKyB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yICsgcmVzdWx0LnN1YnN0cmluZyhpLCByZXN1bHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoZmluYWxGb3JtYXR0aW5nKSB7XG4gICAgICBpZiAodGhpcy5kZWNpbWFsUGxhY2VzID4gMCAmJiAhIXJlc3VsdCkge1xuICAgICAgICAvKiBhdXRvZmlsbCBkZWNpbWFsIHBsYWNlcyAqL1xuICAgICAgICBsZXQgYWN0dWFsRGVjaW1hbEluZGV4ID0gcmVzdWx0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZpbGxEZWNpbWFscykge1xuICAgICAgICAgIGlmIChhY3R1YWxEZWNpbWFsSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBhY3R1YWxEZWNpbWFsSW5kZXggPSByZXN1bHQubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXN1bHQgPSB0aGlzLmFkZE1pc3NpbmdMZWFkaW5nWmVybyhyZXN1bHQsIGFjdHVhbERlY2ltYWxJbmRleCk7XG4gICAgICAgICAgYWN0dWFsRGVjaW1hbEluZGV4ID0gcmVzdWx0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgICAgICAgIGNvbnN0IGFjdHVhbERlY2ltYWxQbGFjZXMgPSByZXN1bHQubGVuZ3RoIC0gYWN0dWFsRGVjaW1hbEluZGV4IC0gMTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZGVjaW1hbFBsYWNlcyAtIGFjdHVhbERlY2ltYWxQbGFjZXM7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9ICcwJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5hZGRNaXNzaW5nTGVhZGluZ1plcm8ocmVzdWx0LCBhY3R1YWxEZWNpbWFsSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFkZE1pc3NpbmdMZWFkaW5nWmVybyhyZXN1bHQ6IHN0cmluZywgYWN0dWFsRGVjaW1hbEluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSByZXN1bHRbMF0gPT09IE5FR0FUSVZFO1xuICAgIC8qIGF1dG9hZGQgYSB6ZXJvIGJlZm9yZSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBpdCdzIG1pc3NpbmcgKi9cbiAgICBpZiAoYWN0dWFsRGVjaW1hbEluZGV4ID09PSAwKSB7XG4gICAgICByZXN1bHQgPSAnMCcgKyByZXN1bHQ7XG4gICAgfVxuICAgIC8qIGF1dG9hZGQgYSB6ZXJvIGJlZm9yZSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBpdCdzIG1pc3NpbmcsIGZvciBuZWdhdGl2ZSB2YWx1ZXMgKi9cbiAgICBpZiAoYWN0dWFsRGVjaW1hbEluZGV4ID09PSAxICYmIGlzTmVnYXRpdmUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdFswXSArICcwJyArIHJlc3VsdC5zdWJzdHJpbmcoMSwgcmVzdWx0Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJpcCh2YWx1ZTogc3RyaW5nLCByZW1vdmVMZWFkaW5nWmVyb3MgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGxldCBpbmRleERlY2ltYWxTZXAgPSAtMTtcbiAgICBsZXQgaiA9IC0xO1xuICAgIGxldCBpZ25vcmVkQ2hhcnMgPSAwO1xuICAgIGZvciAoY29uc3QgY2hhciBvZiB2YWx1ZSkge1xuICAgICAgaisrO1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZEtleXMuaGFzKGNoYXIpKSB7XG4gICAgICAgIGlmIChjaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgICAgICBpZiAodGhpcy5kZWNpbWFsUGxhY2VzID09PSAwKSB7XG4gICAgICAgICAgICAvKiBkaXNtaXNzIGNvbnRlbnQgYWZ0ZXIgYSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBubyBwbGFjZXMgYWxsb3dlZCAqL1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChpbmRleERlY2ltYWxTZXAgPiAtMSkge1xuICAgICAgICAgICAgLyogaWdub3JlIHN1YnNlcXVlbnQgZGVjaW1hbCBzZXBhcmF0b3JzICovXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhEZWNpbWFsU2VwID0gajtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gJzAnICYmIHJlbW92ZUxlYWRpbmdaZXJvcykge1xuICAgICAgICAgIC8qIHJlbW92ZSBsZWFkaW5nIHplcm8gb25seSBpZiBpdCdzIG5vdCB0aGUgb25seSB6ZXJvIGluIHRoZSAndmFsdWUnIHN0cmluZyAqL1xuICAgICAgICAgIGlmICgocmVzdWx0Lmxlbmd0aCA9PT0gMCAmJiBqICsgMSAhPT0gdmFsdWUubGVuZ3RoKSB8fCByZXN1bHQgPT09IE5FR0FUSVZFKSB7XG4gICAgICAgICAgICBpZ25vcmVkQ2hhcnMrKztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gTkVHQVRJVkUgJiYgaiA+IDApIHtcbiAgICAgICAgICAvKiBkaXNtaXNzIGNvbnRlbnQgYWZ0ZXIgYSBuZWdhdGl2ZSBzaWduIG5vdCBvbiBmaXJzdCBwb3NpdGlvbiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleERlY2ltYWxTZXAgPiAtMSAmJiByZXN1bHQubGVuZ3RoICsgaWdub3JlZENoYXJzID4gaW5kZXhEZWNpbWFsU2VwICsgdGhpcy5kZWNpbWFsUGxhY2VzKSB7XG4gICAgICAgICAgLyogZGlzbWlzcyBjb250ZW50IGFmdGVyIG1heGltdW0gZGVjaW1hbCBwbGFjZXMgcmVhY2hlZCAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBjaGFyO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yKSB7XG4gICAgICAgIGlmIChpbmRleERlY2ltYWxTZXAgPT09IC0xKSB7XG4gICAgICAgICAgaWdub3JlZENoYXJzKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGRpc21pc3MgY29udGVudCBhZnRlciBhIGludmFsaWQgY2hhcmFjdGVyICovXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB1cGRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nLCB1cGRhdGVBc3luYzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9udW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMuc3RyaXAodmFsdWUpLnJlcGxhY2UodGhpcy5kZWNpbWFsU2VwYXJhdG9yLCAnLicpKTtcbiAgICBpZiAodGhpcy5fbnVtZXJpY1ZhbHVlICE9PSB0aGlzLnJvdW5kT3JUcnVuY2F0ZSh0aGlzLm9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB0aGlzLl9udW1lcmljVmFsdWU7XG4gICAgICBpZiAodXBkYXRlQXN5bmMpIHtcbiAgICAgICAgLy8gQ2FsbCBpbiBzZXRUaW1lb3V0IHRvIGF2b2lkIEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgaGFzIGJlZW4gY2hlY2tlZCBlcnJvci5cbiAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIGlmIHRoZSBpbml0aWFsIGlucHV0IGhhcyBtb3JlIGRlY2ltYWwgcGxhY2VzIHRoYW4gYWxsb3dlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJpY1ZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX251bWVyaWNWYWx1ZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5udW1lcmljVmFsdWVDaGFuZ2VkLmVtaXQodGhpcy5fbnVtZXJpY1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVGb3JGb3JtQ29udHJvbCgpOiBudW1iZXIge1xuICAgIHRoaXMuZm9ybWF0SW5wdXQodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgICBpZiAoaXNOYU4odGhpcy5fbnVtZXJpY1ZhbHVlKSkge1xuICAgICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIE5hTiB0byBzdXBwb3J0IHRoZSBkZWZhdWx0IHJlcXVpcmVkIHZhbGlkYXRvci5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9udW1lcmljVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGluamVjdFVuaXRTeW1ib2woKTogdm9pZCB7XG4gICAgLy8gTmVlZCB0byBpbmplY3QgdGhlIHVuaXQgc3ltYm9sIHdoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2lkdGggaXMgc2V0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSBpY29uIHdvbnQgc2hvdyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgIGlmICghIXRoaXMudW5pdCAmJiAhdGhpcy51bml0U3BhbiAmJiB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAhPT0gMCkge1xuICAgICAgLy8gR2V0IHRoZSBpbnB1dCB3cmFwcGVyIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICBjb25zdCBpbnB1dFdyYXBwZXIgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhpbnB1dFdyYXBwZXIsICdudW1lcmljLWlucHV0LXdyYXBwZXInKTtcblxuICAgICAgLy8gQ3JlYXRlIHRoZSBzcGFuIHdpdGggdW5pdCBzeW1ib2wgYW5kIGFwcGx5IG5lY2Vzc2FyeSBzdHlsZXNcbiAgICAgIGlmICghdGhpcy51bml0U3Bhbikge1xuICAgICAgICB0aGlzLnVuaXRTcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy51bml0U3BhbiwgJ3VuaXQnKTtcbiAgICAgICAgY29uc3QgdW5pdFN5bWJvbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLnVuaXQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudW5pdFNwYW4sIHVuaXRTeW1ib2wpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGlucHV0V3JhcHBlciwgdGhpcy51bml0U3Bhbik7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBwYWRkaW5nIHRvIHRoZSBpbnB1dCBlbGVtZW50LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB1bml0IHN5bWJvbCArIDEycHhcbiAgICAgIGNvbnN0IHBhZGRpbmdPbklucHV0ID0gdGhpcy51bml0U3Bhbi5vZmZzZXRXaWR0aCArIDEyO1xuICAgICAgaWYgKHRoaXMudW5pdFBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnVuaXRTcGFuLCAndW5pdC1sZWZ0Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsICdwYWRkaW5nLWxlZnQnLCBwYWRkaW5nT25JbnB1dCArICdweCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnVuaXRTcGFuLCAndW5pdC1yaWdodCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAncGFkZGluZy1yaWdodCcsIHBhZGRpbmdPbklucHV0ICsgJ3B4Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dENoYW5nZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleWRvd25MaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmtleWRvd25MaXN0ZW5lcjtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5dXBMaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXl1cExpc3RlbmVyKCk7XG4gICAgICBkZWxldGUgdGhpcy5rZXl1cExpc3RlbmVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm91bmRPclRydW5jYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMucm91bmRWYWx1ZSA/ICdyb3VuZCcgOiB2YWx1ZSA8IDAgPyAnY2VpbCcgOiAnZmxvb3InO1xuICAgIHJldHVybiBNYXRoW21ldGhvZF0odmFsdWUgKiBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKSkgLyBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKTtcbiAgfVxufVxuIl19
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL251bWVyaWNmaWVsZC9udW1lcmljLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQWtCNUUsTUFBTSxPQUFPLGVBQWU7SUFnRTFCLFlBQW9CLFFBQW1CLEVBQVUsT0FBbUI7UUFBaEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUEvRDdDLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxHQUFH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LENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEgsQ0FBQzs7O1lBeldGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsSUFBSSxFQUFFO29CQUNKLG9CQUFvQixFQUFFLHVCQUF1QjtvQkFDN0MsVUFBVSxFQUFFLG9DQUFvQztvQkFDaEQsU0FBUyxFQUFFLG9DQUFvQztvQkFDL0MsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2dCQUNELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzt3QkFDOUMsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRjs7O1lBMUJDLFNBQVM7WUFQVCxVQUFVOzs7d0JBbUNULEtBQUssU0FBQyxjQUFjOzRCQUNwQixLQUFLLFNBQUMsa0JBQWtCO3lCQUN4QixLQUFLLFNBQUMsc0JBQXNCOytCQUM1QixLQUFLLFNBQUMscUJBQXFCOytCQUMzQixLQUFLLFNBQUMsZUFBZTtnQ0FDckIsS0FBSyxTQUFDLGdCQUFnQjsyQkFDdEIsS0FBSyxTQUFDLGlCQUFpQjtrQ0FDdkIsTUFBTSxTQUFDLHVCQUF1QjsyQkFVOUIsS0FBSyxTQUFDLGlCQUFpQjttQkFTdkIsS0FBSyxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmNvbnN0IE5FR0FUSVZFID0gJy0nO1xuY29uc3QgQkFDS19LRVlDT0RFID0gODtcbmNvbnN0IERFTF9LRVlDT0RFID0gNDY7XG5jb25zdCBDT05UUk9MX0tFWUNPREVTX1VQUEVSX0JPUkRFUiA9IDQ2O1xuY29uc3QgT1RIRVJfQ09OVFJPTF9LRVlTID0gbmV3IFNldChbMjI0LCA5MSwgOTNdKTtcbmNvbnN0IE5VTUJFUlMgPSBuZXcgU2V0KFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOSddKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nsck51bWVyaWNdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MudGV4dC1yaWdodF0nOiAndGV4dEFsaWduID09PSBcInJpZ2h0XCInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGlucHV0KSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJOdW1lcmljRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyTnVtZXJpY0ZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCdjbHJUZXh0QWxpZ24nKSB0ZXh0QWxpZ24gPSAncmlnaHQnO1xuICBASW5wdXQoJ2NsckRlY2ltYWxQbGFjZXMnKSBkZWNpbWFsUGxhY2VzID0gMjtcbiAgQElucHV0KCdjbHJSb3VuZERpc3BsYXlWYWx1ZScpIHJvdW5kVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCdjbHJBdXRvZmlsbERlY2ltYWxzJykgYXV0b2ZpbGxEZWNpbWFscyA9IGZhbHNlO1xuICBASW5wdXQoJ2NsckRlY2ltYWxTZXAnKSBkZWNpbWFsU2VwYXJhdG9yID0gJywnO1xuICBASW5wdXQoJ2Nsckdyb3VwaW5nU2VwJykgZ3JvdXBpbmdTZXBhcmF0b3IgPSAnLic7XG4gIEBJbnB1dCgnY2xyVW5pdFBvc2l0aW9uJykgdW5pdFBvc2l0aW9uID0gJ3JpZ2h0JztcbiAgQE91dHB1dCgnY2xyTnVtZXJpY1ZhbHVlQ2hhbmdlJykgbnVtZXJpY1ZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgZGlzcGxheVZhbHVlID0gJyc7XG4gIHByaXZhdGUgb3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgcHJpdmF0ZSBfbnVtZXJpY1ZhbHVlOiBudW1iZXI7XG4gIHByaXZhdGUgX3VuaXQ6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgaW5wdXRDaGFuZ2VMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBrZXl1cExpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGtleWRvd25MaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBASW5wdXQoJ2Nsck51bWVyaWNWYWx1ZScpXG4gIHNldCBudW1lcmljVmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9udW1lcmljVmFsdWUgIT09IHZhbHVlICYmICEoaXNOYU4odGhpcy5fbnVtZXJpY1ZhbHVlKSAmJiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBudWxsKSkpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fbnVtZXJpY1ZhbHVlID0gdGhpcy5yb3VuZE9yVHJ1bmNhdGUodmFsdWUpO1xuICAgICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2NsclVuaXQnKVxuICBzZXQgdW5pdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IHRoaXMuX3VuaXQpIHtcbiAgICAgIHRoaXMuX3VuaXQgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLnVuaXRTcGFuICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy51bml0U3Bhbi5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgY29uc3QgbmV3VW5pdFRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudW5pdFNwYW4sIG5ld1VuaXRUZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuaXRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHByaXZhdGUgYWxsb3dlZEtleXMgPSBuZXcgU2V0KE5VTUJFUlMpO1xuXG4gIC8qIENvbnRyb2wgVmFsdWVzIEFjY2Vzc29yIFN0dWZmIGJlbG93ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2UgPSAoXzogbnVtYmVyKTogdm9pZCA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWVyaWNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGlucHV0RWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyogbmVlZHMgdG8gYmUgcGFyc2VkIGFzIG51bWJlciBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGFzIHN0cmluZyBmcm9tIHVzZXIgaW5wdXQgKi9cbiAgICB0aGlzLmRlY2ltYWxQbGFjZXMgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5kZWNpbWFsUGxhY2VzLnRvU3RyaW5nKCksIDEwKTtcbiAgICB0aGlzLmFsbG93ZWRLZXlzLmFkZChORUdBVElWRSk7XG4gICAgdGhpcy5hbGxvd2VkS2V5cy5hZGQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAnYmx1cicsIGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuZm9ybWF0SW5wdXQoZXZlbnQudGFyZ2V0LCB0cnVlKTtcbiAgICB9KTtcblxuICAgIHRoaXMua2V5dXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCBldmVudCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmtleUNvZGUgPT09IEJBQ0tfS0VZQ09ERSB8fFxuICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBDT05UUk9MX0tFWUNPREVTX1VQUEVSX0JPUkRFUiAmJiAhT1RIRVJfQ09OVFJPTF9LRVlTLmhhcyhldmVudC5rZXlDb2RlKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5rZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFsbG93ZWRLZXlzLmhhcyhldmVudC5rZXkpIHx8XG4gICAgICAgIChldmVudC5rZXlDb2RlIDw9IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmIGV2ZW50LmtleUNvZGUgPiAwKSB8fFxuICAgICAgICBldmVudC5tZXRhS2V5IHx8XG4gICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgZXZlbnQuYWx0S2V5XG4gICAgICApIHtcbiAgICAgICAgLyogYWxsb3cgbmVnYXRpdmUgc2lnbiBvbmx5IGFzIGZpcnN0IGNoYXJhY3RlciBhbmQgbm9uZSBleGlzdHMgb3V0c2lkZSBvZiB0ZXh0IHNlbGVjdGlvbiAqL1xuICAgICAgICBjb25zdCBpbmRleE5lZ2F0aXZlU2lnbiA9IHZhbHVlLmluZGV4T2YoTkVHQVRJVkUpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQua2V5ID09PSBORUdBVElWRSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiAwIHx8IGluZGV4TmVnYXRpdmVTaWduID4gLTEpICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCB8fFxuICAgICAgICAgICAgIShpbmRleE5lZ2F0aXZlU2lnbiA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhOZWdhdGl2ZVNpZ24gPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIG5vIGR1cGxpY2F0ZSBkZWNpbWFsIHNlcGFyYXRvcnMgKi9cbiAgICAgICAgY29uc3QgaW5kZXhEZWNpbWFsU2VwID0gdmFsdWUuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQua2V5ID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgJiZcbiAgICAgICAgICAoaW5kZXhEZWNpbWFsU2VwID4gLTEgfHwgdGhpcy5kZWNpbWFsUGxhY2VzID09PSAwKSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgfHxcbiAgICAgICAgICAgICEoaW5kZXhEZWNpbWFsU2VwID49IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJiBpbmRleERlY2ltYWxTZXAgPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHByZXZlbnQgdG9vIG1hbnkgZGVjaW1hbCBwbGFjZXMgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgIE5VTUJFUlMuaGFzKGV2ZW50LmtleSkgJiZcbiAgICAgICAgICBpbmRleERlY2ltYWxTZXAgPiAtMSAmJlxuICAgICAgICAgIGluZGV4RGVjaW1hbFNlcCA8IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJlxuICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCAmJlxuICAgICAgICAgIHZhbHVlLmxlbmd0aCA+IGluZGV4RGVjaW1hbFNlcCArIHRoaXMuZGVjaW1hbFBsYWNlc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKiB3aGVuIGRlbGV0aW5nIHRob3VzYW5kIHNlcGFyYXRvciwgcmVtb3ZlIHRoZSBkaWdpdCBiZWZvcmUgb3IgYWZ0ZXIgaXQgKi9cbiAgICAgICAgY29uc3QgY3Vyc29yU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICAgICAgaWYgKGN1cnNvclN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEJBQ0tfS0VZQ09ERSAmJiB2YWx1ZS5zdWJzdHIoY3Vyc29yU3RhcnQgLSAxLCAxKSA9PT0gdGhpcy5ncm91cGluZ1NlcGFyYXRvcikge1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIGN1cnNvclN0YXJ0IC0gMikgKyB2YWx1ZS5zdWJzdHJpbmcoY3Vyc29yU3RhcnQgLSAxLCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCA9IGN1cnNvclN0YXJ0IC0gMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IERFTF9LRVlDT0RFICYmIHZhbHVlLnN1YnN0cihjdXJzb3JTdGFydCwgMSkgPT09IHRoaXMuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCArIDEpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0ICsgMiwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0VW5pdFN5bWJvbCgpO1xuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW5wdXQoXG4gICAgICB0aGlzLmZvcm1hdE51bWJlcih0aGlzLl9udW1lcmljVmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1suXScsICdnJyksIHRoaXMuZGVjaW1hbFNlcGFyYXRvciksIHRydWUpLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBmb3JtYXRJbnB1dChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBmaW5hbEZvcm1hdHRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3JQb3MgPSBlbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IGxlbmd0aCA9IGVsZW1lbnQudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IHNldEN1cnNvciA9IHRoaXMuZGlzcGxheVZhbHVlICE9PSBlbGVtZW50LnZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5wdXQodGhpcy5mb3JtYXROdW1iZXIoZWxlbWVudC52YWx1ZSwgZmluYWxGb3JtYXR0aW5nKSwgZmFsc2UpO1xuICAgIGlmIChzZXRDdXJzb3IpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBlbGVtZW50LnNlbGVjdGlvbkVuZCA9IE1hdGgubWF4KGN1cnNvclBvcyArIGVsZW1lbnQudmFsdWUubGVuZ3RoIC0gbGVuZ3RoLCAwKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IHN0cmluZywgZmluYWxGb3JtYXR0aW5nOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5zdHJpcCh2YWx1ZSwgZmluYWxGb3JtYXR0aW5nKTtcblxuICAgIC8qIGFkZCBncm91cGluZyBzZXBhcmF0b3IgKi9cbiAgICBjb25zdCBkZWNpbWFsSW5kZXggPSByZXN1bHQuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSByZXN1bHRbMF0gPT09IE5FR0FUSVZFO1xuICAgIGxldCBpID0gZGVjaW1hbEluZGV4ID4gLTEgPyBkZWNpbWFsSW5kZXggOiByZXN1bHQubGVuZ3RoO1xuICAgIHdoaWxlIChpID4gKGlzTmVnYXRpdmUgPyA0IDogMykpIHtcbiAgICAgIGkgLT0gMztcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgaSkgKyB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yICsgcmVzdWx0LnN1YnN0cmluZyhpLCByZXN1bHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoZmluYWxGb3JtYXR0aW5nKSB7XG4gICAgICBpZiAodGhpcy5kZWNpbWFsUGxhY2VzID4gMCAmJiAhIXJlc3VsdCkge1xuICAgICAgICAvKiBhdXRvZmlsbCBkZWNpbWFsIHBsYWNlcyAqL1xuICAgICAgICBsZXQgYWN0dWFsRGVjaW1hbEluZGV4ID0gcmVzdWx0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZpbGxEZWNpbWFscykge1xuICAgICAgICAgIGlmIChhY3R1YWxEZWNpbWFsSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBhY3R1YWxEZWNpbWFsSW5kZXggPSByZXN1bHQubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXN1bHQgPSB0aGlzLmFkZE1pc3NpbmdMZWFkaW5nWmVybyhyZXN1bHQsIGFjdHVhbERlY2ltYWxJbmRleCk7XG4gICAgICAgICAgYWN0dWFsRGVjaW1hbEluZGV4ID0gcmVzdWx0LmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgICAgICAgIGNvbnN0IGFjdHVhbERlY2ltYWxQbGFjZXMgPSByZXN1bHQubGVuZ3RoIC0gYWN0dWFsRGVjaW1hbEluZGV4IC0gMTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZGVjaW1hbFBsYWNlcyAtIGFjdHVhbERlY2ltYWxQbGFjZXM7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9ICcwJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5hZGRNaXNzaW5nTGVhZGluZ1plcm8ocmVzdWx0LCBhY3R1YWxEZWNpbWFsSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFkZE1pc3NpbmdMZWFkaW5nWmVybyhyZXN1bHQ6IHN0cmluZywgYWN0dWFsRGVjaW1hbEluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSByZXN1bHRbMF0gPT09IE5FR0FUSVZFO1xuICAgIC8qIGF1dG9hZGQgYSB6ZXJvIGJlZm9yZSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBpdCdzIG1pc3NpbmcgKi9cbiAgICBpZiAoYWN0dWFsRGVjaW1hbEluZGV4ID09PSAwKSB7XG4gICAgICByZXN1bHQgPSAnMCcgKyByZXN1bHQ7XG4gICAgfVxuICAgIC8qIGF1dG9hZGQgYSB6ZXJvIGJlZm9yZSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBpdCdzIG1pc3NpbmcsIGZvciBuZWdhdGl2ZSB2YWx1ZXMgKi9cbiAgICBpZiAoYWN0dWFsRGVjaW1hbEluZGV4ID09PSAxICYmIGlzTmVnYXRpdmUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdFswXSArICcwJyArIHJlc3VsdC5zdWJzdHJpbmcoMSwgcmVzdWx0Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdHJpcCh2YWx1ZTogc3RyaW5nLCByZW1vdmVMZWFkaW5nWmVyb3MgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGxldCBpbmRleERlY2ltYWxTZXAgPSAtMTtcbiAgICBsZXQgaiA9IC0xO1xuICAgIGxldCBpZ25vcmVkQ2hhcnMgPSAwO1xuICAgIGZvciAoY29uc3QgY2hhciBvZiB2YWx1ZSkge1xuICAgICAgaisrO1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZEtleXMuaGFzKGNoYXIpKSB7XG4gICAgICAgIGlmIChjaGFyID09PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHtcbiAgICAgICAgICBpZiAodGhpcy5kZWNpbWFsUGxhY2VzID09PSAwKSB7XG4gICAgICAgICAgICAvKiBkaXNtaXNzIGNvbnRlbnQgYWZ0ZXIgYSBkZWNpbWFsIHNlcGFyYXRvciwgd2hlbiBubyBwbGFjZXMgYWxsb3dlZCAqL1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChpbmRleERlY2ltYWxTZXAgPiAtMSkge1xuICAgICAgICAgICAgLyogaWdub3JlIHN1YnNlcXVlbnQgZGVjaW1hbCBzZXBhcmF0b3JzICovXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhEZWNpbWFsU2VwID0gajtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gJzAnICYmIHJlbW92ZUxlYWRpbmdaZXJvcykge1xuICAgICAgICAgIC8qIHJlbW92ZSBsZWFkaW5nIHplcm8gb25seSBpZiBpdCdzIG5vdCB0aGUgb25seSB6ZXJvIGluIHRoZSAndmFsdWUnIHN0cmluZyAqL1xuICAgICAgICAgIGlmICgocmVzdWx0Lmxlbmd0aCA9PT0gMCAmJiBqICsgMSAhPT0gdmFsdWUubGVuZ3RoKSB8fCByZXN1bHQgPT09IE5FR0FUSVZFKSB7XG4gICAgICAgICAgICBpZ25vcmVkQ2hhcnMrKztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gTkVHQVRJVkUgJiYgaiA+IDApIHtcbiAgICAgICAgICAvKiBkaXNtaXNzIGNvbnRlbnQgYWZ0ZXIgYSBuZWdhdGl2ZSBzaWduIG5vdCBvbiBmaXJzdCBwb3NpdGlvbiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleERlY2ltYWxTZXAgPiAtMSAmJiByZXN1bHQubGVuZ3RoICsgaWdub3JlZENoYXJzID4gaW5kZXhEZWNpbWFsU2VwICsgdGhpcy5kZWNpbWFsUGxhY2VzKSB7XG4gICAgICAgICAgLyogZGlzbWlzcyBjb250ZW50IGFmdGVyIG1heGltdW0gZGVjaW1hbCBwbGFjZXMgcmVhY2hlZCAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBjaGFyO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yKSB7XG4gICAgICAgIGlmIChpbmRleERlY2ltYWxTZXAgPT09IC0xKSB7XG4gICAgICAgICAgaWdub3JlZENoYXJzKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGRpc21pc3MgY29udGVudCBhZnRlciBhIGludmFsaWQgY2hhcmFjdGVyICovXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB1cGRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nLCB1cGRhdGVBc3luYzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9udW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMuc3RyaXAodmFsdWUpLnJlcGxhY2UodGhpcy5kZWNpbWFsU2VwYXJhdG9yLCAnLicpKTtcbiAgICBpZiAodGhpcy5fbnVtZXJpY1ZhbHVlICE9PSB0aGlzLnJvdW5kT3JUcnVuY2F0ZSh0aGlzLm9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB0aGlzLl9udW1lcmljVmFsdWU7XG4gICAgICBpZiAodXBkYXRlQXN5bmMpIHtcbiAgICAgICAgLy8gQ2FsbCBpbiBzZXRUaW1lb3V0IHRvIGF2b2lkIEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgaGFzIGJlZW4gY2hlY2tlZCBlcnJvci5cbiAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIGlmIHRoZSBpbml0aWFsIGlucHV0IGhhcyBtb3JlIGRlY2ltYWwgcGxhY2VzIHRoYW4gYWxsb3dlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJpY1ZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX251bWVyaWNWYWx1ZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5udW1lcmljVmFsdWVDaGFuZ2VkLmVtaXQodGhpcy5fbnVtZXJpY1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVGb3JGb3JtQ29udHJvbCgpOiBudW1iZXIge1xuICAgIHRoaXMuZm9ybWF0SW5wdXQodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgICBpZiAoaXNOYU4odGhpcy5fbnVtZXJpY1ZhbHVlKSkge1xuICAgICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIE5hTiB0byBzdXBwb3J0IHRoZSBkZWZhdWx0IHJlcXVpcmVkIHZhbGlkYXRvci5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9udW1lcmljVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGluamVjdFVuaXRTeW1ib2woKTogdm9pZCB7XG4gICAgLy8gTmVlZCB0byBpbmplY3QgdGhlIHVuaXQgc3ltYm9sIHdoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2lkdGggaXMgc2V0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSBpY29uIHdvbnQgc2hvdyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgIGlmICghIXRoaXMuX3VuaXQgJiYgIXRoaXMudW5pdFNwYW4gJiYgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggIT09IDApIHtcbiAgICAgIC8vIEdldCB0aGUgaW5wdXQgd3JhcHBlciBhbmQgYXBwbHkgbmVjZXNzYXJ5IHN0eWxlc1xuICAgICAgY29uc3QgaW5wdXRXcmFwcGVyID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoaW5wdXRXcmFwcGVyLCAnbnVtZXJpYy1pbnB1dC13cmFwcGVyJyk7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgc3BhbiB3aXRoIHVuaXQgc3ltYm9sIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICBpZiAoIXRoaXMudW5pdFNwYW4pIHtcbiAgICAgICAgdGhpcy51bml0U3BhbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudW5pdFNwYW4sICd1bml0Jyk7XG4gICAgICAgIGNvbnN0IHVuaXRTeW1ib2wgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGhpcy5fdW5pdCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy51bml0U3BhbiwgdW5pdFN5bWJvbCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaW5wdXRXcmFwcGVyLCB0aGlzLnVuaXRTcGFuKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHBhZGRpbmcgdG8gdGhlIGlucHV0IGVsZW1lbnQsIGRlcGVuZGluZyBvbiB0aGUgd2lkdGggb2YgdGhlIHVuaXQgc3ltYm9sICsgMTJweFxuICAgICAgY29uc3QgcGFkZGluZ09uSW5wdXQgPSB0aGlzLnVuaXRTcGFuLm9mZnNldFdpZHRoICsgMTI7XG4gICAgICBpZiAodGhpcy51bml0UG9zaXRpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudW5pdFNwYW4sICd1bml0LWxlZnQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ3BhZGRpbmctbGVmdCcsIHBhZGRpbmdPbklucHV0ICsgJ3B4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudW5pdFNwYW4sICd1bml0LXJpZ2h0Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsICdwYWRkaW5nLXJpZ2h0JywgcGFkZGluZ09uSW5wdXQgKyAncHgnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGFjaExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lcjtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5ZG93bkxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleWRvd25MaXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIHRoaXMua2V5ZG93bkxpc3RlbmVyO1xuICAgIH1cbiAgICBpZiAodGhpcy5rZXl1cExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleXVwTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmtleXVwTGlzdGVuZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByb3VuZE9yVHJ1bmNhdGUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5yb3VuZFZhbHVlID8gJ3JvdW5kJyA6IHZhbHVlIDwgMCA/ICdjZWlsJyA6ICdmbG9vcic7XG4gICAgLy8gMTYgaXMgdGhlIGhpZ2hlc3QgcHJlY2lzaW9uIGJlZm9yZSBudW1iZXJzIGhhdmUgd2VpcmQgYmVoYXZpb3VyLiBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzIxNDcyODI4LzE1MTIwOTQyXG4gICAgcmV0dXJuIE1hdGhbbWV0aG9kXSgrKHZhbHVlICogTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbFBsYWNlcykpLnRvUHJlY2lzaW9uKDE2KSkgLyBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"textAlign":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrTextAlign"]}]}],"decimalPlaces":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrDecimalPlaces"]}]}],"roundValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrRoundDisplayValue"]}]}],"autofillDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrAutofillDecimals"]}]}],"decimalSeparator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrDecimalSep"]}]}],"groupingSeparator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrGroupingSep"]}]}],"
|
|
1
|
+
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"textAlign":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrTextAlign"]}]}],"decimalPlaces":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrDecimalPlaces"]}]}],"roundValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrRoundDisplayValue"]}]}],"autofillDecimals":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrAutofillDecimals"]}]}],"decimalSeparator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrDecimalSep"]}]}],"groupingSeparator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrGroupingSep"]}]}],"unitPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrUnitPosition"]}]}],"numericValueChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]},"arguments":["clrNumericValueChange"]}]}],"numericValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrNumericValue"]}]}],"unit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["clrUnit"]}]}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":3,"members":[]},{"__symbol":4,"members":[]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterViewChecked":[{"__symbolic":"method"}],"handleInputChanged":[{"__symbolic":"method"}],"formatInput":[{"__symbolic":"method"}],"formatNumber":[{"__symbolic":"method"}],"addMissingLeadingZero":[{"__symbolic":"method"}],"strip":[{"__symbolic":"method"}],"updateInput":[{"__symbolic":"method"}],"getValueForFormControl":[{"__symbolic":"method"}],"injectUnitSymbol":[{"__symbolic":"method"}],"detachListener":[{"__symbolic":"method"}],"roundOrTruncate":[{"__symbolic":"method"}]}},"type":{"summaryKind":1,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":3,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":4,"members":[]}}}}],"lifecycleHooks":[0,1,7]},"isComponent":false,"selector":"[clrNumeric]","exportAs":null,"inputs":{"textAlign":"clrTextAlign","decimalPlaces":"clrDecimalPlaces","roundValue":"clrRoundDisplayValue","autofillDecimals":"clrAutofillDecimals","decimalSeparator":"clrDecimalSep","groupingSeparator":"clrGroupingSep","unitPosition":"clrUnitPosition","numericValue":"clrNumericValue","unit":"clrUnit"},"outputs":{"numericValueChanged":"clrNumericValueChange"},"hostListeners":{"change":"onChange(getValueForFormControl())","input":"onChange(getValueForFormControl())","blur":"onTouched()"},"hostProperties":{"class.text-right":"textAlign === \"right\""},"hostAttributes":{},"providers":[{"token":{"identifier":{"reference":{"__symbol":5,"members":[]}}},"useClass":null,"useFactory":null,"useExisting":{"identifier":{"reference":{"__symbol":0,"members":[]}}},"multi":true}],"viewProviders":[],"queries":[],"guards":{},"viewQueries":[],"entryComponents":[],"changeDetection":null,"template":null,"componentViewType":null,"rendererType":null,"componentFactory":null}}],"symbols":[{"__symbol":0,"name":"ClrNumericField","filePath":"./numeric-field"},{"__symbol":1,"name":"Input","filePath":"@angular/core"},{"__symbol":2,"name":"Output","filePath":"@angular/core"},{"__symbol":3,"name":"Renderer2","filePath":"@angular/core"},{"__symbol":4,"name":"ElementRef","filePath":"@angular/core"},{"__symbol":5,"name":"NG_VALUE_ACCESSOR","filePath":"@angular/forms"}]}
|
package/fesm2015/clr-addons.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, NgModule, Injectable, EventEmitter, Input, Output, Directive, Renderer2, ElementRef, ViewChild, ContentChildren, TemplateRef, ViewChildren, APP_INITIALIZER, HostBinding, Injector, forwardRef, NgZone, ContentChild, ChangeDetectorRef, HostListener, ApplicationRef, ComponentFactoryResolver, Inject } from '@angular/core';
|
|
2
3
|
import { Location, CommonModule, DOCUMENT } from '@angular/common';
|
|
3
4
|
import { FormsModule, NG_VALIDATORS, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
5
|
import { ClarityModule, ClrFormsModule, ɵbc, ɵbi, ClrAlert, ClrAxis, ClrSide, ClrAlignment, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService } from '@clr/angular';
|
|
@@ -60,7 +61,7 @@ class ClrBreadcrumbService {
|
|
|
60
61
|
this.breadcrumbChange.next(breadcrumbElements);
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
ClrBreadcrumbService.ɵprov =
|
|
64
|
+
ClrBreadcrumbService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ClrBreadcrumbService_Factory() { return new ClrBreadcrumbService(); }, token: ClrBreadcrumbService, providedIn: "root" });
|
|
64
65
|
ClrBreadcrumbService.decorators = [
|
|
65
66
|
{ type: Injectable, args: [{
|
|
66
67
|
providedIn: 'root',
|
|
@@ -1850,11 +1851,11 @@ class ClrNumericField {
|
|
|
1850
1851
|
this.autofillDecimals = false;
|
|
1851
1852
|
this.decimalSeparator = ',';
|
|
1852
1853
|
this.groupingSeparator = '.';
|
|
1853
|
-
this.unit = null;
|
|
1854
1854
|
this.unitPosition = 'right';
|
|
1855
1855
|
this.numericValueChanged = new EventEmitter();
|
|
1856
1856
|
this.displayValue = '';
|
|
1857
1857
|
this.originalValue = NaN;
|
|
1858
|
+
this._unit = null;
|
|
1858
1859
|
this.allowedKeys = new Set(NUMBERS);
|
|
1859
1860
|
/* Control Values Accessor Stuff below */
|
|
1860
1861
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -1869,6 +1870,16 @@ class ClrNumericField {
|
|
|
1869
1870
|
this.handleInputChanged();
|
|
1870
1871
|
}
|
|
1871
1872
|
}
|
|
1873
|
+
set unit(value) {
|
|
1874
|
+
if (value != this._unit) {
|
|
1875
|
+
this._unit = value;
|
|
1876
|
+
if (this.unitSpan != null) {
|
|
1877
|
+
this.unitSpan.innerHTML = '';
|
|
1878
|
+
const newUnitText = this.renderer.createText(value);
|
|
1879
|
+
this.renderer.appendChild(this.unitSpan, newUnitText);
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1872
1883
|
registerOnChange(fn) {
|
|
1873
1884
|
this.onChange = fn;
|
|
1874
1885
|
}
|
|
@@ -2086,7 +2097,7 @@ class ClrNumericField {
|
|
|
2086
2097
|
injectUnitSymbol() {
|
|
2087
2098
|
// Need to inject the unit symbol when the input element width is set to its actual value,
|
|
2088
2099
|
// otherwise the icon wont show in the correct position
|
|
2089
|
-
if (!!this.
|
|
2100
|
+
if (!!this._unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {
|
|
2090
2101
|
// Get the input wrapper and apply necessary styles
|
|
2091
2102
|
const inputWrapper = this.inputEl.nativeElement.parentNode;
|
|
2092
2103
|
this.renderer.addClass(inputWrapper, 'numeric-input-wrapper');
|
|
@@ -2094,7 +2105,7 @@ class ClrNumericField {
|
|
|
2094
2105
|
if (!this.unitSpan) {
|
|
2095
2106
|
this.unitSpan = this.renderer.createElement('span');
|
|
2096
2107
|
this.renderer.addClass(this.unitSpan, 'unit');
|
|
2097
|
-
const unitSymbol = this.renderer.createText(this.
|
|
2108
|
+
const unitSymbol = this.renderer.createText(this._unit);
|
|
2098
2109
|
this.renderer.appendChild(this.unitSpan, unitSymbol);
|
|
2099
2110
|
this.renderer.appendChild(inputWrapper, this.unitSpan);
|
|
2100
2111
|
}
|
|
@@ -2126,7 +2137,8 @@ class ClrNumericField {
|
|
|
2126
2137
|
}
|
|
2127
2138
|
roundOrTruncate(value) {
|
|
2128
2139
|
const method = this.roundValue ? 'round' : value < 0 ? 'ceil' : 'floor';
|
|
2129
|
-
|
|
2140
|
+
// 16 is the highest precision before numbers have weird behaviour. see https://stackoverflow.com/q/21472828/15120942
|
|
2141
|
+
return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toPrecision(16)) / Math.pow(10, this.decimalPlaces);
|
|
2130
2142
|
}
|
|
2131
2143
|
}
|
|
2132
2144
|
ClrNumericField.decorators = [
|
|
@@ -2158,10 +2170,10 @@ ClrNumericField.propDecorators = {
|
|
|
2158
2170
|
autofillDecimals: [{ type: Input, args: ['clrAutofillDecimals',] }],
|
|
2159
2171
|
decimalSeparator: [{ type: Input, args: ['clrDecimalSep',] }],
|
|
2160
2172
|
groupingSeparator: [{ type: Input, args: ['clrGroupingSep',] }],
|
|
2161
|
-
unit: [{ type: Input, args: ['clrUnit',] }],
|
|
2162
2173
|
unitPosition: [{ type: Input, args: ['clrUnitPosition',] }],
|
|
2163
2174
|
numericValueChanged: [{ type: Output, args: ['clrNumericValueChange',] }],
|
|
2164
|
-
numericValue: [{ type: Input, args: ['clrNumericValue',] }]
|
|
2175
|
+
numericValue: [{ type: Input, args: ['clrNumericValue',] }],
|
|
2176
|
+
unit: [{ type: Input, args: ['clrUnit',] }]
|
|
2165
2177
|
};
|
|
2166
2178
|
|
|
2167
2179
|
/*
|