@coolon/angular-ui-powerups 16.1.0-aplpha.180 → 16.1.0-aplpha.181

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.
@@ -25,6 +25,7 @@ export class NumberInputComponent extends AbstractValueInputComponent {
25
25
  get max() { return this.#max_accessor_storage; }
26
26
  set max(value) { this.#max_accessor_storage = value; }
27
27
  #significantDigits$_accessor_storage = proxify((ValueModel));
28
+ // TODO: rename to decimal places. Also need to reject key presses for characters > last decimal place as the clamping rounds things up if you type a digit >= 5
28
29
  get significantDigits$() { return this.#significantDigits$_accessor_storage; }
29
30
  set significantDigits$(value) { this.#significantDigits$_accessor_storage = value; }
30
31
  #significantDigits_accessor_storage;
@@ -106,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
106
107
  }], significantDigits: [{
107
108
  type: Input
108
109
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQVMsVUFBVSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7O0FBUTlFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSwyQkFBbUM7SUFFbEUsWUFBWSxDQUFTO0lBR3JCLHlCQUEyQixPQUFPLENBQUMsQ0FBQSxVQUFrQixDQUFBLENBQUMsQ0FBQztJQUF2RCxJQUFBLElBQUksMENBQW1EO0lBQXZELElBQUEsSUFBSSxnREFBbUQ7SUFHdkQsd0JBQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQTlCLElBQUEsR0FBRyx5Q0FBMkI7SUFBOUIsSUFBQSxHQUFHLCtDQUEyQjtJQUc5Qix5QkFBMkIsT0FBTyxDQUFDLENBQUEsVUFBa0IsQ0FBQSxDQUFDLENBQUM7SUFBdkQsSUFBQSxJQUFJLDBDQUFtRDtJQUF2RCxJQUFBLElBQUksZ0RBQW1EO0lBR3ZELHdC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Q0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO3VHQTlEVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiwrUENYakMsbTlCQXlCQTs7QURUVztJQURDLE9BQU8sRUFBRTs4QkFDSixVQUFVO2dEQUF1QztBQUd2RDtJQURDLGlCQUFpQixFQUFFOzsrQ0FDVTtBQUc5QjtJQURDLE9BQU8sRUFBRTs4QkFDSixVQUFVO2dEQUF1QztBQUd2RDtJQURDLGlCQUFpQixFQUFFOzsrQ0FDVTtBQUc5QjtJQURDLE9BQU8sRUFBRTs4QkFDUyxVQUFVOzhEQUF1QztBQUdwRTtJQURDLGlCQUFpQixFQUFFOzs2REFDTTsyRkFwQnhCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEVBTW5CLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csSUFBSTtzQkFEWixLQUFLO2dCQUlHLEdBQUc7c0JBRFgsS0FBSztnQkFJRyxJQUFJO3NCQURaLEtBQUs7Z0JBSUcsR0FBRztzQkFEWCxLQUFLO2dCQUlHLGtCQUFrQjtzQkFEMUIsS0FBSztnQkFJRyxpQkFBaUI7c0JBRHpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tYW5kLCBEc2wsIFByb3hpZnksIHByb3hpZnksIFN0b3JlSW5WYWx1ZU1vZGVsLCBUcmFjZSwgVmFsdWVNb2RlbCwgVmFsdWVNb2RlbENoYWlufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1udW1iZXItaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQ8bnVtYmVyPiB7XG5cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBtaW4kOiBWYWx1ZU1vZGVsPG51bWJlcj4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8bnVtYmVyPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3IgbWluID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBtYXgkOiBWYWx1ZU1vZGVsPG51bWJlcj4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8bnVtYmVyPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3IgbWF4ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzaWduaWZpY2FudERpZ2l0cyQ6VmFsdWVNb2RlbDxudW1iZXI+ID0gcHJveGlmeShWYWx1ZU1vZGVsPG51bWJlcj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIHNpZ25pZmljYW50RGlnaXRzOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluY3JlbWVudENvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG4gIHByb3RlY3RlZCByZWFkb25seSBkZWNyZW1lbnRDb21tYW5kOiBDb21tYW5kPHZvaWQ+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheVZhbHVlJDogVmFsdWVNb2RlbDxudW1iZXI+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RlcCQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIHRoaXMuc3RlcCQgPSBjaGFpbih0aGlzLnNpZ25pZmljYW50RGlnaXRzJCkubWFwKHYgPT4gMTAgKiogKC12KSkub3RoZXJ3aXNlKDEpXG5cbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSQgPSBjaGFpbih0aGlzLnZhbHVlJCkubWFwKHYgPT4gdGhpcy5jbGFtcFNpZ25pZmljYW50RGlnaXRzKHYpLCB7XG4gICAgICBkZXBlbmRzT246IHRoaXMuc2lnbmlmaWNhbnREaWdpdHMkXG4gICAgfSk7XG5cbiAgICBjb25zdCBub3JtYWxpc2VkVmFsdWUkID0gY2hhaW4odGhpcy52YWx1ZSQpLm90aGVyd2lzZSgwKTtcblxuICAgIHRoaXMuaW5jcmVtZW50Q29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUkLnZhbHVlID0gdGhpcy5pbmNyZW1lbnQodGhpcy52YWx1ZSQudmFsdWUpO1xuICAgIH0pLmVuYWJsZVdoaWxlKGNoYWluLm51bWVyaWNWYWx1ZShub3JtYWxpc2VkVmFsdWUkKS5pc0xlc3NUaGFuKHRoaXMubWF4JCkuYW5kKHRoaXMuZW5hYmxlZCQpKTtcblxuICAgIHRoaXMuZGVjcmVtZW50Q29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUkLnZhbHVlID0gdGhpcy5kZWNyZW1lbnQodGhpcy52YWx1ZSQudmFsdWUpO1xuICAgIH0pLmVuYWJsZVdoaWxlKGNoYWluLm51bWVyaWNWYWx1ZShub3JtYWxpc2VkVmFsdWUkKS5pc0dyZWF0ZXJUaGFuKHRoaXMubWluJCkuYW5kKHRoaXMuZW5hYmxlZCQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jcmVtZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5jbGFtcFNpZ25pZmljYW50RGlnaXRzKCh2YWx1ZSA/PyAwKSArIHRoaXMuc3RlcCQudmFsdWUpXG4gIH1cblxuICBwcml2YXRlIGRlY3JlbWVudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xhbXBTaWduaWZpY2FudERpZ2l0cygodmFsdWUgPz8gMCkgLSB0aGlzLnN0ZXAkLnZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFNpZ25pZmljYW50RGlnaXRzKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpc05pbCh0aGlzLnNpZ25pZmljYW50RGlnaXRzKSA/IHZhbHVlIDogTnVtYmVyKHZhbHVlLnRvRml4ZWQodGhpcy5zaWduaWZpY2FudERpZ2l0cykpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSQudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlJC52YWx1ZVwiXG4gICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkJC52YWx1ZVwiXG4gICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJub3RpZnlFbnRlcktleSgpXCJcbiAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJub3RpZnlFc2NhcGVLZXkoKVwiXG4gICAgICAgICBbcGVjdGluRm9jdXNCaW5kaW5nXT1cImZvY3VzQ29udGV4dFwiXG4gICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICAgW3NpemVdPVwiNFwiXG4gICAgICAgICBbc3RlcF09XCJzdGVwJC52YWx1ZVwiXG4gID5cbiAgPHNlY3Rpb24gbWF0SWNvblN1ZmZpeD5cbiAgICA8YnV0dG9uIFtwZWN0aW5Db21tYW5kXT1cImRlY3JlbWVudENvbW1hbmRcIj4tPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbcGVjdGluQ29tbWFuZF09XCJpbmNyZW1lbnRDb21tYW5kXCI+KzwvYnV0dG9uPlxuICA8L3NlY3Rpb24+XG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnQgJiYgIWRlbnNlXCI+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPnt7IGZpcnN0RXJyb3IgfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQVMsVUFBVSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7O0FBUTlFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSwyQkFBbUM7SUFFbEUsWUFBWSxDQUFTO0lBR3JCLHlCQUEyQixPQUFPLENBQUMsQ0FBQSxVQUFrQixDQUFBLENBQUMsQ0FBQztJQUF2RCxJQUFBLElBQUksMENBQW1EO0lBQXZELElBQUEsSUFBSSxnREFBbUQ7SUFHdkQsd0JBQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQTlCLElBQUEsR0FBRyx5Q0FBMkI7SUFBOUIsSUFBQSxHQUFHLCtDQUEyQjtJQUc5Qix5QkFBMkIsT0FBTyxDQUFDLENBQUEsVUFBa0IsQ0FBQSxDQUFDLENBQUM7SUFBdkQsSUFBQSxJQUFJLDBDQUFtRDtJQUF2RCxJQUFBLElBQUksZ0RBQW1EO0lBR3ZELHdC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QU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQzt1R0EvRFUsb0JBQW9COzJGQUFwQixvQkFBb0IsK1BDWGpDLG05QkF5QkE7O0FEVFc7SUFEQyxPQUFPLEVBQUU7OEJBQ0osVUFBVTtnREFBdUM7QUFHdkQ7SUFEQyxpQkFBaUIsRUFBRTs7K0NBQ1U7QUFHOUI7SUFEQyxPQUFPLEVBQUU7OEJBQ0osVUFBVTtnREFBdUM7QUFHdkQ7SUFEQyxpQkFBaUIsRUFBRTs7K0NBQ1U7QUFJOUI7SUFEQyxPQUFPLEVBQUU7OEJBQ1MsVUFBVTs4REFBdUM7QUFHcEU7SUFEQyxpQkFBaUIsRUFBRTs7NkRBQ007MkZBckJ4QixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzBFQU1uQixZQUFZO3NCQUFwQixLQUFLO2dCQUdHLElBQUk7c0JBRFosS0FBSztnQkFJRyxHQUFHO3NCQURYLEtBQUs7Z0JBSUcsSUFBSTtzQkFEWixLQUFLO2dCQUlHLEdBQUc7c0JBRFgsS0FBSztnQkFLRyxrQkFBa0I7c0JBRDFCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUR6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbWFuZCwgRHNsLCBQcm94aWZ5LCBwcm94aWZ5LCBTdG9yZUluVmFsdWVNb2RlbCwgVHJhY2UsIFZhbHVlTW9kZWwsIFZhbHVlTW9kZWxDaGFpbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge0Fic3RyYWN0VmFsdWVJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtdmFsdWUtaW5wdXQuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtbnVtYmVyLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PG51bWJlcj4ge1xuXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgbWluJDogVmFsdWVNb2RlbDxudW1iZXI+ID0gcHJveGlmeShWYWx1ZU1vZGVsPG51bWJlcj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIG1pbiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgbWF4JDogVmFsdWVNb2RlbDxudW1iZXI+ID0gcHJveGlmeShWYWx1ZU1vZGVsPG51bWJlcj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIG1heCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuXG4gIC8vIFRPRE86IHJlbmFtZSB0byBkZWNpbWFsIHBsYWNlcy4gICBBbHNvIG5lZWQgdG8gcmVqZWN0IGtleSBwcmVzc2VzIGZvciBjaGFyYWN0ZXJzID4gbGFzdCBkZWNpbWFsIHBsYWNlIGFzIHRoZSBjbGFtcGluZyByb3VuZHMgdGhpbmdzIHVwIGlmIHlvdSB0eXBlIGEgZGlnaXQgPj0gNVxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNpZ25pZmljYW50RGlnaXRzJDpWYWx1ZU1vZGVsPG51bWJlcj4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8bnVtYmVyPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3Igc2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5jcmVtZW50Q29tbWFuZDogQ29tbWFuZDx2b2lkPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlY3JlbWVudENvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5VmFsdWUkOiBWYWx1ZU1vZGVsPG51bWJlcj47XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGVwJDogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuXG4gICAgdGhpcy5zdGVwJCA9IGNoYWluKHRoaXMuc2lnbmlmaWNhbnREaWdpdHMkKS5tYXAodiA9PiAxMCAqKiAoLXYpKS5vdGhlcndpc2UoMSlcblxuICAgIHRoaXMuZGlzcGxheVZhbHVlJCA9IGNoYWluKHRoaXMudmFsdWUkKS5tYXAodiA9PiB0aGlzLmNsYW1wU2lnbmlmaWNhbnREaWdpdHModiksIHtcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5zaWduaWZpY2FudERpZ2l0cyRcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vcm1hbGlzZWRWYWx1ZSQgPSBjaGFpbih0aGlzLnZhbHVlJCkub3RoZXJ3aXNlKDApO1xuXG4gICAgdGhpcy5pbmNyZW1lbnRDb21tYW5kID0gQ29tbWFuZC5jcmVhdGUoKCkgPT4ge1xuICAgICAgdGhpcy52YWx1ZSQudmFsdWUgPSB0aGlzLmluY3JlbWVudCh0aGlzLnZhbHVlJC52YWx1ZSk7XG4gICAgfSkuZW5hYmxlV2hpbGUoY2hhaW4ubnVtZXJpY1ZhbHVlKG5vcm1hbGlzZWRWYWx1ZSQpLmlzTGVzc1RoYW4odGhpcy5tYXgkKS5hbmQodGhpcy5lbmFibGVkJCkpO1xuXG4gICAgdGhpcy5kZWNyZW1lbnRDb21tYW5kID0gQ29tbWFuZC5jcmVhdGUoKCkgPT4ge1xuICAgICAgdGhpcy52YWx1ZSQudmFsdWUgPSB0aGlzLmRlY3JlbWVudCh0aGlzLnZhbHVlJC52YWx1ZSk7XG4gICAgfSkuZW5hYmxlV2hpbGUoY2hhaW4ubnVtZXJpY1ZhbHVlKG5vcm1hbGlzZWRWYWx1ZSQpLmlzR3JlYXRlclRoYW4odGhpcy5taW4kKS5hbmQodGhpcy5lbmFibGVkJCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmNyZW1lbnQodmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmNsYW1wU2lnbmlmaWNhbnREaWdpdHMoKHZhbHVlID8/IDApICsgdGhpcy5zdGVwJC52YWx1ZSlcbiAgfVxuXG4gIHByaXZhdGUgZGVjcmVtZW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5jbGFtcFNpZ25pZmljYW50RGlnaXRzKCh2YWx1ZSA/PyAwKSAtIHRoaXMuc3RlcCQudmFsdWUpXG4gIH1cblxuICBwcml2YXRlIGNsYW1wU2lnbmlmaWNhbnREaWdpdHModmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGlzTmlsKHRoaXMuc2lnbmlmaWNhbnREaWdpdHMpID8gdmFsdWUgOiBOdW1iZXIodmFsdWUudG9GaXhlZCh0aGlzLnNpZ25pZmljYW50RGlnaXRzKSk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnZhbHVlJC52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWUkLnZhbHVlXCJcbiAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWQkLnZhbHVlXCJcbiAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgIFtwZWN0aW5Gb2N1c0JpbmRpbmddPVwiZm9jdXNDb250ZXh0XCJcbiAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICBbc2l6ZV09XCI0XCJcbiAgICAgICAgIFtzdGVwXT1cInN0ZXAkLnZhbHVlXCJcbiAgPlxuICA8c2VjdGlvbiBtYXRJY29uU3VmZml4PlxuICAgIDxidXR0b24gW3BlY3RpbkNvbW1hbmRdPVwiZGVjcmVtZW50Q29tbWFuZFwiPi08L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtwZWN0aW5Db21tYW5kXT1cImluY3JlbWVudENvbW1hbmRcIj4rPC9idXR0b24+XG4gIDwvc2VjdGlvbj5cbiAgPG1hdC1oaW50ICpuZ0lmPVwiaGludCAmJiAhZGVuc2VcIj57eyBoaW50IH19PC9tYXQtaGludD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9ycygpXCI+e3sgZmlyc3RFcnJvciB9fTwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
@@ -23,6 +23,7 @@ export class StringInputComponent extends AbstractValueInputComponent {
23
23
  get suffixCommand() { return this.#suffixCommand_accessor_storage; }
24
24
  set suffixCommand(value) { this.#suffixCommand_accessor_storage = value; }
25
25
  inputMode = 'text';
26
+ trim = true;
26
27
  clearCommand;
27
28
  elementRef = this.inject(ElementRef);
28
29
  constructor() {
@@ -40,8 +41,11 @@ export class StringInputComponent extends AbstractValueInputComponent {
40
41
  select() {
41
42
  this.elementRef.nativeElement.querySelector('input').select();
42
43
  }
44
+ onValueChange($event) {
45
+ this.componentValue$.value = this.trim ? $event?.trim() : $event;
46
+ }
43
47
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix", suffixCommand: "suffixCommand", inputMode: "inputMode" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i6.IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: i7.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix", suffixCommand: "suffixCommand", inputMode: "inputMode", trim: "trim" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"value$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i6.IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: i7.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
45
49
  }
46
50
  __decorate([
47
51
  Proxify(),
@@ -57,7 +61,7 @@ __decorate([
57
61
  ], StringInputComponent.prototype, "suffixCommand", null);
58
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, decorators: [{
59
63
  type: Component,
60
- args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
64
+ args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"value$.value\"\n (ngModelChange)=\"onValueChange($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
61
65
  }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
62
66
  type: Input
63
67
  }], enableClear$: [{
@@ -70,5 +74,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
70
74
  type: Input
71
75
  }], inputMode: [{
72
76
  type: Input
77
+ }], trim: [{
78
+ type: Input
73
79
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDJCQUFtQztJQUVsRSxZQUFZLENBQVM7SUFHckIsaUNBQWUsT0FBTyxDQUFDLENBQUEsVUFBbUIsQ0FBQSxDQUFDLENBQUM7SUFBNUMsSUFBQSxZQUFZLGtEQUFnQztJQUE1QyxJQUFBLFlBQVksd0RBQWdDO0lBRzVDLGdDQUFjLEtBQUssQ0FBQztJQUFwQixJQUFBLFdBQVcsaURBQVM7SUFBcEIsSUFBQSxXQUFXLHVEQUFTO0lBRXBCLFVBQVUsQ0FBUztJQUduQixrQ0FBeUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQTFDLElBQUEsYUFBYSxtREFBNkI7SUFBMUMsSUFBQSxhQUFhLHlEQUE2QjtJQUduRCxTQUFTLEdBQXdFLE1BQU0sQ0FBQztJQUUvRSxZQUFZLENBQWdCO0lBRTVCLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTlDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUM7YUFDQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDckMsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEUsQ0FBQzt1R0F0Q1Usb0JBQW9COzJGQUFwQixvQkFBb0IscVFDVGpDLDYrQkFzQkE7O0FEUlc7SUFEQyxPQUFPLEVBQUU7O3dEQUNrQztBQUc1QztJQURDLGlCQUFpQixFQUFFOzt1REFDQTtBQUtwQjtJQURDLE9BQU8sRUFBRTs4QkFDSyxPQUFPO3lEQUFvQjsyRkFieEMsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjswRUFNbkIsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxZQUFZO3NCQURwQixLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxhQUFhO3NCQURyQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1hbmQsIERzbCwgUHJveGlmeSwgcHJveGlmeSwgU3RvcmVJblZhbHVlTW9kZWwsIFZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PHN0cmluZz4ge1xuXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZW5hYmxlQ2xlYXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBlbmFibGVDbGVhciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGljb25QcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHN1ZmZpeENvbW1hbmQ6IENvbW1hbmQgPSBwcm94aWZ5KENvbW1hbmQpO1xuXG4gIEBJbnB1dCgpXG4gIGlucHV0TW9kZTogJ3RleHQnIHwgJ2RlY2ltYWwnIHwgJ251bWVyaWMnIHwgJ3RlbCcgfCAnc2VhcmNoJyB8ICdlbWFpbCcgfCAndXJsJyA9ICd0ZXh0JztcblxuICByZWFkb25seSBjbGVhckNvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmNsZWFyQ29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlID0gJyc7XG4gICAgfSlcbiAgICAgIC53aXRoRmFjZSh7IGljb246ICgpID0+ICdtYXQ6Y2xlYXInIH0pXG4gICAgICAuZW5hYmxlV2hpbGUoY2hhaW4uc3RyaW5nVmFsdWUodGhpcy5jb21wb25lbnRWYWx1ZSQpLmlzTm90QmxhbmsoKSk7XG4gIH1cblxuICBnZXQgaGFzU3VmZml4Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gUHJveGlmeS5oYXNUYXJnZXQodGhpcy5zdWZmaXhDb21tYW5kKTtcbiAgfVxuXG4gIHNlbGVjdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnNlbGVjdCgpO1xuICB9XG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICBbKG5nTW9kZWwpXT1cImNvbXBvbmVudFZhbHVlJC52YWx1ZVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWQkLnZhbHVlXCJcbiAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgIFtwZWN0aW5Gb2N1c0JpbmRpbmddPVwiZm9jdXNDb250ZXh0XCJcbiAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gID5cbiAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG4gIDxhdXAtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggW2ljb25dPVwiaWNvblByZWZpeFwiPjwvYXVwLWljb24+XG4gIDxzcGFuIG1hdFN1ZmZpeD5cbiAgICA8YXVwLWNvbW1hbmQgKm5nSWY9XCJlbmFibGVDbGVhclwiIFtjb21tYW5kXT1cImNsZWFyQ29tbWFuZFwiIGRhdGEtY3k9XCJjbGVhckNvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICAgIDxhdXAtY29tbWFuZCAqbmdJZj1cImhhc1N1ZmZpeENvbW1hbmRcIiBbY29tbWFuZF09XCJzdWZmaXhDb21tYW5kXCIgZGF0YS1jeT1cInN1ZmZpeENvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICA8L3NwYW4+XG48L21hdC1mb3JtLWZpZWxkPlxuXG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDJCQUFtQztJQUVsRSxZQUFZLENBQVM7SUFHckIsaUNBQWUsT0FBTyxDQUFDLENBQUEsVUFBbUIsQ0FBQSxDQUFDLENBQUM7SUFBNUMsSUFBQSxZQUFZLGtEQUFnQztJQUE1QyxJQUFBLFlBQVksd0RBQWdDO0lBRzVDLGdDQUFjLEtBQUssQ0FBQztJQUFwQixJQUFBLFdBQVcsaURBQVM7SUFBcEIsSUFBQSxXQUFXLHVEQUFTO0lBRXBCLFVBQVUsQ0FBUztJQUduQixrQ0FBeUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQTFDLElBQUEsYUFBYSxtREFBNkI7SUFBMUMsSUFBQSxhQUFhLHlEQUE2QjtJQUduRCxTQUFTLEdBQXdFLE1BQU0sQ0FBQztJQUd4RixJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRUgsWUFBWSxDQUFnQjtJQUU1QixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU5QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDO2FBQ0MsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3JDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFUyxhQUFhLENBQUMsTUFBYztRQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRSxDQUFDO3VHQTdDVSxvQkFBb0I7MkZBQXBCLG9CQUFvQixtUkNUakMsc2hDQXVCQTs7QURUVztJQURDLE9BQU8sRUFBRTs7d0RBQ2tDO0FBRzVDO0lBREMsaUJBQWlCLEVBQUU7O3VEQUNBO0FBS3BCO0lBREMsT0FBTyxFQUFFOzhCQUNLLE9BQU87eURBQW9COzJGQWJ4QyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzBFQU1uQixZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFlBQVk7c0JBRHBCLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGFBQWE7c0JBRHJCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1hbmQsIERzbCwgUHJveGlmeSwgcHJveGlmeSwgU3RvcmVJblZhbHVlTW9kZWwsIFZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PHN0cmluZz4ge1xuXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZW5hYmxlQ2xlYXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBlbmFibGVDbGVhciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGljb25QcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHN1ZmZpeENvbW1hbmQ6IENvbW1hbmQgPSBwcm94aWZ5KENvbW1hbmQpO1xuXG4gIEBJbnB1dCgpXG4gIGlucHV0TW9kZTogJ3RleHQnIHwgJ2RlY2ltYWwnIHwgJ251bWVyaWMnIHwgJ3RlbCcgfCAnc2VhcmNoJyB8ICdlbWFpbCcgfCAndXJsJyA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICB0cmltID0gdHJ1ZTtcblxuICByZWFkb25seSBjbGVhckNvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmNsZWFyQ29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlID0gJyc7XG4gICAgfSlcbiAgICAgIC53aXRoRmFjZSh7IGljb246ICgpID0+ICdtYXQ6Y2xlYXInIH0pXG4gICAgICAuZW5hYmxlV2hpbGUoY2hhaW4uc3RyaW5nVmFsdWUodGhpcy5jb21wb25lbnRWYWx1ZSQpLmlzTm90QmxhbmsoKSk7XG4gIH1cblxuICBnZXQgaGFzU3VmZml4Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gUHJveGlmeS5oYXNUYXJnZXQodGhpcy5zdWZmaXhDb21tYW5kKTtcbiAgfVxuXG4gIHNlbGVjdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnNlbGVjdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVmFsdWVDaGFuZ2UoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbXBvbmVudFZhbHVlJC52YWx1ZSA9IHRoaXMudHJpbSA/ICRldmVudD8udHJpbSgpIDogJGV2ZW50O1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L21hdC1sYWJlbD5cbiAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAgICBbYXR0ci5pbnB1dG1vZGVdPVwiaW5wdXRNb2RlXCJcbiAgICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUkLnZhbHVlXCJcbiAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWQkLnZhbHVlXCJcbiAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgIFtwZWN0aW5Gb2N1c0JpbmRpbmddPVwiZm9jdXNDb250ZXh0XCJcbiAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gID5cbiAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG4gIDxhdXAtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggW2ljb25dPVwiaWNvblByZWZpeFwiPjwvYXVwLWljb24+XG4gIDxzcGFuIG1hdFN1ZmZpeD5cbiAgICA8YXVwLWNvbW1hbmQgKm5nSWY9XCJlbmFibGVDbGVhclwiIFtjb21tYW5kXT1cImNsZWFyQ29tbWFuZFwiIGRhdGEtY3k9XCJjbGVhckNvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICAgIDxhdXAtY29tbWFuZCAqbmdJZj1cImhhc1N1ZmZpeENvbW1hbmRcIiBbY29tbWFuZF09XCJzdWZmaXhDb21tYW5kXCIgZGF0YS1jeT1cInN1ZmZpeENvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICA8L3NwYW4+XG48L21hdC1mb3JtLWZpZWxkPlxuXG4iXX0=
@@ -18,7 +18,7 @@ export class StringInputActivity extends InputActivity {
18
18
  [confirmFace]="confirmFace"
19
19
  [cancelFace]="cancelFace"
20
20
  ></aup-activity-actions>
21
- `, isInline: true, dependencies: [{ kind: "component", type: i1.StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix", "suffixCommand", "inputMode"] }, { kind: "component", type: i2.ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }] });
21
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix", "suffixCommand", "inputMode", "trim"] }, { kind: "component", type: i2.ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }] });
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputActivity, decorators: [{
24
24
  type: Component,
@@ -1,7 +1,7 @@
1
1
  import { Location } from "@angular/common";
2
2
  import { Injectable } from "@angular/core";
3
3
  import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from "@angular/router";
4
- import { assert, DebugContext, DelegatingValueModel, Dsl, GarbageCollector, lang, Logger, MutableValueModel } from "@coolon/pectin";
4
+ import { assert, DebugContext, DelegatingValueModel, Dsl, GarbageCollector, lang, Logger, MutableValueModel } from '@coolon/pectin';
5
5
  import { InteractionService } from "../interaction/services/interaction.service";
6
6
  import { NavigatingDuringInteraction } from "./navigation/session/interactions/navigating-during-interaction";
7
7
  import { PopStateDuringInteractionNavigation } from "./navigation/session/interactions/pop-state-during-interaction-navigation";
@@ -10,6 +10,7 @@ import { Navigating } from "./navigation/session/navigating";
10
10
  import { NavigationContext } from "./navigation/session/navigation-context";
11
11
  import { PopStateNavigation } from "./navigation/session/pop-state-navigation";
12
12
  import { PlaceAuthService } from "./place-auth-service";
13
+ import { PlaceComponent } from "./place-component";
13
14
  import { PlaceHistory } from "./place-history";
14
15
  import { UrlService } from "./url-service";
15
16
  import { Visit } from "./visit";
@@ -46,28 +47,31 @@ export class PlaceRouter extends GarbageCollector {
46
47
  this.interactionService = interactionService;
47
48
  this.urlService = urlService;
48
49
  this.placeHistory = placeHistory;
49
- if (window["Cypress"]) {
50
- window["aup.PlaceRouter"] = this;
50
+ if (window['Cypress']) {
51
+ window['aup.PlaceRouter'] = this;
51
52
  }
52
- this.routerInteractionAdapter = interactionService.registerPlaceRouter(this);
53
+ this.routerInteractionAdapter =
54
+ interactionService.registerPlaceRouter(this);
53
55
  // TODO: Make this an interface and use 'this' instead.
54
56
  this.navigationContext = new NavigationContext.Impl(this.urlService, this.routerInteractionAdapter, (urlSnapshot, options) => {
55
57
  return this.navigateByUrl(urlSnapshot, options);
56
- }, state => {
58
+ }, (state) => {
57
59
  this.transitionTo(state);
58
- }, segments => {
60
+ }, (segments) => {
59
61
  this.routingSessionFinished(segments);
60
62
  });
61
63
  const { chain } = Dsl.disposeWith(this);
62
64
  this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();
63
- this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync").otherwise(false);
64
- const idleStateName = chain(this.interactionService.active).map(active => active ? "IdleDuringInteraction" : "Idle");
65
+ this.interactionSyncInProgress$ = chain(this.navigationSession$)
66
+ .pluck('isInteractionSync')
67
+ .otherwise(false);
68
+ const idleStateName = chain(this.interactionService.active).map((active) => active ? 'IdleDuringInteraction' : 'Idle');
65
69
  this.navigationSessionName$ = chain(this.navigationSession$)
66
- .pluck("name")
70
+ .pluck('name')
67
71
  .otherwise(idleStateName);
68
- DebugContext.tag(this._activeVisit$, "PlaceRouter.activeVisit");
72
+ DebugContext.tag(this._activeVisit$, 'PlaceRouter.activeVisit');
69
73
  // TODO: make setup the callbacks in during module initiation to make this testable.
70
- angularRouter.events.subscribe(event => {
74
+ angularRouter.events.subscribe((event) => {
71
75
  // Routing event sequence
72
76
  // ======================
73
77
  // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
@@ -76,7 +80,7 @@ export class PlaceRouter extends GarbageCollector {
76
80
  // =======================
77
81
  if (event instanceof NavigationStart) {
78
82
  // console.log(`---> NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);
79
- if (event.navigationTrigger === "popstate") {
83
+ if (event.navigationTrigger === 'popstate') {
80
84
  this.onPopState(event);
81
85
  }
82
86
  else {
@@ -102,7 +106,7 @@ export class PlaceRouter extends GarbageCollector {
102
106
  });
103
107
  // The router needs to know about url changes and in some cases they are the only way the router can know if
104
108
  // the back button was clicked.
105
- angularLocation.onUrlChange(url => this.onUrlChanged(url));
109
+ angularLocation.onUrlChange((url) => this.onUrlChanged(url));
106
110
  }
107
111
  postponeRoutingUntil(condition$) {
108
112
  this._ready$.setDelegate(condition$);
@@ -139,22 +143,22 @@ export class PlaceRouter extends GarbageCollector {
139
143
  }
140
144
  // @Trace()
141
145
  onPopState(event) {
142
- assert.isTruthy(event.navigationTrigger === "popstate");
146
+ assert.isTruthy(event.navigationTrigger === 'popstate');
143
147
  if (this.currentSession) {
144
148
  this.currentSession.onPopState(event);
145
149
  }
146
150
  else {
147
151
  const poppedHistoryUrl = event.url;
148
152
  const currentRouterUrl = this.urlService.getCurrentRouterUrl();
149
- const session = this.interactionService.isActive() ?
150
- new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl) :
151
- new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);
153
+ const session = this.interactionService.isActive()
154
+ ? new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl)
155
+ : new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);
152
156
  this.transitionTo(session);
153
157
  }
154
158
  }
155
159
  // @Trace()
156
160
  onRouterStarted(event) {
157
- assert.isFalsey(event.navigationTrigger === "popstate");
161
+ assert.isFalsey(event.navigationTrigger === 'popstate');
158
162
  // const inInteraction = this.interactionService.isActive();
159
163
  if (this.currentSession) {
160
164
  this.currentSession.onRouterStarted(event);
@@ -171,7 +175,7 @@ export class PlaceRouter extends GarbageCollector {
171
175
  this.currentSession.onUrlChange(newUrl);
172
176
  }
173
177
  else {
174
- console.log("FYI: url changed without a navigation session in progress");
178
+ console.log('FYI: url changed without a navigation session in progress');
175
179
  }
176
180
  // console.log(`<--- Url Changed`);
177
181
  }
@@ -196,11 +200,11 @@ export class PlaceRouter extends GarbageCollector {
196
200
  // @Trace()
197
201
  async doNavigation(visit, runNavigationCommands) {
198
202
  if (this.navigationInProgress$.value) {
199
- Logger.get().error("Navigation already in progress", {
203
+ Logger.get().error('Navigation already in progress', {
200
204
  visit: visit,
201
- session: this.navigationSession
205
+ session: this.navigationSession,
202
206
  });
203
- lang.illegalState("Navigation already in progress");
207
+ lang.illegalState('Navigation already in progress');
204
208
  }
205
209
  else {
206
210
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
@@ -214,7 +218,7 @@ export class PlaceRouter extends GarbageCollector {
214
218
  // Check if the router has finished (in the case where no router change required) and we're still in a
215
219
  // transient state and finish of the transition.
216
220
  if (!this.angularRouter.getCurrentNavigation() && this.currentSession) {
217
- this.currentSession.onRouterEnd(new NavigationEnd(-1, "", this.urlService.getCurrentRouterUrl()));
221
+ this.currentSession.onRouterEnd(new NavigationEnd(-1, '', this.urlService.getCurrentRouterUrl()));
218
222
  }
219
223
  }
220
224
  }
@@ -225,6 +229,10 @@ export class PlaceRouter extends GarbageCollector {
225
229
  get activeVisit$() {
226
230
  return this._activeVisit$.readonly$;
227
231
  }
232
+ filterAuthorizedPlaces(places, options) {
233
+ const { chain } = Dsl.disposeWith(options.disposedWith);
234
+ return chain(this.authService.accessGuard$).mapToList((g) => places.filter((p) => g.isAuthorised(PlaceComponent.getDefinition(p))));
235
+ }
228
236
  async notifyVisitSegmentChanged(is, was) {
229
237
  // console.log("PlaceRouter.notifyVisitSegmentChanged", is.toDebugString(), was.toDebugString());
230
238
  this.placeHistory.updateVisitSegment(is);
@@ -234,16 +242,18 @@ export class PlaceRouter extends GarbageCollector {
234
242
  // TODO: can I just do a regular navigate using an updated visit?
235
243
  // const {when} = Dsl.disposeWith(this);
236
244
  await this.doNavigation(visit, () => {
237
- const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegment(is);
245
+ const urlSnapshot = this.urlService
246
+ .parseUrl(this.angularRouter.routerState.snapshot.url)
247
+ .updateVisitSegment(is);
238
248
  return this.navigateByUrl(urlSnapshot);
239
249
  });
240
250
  }
241
251
  }
242
252
  createNavigationSession(currentRouterUrl) {
243
253
  const inInteraction = this.interactionService.isActive();
244
- return inInteraction ?
245
- new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl) :
246
- new Navigating(this.navigationContext, currentRouterUrl);
254
+ return inInteraction
255
+ ? new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl)
256
+ : new Navigating(this.navigationContext, currentRouterUrl);
247
257
  }
248
258
  // @Trace()
249
259
  transitionTo(next) {
@@ -273,7 +283,7 @@ export class PlaceRouter extends GarbageCollector {
273
283
  session.dispose();
274
284
  this.navigationSession$.value = null;
275
285
  // console.log(`### Router Session Finished (was ${session.toString()})`);
276
- this.sessionFinishedJobs.forEach(job => job());
286
+ this.sessionFinishedJobs.forEach((job) => job());
277
287
  this.sessionFinishedJobs = [];
278
288
  }
279
289
  runAfterRoutingSessionFinishes(func) {
@@ -304,7 +314,7 @@ export class PlaceRouter extends GarbageCollector {
304
314
  });
305
315
  }
306
316
  else {
307
- return new Promise(((resolve) => {
317
+ return new Promise((resolve) => {
308
318
  // console.log(`No navigation in progress, starting synchronisation job`);
309
319
  this.runAfterRoutingSessionFinishes(() => {
310
320
  onSyncComplete();
@@ -312,7 +322,7 @@ export class PlaceRouter extends GarbageCollector {
312
322
  });
313
323
  const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);
314
324
  this.transitionTo(session);
315
- }));
325
+ });
316
326
  }
317
327
  }
318
328
  toVisit(visitOrPlaceComponent, params) {
@@ -324,12 +334,12 @@ export class PlaceRouter extends GarbageCollector {
324
334
  }
325
335
  }
326
336
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, deps: [{ token: i1.Router }, { token: i2.Location }, { token: i3.InteractionService }, { token: i4.UrlService }, { token: i5.PlaceHistory }], target: i0.ɵɵFactoryTarget.Injectable });
327
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, providedIn: "root" });
337
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, providedIn: 'root' });
328
338
  }
329
339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, decorators: [{
330
340
  type: Injectable,
331
341
  args: [{
332
- providedIn: "root"
342
+ providedIn: 'root',
333
343
  }]
334
344
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }, { type: i3.InteractionService }, { type: i4.UrlService }, { type: i5.PlaceHistory }]; } });
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQUUsb0JBQW9CLEVBQ2xDLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLE1BQU0sRUFDTixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUM1RyxPQUFPLEVBQ0wsbUNBQW1DLEVBQ3BDLE1BQU0sMkVBQTJFLENBQUM7QUFDbkYsT0FBTyxFQUNMLHlDQUF5QyxFQUMxQyxNQUFNLGtGQUFrRixDQUFDO0FBQzFGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztB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RSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FFTDtJQUNILENBQUM7SUFFTyxPQUFPLENBQUMscUJBQTRELEVBQUUsTUFBZ0M7UUFDNUcsSUFBSSxxQkFBcUIsWUFBWSxLQUFLLEVBQUU7WUFDMUMsT0FBTyxxQkFBcUIsQ0FBQztTQUM5QjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzt1R0F4VlUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgRGVidWdDb250ZXh0LCBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBsYW5nLFxuICBMb2dnZXIsXG4gIE11dGFibGVWYWx1ZU1vZGVsLCBUcmFuc2FjdGlvbk9ic2VydmVyLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge0NvbnN0cnVjdGFibGV9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5pbXBvcnQge0ludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyfSBmcm9tIFwiLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24tc2VydmljZS1yb3V0aW5nLWFkYXB0ZXJcIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvbmF2aWdhdGluZy1kdXJpbmctaW50ZXJhY3Rpb25cIjtcbmltcG9ydCB7XG4gIFBvcFN0YXRlRHVyaW5nSW50ZXJhY3Rpb25OYXZpZ2F0aW9uXG59IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvcG9wLXN0YXRlLWR1cmluZy1pbnRlcmFjdGlvbi1uYXZpZ2F0aW9uXCI7XG5pbXBvcnQge1xuICBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZVxufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL3N5bmNocm9uaXNlLWludGVyYWN0aW9uLWNvbnRleHQtaWRzLXdpdGgtcm91dGVcIjtcbmltcG9ydCB7TmF2aWdhdGluZ30gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpbmdcIjtcbmltcG9ydCB7TmF2aWdhdGlvbkNvbnRleHR9IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7TmF2aWdhdGlvblNlc3Npb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9uYXZpZ2F0aW9uLXNlc3Npb25cIjtcbmltcG9ydCB7UG9wU3RhdGVOYXZpZ2F0aW9ufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vcG9wLXN0YXRlLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7UGxhY2VBdXRoU2VydmljZX0gZnJvbSBcIi4vcGxhY2UtYXV0aC1zZXJ2aWNlXCI7XG5pbXBvcnQge1BsYWNlQ29tcG9uZW50fSBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmltcG9ydCB7UGxhY2VIaXN0b3J5fSBmcm9tIFwiLi9wbGFjZS1oaXN0b3J5XCI7XG5pbXBvcnQge1VybFNlcnZpY2V9IGZyb20gXCIuL3VybC1zZXJ2aWNlXCI7XG5pbXBvcnQge1VybFNuYXBzaG90fSBmcm9tIFwiLi91cmwtc25hcHNob3RcIjtcbmltcG9ydCB7VmlzaXR9IGZyb20gXCIuL3Zpc2l0XCI7XG5pbXBvcnQge1Zpc2l0U2VnbWVudH0gZnJvbSBcIi4vdmlzaXQtc2VnbWVudFwiO1xuXG4vLyBmdW5jdGlvbiBhc0FycmF5PFQ+KGl0ZW06IFQgfCBUW10pOiBUW10ge1xuLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV07XG4vLyB9XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbiQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25JblByb2dyZXNzJDogVmFsdWVNb2RlbENoYWluPGJvb2xlYW4+O1xuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbk5hbWUkOiBWYWx1ZU1vZGVsQ2hhaW48c3RyaW5nPjsgLy8gdXNlZCBieSB0ZXN0c1xuICByZWFkb25seSBpbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJDogVmFsdWVNb2RlbDxib29sZWFuPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Db250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dC5JbXBsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxWaXNpdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXI6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyO1xuICBwcml2YXRlIHNlc3Npb25GaW5pc2hlZEpvYnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBuZXcgUGxhY2VBdXRoU2VydmljZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWR5JCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxib29sZWFuPigpLndpdGhEZWZhdWx0KHRydWUpKTtcbiAgcmVhZG9ubHkgcmVhZHkkID0gdGhpcy5fcmVhZHkkLnJlYWRvbmx5JDtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhclJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VydmljZTogVXJsU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAod2luZG93W1wiQ3lwcmVzc1wiXSkge1xuICAgICAgd2luZG93W1wiYXVwLlBsYWNlUm91dGVyXCJdID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlciA9IGludGVyYWN0aW9uU2VydmljZS5yZWdpc3RlclBsYWNlUm91dGVyKHRoaXMpO1xuXG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGFuIGludGVyZmFjZSBhbmQgdXNlICd0aGlzJyBpbnN0ZWFkLlxuICAgIHRoaXMubmF2aWdhdGlvbkNvbnRleHQgPSBuZXcgTmF2aWdhdGlvbkNvbnRleHQuSW1wbChcbiAgICAgIHRoaXMudXJsU2VydmljZSxcbiAgICAgIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLFxuICAgICAgKHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCwgb3B0aW9uczogeyByZXBsYWNlVXJsOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgc3RhdGUgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzdGF0ZSk7XG4gICAgICB9LFxuICAgICAgc2VnbWVudHMgPT4ge1xuICAgICAgICB0aGlzLnJvdXRpbmdTZXNzaW9uRmluaXNoZWQoc2VnbWVudHMpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQpLmlzTm90TmlsKCk7XG4gICAgdGhpcy5pbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKS5wbHVjayhcImlzSW50ZXJhY3Rpb25TeW5jXCIpLm90aGVyd2lzZShmYWxzZSlcblxuICAgIGNvbnN0IGlkbGVTdGF0ZU5hbWUgPSBjaGFpbih0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmUpLm1hcChhY3RpdmUgPT4gYWN0aXZlID8gXCJJZGxlRHVyaW5nSW50ZXJhY3Rpb25cIiA6IFwiSWRsZVwiKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTmFtZSQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJClcbiAgICAgIC5wbHVjayhcIm5hbWVcIilcbiAgICAgIC5vdGhlcndpc2UoaWRsZVN0YXRlTmFtZSk7XG5cbiAgICBEZWJ1Z0NvbnRleHQudGFnKHRoaXMuX2FjdGl2ZVZpc2l0JCwgXCJQbGFjZVJvdXRlci5hY3RpdmVWaXNpdFwiKTtcblxuICAgIC8vIFRPRE86IG1ha2Ugc2V0dXAgdGhlIGNhbGxiYWNrcyBpbiBkdXJpbmcgbW9kdWxlIGluaXRpYXRpb24gdG8gbWFrZSB0aGlzIHRlc3RhYmxlLlxuICAgIGFuZ3VsYXJSb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGFib3J0ZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIikge1xuICAgICAgICAgIHRoaXMub25Qb3BTdGF0ZShldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vblJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25TdGFydFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfSAoJHtldmVudC5uYXZpZ2F0aW9uVHJpZ2dlcn0pYCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25FbmRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckVuZChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25FbmRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uRXJyb3JbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkVycm9yWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25DYW5jZWxbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckNhbmNlbGxlZChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25DYW5jZWxbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRoZSByb3V0ZXIgbmVlZHMgdG8ga25vdyBhYm91dCB1cmwgY2hhbmdlcyBhbmQgaW4gc29tZSBjYXNlcyB0aGV5IGFyZSB0aGUgb25seSB3YXkgdGhlIHJvdXRlciBjYW4ga25vdyBpZlxuICAgIC8vIHRoZSBiYWNrIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICBhbmd1bGFyTG9jYXRpb24ub25VcmxDaGFuZ2UodXJsID0+IHRoaXMub25VcmxDaGFuZ2VkKHVybCkpO1xuXG4gIH1cblxuICBwb3N0cG9uZVJvdXRpbmdVbnRpbChjb25kaXRpb24kOiBWYWx1ZU1vZGVsPGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcmVhZHkkLnNldERlbGVnYXRlKGNvbmRpdGlvbiQpXG4gIH1cblxuICBhc3luYyBnZXRBdXRoZW50aWNhdGlvbkZhaWx1cmVSZWRpcmVjdChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoYWN0aXZhdGVkUm91dGUsIHN0YXRlKVxuICB9XG5cbiAgYXN5bmMgZ2V0QXV0aG9yaXNhdGlvbkZhaWx1cmVSZWRpcmVjdE9wdGlvbnMoY29tcG9uZW50OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFByb21pc2U8VmlzaXRbXT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcmlzYXRpb25GYWlsdXJlUmVkaXJlY3RPcHRpb25zKGNvbXBvbmVudCk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZTtcbiAgfVxuXG4gIGlzTmF2aWdhdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWU7XG4gIH1cblxuICBhc3luYyB3YWl0VW50aWxSb3V0ZXJSZWFkeSgpIHtcbiAgICBjb25zdCB7d2FpdFVudGlsfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBhd2FpdCB3YWl0VW50aWwodGhpcy5yZWFkeSQpLmJlY29tZXNUcnV0aHkoKVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYXN5bmMgd2FpdFVudGlsSWRsZSgpOiBQcm9taXNlPHRoaXM+IHtcbiAgICBjb25zdCB7d2FpdFVudGlsfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBhd2FpdCB3YWl0VW50aWwodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQpLmJlY29tZXNGYWxzZXkoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFzeW5jIHdhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IHt3YWl0VW50aWx9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIGF3YWl0IHdhaXRVbnRpbCh0aGlzLmludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkKS5iZWNvbWVzRmFsc2V5KClcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGFzc2VydC5pc1RydXRoeShldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gXCJwb3BzdGF0ZVwiKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblBvcFN0YXRlKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9wcGVkSGlzdG9yeVVybCA9IGV2ZW50LnVybDtcbiAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZXJVcmwgPSB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgP1xuICAgICAgICBuZXcgUG9wU3RhdGVEdXJpbmdJbnRlcmFjdGlvbk5hdmlnYXRpb24odGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCwgcG9wcGVkSGlzdG9yeVVybCkgOlxuICAgICAgICBuZXcgUG9wU3RhdGVOYXZpZ2F0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwsIHBvcHBlZEhpc3RvcnlVcmwpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgfVxuICB9XG5cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlclN0YXJ0ZWQoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGFzc2VydC5pc0ZhbHNleShldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gXCJwb3BzdGF0ZVwiKTtcbiAgICAvLyBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLmNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCkpKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblVybENoYW5nZWQobmV3VXJsOiBzdHJpbmcpIHtcbiAgICAvLyB0aGUgYmFjayBidXR0b24gY2FuIHRyaWdnZXIgYSB1cmwgY2hhbmdlIHdpdGhvdXQgYSBuYXZpZ2F0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3Mgc28gd2VcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBVcmwgQ2hhbmdlZCAke25ld1VybH1gKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblVybENoYW5nZShuZXdVcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZZSTogdXJsIGNoYW5nZWQgd2l0aG91dCBhIG5hdmlnYXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coYDwtLS0gVXJsIENoYW5nZWRgKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50OiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckNhbmNlbGxlZChldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVycm9yKGV2ZW50OiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRXJyb3IoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFbmQoZXZlbnQ6IE5hdmlnYXRpb25FbmQpIHtcbiAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKGV2ZW50KTtcbiAgfVxuXG5cbiAgYXN5bmMgbmF2aWdhdGUodmlzaXQ6IFZpc2l0KVxuICBhc3luYyBuYXZpZ2F0ZShwbGFjZUNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdE9yUGxhY2VDb21wb25lbnQ6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnRvVmlzaXQodmlzaXRPclBsYWNlQ29tcG9uZW50LCBwYXJhbXMpLmNvcHlXaXRoRGVmYXVsdHNGcm9tKHRoaXMuYWN0aXZlVmlzaXQkLnZhbHVlKVxuICAgIHJldHVybiB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hbmd1bGFyUm91dGVyLm5hdmlnYXRlKHZpc2l0LmdldFJvdXRlckNvbW1hbmRzKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCwgcnVuTmF2aWdhdGlvbkNvbW1hbmRzOiAocm91dGVyOiBSb3V0ZXIpID0+IGFueSkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZSkge1xuICAgICAgTG9nZ2VyLmdldCgpLmVycm9yKFwiTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzXCIsIHtcbiAgICAgICAgdmlzaXQ6IHZpc2l0LFxuICAgICAgICBzZXNzaW9uOiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uXG4gICAgICB9KTtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKFwiTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICAgIG5hdmlnYXRpb24uaW5pdGlhbGlzZVZpc2l0U2VnbWVudHModmlzaXQpXG4gICAgICB0aGlzLnRyYW5zaXRpb25UbyhuYXZpZ2F0aW9uKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bk5hdmlnYXRpb25Db21tYW5kcyh0aGlzLmFuZ3VsYXJSb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgcm91dGVyIGhhcyBmaW5pc2hlZCAoaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgYW5kIHdlJ3JlIHN0aWxsIGluICBhXG4gICAgICAvLyB0cmFuc2llbnQgc3RhdGUgYW5kIGZpbmlzaCBvZiB0aGUgdHJhbnNpdGlvbi5cbiAgICAgIGlmICghdGhpcy5hbmd1bGFyUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkgJiYgdGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKG5ldyBOYXZpZ2F0aW9uRW5kKC0xLCBcIlwiLCB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBuYXZpZ2F0aW9uQnlVcmwgLT4gJHt1cmxTbmFwc2hvdC51cmxUcmVlLnRvU3RyaW5nKCl9YCk7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LnVybFRyZWUsIG5hdmlnYXRpb25FeHRyYXMpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0JCgpOiBWYWx1ZU1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0JC5yZWFkb25seSQ7XG4gIH1cblxuICBhc3luYyBub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkKGlzOiBWaXNpdFNlZ21lbnQsIHdhczogVmlzaXRTZWdtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gY29uc29sZS5sb2coXCJQbGFjZVJvdXRlci5ub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkXCIsIGlzLnRvRGVidWdTdHJpbmcoKSwgd2FzLnRvRGVidWdTdHJpbmcoKSk7XG4gICAgdGhpcy5wbGFjZUhpc3RvcnkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMuYWN0aXZlVmlzaXQkLnZhbHVlLmNvcHlBbmRSZXBsYWNlU2VnbWVudChpcyk7XG4gICAgaWYgKGlzLmhhc1JvdXRpbmdDaGFuZ2VkRnJvbSh3YXMpKSB7XG4gICAgICAvLyBUT0RPOiBjYW4gSSBqdXN0IGRvIGEgcmVndWxhciBuYXZpZ2F0ZSB1c2luZyBhbiB1cGRhdGVkIHZpc2l0P1xuICAgICAgLy8gY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgICAgYXdhaXQgdGhpcy5kb05hdmlnYXRpb24odmlzaXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwodGhpcy5hbmd1bGFyUm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgY3JlYXRlTmF2aWdhdGlvblNlc3Npb24oY3VycmVudFJvdXRlclVybDogc3RyaW5nKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGluSW50ZXJhY3Rpb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpO1xuICAgIHJldHVybiBpbkludGVyYWN0aW9uID9cbiAgICAgIG5ldyBOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb24odGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCkgOlxuICAgICAgbmV3IE5hdmlnYXRpbmcodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIHByb3RlY3RlZCB0cmFuc2l0aW9uVG8obmV4dDogTmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICAgIGlmICghcHJldmlvdXMpIHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5Lm5vdGlmeU5hdmlnYXRpb25TdGFydGVkKCk7XG4gICAgfVxuICAgIGFzc2VydC5pc1RydXRoeShuZXh0ICE9PSBwcmV2aW91cyk7XG4gICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGAjIyMgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMgPyBwcmV2aW91cy50b1N0cmluZygpIDogJ251bGwnfSAtPiAke25leHQudG9TdHJpbmcoKX1gKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG5leHQ7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5kaXNwb3NlKCk7XG4gICAgfVxuICAgIG5leHQubm90aWZ5QWN0aXZlKCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIHByaXZhdGUgcm91dGluZ1Nlc3Npb25GaW5pc2hlZCh2aXNpdD86IFZpc2l0KSB7XG4gICAgaWYgKHZpc2l0KSB7XG4gICAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWUpO1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0KTtcbiAgICAgIC8vIFdlIHVwZGF0ZSB0aGUgYWN0aXZlIHZpc2l0cyBiZWZvcmUgd2UgZmluaXNoIHRoZSBzZXNzaW9uIHNvIHRoZVxuICAgICAgLy8gcGxhY2Ugb3V0bGV0cyBjYW4gaWdub3JlIHRoZSBpbmNvbWluZyBjaGFuZ2VzIHVudGlsIHRoaW5ncyBhcmUgc2V0dGxlZC5cbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0JC52YWx1ZSA9IHZpc2l0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlzaXQudG9EZWJ1Z1N0cmluZygpKVxuICAgIH1cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcbiAgICBzZXNzaW9uLmRpc3Bvc2UoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG51bGw7XG4gICAgLy8gY29uc29sZS5sb2coYCMjIyBSb3V0ZXIgU2Vzc2lvbiBGaW5pc2hlZCAod2FzICR7c2Vzc2lvbi50b1N0cmluZygpfSlgKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMuZm9yRWFjaChqb2IgPT4gam9iKCkpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icyA9IFtdO1xuICB9XG5cblxuICBwcml2YXRlIHJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhmdW5jOiAoKSA9PiB2b2lkKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMucHVzaChmdW5jKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN5bmMncyB0aGUgY3VycmVudCBpbnRlcmFjdGlvbiBzdGF0ZSB3aXRoIHRoZSBVUkwuICBXZSBuZWVkIHRvIHB1c2ggc29tZXRoaW5nIGluIHRoZSBVUkwgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbiBvbiB0aGUgZmlyc3QgcGFnZS4gIElmIHdlIGRvbid0IHRoZW4gdGhlIGJhY2sgY2xpY2sgd2lsbCBleGl0XG4gICAqIHRoZSBhcHAgZGlyZWN0bHkgYW5kIHdlIGRvbid0IGdldCB0byBhc2suXG4gICAqL1xuICAvLyBAVHJhY2UoKVxuICBzeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcihvblN5bmNDb21wbGV0ZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBub29wXG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbikge1xuICAgICAgLy8gY29uc29sZS5sb2coYE5hdmlnYXRpb24gYWN0aXZlIC0+ICR7dGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbi50b1N0cmluZygpfSwgc3luYyBkZWxheWVkIHVudGlsIGZpbmlzaGVkLmApO1xuICAgICAgLy8gY29uc3Qgc2Vzc2lvbiA9IHRoaXMubmF2aWdhdGlvblNlc3Npb247XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3luY0NvbXBsZXRlKCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgc3luY1Nlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN5bmNTZXNzaW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KCgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTm8gbmF2aWdhdGlvbiBpbiBwcm9ncmVzcywgc3RhcnRpbmcgc3luY2hyb25pc2F0aW9uIGpvYmApO1xuICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcygoKSA9PiB7XG4gICAgICAgICAgb25TeW5jQ29tcGxldGUoKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksIGZhbHNlKTtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgICB9KSk7XG5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmlzaXQodmlzaXRPclBsYWNlQ29tcG9uZW50OiBWaXNpdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIGlmICh2aXNpdE9yUGxhY2VDb21wb25lbnQgaW5zdGFuY2VvZiBWaXNpdCkge1xuICAgICAgcmV0dXJuIHZpc2l0T3JQbGFjZUNvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFZpc2l0LmdvdG8odmlzaXRPclBsYWNlQ29tcG9uZW50LCBwYXJhbXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogTk9URTogZm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdG9wIGxldmVsIHBsYWNlcy4gIFN1cHBvcnQgZm9yIGNoaWxkIHBsYWNlcyB3aWxsIHJlcXVpcmUgYSBtb3JlIGZ1bmRhbWVudGFsXG4gICAgICogY2hhbmdlIHRvIHZpc2l0cyB0byBzdXBwb3J0IG5lc3RpbmdcbiAgICAgKi9cbiAgICBvbkF1dGhlbnRpY2F0aW9uRmFpbHVyZShhY3RpdmF0ZWRSb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBOT1RFOiBmb3Igbm93IHRoaXMgb25seSBzdXBwb3J0cyB0b3AgbGV2ZWwgcGxhY2VzLiAgU3VwcG9ydCBmb3IgY2hpbGQgcGxhY2VzIHdpbGwgcmVxdWlyZSBhIG1vcmUgZnVuZGFtZW50YWxcbiAgICAgKiBjaGFuZ2UgdG8gdmlzaXRzIHRvIHN1cHBvcnQgbmVzdGluZ1xuICAgICAqIEBwYXJhbSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBvbkF1dGhvcmlzYXRpb25GYWlsdXJlKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiAoQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4gfCBWaXNpdClbXTtcbiAgfVxufVxuIl19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsTUFBTSxFQUVQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQUUsb0JBQW9CLEVBQ2xDLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLE1BQU0sRUFDTixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUM1RyxPQUFPLEVBQ0wsbUNBQW1DLEVBQ3BDLE1BQU0sMkVBQTJFLENBQUM7QUFDbkYsT0FBTyxFQUNMLHlDQUF5QyxFQUMxQyxNQUFNLGtGQUFrRixDQUFDO0FBQzFGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFD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Q0FDL0QsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLEVBQ3JDLEtBQUssQ0FDTixDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQywwRUFBMEU7Z0JBQzFFLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLEVBQUU7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDO29CQUNqQixPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLHlDQUF5QyxDQUMzRCxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFDckMsS0FBSyxDQUNOLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FDYixxQkFBNEQsRUFDNUQsTUFBZ0M7UUFFaEMsSUFBSSxxQkFBcUIsWUFBWSxLQUFLLEVBQUU7WUFDMUMsT0FBTyxxQkFBcUIsQ0FBQztTQUM5QjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzt1R0E3WlUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgRGVidWdDb250ZXh0LCBEZWxlZ2F0aW5nVmFsdWVNb2RlbCwgRGlzcG9zYWJsZSwgRGlzcG9zZWRXaXRoLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIGxhbmcsIExpc3RNb2RlbCxcbiAgTG9nZ2VyLFxuICBNdXRhYmxlVmFsdWVNb2RlbCwgVHJhbnNhY3Rpb25PYnNlcnZlcixcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7Q29uc3RydWN0YWJsZX0gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXJ9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi1zZXJ2aWNlLXJvdXRpbmctYWRhcHRlclwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2V9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge05hdmlnYXRpbmdEdXJpbmdJbnRlcmFjdGlvbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9uYXZpZ2F0aW5nLWR1cmluZy1pbnRlcmFjdGlvblwiO1xuaW1wb3J0IHtcbiAgUG9wU3RhdGVEdXJpbmdJbnRlcmFjdGlvbk5hdmlnYXRpb25cbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9wb3Atc3RhdGUtZHVyaW5nLWludGVyYWN0aW9uLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7XG4gIFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlXG59IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9pbnRlcmFjdGlvbnMvc3luY2hyb25pc2UtaW50ZXJhY3Rpb24tY29udGV4dC1pZHMtd2l0aC1yb3V0ZVwiO1xuaW1wb3J0IHtOYXZpZ2F0aW5nfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vbmF2aWdhdGluZ1wiO1xuaW1wb3J0IHtOYXZpZ2F0aW9uQ29udGV4dH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tY29udGV4dFwiO1xuaW1wb3J0IHtOYXZpZ2F0aW9uU2Vzc2lvbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tc2Vzc2lvblwiO1xuaW1wb3J0IHtQb3BTdGF0ZU5hdmlnYXRpb259IGZyb20gXCIuL25hdmlnYXRpb24vc2Vzc2lvbi9wb3Atc3RhdGUtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHtQbGFjZUF1dGhTZXJ2aWNlfSBmcm9tIFwiLi9wbGFjZS1hdXRoLXNlcnZpY2VcIjtcbmltcG9ydCB7UGxhY2VDb21wb25lbnR9IGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHtQbGFjZUhpc3Rvcnl9IGZyb20gXCIuL3BsYWNlLWhpc3RvcnlcIjtcbmltcG9ydCB7VXJsU2VydmljZX0gZnJvbSBcIi4vdXJsLXNlcnZpY2VcIjtcbmltcG9ydCB7VXJsU25hcHNob3R9IGZyb20gXCIuL3VybC1zbmFwc2hvdFwiO1xuaW1wb3J0IHtWaXNpdH0gZnJvbSBcIi4vdmlzaXRcIjtcbmltcG9ydCB7VmlzaXRTZWdtZW50fSBmcm9tIFwiLi92aXNpdC1zZWdtZW50XCI7XG5cbi8vIGZ1bmN0aW9uIGFzQXJyYXk8VD4oaXRlbTogVCB8IFRbXSk6IFRbXSB7XG4vLyAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbi8vIH1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlUm91dGVyIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4oKTtcbiAgcmVhZG9ubHkgbmF2aWdhdGlvbkluUHJvZ3Jlc3MkOiBWYWx1ZU1vZGVsQ2hhaW48Ym9vbGVhbj47XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uTmFtZSQ6IFZhbHVlTW9kZWxDaGFpbjxzdHJpbmc+OyAvLyB1c2VkIGJ5IHRlc3RzXG4gIHJlYWRvbmx5IGludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbkNvbnRleHQ6IE5hdmlnYXRpb25Db250ZXh0LkltcGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVmlzaXQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFZpc2l0PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckludGVyYWN0aW9uQWRhcHRlcjogSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXI7XG4gIHByaXZhdGUgc2Vzc2lvbkZpbmlzaGVkSm9iczogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICByZWFkb25seSBhdXRoU2VydmljZSA9IG5ldyBQbGFjZUF1dGhTZXJ2aWNlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZHkkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUoXG4gICAgbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQodHJ1ZSlcbiAgKTtcbiAgcmVhZG9ubHkgcmVhZHkkID0gdGhpcy5fcmVhZHkkLnJlYWRvbmx5JDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJSb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeVxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKHdpbmRvd1snQ3lwcmVzcyddKSB7XG4gICAgICB3aW5kb3dbJ2F1cC5QbGFjZVJvdXRlciddID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlciA9XG4gICAgICBpbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJQbGFjZVJvdXRlcih0aGlzKTtcblxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBhbiBpbnRlcmZhY2UgYW5kIHVzZSAndGhpcycgaW5zdGVhZC5cbiAgICB0aGlzLm5hdmlnYXRpb25Db250ZXh0ID0gbmV3IE5hdmlnYXRpb25Db250ZXh0LkltcGwoXG4gICAgICB0aGlzLnVybFNlcnZpY2UsXG4gICAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlcixcbiAgICAgICh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG9wdGlvbnM6IHsgcmVwbGFjZVVybDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzdGF0ZSk7XG4gICAgICB9LFxuICAgICAgKHNlZ21lbnRzKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGluZ1Nlc3Npb25GaW5pc2hlZChzZWdtZW50cyk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHsgY2hhaW4gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKS5pc05vdE5pbCgpO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJClcbiAgICAgIC5wbHVjaygnaXNJbnRlcmFjdGlvblN5bmMnKVxuICAgICAgLm90aGVyd2lzZShmYWxzZSk7XG5cbiAgICBjb25zdCBpZGxlU3RhdGVOYW1lID0gY2hhaW4odGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlKS5tYXAoKGFjdGl2ZSkgPT5cbiAgICAgIGFjdGl2ZSA/ICdJZGxlRHVyaW5nSW50ZXJhY3Rpb24nIDogJ0lkbGUnXG4gICAgKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTmFtZSQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJClcbiAgICAgIC5wbHVjaygnbmFtZScpXG4gICAgICAub3RoZXJ3aXNlKGlkbGVTdGF0ZU5hbWUpO1xuXG4gICAgRGVidWdDb250ZXh0LnRhZyh0aGlzLl9hY3RpdmVWaXNpdCQsICdQbGFjZVJvdXRlci5hY3RpdmVWaXNpdCcpO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgYW5ndWxhclJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgLy8gUm91dGluZyBldmVudCBzZXF1ZW5jZVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCAtLT4gcmVkaXJlY3QsIGdvIGFyb3VuZCBhZ2FpbiBpbiB0aGUgc2FtZSBzZXNzaW9uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kIC0tPiBuYXZpZ2F0aW9uIGNvbXBsZXRlLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciAtLT4gbmF2aWdhdGlvbiBhYm9ydGVkLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvblN0YXJ0WyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9ICgke2V2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyfSlgKTtcbiAgICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSB7XG4gICAgICAgICAgdGhpcy5vblBvcFN0YXRlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9uUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvblN0YXJ0WyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9ICgke2V2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyfSlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkVuZFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyRW5kKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkVuZFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25FcnJvclske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyRXJyb3IoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uRXJyb3JbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkNhbmNlbFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgICB0aGlzLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkNhbmNlbFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVGhlIHJvdXRlciBuZWVkcyB0byBrbm93IGFib3V0IHVybCBjaGFuZ2VzIGFuZCBpbiBzb21lIGNhc2VzIHRoZXkgYXJlIHRoZSBvbmx5IHdheSB0aGUgcm91dGVyIGNhbiBrbm93IGlmXG4gICAgLy8gdGhlIGJhY2sgYnV0dG9uIHdhcyBjbGlja2VkLlxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSgodXJsKSA9PiB0aGlzLm9uVXJsQ2hhbmdlZCh1cmwpKTtcbiAgfVxuXG4gIHBvc3Rwb25lUm91dGluZ1VudGlsKGNvbmRpdGlvbiQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9yZWFkeSQuc2V0RGVsZWdhdGUoY29uZGl0aW9uJCk7XG4gIH1cblxuICBhc3luYyBnZXRBdXRoZW50aWNhdGlvbkZhaWx1cmVSZWRpcmVjdChcbiAgICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBQcm9taXNlPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aGVudGljYXRpb25GYWlsdXJlUmVkaXJlY3QoXG4gICAgICBhY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHN0YXRlXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcmlzYXRpb25GYWlsdXJlUmVkaXJlY3RPcHRpb25zKFxuICAgIGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5cbiAgKTogUHJvbWlzZTxWaXNpdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXNhdGlvbkZhaWx1cmVSZWRpcmVjdE9wdGlvbnMoY29tcG9uZW50KTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWU7XG4gIH1cblxuICBnZXQgY3VycmVudFNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICB9XG5cbiAgaXNOYXZpZ2F0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRVbnRpbFJvdXRlclJlYWR5KCkge1xuICAgIGNvbnN0IHsgd2FpdFVudGlsIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgYXdhaXQgd2FpdFVudGlsKHRoaXMucmVhZHkkKS5iZWNvbWVzVHJ1dGh5KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhc3luYyB3YWl0VW50aWxJZGxlKCk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IHsgd2FpdFVudGlsIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgYXdhaXQgd2FpdFVudGlsKHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKS5iZWNvbWVzRmFsc2V5KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhc3luYyB3YWl0QWN0aXZpdGllc1N5bmNocm9uaXNlZCgpOiBQcm9taXNlPHRoaXM+IHtcbiAgICBjb25zdCB7IHdhaXRVbnRpbCB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIGF3YWl0IHdhaXRVbnRpbCh0aGlzLmludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkKS5iZWNvbWVzRmFsc2V5KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09ICdwb3BzdGF0ZScpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUG9wU3RhdGUoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3BwZWRIaXN0b3J5VXJsID0gZXZlbnQudXJsO1xuICAgICAgY29uc3QgY3VycmVudFJvdXRlclVybCA9IHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKVxuICAgICAgICA/IG5ldyBQb3BTdGF0ZUR1cmluZ0ludGVyYWN0aW9uTmF2aWdhdGlvbihcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbnRleHQsXG4gICAgICAgICAgICBjdXJyZW50Um91dGVyVXJsLFxuICAgICAgICAgICAgcG9wcGVkSGlzdG9yeVVybFxuICAgICAgICAgIClcbiAgICAgICAgOiBuZXcgUG9wU3RhdGVOYXZpZ2F0aW9uKFxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ29udGV4dCxcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZXJVcmwsXG4gICAgICAgICAgICBwb3BwZWRIaXN0b3J5VXJsXG4gICAgICAgICAgKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHNlc3Npb24pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKTtcbiAgICAvLyBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zaXRpb25UbyhcbiAgICAgICAgdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblVybENoYW5nZWQobmV3VXJsOiBzdHJpbmcpIHtcbiAgICAvLyB0aGUgYmFjayBidXR0b24gY2FuIHRyaWdnZXIgYSB1cmwgY2hhbmdlIHdpdGhvdXQgYSBuYXZpZ2F0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3Mgc28gd2VcbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBVcmwgQ2hhbmdlZCAke25ld1VybH1gKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblVybENoYW5nZShuZXdVcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnRllJOiB1cmwgY2hhbmdlZCB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzJyk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIFVybCBDaGFuZ2VkYCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVuZChldmVudCk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQpO1xuICBhc3luYyBuYXZpZ2F0ZShcbiAgICBwbGFjZUNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sXG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKTtcbiAgYXN5bmMgbmF2aWdhdGUoXG4gICAgdmlzaXRPclBsYWNlQ29tcG9uZW50OiBWaXNpdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkge1xuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy50b1Zpc2l0KFxuICAgICAgdmlzaXRPclBsYWNlQ29tcG9uZW50LFxuICAgICAgcGFyYW1zXG4gICAgKS5jb3B5V2l0aERlZmF1bHRzRnJvbSh0aGlzLmFjdGl2ZVZpc2l0JC52YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuZG9OYXZpZ2F0aW9uKHZpc2l0LCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmFuZ3VsYXJSb3V0ZXIubmF2aWdhdGUodmlzaXQuZ2V0Um91dGVyQ29tbWFuZHMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBkb05hdmlnYXRpb24oXG4gICAgdmlzaXQ6IFZpc2l0LFxuICAgIHJ1bk5hdmlnYXRpb25Db21tYW5kczogKHJvdXRlcjogUm91dGVyKSA9PiBhbnlcbiAgKSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlKSB7XG4gICAgICBMb2dnZXIuZ2V0KCkuZXJyb3IoJ05hdmlnYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcycsIHtcbiAgICAgICAgdmlzaXQ6IHZpc2l0LFxuICAgICAgICBzZXNzaW9uOiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLFxuICAgICAgfSk7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZSgnTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb24gPSB0aGlzLmNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKFxuICAgICAgICB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpXG4gICAgICApO1xuICAgICAgbmF2aWdhdGlvbi5pbml0aWFsaXNlVmlzaXRTZWdtZW50cyh2aXNpdCk7XG4gICAgICB0aGlzLnRyYW5zaXRpb25UbyhuYXZpZ2F0aW9uKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bk5hdmlnYXRpb25Db21tYW5kcyh0aGlzLmFuZ3VsYXJSb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgcm91dGVyIGhhcyBmaW5pc2hlZCAoaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgYW5kIHdlJ3JlIHN0aWxsIGluICBhXG4gICAgICAvLyB0cmFuc2llbnQgc3RhdGUgYW5kIGZpbmlzaCBvZiB0aGUgdHJhbnNpdGlvbi5cbiAgICAgIGlmICghdGhpcy5hbmd1bGFyUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkgJiYgdGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKFxuICAgICAgICAgIG5ldyBOYXZpZ2F0aW9uRW5kKC0xLCAnJywgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZUJ5VXJsKFxuICAgIHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCxcbiAgICBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhc1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhgIyMjIG5hdmlnYXRpb25CeVVybCAtPiAke3VybFNuYXBzaG90LnVybFRyZWUudG9TdHJpbmcoKX1gKTtcbiAgICByZXR1cm4gdGhpcy5hbmd1bGFyUm91dGVyLm5hdmlnYXRlQnlVcmwoXG4gICAgICB1cmxTbmFwc2hvdC51cmxUcmVlLFxuICAgICAgbmF2aWdhdGlvbkV4dHJhc1xuICAgICk7XG4gIH1cblxuICBnZXQgYWN0aXZlVmlzaXQkKCk6IFZhbHVlTW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXQkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIGZpbHRlckF1dGhvcml6ZWRQbGFjZXMocGxhY2VzOiBSZWFkb25seUFycmF5PENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+Piwgb3B0aW9uczogRGlzcG9zZWRXaXRoKTogTGlzdE1vZGVsPENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+PiB7XG4gICAgY29uc3QgeyBjaGFpbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKG9wdGlvbnMuZGlzcG9zZWRXaXRoKTtcbiAgICByZXR1cm4gY2hhaW4odGhpcy5hdXRoU2VydmljZS5hY2Nlc3NHdWFyZCQpLm1hcFRvTGlzdCgoZykgPT5cbiAgICAgIHBsYWNlcy5maWx0ZXIoKHApID0+IGcuaXNBdXRob3Jpc2VkKFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24ocCkpKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkKFxuICAgIGlzOiBWaXNpdFNlZ21lbnQsXG4gICAgd2FzOiBWaXNpdFNlZ21lbnRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gY29uc29sZS5sb2coXCJQbGFjZVJvdXRlci5ub3RpZnlWaXNpdFNlZ21lbnRDaGFuZ2VkXCIsIGlzLnRvRGVidWdTdHJpbmcoKSwgd2FzLnRvRGVidWdTdHJpbmcoKSk7XG4gICAgdGhpcy5wbGFjZUhpc3RvcnkudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMuYWN0aXZlVmlzaXQkLnZhbHVlLmNvcHlBbmRSZXBsYWNlU2VnbWVudChpcyk7XG4gICAgaWYgKGlzLmhhc1JvdXRpbmdDaGFuZ2VkRnJvbSh3YXMpKSB7XG4gICAgICAvLyBUT0RPOiBjYW4gSSBqdXN0IGRvIGEgcmVndWxhciBuYXZpZ2F0ZSB1c2luZyBhbiB1cGRhdGVkIHZpc2l0P1xuICAgICAgLy8gY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgICAgYXdhaXQgdGhpcy5kb05hdmlnYXRpb24odmlzaXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2VcbiAgICAgICAgICAucGFyc2VVcmwodGhpcy5hbmd1bGFyUm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybClcbiAgICAgICAgICAudXBkYXRlVmlzaXRTZWdtZW50KGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKGN1cnJlbnRSb3V0ZXJVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICByZXR1cm4gaW5JbnRlcmFjdGlvblxuICAgICAgPyBuZXcgTmF2aWdhdGluZ0R1cmluZ0ludGVyYWN0aW9uKFxuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbnRleHQsXG4gICAgICAgICAgY3VycmVudFJvdXRlclVybFxuICAgICAgICApXG4gICAgICA6IG5ldyBOYXZpZ2F0aW5nKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBwcm90ZWN0ZWQgdHJhbnNpdGlvblRvKG5leHQ6IE5hdmlnYXRpb25TZXNzaW9uKSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZTtcbiAgICBpZiAoIXByZXZpb3VzKSB7XG4gICAgICB0aGlzLnBsYWNlSGlzdG9yeS5ub3RpZnlOYXZpZ2F0aW9uU3RhcnRlZCgpO1xuICAgIH1cbiAgICBhc3NlcnQuaXNUcnV0aHkobmV4dCAhPT0gcHJldmlvdXMpO1xuICAgIC8vIExvZ2dlci5nZXQodGhpcykuaW5mbyhgIyMjIFJvdXRlciBTdGF0ZSBUcmFuc2l0aW9uOiAke3ByZXZpb3VzID8gcHJldmlvdXMudG9TdHJpbmcoKSA6ICdudWxsJ30gLT4gJHtuZXh0LnRvU3RyaW5nKCl9YCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWUgPSBuZXh0O1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgcHJldmlvdXMuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBuZXh0Lm5vdGlmeUFjdGl2ZSgpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBwcml2YXRlIHJvdXRpbmdTZXNzaW9uRmluaXNoZWQodmlzaXQ/OiBWaXNpdCkge1xuICAgIGlmICh2aXNpdCkge1xuICAgICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlKTtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5Lm5vdGlmeU5hdmlnYXRpb25GaW5pc2hlZCh2aXNpdCk7XG4gICAgICAvLyBXZSB1cGRhdGUgdGhlIGFjdGl2ZSB2aXNpdHMgYmVmb3JlIHdlIGZpbmlzaCB0aGUgc2Vzc2lvbiBzbyB0aGVcbiAgICAgIC8vIHBsYWNlIG91dGxldHMgY2FuIGlnbm9yZSB0aGUgaW5jb21pbmcgY2hhbmdlcyB1bnRpbCB0aGluZ3MgYXJlIHNldHRsZWQuXG4gICAgICB0aGlzLl9hY3RpdmVWaXNpdCQudmFsdWUgPSB2aXNpdDtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHZpc2l0LnRvRGVidWdTdHJpbmcoKSlcbiAgICB9XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgc2Vzc2lvbi5kaXNwb3NlKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWUgPSBudWxsO1xuICAgIC8vIGNvbnNvbGUubG9nKGAjIyMgUm91dGVyIFNlc3Npb24gRmluaXNoZWQgKHdhcyAke3Nlc3Npb24udG9TdHJpbmcoKX0pYCk7XG4gICAgdGhpcy5zZXNzaW9uRmluaXNoZWRKb2JzLmZvckVhY2goKGpvYikgPT4gam9iKCkpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoZnVuYzogKCkgPT4gdm9pZCkge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCk7XG4gICAgdGhpcy5zZXNzaW9uRmluaXNoZWRKb2JzLnB1c2goZnVuYyk7XG4gIH1cblxuICAvKipcbiAgICogU3luYydzIHRoZSBjdXJyZW50IGludGVyYWN0aW9uIHN0YXRlIHdpdGggdGhlIFVSTC4gIFdlIG5lZWQgdG8gcHVzaCBzb21ldGhpbmcgaW4gdGhlIFVSTCBpbiBvcmRlclxuICAgKiB0byBiZSBhYmxlIHRvIGNhcHR1cmUgdGhlIGJhY2sgYnV0dG9uIG9uIHRoZSBmaXJzdCBwYWdlLiAgSWYgd2UgZG9uJ3QgdGhlbiB0aGUgYmFjayBjbGljayB3aWxsIGV4aXRcbiAgICogdGhlIGFwcCBkaXJlY3RseSBhbmQgd2UgZG9uJ3QgZ2V0IHRvIGFzay5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIHN5bmNJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGVyKFxuICAgIG9uU3luY0NvbXBsZXRlOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgLy8gbm9vcFxuICAgIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBOYXZpZ2F0aW9uIGFjdGl2ZSAtPiAke3RoaXMubmF2aWdhdGlvblNlc3Npb24udG9TdHJpbmcoKX0sIHN5bmMgZGVsYXllZCB1bnRpbCBmaW5pc2hlZC5gKTtcbiAgICAgIC8vIGNvbnN0IHNlc3Npb24gPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcygoKSA9PiB7XG4gICAgICAgICAgICBvblN5bmNDb21wbGV0ZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHN5bmNTZXNzaW9uID0gbmV3IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlKFxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ29udGV4dCxcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc3luY1Nlc3Npb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYE5vIG5hdmlnYXRpb24gaW4gcHJvZ3Jlc3MsIHN0YXJ0aW5nIHN5bmNocm9uaXNhdGlvbiBqb2JgKTtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoKCkgPT4ge1xuICAgICAgICAgIG9uU3luY0NvbXBsZXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTeW5jaHJvbmlzZUludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZShcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db250ZXh0LFxuICAgICAgICAgIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmlzaXQoXG4gICAgdmlzaXRPclBsYWNlQ29tcG9uZW50OiBWaXNpdCB8IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkge1xuICAgIGlmICh2aXNpdE9yUGxhY2VDb21wb25lbnQgaW5zdGFuY2VvZiBWaXNpdCkge1xuICAgICAgcmV0dXJuIHZpc2l0T3JQbGFjZUNvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFZpc2l0LmdvdG8odmlzaXRPclBsYWNlQ29tcG9uZW50LCBwYXJhbXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogTk9URTogZm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdG9wIGxldmVsIHBsYWNlcy4gIFN1cHBvcnQgZm9yIGNoaWxkIHBsYWNlcyB3aWxsIHJlcXVpcmUgYSBtb3JlIGZ1bmRhbWVudGFsXG4gICAgICogY2hhbmdlIHRvIHZpc2l0cyB0byBzdXBwb3J0IG5lc3RpbmdcbiAgICAgKi9cbiAgICBvbkF1dGhlbnRpY2F0aW9uRmFpbHVyZShhY3RpdmF0ZWRSb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHwgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD47XG5cbiAgICAvKipcbiAgICAgKiBOT1RFOiBmb3Igbm93IHRoaXMgb25seSBzdXBwb3J0cyB0b3AgbGV2ZWwgcGxhY2VzLiAgU3VwcG9ydCBmb3IgY2hpbGQgcGxhY2VzIHdpbGwgcmVxdWlyZSBhIG1vcmUgZnVuZGFtZW50YWxcbiAgICAgKiBjaGFuZ2UgdG8gdmlzaXRzIHRvIHN1cHBvcnQgbmVzdGluZ1xuICAgICAqIEBwYXJhbSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBvbkF1dGhvcmlzYXRpb25GYWlsdXJlKGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiAoQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4gfCBWaXNpdClbXTtcbiAgfVxufVxuIl19