@skyux/phone-field 8.0.0-alpha.2 → 8.0.0-alpha.21

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.
@@ -33,6 +33,21 @@ const SKY_PHONE_FIELD_VALIDATOR = {
33
33
  * @required
34
34
  */
35
35
  export class SkyPhoneFieldInputDirective {
36
+ /**
37
+ * Whether to disable the phone field.
38
+ * @default false
39
+ */
40
+ set disabled(value) {
41
+ const coercedValue = coerceBooleanProperty(value);
42
+ if (__classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, "f")) {
43
+ __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, "f").countrySelectDisabled = coercedValue;
44
+ __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_adapterService, "f")?.setElementDisabledState(__classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_elRef, "f"), coercedValue);
45
+ }
46
+ __classPrivateFieldSet(this, _SkyPhoneFieldInputDirective__disabled, coercedValue, "f");
47
+ }
48
+ get disabled() {
49
+ return __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective__disabled, "f");
50
+ }
36
51
  constructor(changeDetector, elRef, adapterService, phoneFieldComponent) {
37
52
  _SkyPhoneFieldInputDirective_instances.add(this);
38
53
  /**
@@ -66,21 +81,6 @@ export class SkyPhoneFieldInputDirective {
66
81
  __classPrivateFieldSet(this, _SkyPhoneFieldInputDirective_adapterService, adapterService, "f");
67
82
  __classPrivateFieldSet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, phoneFieldComponent, "f");
68
83
  }
69
- /**
70
- * Whether to disable the phone field.
71
- * @default false
72
- */
73
- set disabled(value) {
74
- const coercedValue = coerceBooleanProperty(value);
75
- if (__classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, "f")) {
76
- __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, "f").countrySelectDisabled = coercedValue;
77
- __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_adapterService, "f")?.setElementDisabledState(__classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_elRef, "f"), coercedValue);
78
- }
79
- __classPrivateFieldSet(this, _SkyPhoneFieldInputDirective__disabled, coercedValue, "f");
80
- }
81
- get disabled() {
82
- return __classPrivateFieldGet(this, _SkyPhoneFieldInputDirective__disabled, "f");
83
- }
84
84
  ngOnInit() {
85
85
  if (!__classPrivateFieldGet(this, _SkyPhoneFieldInputDirective_phoneFieldComponent, "f")) {
86
86
  throw new Error('You must wrap the `skyPhoneFieldInput` directive within a ' +
@@ -261,9 +261,9 @@ _SkyPhoneFieldInputDirective_control = new WeakMap(), _SkyPhoneFieldInputDirecti
261
261
  return phoneNumber;
262
262
  }
263
263
  };
264
- SkyPhoneFieldInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyPhoneFieldInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyPhoneFieldAdapterService, optional: true }, { token: i2.SkyPhoneFieldComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
265
- SkyPhoneFieldInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: SkyPhoneFieldInputDirective, selector: "[skyPhoneFieldInput]", inputs: { disabled: "disabled", skyPhoneFieldNoValidate: "skyPhoneFieldNoValidate" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInputTyping($event)" } }, providers: [SKY_PHONE_FIELD_VALUE_ACCESSOR, SKY_PHONE_FIELD_VALIDATOR], ngImport: i0 });
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyPhoneFieldInputDirective, decorators: [{
264
+ SkyPhoneFieldInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyPhoneFieldInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyPhoneFieldAdapterService, optional: true }, { token: i2.SkyPhoneFieldComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
265
+ SkyPhoneFieldInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: SkyPhoneFieldInputDirective, selector: "[skyPhoneFieldInput]", inputs: { disabled: "disabled", skyPhoneFieldNoValidate: "skyPhoneFieldNoValidate" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInputTyping($event)" } }, providers: [SKY_PHONE_FIELD_VALUE_ACCESSOR, SKY_PHONE_FIELD_VALIDATOR], ngImport: i0 });
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyPhoneFieldInputDirective, decorators: [{
267
267
  type: Directive,
268
268
  args: [{
269
269
  selector: '[skyPhoneFieldInput]',
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
287
287
  type: HostListener,
288
288
  args: ['input', ['$event']]
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bob25lLWZpZWxkL3NyYy9saWIvbW9kdWxlcy9waG9uZS1maWVsZC9waG9uZS1maWVsZC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXpELE1BQU0sOEJBQThCLEdBQUc7SUFDckMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBb0V0QyxZQUNFLGNBQWlDLEVBQ2pDLEtBQWlCLEVBQ0wsY0FB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QUksd0RBQXFCLEVBQUUsZUFBZSxFQUFFLElBQUk7d0JBQ2hELHVCQUFBLElBQUksd0RBQXFCLEVBQUUsY0FBYyxFQUN6Qzt3QkFDQSxPQUFPLHVCQUFBLElBQUksK0NBQVksQ0FBQyxNQUFNLENBQzVCLFNBQVMsRUFDVCxpQkFBaUIsQ0FBQyxhQUFhLENBQ2hDLENBQUM7cUJBQ0g7eUJBQU07d0JBQ0wsT0FBTyx1QkFBQSxJQUFJLCtDQUFZLENBQUMsTUFBTSxDQUM1QixTQUFTLEVBQ1QsaUJBQWlCLENBQUMsUUFBUSxDQUMzQixDQUFDO3FCQUNIO2FBQ0o7U0FDRjthQUFNO1lBQ0wsT0FBTyxXQUFXLENBQUM7U0FDcEI7S0FDRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1Ysa0JBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQixPQUFPLFdBQVcsQ0FBQztLQUNwQjtBQUNILENBQUM7d0hBalRVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDRQQUYzQixDQUFDLDhCQUE4QixFQUFFLHlCQUF5QixDQUFDOzJGQUUzRCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsOEJBQThCLEVBQUUseUJBQXlCLENBQUM7aUJBQ3ZFOzswQkF3RUksUUFBUTs7MEJBQ1IsUUFBUTs0Q0FoRUEsUUFBUTtzQkFEbEIsS0FBSztnQkFzQkMsdUJBQXVCO3NCQUQ3QixLQUFLO2dCQXdHQyxhQUFhO3NCQURuQixZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhM0IsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxNQUFNO2dCQU1iLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0LCBQaG9uZU51bWJlclV0aWwgfSBmcm9tICdnb29nbGUtbGlicGhvbmVudW1iZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5UGhvbmVGaWVsZEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9waG9uZS1maWVsZC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UGhvbmVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vcGhvbmUtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVBob25lRmllbGRDb3VudHJ5IH0gZnJvbSAnLi90eXBlcy9jb3VudHJ5JztcblxuY29uc3QgU0tZX1BIT05FX0ZJRUxEX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5UGhvbmVGaWVsZElucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfUEhPTkVfRklFTERfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lQaG9uZUZpZWxkSW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJ1dHRvbiwgc2VhcmNoIGlucHV0LCBhbmQgdGV4dCBpbnB1dCBmb3IgZW50ZXJpbmcgYW5kIHZhbGlkYXRpbmdcbiAqIGludGVybmF0aW9uYWwgcGhvbmUgbnVtYmVycy4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gYW4gYGlucHV0YCBlbGVtZW50LCBhbmQgd3JhcFxuICogdGhhdCBlbGVtZW50IGluIGEgYHNreS1waG9uZS1maWVsZGAgY29tcG9uZW50LiBCeSBkZWZhdWx0LCB0aGUgY291bnRyeSBzZWxlY3RvclxuICogYnV0dG9uIGRpc3BsYXlzIGEgZmxhZyBpY29uIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LCBhbmQgdGhlIHBob25lIG51bWJlciBpbnB1dFxuICogZGlzcGxheXMgYSBzYW1wbGUgb2YgdGhlIGNvcnJlY3QgcGhvbmUgbnVtYmVyIGZvcm1hdC4gV2hlbiB1c2VycyBzZWxlY3QgdGhlIGNvdW50cnlcbiAqIHNlbGVjdG9yIGJ1dHRvbiwgdGhleSBleHBvc2UgdGhlIGNvdW50cnkgc2VhcmNoIGlucHV0LCB3aGljaCBpc1xuICogW2FuIGF1dG9jb21wbGV0ZSBpbnB1dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSlcbiAqIHRoYXQgYWxsb3dzIHRoZW0gdG8gc2VsZWN0IGRpZmZlcmVudCBjb3VudHJpZXMuIFdoZW4gdXNlcnMgZW50ZXIgYCtgIGZvbGxvd2VkIGJ5IGFuXG4gKiBpbnRlcm5hdGlvbmFsIGRpYWwgY29kZSBpbiB0aGUgcGhvbmUgbnVtYmVyIGlucHV0LCB0aGUgY291bnRyeSBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzXG4gKiB0byB0aGUgY291bnRyeSBhc3NvY2lhdGVkIHdpdGggdGhlIGRpYWwgY29kZS5cbiAqIEByZXF1aXJlZFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5UGhvbmVGaWVsZElucHV0XScsXG4gIHByb3ZpZGVyczogW1NLWV9QSE9ORV9GSUVMRF9WQUxVRV9BQ0NFU1NPUiwgU0tZX1BIT05FX0ZJRUxEX1ZBTElEQVRPUl0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVBob25lRmllbGRJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHBob25lIGZpZWxkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuY291bnRyeVNlbGVjdERpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnREaXNhYmxlZFN0YXRlKHRoaXMuI2VsUmVmLCBjb2VyY2VkVmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLiNfZGlzYWJsZWQgPSBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmV2ZW50IHZhbGlkYXRpb24gb24gdGhlIHBob25lIG51bWJlciBpbnB1dC4gRm9yIHZhbGlkYXRpb24sXG4gICAqIHBob25lIG51bWJlcnMgYXJlIGRyaXZlbiB0aHJvdWdoIHRoZSBgbmdNb2RlbGAgYXR0cmlidXRlIHRoYXQgeW91IHNwZWNpZnkgb24gYW5cbiAgICogYGlucHV0YCBlbGVtZW50IG9yIG9uIGEgYEZvcm1Db250cm9sYCBpbiBhIHJlYWN0aXZlIGZvcm0uIFRvIHByZXZlbnQgdmFsaWRhdGlvbixcbiAgICogc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreVBob25lRmllbGROb1ZhbGlkYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgc2V0ICNtb2RlbFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB2YWx1ZU9yRGVmYXVsdCA9IHZhbHVlID8/ICcnO1xuICAgIHRoaXMuI19tb2RlbFZhbHVlID0gdmFsdWVPckRlZmF1bHQ7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnRWYWx1ZSh0aGlzLiNlbFJlZiwgdmFsdWVPckRlZmF1bHQpO1xuXG4gICAgaWYgKHZhbHVlT3JEZWZhdWx0KSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuI2Zvcm1hdE51bWJlcih2YWx1ZU9yRGVmYXVsdC50b1N0cmluZygpKTtcblxuICAgICAgdGhpcy4jb25DaGFuZ2UoZm9ybWF0dGVkVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNvbkNoYW5nZSh2YWx1ZU9yRGVmYXVsdCk7XG4gICAgfVxuICAgIHRoaXMuI3ZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgZ2V0ICNtb2RlbFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19tb2RlbFZhbHVlO1xuICB9XG5cbiAgI2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcblxuICAjdGV4dENoYW5nZXM6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjcGhvbmVVdGlscyA9IFBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpO1xuXG4gICNfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gICNfbW9kZWxWYWx1ZSA9ICcnO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNlbFJlZjogRWxlbWVudFJlZjtcblxuICAjYWRhcHRlclNlcnZpY2U6IFNreVBob25lRmllbGRBZGFwdGVyU2VydmljZSB8IHVuZGVmaW5lZDtcbiAgI3Bob25lRmllbGRDb21wb25lbnQ6IFNreVBob25lRmllbGRDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBhZGFwdGVyU2VydmljZT86IFNreVBob25lRmllbGRBZGFwdGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwaG9uZUZpZWxkQ29tcG9uZW50PzogU2t5UGhvbmVGaWVsZENvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50ID0gcGhvbmVGaWVsZENvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lQaG9uZUZpZWxkSW5wdXRgIGRpcmVjdGl2ZSB3aXRoaW4gYSAnICtcbiAgICAgICAgICAnYDxza3ktcGhvbmUtZmllbGQ+YCBjb21wb25lbnQhJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZT8uc2V0RWxlbWVudFR5cGUodGhpcy4jZWxSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlPy5hZGRFbGVtZW50Q2xhc3ModGhpcy4jZWxSZWYsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgaWYgKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uZXhhbXBsZU51bWJlcikge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnRQbGFjZWhvbGRlcihcbiAgICAgICAgdGhpcy4jZWxSZWYsXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuc2VsZWN0ZWRDb3VudHJ5LmV4YW1wbGVOdW1iZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEFyaWFMYWJlbCh0aGlzLiNlbFJlZik7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnRyeTogU2t5UGhvbmVGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgdGhpcy4jbW9kZWxWYWx1ZSA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGlmIChjb3VudHJ5Py5leGFtcGxlTnVtYmVyKSB7XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnRQbGFjZWhvbGRlcihcbiAgICAgICAgICAgIHRoaXMuI2VsUmVmLFxuICAgICAgICAgICAgY291bnRyeS5leGFtcGxlTnVtYmVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhZGRyZXNzIGEgYnVnIGluIEFuZ3VsYXIgNCwgd2hlcmUgdGhlIHZhbHVlIGlzIG5vdCBjaGFuZ2VkIG9uIHRoZSB2aWV3LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNjb250cm9sICYmIHRoaXMuI21vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWxWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBuZXcgdmFsdWUgZm9yIHJlYWN0aXZlIGZvcm1zIG9uIGNoYW5nZSBldmVudHMgb24gdGhlIGlucHV0IGVsZW1lbnRcbiAgICogQHBhcmFtIGV2ZW50IFRoZSBjaGFuZ2UgZXZlbnQgdGhhdCB3YXMgcmVjZWl2ZWRcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3RleHRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLiNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24oZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdGV4dENoYW5nZXMubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyByZWFjdGl2ZSBmb3JtIGNvbnRyb2xzIGFzIHRvdWNoZWQgb24gaW5wdXQgYmx1ciBldmVudHNcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0VHlwaW5nKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3RleHRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLiNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24oZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdGV4dENoYW5nZXMubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIG5ldyB2YWx1ZSBmb3IgcmVhY3RpdmUgZm9ybXNcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNldENvdW50cnlCeURpYWxDb2RlKHZhbHVlKTtcblxuICAgIHRoaXMuI21vZGVsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jdmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGlucHV0XG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgdmFsdWUgb2YgdGhlIGlucHV0J3MgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSdzIHRoZSBmb3JtIGNvbnRyb2wncyBjdXJyZW50IHZhbHVlXG4gICAqIEBwYXJhbSBjb250cm9sIHRoZSBmb3JtIGNvbnRyb2wgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuI2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wgPSBjb250cm9sO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNreVBob25lRmllbGROb1ZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5zZWxlY3RlZENvdW50cnkgJiZcbiAgICAgICF0aGlzLiN2YWxpZGF0ZU51bWJlcih2YWx1ZSlcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy4jdGV4dENoYW5nZXMpIHtcbiAgICAgICAgLy8gTWFyayB0aGUgaW52YWxpZCBjb250cm9sIGFzIHRvdWNoZWQgc28gdGhhdCB0aGUgaW5wdXQncyBpbnZhbGlkIENTUyBzdHlsZXMgYXBwZWFyLlxuICAgICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICAgIC8vIFdlIGRvbid0IGRvIHRoaXMgaWYgdGhlIGlucHV0IGlzIHRoZSBhY3RpdmUgZWxlbWVudCBzbyB0aGF0IHdlIGRvbid0IHNob3cgdmFsaWRhdGlvblxuICAgICAgICAvLyBlcnJvcnMgdW5sZXNzIGl0IGlzIGludmFsaWQgb24gaW5pdGlhbGl6YXRpb24gb3IgdGhlIGlucHV0IGhhcyBiZWVuIGJsdXJyZWQuXG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lQaG9uZUZpZWxkOiB7XG4gICAgICAgICAgaW52YWxpZDogdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gICNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24odGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jdGV4dENoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRleHQpO1xuXG4gICAgdGhpcy4jdGV4dENoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICAjdmFsaWRhdGVOdW1iZXIocGhvbmVOdW1iZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBudW1iZXJPYmogPSB0aGlzLiNwaG9uZVV0aWxzLnBhcnNlQW5kS2VlcFJhd0lucHV0KFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uc2VsZWN0ZWRDb3VudHJ5Py5pc28yXG4gICAgICApO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQgJiZcbiAgICAgICAgIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuYWxsb3dFeHRlbnNpb25zICYmXG4gICAgICAgIG51bWJlck9iai5nZXRFeHRlbnNpb24oKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuaXNWYWxpZE51bWJlcihudW1iZXJPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0J3MgdGhlIGdpdmVuIHBob25lIG51bWJlciBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvdW50cnkuXG4gICAqIEBwYXJhbSBwaG9uZU51bWJlciBUaGUgbnVtYmVyIHRvIGZvcm1hdFxuICAgKi9cbiAgI2Zvcm1hdE51bWJlcihwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbnVtYmVyT2JqID0gdGhpcy4jcGhvbmVVdGlscy5wYXJzZUFuZEtlZXBSYXdJbnB1dChcbiAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uaXNvMlxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLiNwaG9uZVV0aWxzLmlzUG9zc2libGVOdW1iZXIobnVtYmVyT2JqKSkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnJldHVybkZvcm1hdCkge1xuICAgICAgICAgIGNhc2UgJ2ludGVybmF0aW9uYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSAnbmF0aW9uYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0Lk5BVElPTkFMXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uaXNvMiAhPT1cbiAgICAgICAgICAgICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uZGVmYXVsdENvdW50cnlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlscy5mb3JtYXQoXG4gICAgICAgICAgICAgICAgbnVtYmVyT2JqLFxuICAgICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLiNwaG9uZVV0aWxzLmZvcm1hdChcbiAgICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgICAgUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBob25lTnVtYmVyO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwaG9uZU51bWJlcjtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uICwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICNvbkNoYW5nZSA9IChfOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHt9O1xuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI3ZhbGlkYXRvckNoYW5nZSA9ICgpID0+IHt9O1xufVxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bob25lLWZpZWxkL3NyYy9saWIvbW9kdWxlcy9waG9uZS1maWVsZC9waG9uZS1maWVsZC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXpELE1BQU0sOEJBQThCLEdBQUc7SUFDckMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDOzs7T0FHRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQTBC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LHdEQUFxQixFQUFFLGVBQWUsRUFBRSxJQUFJO3dCQUNoRCx1QkFBQSxJQUFJLHdEQUFxQixFQUFFLGNBQWMsRUFDekM7d0JBQ0EsT0FBTyx1QkFBQSxJQUFJLCtDQUFZLENBQUMsTUFBTSxDQUM1QixTQUFTLEVBQ1QsaUJBQWlCLENBQUMsYUFBYSxDQUNoQyxDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLE9BQU8sdUJBQUEsSUFBSSwrQ0FBWSxDQUFDLE1BQU0sQ0FDNUIsU0FBUyxFQUNULGlCQUFpQixDQUFDLFFBQVEsQ0FDM0IsQ0FBQztxQkFDSDthQUNKO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLGtCQUFrQjtRQUNsQiwwQkFBMEI7UUFDMUIsT0FBTyxXQUFXLENBQUM7S0FDcEI7QUFDSCxDQUFDO3dIQWpUVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiw0UEFGM0IsQ0FBQyw4QkFBOEIsRUFBRSx5QkFBeUIsQ0FBQzsyRkFFM0QsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixFQUFFLHlCQUF5QixDQUFDO2lCQUN2RTs7MEJBd0VJLFFBQVE7OzBCQUNSLFFBQVE7NENBaEVBLFFBQVE7c0JBRGxCLEtBQUs7Z0JBc0JDLHVCQUF1QjtzQkFEN0IsS0FBSztnQkF3R0MsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYTNCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsTUFBTTtnQkFNYixhQUFhO3NCQURuQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQaG9uZU51bWJlckZvcm1hdCwgUGhvbmVOdW1iZXJVdGlsIH0gZnJvbSAnZ29vZ2xlLWxpYnBob25lbnVtYmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVBob25lRmllbGRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vcGhvbmUtZmllbGQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVBob25lRmllbGRDb21wb25lbnQgfSBmcm9tICcuL3Bob25lLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lQaG9uZUZpZWxkQ291bnRyeSB9IGZyb20gJy4vdHlwZXMvY291bnRyeSc7XG5cbmNvbnN0IFNLWV9QSE9ORV9GSUVMRF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVBob25lRmllbGRJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgU0tZX1BIT05FX0ZJRUxEX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5UGhvbmVGaWVsZElucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBidXR0b24sIHNlYXJjaCBpbnB1dCwgYW5kIHRleHQgaW5wdXQgZm9yIGVudGVyaW5nIGFuZCB2YWxpZGF0aW5nXG4gKiBpbnRlcm5hdGlvbmFsIHBob25lIG51bWJlcnMuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIGFuIGBpbnB1dGAgZWxlbWVudCwgYW5kIHdyYXBcbiAqIHRoYXQgZWxlbWVudCBpbiBhIGBza3ktcGhvbmUtZmllbGRgIGNvbXBvbmVudC4gQnkgZGVmYXVsdCwgdGhlIGNvdW50cnkgc2VsZWN0b3JcbiAqIGJ1dHRvbiBkaXNwbGF5cyBhIGZsYWcgaWNvbiBmb3IgdGhlIGRlZmF1bHQgY291bnRyeSwgYW5kIHRoZSBwaG9uZSBudW1iZXIgaW5wdXRcbiAqIGRpc3BsYXlzIGEgc2FtcGxlIG9mIHRoZSBjb3JyZWN0IHBob25lIG51bWJlciBmb3JtYXQuIFdoZW4gdXNlcnMgc2VsZWN0IHRoZSBjb3VudHJ5XG4gKiBzZWxlY3RvciBidXR0b24sIHRoZXkgZXhwb3NlIHRoZSBjb3VudHJ5IHNlYXJjaCBpbnB1dCwgd2hpY2ggaXNcbiAqIFthbiBhdXRvY29tcGxldGUgaW5wdXRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9hdXRvY29tcGxldGUpXG4gKiB0aGF0IGFsbG93cyB0aGVtIHRvIHNlbGVjdCBkaWZmZXJlbnQgY291bnRyaWVzLiBXaGVuIHVzZXJzIGVudGVyIGArYCBmb2xsb3dlZCBieSBhblxuICogaW50ZXJuYXRpb25hbCBkaWFsIGNvZGUgaW4gdGhlIHBob25lIG51bWJlciBpbnB1dCwgdGhlIGNvdW50cnkgYXV0b21hdGljYWxseSBzd2l0Y2hlc1xuICogdG8gdGhlIGNvdW50cnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaWFsIGNvZGUuXG4gKiBAcmVxdWlyZWRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVBob25lRmllbGRJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtTS1lfUEhPTkVfRklFTERfVkFMVUVfQUNDRVNTT1IsIFNLWV9QSE9ORV9GSUVMRF9WQUxJREFUT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQaG9uZUZpZWxkSW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBwaG9uZSBmaWVsZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmICh0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50LmNvdW50cnlTZWxlY3REaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlPy5zZXRFbGVtZW50RGlzYWJsZWRTdGF0ZSh0aGlzLiNlbFJlZiwgY29lcmNlZFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJldmVudCB2YWxpZGF0aW9uIG9uIHRoZSBwaG9uZSBudW1iZXIgaW5wdXQuIEZvciB2YWxpZGF0aW9uLFxuICAgKiBwaG9uZSBudW1iZXJzIGFyZSBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIGFuXG4gICAqIGBpbnB1dGAgZWxlbWVudCBvciBvbiBhIGBGb3JtQ29udHJvbGAgaW4gYSByZWFjdGl2ZSBmb3JtLiBUbyBwcmV2ZW50IHZhbGlkYXRpb24sXG4gICAqIHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBza3lQaG9uZUZpZWxkTm9WYWxpZGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHNldCAjbW9kZWxWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSB2YWx1ZSA/PyAnJztcbiAgICB0aGlzLiNfbW9kZWxWYWx1ZSA9IHZhbHVlT3JEZWZhdWx0O1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlPy5zZXRFbGVtZW50VmFsdWUodGhpcy4jZWxSZWYsIHZhbHVlT3JEZWZhdWx0KTtcblxuICAgIGlmICh2YWx1ZU9yRGVmYXVsdCkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLiNmb3JtYXROdW1iZXIodmFsdWVPckRlZmF1bHQudG9TdHJpbmcoKSk7XG5cbiAgICAgIHRoaXMuI29uQ2hhbmdlKGZvcm1hdHRlZFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jb25DaGFuZ2UodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgICB0aGlzLiN2YWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIGdldCAjbW9kZWxWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfbW9kZWxWYWx1ZTtcbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgI3RleHRDaGFuZ2VzOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3Bob25lVXRpbHMgPSBQaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKTtcblxuICAjX2Rpc2FibGVkITogYm9vbGVhbjtcblxuICAjX21vZGVsVmFsdWUgPSAnJztcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG5cbiAgI2FkYXB0ZXJTZXJ2aWNlOiBTa3lQaG9uZUZpZWxkQWRhcHRlclNlcnZpY2UgfCB1bmRlZmluZWQ7XG4gICNwaG9uZUZpZWxkQ29tcG9uZW50OiBTa3lQaG9uZUZpZWxkQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBhZGFwdGVyU2VydmljZT86IFNreVBob25lRmllbGRBZGFwdGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwaG9uZUZpZWxkQ29tcG9uZW50PzogU2t5UGhvbmVGaWVsZENvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50ID0gcGhvbmVGaWVsZENvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lQaG9uZUZpZWxkSW5wdXRgIGRpcmVjdGl2ZSB3aXRoaW4gYSAnICtcbiAgICAgICAgICAnYDxza3ktcGhvbmUtZmllbGQ+YCBjb21wb25lbnQhJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZT8uc2V0RWxlbWVudFR5cGUodGhpcy4jZWxSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlPy5hZGRFbGVtZW50Q2xhc3ModGhpcy4jZWxSZWYsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgaWYgKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uZXhhbXBsZU51bWJlcikge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnRQbGFjZWhvbGRlcihcbiAgICAgICAgdGhpcy4jZWxSZWYsXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuc2VsZWN0ZWRDb3VudHJ5LmV4YW1wbGVOdW1iZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEFyaWFMYWJlbCh0aGlzLiNlbFJlZik7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnRyeTogU2t5UGhvbmVGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgdGhpcy4jbW9kZWxWYWx1ZSA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGlmIChjb3VudHJ5Py5leGFtcGxlTnVtYmVyKSB7XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2U/LnNldEVsZW1lbnRQbGFjZWhvbGRlcihcbiAgICAgICAgICAgIHRoaXMuI2VsUmVmLFxuICAgICAgICAgICAgY291bnRyeS5leGFtcGxlTnVtYmVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhZGRyZXNzIGEgYnVnIGluIEFuZ3VsYXIgNCwgd2hlcmUgdGhlIHZhbHVlIGlzIG5vdCBjaGFuZ2VkIG9uIHRoZSB2aWV3LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNjb250cm9sICYmIHRoaXMuI21vZGVsVmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWxWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBuZXcgdmFsdWUgZm9yIHJlYWN0aXZlIGZvcm1zIG9uIGNoYW5nZSBldmVudHMgb24gdGhlIGlucHV0IGVsZW1lbnRcbiAgICogQHBhcmFtIGV2ZW50IFRoZSBjaGFuZ2UgZXZlbnQgdGhhdCB3YXMgcmVjZWl2ZWRcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3RleHRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLiNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24oZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdGV4dENoYW5nZXMubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyByZWFjdGl2ZSBmb3JtIGNvbnRyb2xzIGFzIHRvdWNoZWQgb24gaW5wdXQgYmx1ciBldmVudHNcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0VHlwaW5nKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3RleHRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLiNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24oZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdGV4dENoYW5nZXMubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIG5ldyB2YWx1ZSBmb3IgcmVhY3RpdmUgZm9ybXNcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNldENvdW50cnlCeURpYWxDb2RlKHZhbHVlKTtcblxuICAgIHRoaXMuI21vZGVsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jdmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGlucHV0XG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgdmFsdWUgb2YgdGhlIGlucHV0J3MgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSdzIHRoZSBmb3JtIGNvbnRyb2wncyBjdXJyZW50IHZhbHVlXG4gICAqIEBwYXJhbSBjb250cm9sIHRoZSBmb3JtIGNvbnRyb2wgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuI2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wgPSBjb250cm9sO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNreVBob25lRmllbGROb1ZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNwaG9uZUZpZWxkQ29tcG9uZW50Py5zZWxlY3RlZENvdW50cnkgJiZcbiAgICAgICF0aGlzLiN2YWxpZGF0ZU51bWJlcih2YWx1ZSlcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy4jdGV4dENoYW5nZXMpIHtcbiAgICAgICAgLy8gTWFyayB0aGUgaW52YWxpZCBjb250cm9sIGFzIHRvdWNoZWQgc28gdGhhdCB0aGUgaW5wdXQncyBpbnZhbGlkIENTUyBzdHlsZXMgYXBwZWFyLlxuICAgICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICAgIC8vIFdlIGRvbid0IGRvIHRoaXMgaWYgdGhlIGlucHV0IGlzIHRoZSBhY3RpdmUgZWxlbWVudCBzbyB0aGF0IHdlIGRvbid0IHNob3cgdmFsaWRhdGlvblxuICAgICAgICAvLyBlcnJvcnMgdW5sZXNzIGl0IGlzIGludmFsaWQgb24gaW5pdGlhbGl6YXRpb24gb3IgdGhlIGlucHV0IGhhcyBiZWVuIGJsdXJyZWQuXG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lQaG9uZUZpZWxkOiB7XG4gICAgICAgICAgaW52YWxpZDogdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gICNzZXR1cFRleHRDaGFuZ2VTdWJzY3JpcHRpb24odGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jdGV4dENoYW5nZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRleHQpO1xuXG4gICAgdGhpcy4jdGV4dENoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICAjdmFsaWRhdGVOdW1iZXIocGhvbmVOdW1iZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBudW1iZXJPYmogPSB0aGlzLiNwaG9uZVV0aWxzLnBhcnNlQW5kS2VlcFJhd0lucHV0KFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uc2VsZWN0ZWRDb3VudHJ5Py5pc28yXG4gICAgICApO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQgJiZcbiAgICAgICAgIXRoaXMuI3Bob25lRmllbGRDb21wb25lbnQuYWxsb3dFeHRlbnNpb25zICYmXG4gICAgICAgIG51bWJlck9iai5nZXRFeHRlbnNpb24oKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuaXNWYWxpZE51bWJlcihudW1iZXJPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0J3MgdGhlIGdpdmVuIHBob25lIG51bWJlciBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvdW50cnkuXG4gICAqIEBwYXJhbSBwaG9uZU51bWJlciBUaGUgbnVtYmVyIHRvIGZvcm1hdFxuICAgKi9cbiAgI2Zvcm1hdE51bWJlcihwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbnVtYmVyT2JqID0gdGhpcy4jcGhvbmVVdGlscy5wYXJzZUFuZEtlZXBSYXdJbnB1dChcbiAgICAgICAgcGhvbmVOdW1iZXIsXG4gICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uaXNvMlxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLiNwaG9uZVV0aWxzLmlzUG9zc2libGVOdW1iZXIobnVtYmVyT2JqKSkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnJldHVybkZvcm1hdCkge1xuICAgICAgICAgIGNhc2UgJ2ludGVybmF0aW9uYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSAnbmF0aW9uYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Bob25lVXRpbHMuZm9ybWF0KFxuICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0Lk5BVElPTkFMXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuI3Bob25lRmllbGRDb21wb25lbnQ/LnNlbGVjdGVkQ291bnRyeT8uaXNvMiAhPT1cbiAgICAgICAgICAgICAgdGhpcy4jcGhvbmVGaWVsZENvbXBvbmVudD8uZGVmYXVsdENvdW50cnlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlscy5mb3JtYXQoXG4gICAgICAgICAgICAgICAgbnVtYmVyT2JqLFxuICAgICAgICAgICAgICAgIFBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLiNwaG9uZVV0aWxzLmZvcm1hdChcbiAgICAgICAgICAgICAgICBudW1iZXJPYmosXG4gICAgICAgICAgICAgICAgUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBob25lTnVtYmVyO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBwaG9uZU51bWJlcjtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uICwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICNvbkNoYW5nZSA9IChfOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHt9O1xuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgI3ZhbGlkYXRvckNoYW5nZSA9ICgpID0+IHt9O1xufVxuIl19