@ecodev/natural 55.1.1 → 55.3.0

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.
@@ -14,7 +14,7 @@ function getTabId(tab) {
14
14
  /**
15
15
  * Usage :
16
16
  *
17
- * <mat-tab-group mat-stretch-tabs="false" [naturalLinkableTab]="!isPanel">
17
+ * <mat-tab-group [naturalLinkableTab]="!isPanel">
18
18
  * <mat-tab label="Third 1">third 1</mat-tab> // First tab doesn't need id. This keeps url clean on default one
19
19
  * <mat-tab label="Third 2" id="third2">Third 2</mat-tab>
20
20
  * ...
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
77
77
  }], ctorParameters: function () { return [{ type: i1.MatTabGroup }, { type: i2.ActivatedRoute }, { type: i2.Router }]; }, propDecorators: { naturalLinkableTab: [{
78
78
  type: Input
79
79
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBRS9FOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsR0FBVztJQUN6QixPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUtILE1BQU0sT0FBTywyQkFBNEIsU0FBUSx5QkFBeUI7SUFNdEUsWUFDcUIsU0FBc0IsRUFDdEIsS0FBcUIsRUFDckIsTUFBYztRQUUvQixLQUFLLEVBQUUsQ0FBQztRQUpTLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJuQzs7V0FFRztRQUNhLHVCQUFrQixHQUFpQixJQUFJLENBQUM7SUFReEQsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxFQUFFO1lBQ25DLE9BQU87U0FDVjtRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6RSw0Q0FBNEM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU1QyxvREFBb0Q7WUFDcEQsNkVBQTZFO1lBQzdFLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNsQix1R0FBdUc7Z0JBQ3ZHLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUM3RTtZQUVELHdGQUF3RjtZQUN4RixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDdEIsbUJBQW1CLEVBQUUsVUFBVTtnQkFDL0IsUUFBUSxFQUFFLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdkYsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBckRRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjtvSkFLbUIsa0JBQWtCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJcbiAqL1xuZnVuY3Rpb24gZ2V0VGFiSWQodGFiOiBNYXRUYWIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0YWIuY29udGVudD8udmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQgPz8gJyc7XG59XG5cbi8qKlxuICogVXNhZ2UgOlxuICpcbiAqIDxtYXQtdGFiLWdyb3VwIG1hdC1zdHJldGNoLXRhYnM9XCJmYWxzZVwiIFtuYXR1cmFsTGlua2FibGVUYWJdPVwiIWlzUGFuZWxcIj5cbiAqICAgICA8bWF0LXRhYiBsYWJlbD1cIlRoaXJkIDFcIj50aGlyZCAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGhpcmQgMlwiIGlkPVwidGhpcmQyXCI+VGhpcmQgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxMaW5rYWJsZVRhYkRpcmVjdGl2ZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiBmYWxzZSwgZGlzYWJsZXMgdGhlIHBlcnNpc3RlbnQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXR1cmFsTGlua2FibGVUYWI6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBNYXRUYWJHcm91cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0dXJhbExpbmthYmxlVGFiID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB1cmwgcGFyYW1zIGNoYW5nZSwgdXBkYXRlIHRoZSBtYXQtdGFiLWdyb3VwIHNlbGVjdGVkIHRhYlxuICAgICAgICB0aGlzLnJvdXRlLmZyYWdtZW50LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShmcmFnbWVudCA9PiB7XG4gICAgICAgICAgICAvLyBHZXQgaW5kZXggb2YgdGFiIHRoYXQgbWF0Y2hlcyB3YW50ZWQgbmFtZVxuICAgICAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmdldFRhYkluZGV4KGZyYWdtZW50KTtcblxuICAgICAgICAgICAgLy8gSWYgdGFiIGluZGV4IGlzIHZhbGlkICg+PSAwKSBnbyB0byBnaXZlbiBmcmFnbWVudFxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZnJhZ21lbnQgYXQgYWxsLCBnbyB0byBmaXJzdCB0YWIgKGluZGV4IGlzIC0xIGluIHRoaXMgY2FzZSlcbiAgICAgICAgICAgIGlmICh0YWJJbmRleCA+PSAwIHx8ICFmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkSW5kZXggPSB0YWJJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV2hlbiBtYXQtdGFiLWdyb3VwcyBzZWxlY3RlZCB0YWIgY2hhbmdlLCB1cGRhdGUgdXJsXG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkVGFiQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRUYWJOYW1lID0gZ2V0VGFiSWQoZXZlbnQudGFiKTtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBub3JtYWwgdXNhZ2UsIGJlY2F1c2UgaXQgd291bGQgbWVhbnMgdGhlcmUgaXMgbm8gcm91dGUgYXQgYWxsIGluIHRoZSBhcHBcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgVVJMIGZvciB0YWJzIHdpdGhvdXQgYW55IHNlZ21lbnRzIGluIFVSTCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdXJsIG1hdHJpeCBwYXJhbXMgKC9zZWdtZW50O21hdHJpeD1wYXJhbSkgb25seSB3aXRob3V0IHJvdXRlIHBhcmFtcyAoc2VnbWVudC86aWQpXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjbG9uZShzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgcGFyYW1zXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogYWN0aXZhdGVkVGFiTmFtZSAmJiBhY3RpdmF0ZWRUYWJOYW1lLmxlbmd0aCA/IGFjdGl2YXRlZFRhYk5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJJbmRleChmcmFnbWVudDogc3RyaW5nIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5fdGFicy50b0FycmF5KCkuZmluZEluZGV4KHRhYiA9PiBmcmFnbWVudCA9PT0gZ2V0VGFiSWQodGFiKSk7XG4gICAgfVxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2NvbW1vbi9kaXJlY3RpdmVzL2xpbmthYmxlLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBRS9FOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsR0FBVztJQUN6QixPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUtILE1BQU0sT0FBTywyQkFBNEIsU0FBUSx5QkFBeUI7SUFNdEUsWUFDcUIsU0FBc0IsRUFDdEIsS0FBcUIsRUFDckIsTUFBYztRQUUvQixLQUFLLEVBQUUsQ0FBQztRQUpTLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJuQzs7V0FFRztRQUNhLHVCQUFrQixHQUFpQixJQUFJLENBQUM7SUFReEQsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxFQUFFO1lBQ25DLE9BQU87U0FDVjtRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6RSw0Q0FBNEM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU1QyxvREFBb0Q7WUFDcEQsNkVBQTZFO1lBQzdFLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNsQix1R0FBdUc7Z0JBQ3ZHLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQzthQUM3RTtZQUVELHdGQUF3RjtZQUN4RixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDdEIsbUJBQW1CLEVBQUUsVUFBVTtnQkFDL0IsUUFBUSxFQUFFLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdkYsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBckRRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjtvSkFLbUIsa0JBQWtCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFiLCBNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2Nsb25lfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJcbiAqL1xuZnVuY3Rpb24gZ2V0VGFiSWQodGFiOiBNYXRUYWIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0YWIuY29udGVudD8udmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQgPz8gJyc7XG59XG5cbi8qKlxuICogVXNhZ2UgOlxuICpcbiAqIDxtYXQtdGFiLWdyb3VwIFtuYXR1cmFsTGlua2FibGVUYWJdPVwiIWlzUGFuZWxcIj5cbiAqICAgICA8bWF0LXRhYiBsYWJlbD1cIlRoaXJkIDFcIj50aGlyZCAxPC9tYXQtdGFiPiAvLyBGaXJzdCB0YWIgZG9lc24ndCBuZWVkIGlkLiBUaGlzIGtlZXBzIHVybCBjbGVhbiBvbiBkZWZhdWx0IG9uZVxuICogICAgIDxtYXQtdGFiIGxhYmVsPVwiVGhpcmQgMlwiIGlkPVwidGhpcmQyXCI+VGhpcmQgMjwvbWF0LXRhYj5cbiAqICAgICAuLi5cbiAqIDwvbWF0LXRhYi1ncm91cD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtdGFiLWdyb3VwW25hdHVyYWxMaW5rYWJsZVRhYl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxMaW5rYWJsZVRhYkRpcmVjdGl2ZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiBmYWxzZSwgZGlzYWJsZXMgdGhlIHBlcnNpc3RlbnQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYXR1cmFsTGlua2FibGVUYWI6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBNYXRUYWJHcm91cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0dXJhbExpbmthYmxlVGFiID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB1cmwgcGFyYW1zIGNoYW5nZSwgdXBkYXRlIHRoZSBtYXQtdGFiLWdyb3VwIHNlbGVjdGVkIHRhYlxuICAgICAgICB0aGlzLnJvdXRlLmZyYWdtZW50LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShmcmFnbWVudCA9PiB7XG4gICAgICAgICAgICAvLyBHZXQgaW5kZXggb2YgdGFiIHRoYXQgbWF0Y2hlcyB3YW50ZWQgbmFtZVxuICAgICAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmdldFRhYkluZGV4KGZyYWdtZW50KTtcblxuICAgICAgICAgICAgLy8gSWYgdGFiIGluZGV4IGlzIHZhbGlkICg+PSAwKSBnbyB0byBnaXZlbiBmcmFnbWVudFxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZnJhZ21lbnQgYXQgYWxsLCBnbyB0byBmaXJzdCB0YWIgKGluZGV4IGlzIC0xIGluIHRoaXMgY2FzZSlcbiAgICAgICAgICAgIGlmICh0YWJJbmRleCA+PSAwIHx8ICFmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkSW5kZXggPSB0YWJJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV2hlbiBtYXQtdGFiLWdyb3VwcyBzZWxlY3RlZCB0YWIgY2hhbmdlLCB1cGRhdGUgdXJsXG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNlbGVjdGVkVGFiQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRUYWJOYW1lID0gZ2V0VGFiSWQoZXZlbnQudGFiKTtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBub3JtYWwgdXNhZ2UsIGJlY2F1c2UgaXQgd291bGQgbWVhbnMgdGhlcmUgaXMgbm8gcm91dGUgYXQgYWxsIGluIHRoZSBhcHBcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgVVJMIGZvciB0YWJzIHdpdGhvdXQgYW55IHNlZ21lbnRzIGluIFVSTCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdXJsIG1hdHJpeCBwYXJhbXMgKC9zZWdtZW50O21hdHJpeD1wYXJhbSkgb25seSB3aXRob3V0IHJvdXRlIHBhcmFtcyAoc2VnbWVudC86aWQpXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjbG9uZShzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5wYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgcGFyYW1zXSwge1xuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogYWN0aXZhdGVkVGFiTmFtZSAmJiBhY3RpdmF0ZWRUYWJOYW1lLmxlbmd0aCA/IGFjdGl2YXRlZFRhYk5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJJbmRleChmcmFnbWVudDogc3RyaW5nIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5fdGFicy50b0FycmF5KCkuZmluZEluZGV4KHRhYiA9PiBmcmFnbWVudCA9PT0gZ2V0VGFiSWQodGFiKSk7XG4gICAgfVxufVxuIl19
@@ -1,7 +1,9 @@
1
- import { Inject, Injectable, InjectionToken } from '@angular/core';
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable, InjectionToken, LOCALE_ID } from '@angular/core';
2
3
  import { NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
3
- import { filter } from 'rxjs/operators';
4
+ import { filter, startWith } from 'rxjs/operators';
4
5
  import { NaturalDialogTriggerComponent } from '../../dialog-trigger/dialog-trigger.component';
6
+ import { combineLatest, Observable, of } from 'rxjs';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "@angular/router";
7
9
  import * as i2 from "@angular/platform-browser";
@@ -24,12 +26,20 @@ export function stripTags(str) {
24
26
  * configured for it in the routing.
25
27
  */
26
28
  export class NaturalSeoService {
27
- constructor(config, router, titleService, metaTagService) {
28
- this.config = config;
29
+ constructor(configToken, router, titleService, metaTagService, document, locale) {
29
30
  this.router = router;
30
31
  this.titleService = titleService;
31
32
  this.metaTagService = metaTagService;
32
- this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
33
+ this.document = document;
34
+ this.locale = locale;
35
+ this.config = {
36
+ applicationName: '',
37
+ };
38
+ combineLatest({
39
+ config: configToken instanceof Observable ? configToken.pipe(startWith(this.config)) : of(configToken),
40
+ navigationEnd: this.router.events.pipe(filter(event => event instanceof NavigationEnd)),
41
+ }).subscribe(({ config }) => {
42
+ this.config = config;
33
43
  const root = this.router.routerState.root.snapshot;
34
44
  this.routeData = this.getRouteData(root);
35
45
  const seo = this.routeData.seo ?? { title: '' };
@@ -49,11 +59,11 @@ export class NaturalSeoService {
49
59
  /**
50
60
  * Update the SEO with given info. The extra part and app name will be appended automatically.
51
61
  *
52
- * In most cases this should not be used, and instead the SEO should be configured in the routing,
62
+ * In most cases, this should not be used. And instead, the SEO should be configured in the routing,
53
63
  * possibly with the callback variant for some dynamism.
54
64
  *
55
- * But in rare cases only the Component is able to build a proper page title, after it gather everything it
56
- * needed. For those cases the Component can inject this service and update the SEO directly.
65
+ * But in rare cases, only the Component is able to build a proper page title, after it gathered everything it
66
+ * needed. For those cases, the Component can inject this service and update the SEO directly.
57
67
  */
58
68
  update(seo) {
59
69
  // Title
@@ -70,6 +80,62 @@ export class NaturalSeoService {
70
80
  // Robots
71
81
  const robots = seo?.robots ?? this.config.defaultRobots;
72
82
  this.updateTag('robots', robots);
83
+ // Canonical
84
+ // Add language in url (after domain) if some languages are provided only
85
+ const language = this.config.languages?.length && this.locale ? this.locale.split('-')[0] : '';
86
+ const urlParts = this.getUrlParts(seo.canonicalQueryParamsWhitelist ?? []);
87
+ this.updateLinkTag({ rel: 'canonical', href: this.getUrl(urlParts, language) });
88
+ this.updateAlternates(urlParts);
89
+ }
90
+ updateAlternates(urlParts) {
91
+ this.config.languages?.forEach(language => {
92
+ this.updateLinkTag({ rel: 'alternate', href: this.getUrl(urlParts, language), hreflang: language });
93
+ });
94
+ }
95
+ getUrlParts(whiteListedParams) {
96
+ let url = 'https://' + this.document.defaultView?.window.location.hostname;
97
+ const urlTree = this.router.parseUrl(this.router.url);
98
+ // need better like something recursive ?
99
+ if (urlTree.root.hasChildren()) {
100
+ const segments = urlTree.root.children['primary'].segments;
101
+ if (segments && segments.length > 0) {
102
+ url += '/' + segments.map(segment => segment.path).join('/');
103
+ }
104
+ }
105
+ // Query Params
106
+ let params = '';
107
+ for (const whiteListedParam of whiteListedParams) {
108
+ if (whiteListedParam in urlTree.queryParams) {
109
+ const key = encodeURIComponent(whiteListedParam);
110
+ const value = encodeURIComponent(urlTree.queryParams[whiteListedParam]);
111
+ if (params.length) {
112
+ params += '&';
113
+ }
114
+ params += `${key}=${value}`;
115
+ }
116
+ }
117
+ if (params.length) {
118
+ params = '?' + params;
119
+ }
120
+ return { url, params };
121
+ }
122
+ /**
123
+ * Add language between domain and uri https://example.com/fr/folder/page
124
+ */
125
+ getUrl(urlParts, language) {
126
+ let url = urlParts.url;
127
+ if (language) {
128
+ url = this.addLanguageSegment(url, language);
129
+ }
130
+ if (urlParts.params) {
131
+ url += urlParts.params;
132
+ }
133
+ return url;
134
+ }
135
+ addLanguageSegment(url, language) {
136
+ const urlObj = new URL(url);
137
+ const newPath = urlObj.pathname === '/' ? `/${language}` : `/${language}${urlObj.pathname}`;
138
+ return urlObj.origin + newPath + urlObj.search + urlObj.hash;
73
139
  }
74
140
  join(parts) {
75
141
  return parts.filter(s => !!s).join(' - ');
@@ -85,6 +151,27 @@ export class NaturalSeoService {
85
151
  this.metaTagService.removeTag(`name="${name}"`);
86
152
  }
87
153
  }
154
+ updateLinkTag(definition) {
155
+ const linkElement = this.document.head.querySelector(this.parseSelector(definition)) ??
156
+ this.document.head.appendChild(this.document.createElement('link'));
157
+ if (linkElement) {
158
+ Object.keys(definition).forEach((attribute) => {
159
+ linkElement.setAttribute(attribute, definition[attribute]);
160
+ });
161
+ }
162
+ }
163
+ /**
164
+ * Returns selector to use in querySelector to get the given link
165
+ */
166
+ parseSelector(definition) {
167
+ let attributes = 'link';
168
+ Object.keys(definition).forEach(attr => {
169
+ if (attr !== 'href') {
170
+ attributes += `[${attr}="${definition[attr]}"]`;
171
+ }
172
+ });
173
+ return attributes;
174
+ }
88
175
  /**
89
176
  * Returns the data from the most deep/specific activated route
90
177
  */
@@ -128,7 +215,7 @@ export class NaturalSeoService {
128
215
  }
129
216
  return seo;
130
217
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalSeoService, deps: [{ token: NATURAL_SEO_CONFIG }, { token: i1.Router }, { token: i2.Title }, { token: i2.Meta }], target: i0.ɵɵFactoryTarget.Injectable }); }
218
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalSeoService, deps: [{ token: NATURAL_SEO_CONFIG }, { token: i1.Router }, { token: i2.Title }, { token: i2.Meta }, { token: DOCUMENT }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
132
219
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalSeoService, providedIn: 'root' }); }
133
220
  }
134
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalSeoService, decorators: [{
@@ -139,5 +226,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
139
226
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
140
227
  type: Inject,
141
228
  args: [NATURAL_SEO_CONFIG]
142
- }] }, { type: i1.Router }, { type: i2.Title }, { type: i2.Meta }]; } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBK0IsYUFBYSxFQUFFLGNBQWMsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQzs7OztBQW9GNUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW1CLCtCQUErQixDQUFDLENBQUM7QUFFeEcsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXO0lBQ2pDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQVVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRzFCLFlBQ2lELE1BQXdCLEVBQ3BELE1BQWMsRUFDZCxZQUFtQixFQUNuQixjQUFvQjtRQUhRLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3BELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNwRixNQUFNLElBQUksR0FBRyxJQUFJLENB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R0F4SFEsaUJBQWlCLGtCQUlkLGtCQUFrQjtrSEFKckIsaUJBQWlCLGNBRmQsTUFBTTs7MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBS1EsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZXRhLCBUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vZGlhbG9nLXRyaWdnZXIvZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgTmF0dXJhbFNlbyA9IE5hdHVyYWxTZW9CYXNpYyB8IE5hdHVyYWxTZW9DYWxsYmFjayB8IE5hdHVyYWxTZW9SZXNvbHZlO1xuXG4vKipcbiAqIFR5cGljYWxseSB1c2VkIGZvciBcInN0YXRpY1wiIHBhZ2VzIHdoZXJlIHRoZXJlIGlzIG5vdCBhIHNpbmdsZSByZXNvbHZlZCBvYmplY3QuIFNvXG4gKiBhbGwgcGFnZXMgc3VjaCBhcyBcIkFib3V0XCIsIG9yIGxpc3Qgb2Ygb2JqZWN0cyAobGlzdCBvZiByaXNrcywgZXRjLikuXG4gKlxuICogVGhpcyBzaG91bGQgYmUgdGhlIG1vc3QgY29tbW9uIHVzZWQgdmFyaWFudC5cbiAqL1xuZXhwb3J0IHR5cGUgTmF0dXJhbFNlb0Jhc2ljID0gUm9ib3RzICYge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYWdlIHRpdGxlLCB0aGF0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggYXBwbGljYXRpb24gbmFtZVxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHBhZ2UgZGVzY3JpcHRpb24sIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFR5cGljYWxseSB1c2VkIGZvciBhIFwiZHluYW1pY1wiIHBhZ2Ugd2hlcmUgYSBzaW5nbGUgb2JqZWN0IGlzIHJlc29sdmVkLiBTbyBhIGRldGFpbCBwYWdlLCBzdWNoXG4gKiBhcyB0aGUgZGV0YWlsIG9mIGEgcmlzayBhbmQgc28gb24uXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9SZXNvbHZlID0gUm9ib3RzICYge1xuICAgIC8qKlxuICAgICAqIFRoZSBrZXkgdG8gYmUgdXNlZCBpbiB0aGUgcmVzb2x2ZWQgZGF0YSB0byBmaW5kIHRoZSByZXNvbHZlZCBvYmplY3QuIFRoZSBmdWxsTmFtZVxuICAgICAqIG9yIG5hbWUgb2YgdGhlIG9iamVjdCB3aWxsIGJlIHVzZWQgZm9yIHBhZ2UgdGl0bGUsIGFuZCB0aGUgb2JqZWN0IGRlc2NyaXB0aW9uLCBpZiBhbnksXG4gICAgICogd2lsbCBiZSB1c2VkIGZvciBwYWdlIGRlc2NyaXB0aW9uLlxuICAgICAqL1xuICAgIHJlc29sdmVLZXk6IHN0cmluZztcbn07XG5cbi8qKlxuICogUmFyZWx5IHVzZWQgZm9yIGEgcGFnZSB0aGF0IGhhcyB2ZXJ5IHNwZWNpZmljIG5lZWRzIGFuZCBuZWVkIHRvIGJ1aWxkIHRpdGxlIGFuZCBkZXNjcmlwdGlvbiBpbiBhIGN1c3RvbSB3YXkuXG4gKiBUaGUgY2FsbGJhY2sgYmFjayB3aWxsIGJlIGdpdmVuIHRoZSByZXNvbHZlZCBkYXRhLCBhbmQgaXQgaXMgdXAgdG8gdGhlIGNhbGxiYWNrIHRvIGZpbmQgd2hhdGV2ZXIgaXQgbmVlZHMuXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9DYWxsYmFjayA9IChyb3V0ZURhdGE6IERhdGEpID0+IE5hdHVyYWxTZW9CYXNpYztcblxuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCB0byB0eXBlIHRoZSByb3V0aW5nIGRhdGEgcmVjZWl2ZWQgaW4gdGhlIGNvbXBvbmVudCwgZWc6XG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIE15Q29tcG9uZW50IGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0RGV0YWlsPE15U2VydmljZSwgTmF0dXJhbFNlb1Jlc29sdmVEYXRhPiB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9SZXNvbHZlRGF0YSA9IHtcbiAgICBzZW86IE5hdHVyYWxTZW9CYXNpYztcbn07XG5cbmludGVyZmFjZSBSb2JvdHMge1xuICAgIC8qKlxuICAgICAqIElmIGdpdmVuIHdpbGwgYmUgdXNlZCBhcyByb2JvdHMgbWV0YSB0YWcsIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgcm9ib3RzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdHVyYWxTZW9Db25maWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHdpbGwgYWx3YXlzIGFwcGVhciBpbiB0aGUgcGFnZSB0aXRsZVxuICAgICAqL1xuICAgIGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgZGVzY3JpcHRpb24gbWV0YSB0aGF0IGlzIHVzZWQgZm9yIHBhZ2VzIHdpdGhvdXQgdmFsdWVcbiAgICAgKi9cbiAgICBkZWZhdWx0RGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciByb2JvdHMgbWV0YSB0aGF0IGlzIHVzZWQgZm9yIHBhZ2VzIHdpdGhvdXQgdmFsdWVcbiAgICAgKi9cbiAgICBkZWZhdWx0Um9ib3RzPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4sIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCByb3V0ZSBhbmQgbXVzdCByZXR1cm4gYSBzdHJpbmcgdGhhdCB3aWxsXG4gICAgICogYmUgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgcGFnZSB0aXRsZSBhbmQgdGhlIGFwcGxpY2F0aW9uIG5hbWUuXG4gICAgICpcbiAgICAgKiBJdCBzaG91bGQgYmUgdXNlZCB0byBjb21wbGV0ZSB0aGUgdGl0bGUgd2l0aCBpbmZvIHRoYXQgYXJlIG9mdGVuLCBidXQgbm90IG5lY2Vzc2FyaWx5IGFsd2F5cyxcbiAgICAgKiBhdmFpbGFibGUgdGhyb3VnaG91dCB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLiBUeXBpY2FsbHkgdXNlZCBmb3IgdGhlIHNpdGUvc3RhdGUgaW4gT0twaWxvdC5cbiAgICAgKi9cbiAgICBleHRyYVBhcnQ/OiAocm91dGVEYXRhOiBEYXRhKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBOQVRVUkFMX1NFT19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmF0dXJhbFNlb0NvbmZpZz4oJ0NvbmZpZ3VyYXRpb24gZm9yIFNFTyBzZXJ2aWNlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFRhZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpO1xufVxuXG50eXBlIFJlc29sdmVkRGF0YSA9IHtcbiAgICBtb2RlbD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgZnVsbE5hbWU/OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH07XG59O1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyByZXNwb25zaWJsZSB0byBrZWVwIHVwIHRvIGRhdGUgdGhlIHBhZ2UgdGl0bGUgYW5kIHBhZ2UgZGVzY3JpcHRpb24gYWNjb3JkaW5nXG4gKiB0byB3aGF0IGlzIGNvbmZpZ3VyZWQgaW4gcm91dGluZyBvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBJdCAqKm11c3QqKiBiZSBpbmplY3RlZCBpbiB0aGUgcm9vdCBtb2R1bGUgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGhhdmUgZWZmZWN0cyBpbiBhbGwgbW9kdWxlcy4gQW5kIGl0XG4gKiBtdXN0IGJlIHByb3ZpZGVkIGEgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBUaGUgZnVsbCB0aXRsZSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gKlxuICogICAgIGRpYWxvZyB0aXRsZSAtIHBhZ2UgdGl0bGUgLSBleHRyYSBwYXJ0IC0gYXBwIG5hbWVcbiAqXG4gKiBgZGlhbG9nIHRpdGxlYCBvbmx5IGV4aXN0cyBpZiBhIGBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudGAgaXMgY3VycmVudGx5IG9wZW4sIGFuZCB0aGF0IHNvbWUgU0VPIGlzXG4gKiBjb25maWd1cmVkIGZvciBpdCBpbiB0aGUgcm91dGluZy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNlb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcm91dGVEYXRhPzogRGF0YTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChOQVRVUkFMX1NFT19DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBOYXR1cmFsU2VvQ29uZmlnLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZTogVGl0bGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YVRhZ1NlcnZpY2U6IE1ldGEsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Quc25hcHNob3Q7XG4gICAgICAgICAgICB0aGlzLnJvdXRlRGF0YSA9IHRoaXMuZ2V0Um91dGVEYXRhKHJvb3QpO1xuICAgICAgICAgICAgY29uc3Qgc2VvOiBOYXR1cmFsU2VvID0gdGhpcy5yb3V0ZURhdGEuc2VvID8/IHt0aXRsZTogJyd9O1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSb3V0ZURhdGEgPSB0aGlzLmdldERpYWxvZ1JvdXRlRGF0YShyb290KTtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1NlbzogTmF0dXJhbFNlbyA9IGRpYWxvZ1JvdXRlRGF0YT8uc2VvO1xuXG4gICAgICAgICAgICBsZXQgYmFzaWMgPSB0aGlzLnRvQmFzaWMoc2VvLCB0aGlzLnJvdXRlRGF0YSk7XG4gICAgICAgICAgICBpZiAoZGlhbG9nUm91dGVEYXRhICYmIGRpYWxvZ1Nlbykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0Jhc2ljID0gdGhpcy50b0Jhc2ljKGRpYWxvZ1NlbywgZGlhbG9nUm91dGVEYXRhKTtcbiAgICAgICAgICAgICAgICBiYXNpYyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZGlhbG9nQmFzaWMsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmpvaW4oW2RpYWxvZ0Jhc2ljLnRpdGxlLCBiYXNpYy50aXRsZV0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlKGJhc2ljKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBTRU8gd2l0aCBnaXZlbiBpbmZvLiBUaGUgZXh0cmEgcGFydCBhbmQgYXBwIG5hbWUgd2lsbCBiZSBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5LlxuICAgICAqXG4gICAgICogSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZCBub3QgYmUgdXNlZCwgYW5kIGluc3RlYWQgdGhlIFNFTyBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUgcm91dGluZyxcbiAgICAgKiBwb3NzaWJseSB3aXRoIHRoZSBjYWxsYmFjayB2YXJpYW50IGZvciBzb21lIGR5bmFtaXNtLlxuICAgICAqXG4gICAgICogQnV0IGluIHJhcmUgY2FzZXMgb25seSB0aGUgQ29tcG9uZW50IGlzIGFibGUgdG8gYnVpbGQgYSBwcm9wZXIgcGFnZSB0aXRsZSwgYWZ0ZXIgaXQgZ2F0aGVyIGV2ZXJ5dGhpbmcgaXRcbiAgICAgKiBuZWVkZWQuIEZvciB0aG9zZSBjYXNlcyB0aGUgQ29tcG9uZW50IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlIGFuZCB1cGRhdGUgdGhlIFNFTyBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHNlbzogTmF0dXJhbFNlb0Jhc2ljKTogdm9pZCB7XG4gICAgICAgIC8vIFRpdGxlXG4gICAgICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgICAgICAgc2VvLnRpdGxlLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZXh0cmFQYXJ0ICYmIHRoaXMucm91dGVEYXRhID8gdGhpcy5jb25maWcuZXh0cmFQYXJ0KHRoaXMucm91dGVEYXRhKSA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuYXBwbGljYXRpb25OYW1lLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5qb2luKHBhcnRzKTtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuXG4gICAgICAgIC8vIERlc2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VvPy5kZXNjcmlwdGlvbiA/PyB0aGlzLmNvbmZpZy5kZWZhdWx0RGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudXBkYXRlVGFnKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uKTtcblxuICAgICAgICAvLyBSb2JvdHNcbiAgICAgICAgY29uc3Qgcm9ib3RzID0gc2VvPy5yb2JvdHMgPz8gdGhpcy5jb25maWcuZGVmYXVsdFJvYm90cztcbiAgICAgICAgdGhpcy51cGRhdGVUYWcoJ3JvYm90cycsIHJvYm90cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBqb2luKHBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYXJ0cy5maWx0ZXIocyA9PiAhIXMpLmpvaW4oJyAtICcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGFnKG5hbWU6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaXBUYWdzKHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXRhVGFnU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9XCIke25hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRhdGEgZnJvbSB0aGUgbW9zdCBkZWVwL3NwZWNpZmljIGFjdGl2YXRlZCByb3V0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Um91dGVEYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGF0YSB7XG4gICAgICAgIGlmIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZURhdGEocm91dGUuZmlyc3RDaGlsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcm91dGUuZGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRhdGEgZnJvbSB0aGUgYE5hdHVyYWxEaWFsb2dUcmlnZ2VyQ29tcG9uZW50YCBpZiBvbmUgaXMgb3BlblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RGlhbG9nUm91dGVEYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGF0YSB8IG51bGwge1xuICAgICAgICBpZiAocm91dGUuY29tcG9uZW50ID09PSBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudCAmJiByb3V0ZS5vdXRsZXQgIT09IFBSSU1BUllfT1VUTEVUKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91dGUuZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygcm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERpYWxvZ1JvdXRlRGF0YShjaGlsZCk7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b0Jhc2ljKHNlbzogTmF0dXJhbFNlbywgcm91dGVEYXRhOiBEYXRhKTogTmF0dXJhbFNlb0Jhc2ljIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZW8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBzZW8ocm91dGVEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmICgncmVzb2x2ZUtleScgaW4gc2VvKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhOiBSZXNvbHZlZERhdGEgfCB1bmRlZmluZWQgPSByb3V0ZURhdGFbc2VvLnJlc29sdmVLZXldO1xuICAgICAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCByZXNvbHZlZCBkYXRhIGZvciBTRU8gc2VydmljZSB3aXRoIGtleTogJyArIHNlby5yZXNvbHZlS2V5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5tb2RlbD8uZnVsbE5hbWUgPz8gZGF0YS5tb2RlbD8ubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5tb2RlbD8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgcm9ib3RzOiBzZW8ucm9ib3RzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZW87XG4gICAgfVxufVxuIl19
229
+ }] }, { type: i1.Router }, { type: i2.Title }, { type: i2.Meta }, { type: Document, decorators: [{
230
+ type: Inject,
231
+ args: [DOCUMENT]
232
+ }] }, { type: undefined, decorators: [{
233
+ type: Inject,
234
+ args: [LOCALE_ID]
235
+ }] }]; } });
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9jb21tb24vc2VydmljZXMvc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUErQixhQUFhLEVBQUUsY0FBYyxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUErR25ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFtQiwrQkFBK0IsQ0FBQyxDQUFDO0FBRXhHLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFVRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQixZQUNnQyxXQUE2QixFQUN4QyxNQUFjLEVBQ2QsWUFBbUIsRUFDbkIsY0FBb0IsRUFDRixRQUFrQixFQUMxQixNQUFjO1FBSnhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUNGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMUIsV0FB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QUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZXRhLCBUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxEaWFsb2dUcmlnZ2VyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9kaWFsb2ctdHJpZ2dlci9kaWFsb2ctdHJpZ2dlci5jb21wb25lbnQnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW8gPSBOYXR1cmFsU2VvQmFzaWMgfCBOYXR1cmFsU2VvQ2FsbGJhY2sgfCBOYXR1cmFsU2VvUmVzb2x2ZTtcblxuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgXCJzdGF0aWNcIiBwYWdlcyB3aGVyZSB0aGVyZSBpcyBub3QgYSBzaW5nbGUgcmVzb2x2ZWQgb2JqZWN0LiBTb1xuICogYWxsIHBhZ2VzIHN1Y2ggYXMgXCJBYm91dFwiLCBvciBsaXN0IG9mIG9iamVjdHMgKGxpc3Qgb2Ygcmlza3MsIGV0Yy4pLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2VkIHZhcmlhbnQuXG4gKi9cbmV4cG9ydCB0eXBlIE5hdHVyYWxTZW9CYXNpYyA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFnZSB0aXRsZSwgdGhhdCB3aWxsIGJlIGNvbmNhdGVuYXRlZCB3aXRoIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWYgZ2l2ZW4gd2lsbCBiZSB1c2VkIGFzIHBhZ2UgZGVzY3JpcHRpb24sIG90aGVyd2lzZSBmYWxsYmFjayBvbiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHBhcmFtZXRlcnMgaW5jbHVkZWQgaW4gdGhlIGNhbm9uaWNhbCB0YWcncyB1cmxcbiAgICAgKi9cbiAgICBjYW5vbmljYWxRdWVyeVBhcmFtc1doaXRlbGlzdD86IHN0cmluZ1tdO1xufTtcblxudHlwZSBOYXR1cmFsTGlua0RlZmluaXRpb24gPSB7XG4gICAgY2hhcnNldD86IHN0cmluZztcbiAgICBjcm9zc29yaWdpbj86IHN0cmluZztcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGhyZWZsYW5nPzogc3RyaW5nO1xuICAgIG1lZGlhPzogc3RyaW5nO1xuICAgIHJlbD86IHN0cmluZztcbiAgICByZXY/OiBzdHJpbmc7XG4gICAgc2l6ZXM/OiBzdHJpbmc7XG4gICAgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG59ICYge1xuICAgIFtwcm9wOiBzdHJpbmddOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUeXBpY2FsbHkgdXNlZCBmb3IgYSBcImR5bmFtaWNcIiBwYWdlIHdoZXJlIGEgc2luZ2xlIG9iamVjdCBpcyByZXNvbHZlZC4gU28gYSBkZXRhaWwgcGFnZSwgc3VjaFxuICogYXMgdGhlIGRldGFpbCBvZiBhIHJpc2sgYW5kIHNvIG9uLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZSA9IFJvYm90cyAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUga2V5IHRvIGJlIHVzZWQgaW4gdGhlIHJlc29sdmVkIGRhdGEgdG8gZmluZCB0aGUgcmVzb2x2ZWQgb2JqZWN0LiBUaGUgZnVsbE5hbWVcbiAgICAgKiBvciBuYW1lIG9mIHRoZSBvYmplY3Qgd2lsbCBiZSB1c2VkIGZvciBwYWdlIHRpdGxlLCBhbmQgdGhlIG9iamVjdCBkZXNjcmlwdGlvbiwgaWYgYW55LFxuICAgICAqIHdpbGwgYmUgdXNlZCBmb3IgcGFnZSBkZXNjcmlwdGlvbi5cbiAgICAgKi9cbiAgICByZXNvbHZlS2V5OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJhcmVseSB1c2VkIGZvciBhIHBhZ2UgdGhhdCBoYXMgdmVyeSBzcGVjaWZpYyBuZWVkcyBhbmQgbmVlZCB0byBidWlsZCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gaW4gYSBjdXN0b20gd2F5LlxuICogVGhlIGNhbGxiYWNrIGJhY2sgd2lsbCBiZSBnaXZlbiB0aGUgcmVzb2x2ZWQgZGF0YSwgYW5kIGl0IGlzIHVwIHRvIHRoZSBjYWxsYmFjayB0byBmaW5kIHdoYXRldmVyIGl0IG5lZWRzLlxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvQ2FsbGJhY2sgPSAocm91dGVEYXRhOiBEYXRhKSA9PiBOYXR1cmFsU2VvQmFzaWM7XG5cbi8qKlxuICogVHlwaWNhbGx5IHVzZWQgdG8gdHlwZSB0aGUgcm91dGluZyBkYXRhIHJlY2VpdmVkIGluIHRoZSBjb21wb25lbnQsIGVnOlxuICpcbiAqIGBgYHRzXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdERldGFpbDxNeVNlcnZpY2UsIE5hdHVyYWxTZW9SZXNvbHZlRGF0YT4ge31cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBOYXR1cmFsU2VvUmVzb2x2ZURhdGEgPSB7XG4gICAgc2VvOiBOYXR1cmFsU2VvQmFzaWM7XG59O1xuXG5pbnRlcmZhY2UgUm9ib3RzIHtcbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiB3aWxsIGJlIHVzZWQgYXMgcm9ib3RzIG1ldGEgdGFnLCBvdGhlcndpc2UgZmFsbGJhY2sgb24gZGVmYXVsdCB2YWx1ZVxuICAgICAqL1xuICAgIHJvYm90cz86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdHVyYWxTZW9Db25maWdQbGFpbiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBhbHdheXMgYXBwZWFyIGluIHRoZSBwYWdlIHRpdGxlXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciBkZXNjcmlwdGlvbiBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZmF1bHREZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIHJvYm90cyBtZXRhIHRoYXQgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCB2YWx1ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZmF1bHRSb2JvdHM/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBnaXZlbiwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIHJvdXRlIGFuZCBtdXN0IHJldHVybiBhIHN0cmluZyB0aGF0IHdpbGxcbiAgICAgKiBiZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBwYWdlIHRpdGxlIGFuZCB0aGUgYXBwbGljYXRpb24gbmFtZS5cbiAgICAgKlxuICAgICAqIEl0IHNob3VsZCBiZSB1c2VkIHRvIGNvbXBsZXRlIHRoZSB0aXRsZSB3aXRoIGluZm8gdGhhdCBhcmUgb2Z0ZW4sIGJ1dCBub3QgbmVjZXNzYXJpbHkgYWx3YXlzLFxuICAgICAqIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoZSBlbnRpcmUgYXBwbGljYXRpb24uIFR5cGljYWxseSB1c2VkIGZvciB0aGUgc2l0ZS9zdGF0ZSBpbiBPS3BpbG90LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4dHJhUGFydD86IChyb3V0ZURhdGE6IERhdGEpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgdGFnc1xuICAgICAqIDxsaW5rIHJlbD1cImFsdGVybmF0ZVwiIGhyZWZsYW5nPVwiZW5cIiBocmVmPVwiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vZW4vcGFnZVwiPlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxhbmd1YWdlcz86IFJlYWRvbmx5PHN0cmluZ1tdPjtcbn1cblxuZXhwb3J0IHR5cGUgTmF0dXJhbFNlb0NvbmZpZyA9IE5hdHVyYWxTZW9Db25maWdQbGFpbiB8IE9ic2VydmFibGU8TmF0dXJhbFNlb0NvbmZpZ1BsYWluPjtcbmV4cG9ydCBjb25zdCBOQVRVUkFMX1NFT19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmF0dXJhbFNlb0NvbmZpZz4oJ0NvbmZpZ3VyYXRpb24gZm9yIFNFTyBzZXJ2aWNlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcFRhZ3Moc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpO1xufVxuXG50eXBlIFJlc29sdmVkRGF0YSA9IHtcbiAgICBtb2RlbD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgZnVsbE5hbWU/OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH07XG59O1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyByZXNwb25zaWJsZSB0byBrZWVwIHVwIHRvIGRhdGUgdGhlIHBhZ2UgdGl0bGUgYW5kIHBhZ2UgZGVzY3JpcHRpb24gYWNjb3JkaW5nXG4gKiB0byB3aGF0IGlzIGNvbmZpZ3VyZWQgaW4gcm91dGluZyBvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBJdCAqKm11c3QqKiBiZSBpbmplY3RlZCBpbiB0aGUgcm9vdCBtb2R1bGUgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGhhdmUgZWZmZWN0cyBpbiBhbGwgbW9kdWxlcy4gQW5kIGl0XG4gKiBtdXN0IGJlIHByb3ZpZGVkIGEgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBUaGUgZnVsbCB0aXRsZSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gKlxuICogICAgIGRpYWxvZyB0aXRsZSAtIHBhZ2UgdGl0bGUgLSBleHRyYSBwYXJ0IC0gYXBwIG5hbWVcbiAqXG4gKiBgZGlhbG9nIHRpdGxlYCBvbmx5IGV4aXN0cyBpZiBhIGBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudGAgaXMgY3VycmVudGx5IG9wZW4sIGFuZCB0aGF0IHNvbWUgU0VPIGlzXG4gKiBjb25maWd1cmVkIGZvciBpdCBpbiB0aGUgcm91dGluZy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNlb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcm91dGVEYXRhPzogRGF0YTtcbiAgICBwcml2YXRlIGNvbmZpZzogTmF0dXJhbFNlb0NvbmZpZ1BsYWluID0ge1xuICAgICAgICBhcHBsaWNhdGlvbk5hbWU6ICcnLFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9TRU9fQ09ORklHKSBjb25maWdUb2tlbjogTmF0dXJhbFNlb0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFUYWdTZXJ2aWNlOiBNZXRhLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICAgICAgY29uZmlnOiBjb25maWdUb2tlbiBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBjb25maWdUb2tlbi5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbmZpZykpIDogb2YoY29uZmlnVG9rZW4pLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkVuZDogdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLFxuICAgICAgICB9KS5zdWJzY3JpYmUoKHtjb25maWd9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnNuYXBzaG90O1xuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSB0aGlzLmdldFJvdXRlRGF0YShyb290KTtcblxuICAgICAgICAgICAgY29uc3Qgc2VvOiBOYXR1cmFsU2VvID0gdGhpcy5yb3V0ZURhdGEuc2VvID8/IHt0aXRsZTogJyd9O1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nUm91dGVEYXRhID0gdGhpcy5nZXREaWFsb2dSb3V0ZURhdGEocm9vdCk7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dTZW86IE5hdHVyYWxTZW8gPSBkaWFsb2dSb3V0ZURhdGE/LnNlbztcblxuICAgICAgICAgICAgbGV0IGJhc2ljID0gdGhpcy50b0Jhc2ljKHNlbywgdGhpcy5yb3V0ZURhdGEpO1xuICAgICAgICAgICAgaWYgKGRpYWxvZ1JvdXRlRGF0YSAmJiBkaWFsb2dTZW8pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCYXNpYyA9IHRoaXMudG9CYXNpYyhkaWFsb2dTZW8sIGRpYWxvZ1JvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgYmFzaWMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmRpYWxvZ0Jhc2ljLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5qb2luKFtkaWFsb2dCYXNpYy50aXRsZSwgYmFzaWMudGl0bGVdKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShiYXNpYyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgU0VPIHdpdGggZ2l2ZW4gaW5mby4gVGhlIGV4dHJhIHBhcnQgYW5kIGFwcCBuYW1lIHdpbGwgYmUgYXBwZW5kZWQgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEluIG1vc3QgY2FzZXMsIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkLiBBbmQgaW5zdGVhZCwgdGhlIFNFTyBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUgcm91dGluZyxcbiAgICAgKiBwb3NzaWJseSB3aXRoIHRoZSBjYWxsYmFjayB2YXJpYW50IGZvciBzb21lIGR5bmFtaXNtLlxuICAgICAqXG4gICAgICogQnV0IGluIHJhcmUgY2FzZXMsIG9ubHkgdGhlIENvbXBvbmVudCBpcyBhYmxlIHRvIGJ1aWxkIGEgcHJvcGVyIHBhZ2UgdGl0bGUsIGFmdGVyIGl0IGdhdGhlcmVkIGV2ZXJ5dGhpbmcgaXRcbiAgICAgKiBuZWVkZWQuIEZvciB0aG9zZSBjYXNlcywgdGhlIENvbXBvbmVudCBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSBhbmQgdXBkYXRlIHRoZSBTRU8gZGlyZWN0bHkuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShzZW86IE5hdHVyYWxTZW9CYXNpYyk6IHZvaWQge1xuICAgICAgICAvLyBUaXRsZVxuICAgICAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgICAgICAgIHNlby50aXRsZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmV4dHJhUGFydCAmJiB0aGlzLnJvdXRlRGF0YSA/IHRoaXMuY29uZmlnLmV4dHJhUGFydCh0aGlzLnJvdXRlRGF0YSkgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFwcGxpY2F0aW9uTmFtZSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMuam9pbihwYXJ0cyk7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlKTtcblxuICAgICAgICAvLyBEZXNjcmlwdGlvblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbz8uZGVzY3JpcHRpb24gPz8gdGhpcy5jb25maWcuZGVmYXVsdERlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLnVwZGF0ZVRhZygnZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbik7XG5cbiAgICAgICAgLy8gUm9ib3RzXG4gICAgICAgIGNvbnN0IHJvYm90cyA9IHNlbz8ucm9ib3RzID8/IHRoaXMuY29uZmlnLmRlZmF1bHRSb2JvdHM7XG4gICAgICAgIHRoaXMudXBkYXRlVGFnKCdyb2JvdHMnLCByb2JvdHMpO1xuXG4gICAgICAgIC8vIENhbm9uaWNhbFxuICAgICAgICAvLyBBZGQgbGFuZ3VhZ2UgaW4gdXJsIChhZnRlciBkb21haW4pIGlmIHNvbWUgbGFuZ3VhZ2VzIGFyZSBwcm92aWRlZCBvbmx5XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5jb25maWcubGFuZ3VhZ2VzPy5sZW5ndGggJiYgdGhpcy5sb2NhbGUgPyB0aGlzLmxvY2FsZS5zcGxpdCgnLScpWzBdIDogJyc7XG4gICAgICAgIGNvbnN0IHVybFBhcnRzID0gdGhpcy5nZXRVcmxQYXJ0cyhzZW8uY2Fub25pY2FsUXVlcnlQYXJhbXNXaGl0ZWxpc3QgPz8gW10pO1xuICAgICAgICB0aGlzLnVwZGF0ZUxpbmtUYWcoe3JlbDogJ2Nhbm9uaWNhbCcsIGhyZWY6IHRoaXMuZ2V0VXJsKHVybFBhcnRzLCBsYW5ndWFnZSl9KTtcbiAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGVzKHVybFBhcnRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFsdGVybmF0ZXModXJsUGFydHM6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxhbmd1YWdlcz8uZm9yRWFjaChsYW5ndWFnZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtUYWcoe3JlbDogJ2FsdGVybmF0ZScsIGhyZWY6IHRoaXMuZ2V0VXJsKHVybFBhcnRzLCBsYW5ndWFnZSksIGhyZWZsYW5nOiBsYW5ndWFnZX0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVybFBhcnRzKHdoaXRlTGlzdGVkUGFyYW1zOiBzdHJpbmdbXSk6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9IHtcbiAgICAgICAgbGV0IHVybCA9ICdodHRwczovLycgKyB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py53aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgICAgIC8vIG5lZWQgYmV0dGVyIGxpa2Ugc29tZXRoaW5nIHJlY3Vyc2l2ZSA/XG4gICAgICAgIGlmICh1cmxUcmVlLnJvb3QuaGFzQ2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bJ3ByaW1hcnknXS5zZWdtZW50cztcbiAgICAgICAgICAgIGlmIChzZWdtZW50cyAmJiBzZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9ICcvJyArIHNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUXVlcnkgUGFyYW1zXG4gICAgICAgIGxldCBwYXJhbXMgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCB3aGl0ZUxpc3RlZFBhcmFtIG9mIHdoaXRlTGlzdGVkUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAod2hpdGVMaXN0ZWRQYXJhbSBpbiB1cmxUcmVlLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHdoaXRlTGlzdGVkUGFyYW0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHVybFRyZWUucXVlcnlQYXJhbXNbd2hpdGVMaXN0ZWRQYXJhbV0pO1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyArPSAnJic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmFtcyArPSBgJHtrZXl9PSR7dmFsdWV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSAnPycgKyBwYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbGFuZ3VhZ2UgYmV0d2VlbiBkb21haW4gYW5kIHVyaSBodHRwczovL2V4YW1wbGUuY29tL2ZyL2ZvbGRlci9wYWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVcmwodXJsUGFydHM6IHt1cmw6IHN0cmluZzsgcGFyYW1zOiBzdHJpbmd9LCBsYW5ndWFnZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCB1cmwgPSB1cmxQYXJ0cy51cmw7XG5cbiAgICAgICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICAgICAgICB1cmwgPSB0aGlzLmFkZExhbmd1YWdlU2VnbWVudCh1cmwsIGxhbmd1YWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxQYXJ0cy5wYXJhbXMpIHtcbiAgICAgICAgICAgIHVybCArPSB1cmxQYXJ0cy5wYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkTGFuZ3VhZ2VTZWdtZW50KHVybDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpO1xuICAgICAgICBjb25zdCBuZXdQYXRoID0gdXJsT2JqLnBhdGhuYW1lID09PSAnLycgPyBgLyR7bGFuZ3VhZ2V9YCA6IGAvJHtsYW5ndWFnZX0ke3VybE9iai5wYXRobmFtZX1gO1xuICAgICAgICByZXR1cm4gdXJsT2JqLm9yaWdpbiArIG5ld1BhdGggKyB1cmxPYmouc2VhcmNoICsgdXJsT2JqLmhhc2g7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBqb2luKHBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYXJ0cy5maWx0ZXIocyA9PiAhIXMpLmpvaW4oJyAtICcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGFnKG5hbWU6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc3RyaXBUYWdzKHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXRhVGFnU2VydmljZS5yZW1vdmVUYWcoYG5hbWU9XCIke25hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlua1RhZyhkZWZpbml0aW9uOiBOYXR1cmFsTGlua0RlZmluaXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlua0VsZW1lbnQgPVxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3I8SFRNTExpbmtFbGVtZW50Pih0aGlzLnBhcnNlU2VsZWN0b3IoZGVmaW5pdGlvbikpID8/XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJykpO1xuXG4gICAgICAgIGlmIChsaW5rRWxlbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBkZWZpbml0aW9uW2F0dHJpYnV0ZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHNlbGVjdG9yIHRvIHVzZSBpbiBxdWVyeVNlbGVjdG9yIHRvIGdldCB0aGUgZ2l2ZW4gbGlua1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VTZWxlY3RvcihkZWZpbml0aW9uOiBOYXR1cmFsTGlua0RlZmluaXRpb24pOiBzdHJpbmcge1xuICAgICAgICBsZXQgYXR0cmlidXRlcyA9ICdsaW5rJztcbiAgICAgICAgT2JqZWN0LmtleXMoZGVmaW5pdGlvbikuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgICAgIGlmIChhdHRyICE9PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzICs9IGBbJHthdHRyfT1cIiR7ZGVmaW5pdGlvblthdHRyXX1cIl1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkYXRhIGZyb20gdGhlIG1vc3QgZGVlcC9zcGVjaWZpYyBhY3RpdmF0ZWQgcm91dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFJvdXRlRGF0YShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IERhdGEge1xuICAgICAgICBpZiAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVEYXRhKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlLmRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkYXRhIGZyb20gdGhlIGBOYXR1cmFsRGlhbG9nVHJpZ2dlckNvbXBvbmVudGAgaWYgb25lIGlzIG9wZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERpYWxvZ1JvdXRlRGF0YShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IERhdGEgfCBudWxsIHtcbiAgICAgICAgaWYgKHJvdXRlLmNvbXBvbmVudCA9PT0gTmF0dXJhbERpYWxvZ1RyaWdnZXJDb21wb25lbnQgJiYgcm91dGUub3V0bGV0ICE9PSBQUklNQVJZX09VVExFVCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREaWFsb2dSb3V0ZURhdGEoY2hpbGQpO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9CYXNpYyhzZW86IE5hdHVyYWxTZW8sIHJvdXRlRGF0YTogRGF0YSk6IE5hdHVyYWxTZW9CYXNpYyB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VvID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VvKHJvdXRlRGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ3Jlc29sdmVLZXknIGluIHNlbykge1xuICAgICAgICAgICAgY29uc3QgZGF0YTogUmVzb2x2ZWREYXRhIHwgdW5kZWZpbmVkID0gcm91dGVEYXRhW3Nlby5yZXNvbHZlS2V5XTtcbiAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcmVzb2x2ZWQgZGF0YSBmb3IgU0VPIHNlcnZpY2Ugd2l0aCBrZXk6ICcgKyBzZW8ucmVzb2x2ZUtleSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEubW9kZWw/LmZ1bGxOYW1lID8/IGRhdGEubW9kZWw/Lm5hbWUgPz8gJycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRhdGEubW9kZWw/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHJvYm90czogc2VvLnJvYm90cyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VvO1xuICAgIH1cbn1cbiJdfQ==
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
325
325
  type: Inject,
326
326
  args: [PanelsHooksConfig]
327
327
  }] }, { type: i3.MediaObserver }]; } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9wYW5lbHMvcGFuZWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVkscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxTQUFTLENBQUM7Ozs7O0FBRWpCLFNBQVMsZ0JBQWdCLENBQUMsUUFBc0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFxQixFQUFFLENBQXFCO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RixD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QjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQThEUSxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lZGlhT2JzZXJ2ZXJ9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XG5pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgRGVmYXVsdFVybFNlcmlhbGl6ZXIsIE5hdmlnYXRpb25FcnJvciwgUm91dGVyLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtkaWZmZXJlbmNlV2l0aCwgZmxhdHRlbiwgaXNFcXVhbH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7Zm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0UGFuZWx9IGZyb20gJy4vYWJzdHJhY3QtcGFuZWwnO1xuaW1wb3J0IHtnZXRTdGFja0NvbmZpZ30gZnJvbSAnLi9wYW5lbHMudXJsbWF0Y2hlcic7XG5pbXBvcnQge1xuICAgIE5hdHVyYWxQYW5lbENvbmZpZyxcbiAgICBOYXR1cmFsUGFuZWxEYXRhLFxuICAgIE5hdHVyYWxQYW5lbHNCZWZvcmVPcGVuUGFuZWwsXG4gICAgTmF0dXJhbFBhbmVsc0hvb2tzQ29uZmlnLFxuICAgIE5hdHVyYWxQYW5lbHNSb3V0ZXJSdWxlLFxuICAgIFBhbmVsc0hvb2tzQ29uZmlnLFxufSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gc2VnbWVudHNUb1N0cmluZyhzZWdtZW50czogVXJsU2VnbWVudFtdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnbWVudHMubWFwKHMgPT4gcy50b1N0cmluZygpKS5qb2luKCcvJyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDb25maWdzKGE6IE5hdHVyYWxQYW5lbENvbmZpZywgYjogTmF0dXJhbFBhbmVsQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEucm91dGUucGF0aCA9PT0gYi5yb3V0ZS5wYXRoICYmIGEucnVsZSA9PT0gYi5ydWxlICYmIGlzRXF1YWwoYS5wYXJhbXMsIGIucGFyYW1zKTtcbn1cblxuLyoqXG4gKiBUT0RPOiBpbXBsZW1lbnQgcm91dGUgdXBkYXRlIHdoZW4gY2xvc2luZyBkaWFsb2cgd2l0aCBlc2NhcGVcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxQYW5lbHNTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBCZWNhdXNlIG9mIHRoaXMgc3RhdGljIHByb3BlcnR5IFBhbmVscyBhcmUgKipub3QqKiBjb21wYXRpYmxlIHdpdGggU1NSLlxuICAgICAqIEFuZCB3ZSBjYW5ub3QgbWFrZSBpdCBub24tc3RhdGljLCBiZWNhdXNlIGBVcmxNYXRjaGVyYCBjYW5ub3QgYmUgaW5qZWN0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29wZW5lZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGFsbCBvcGVuIGRpYWxvZyBoYXZlIGZpbmlzaGVkIGNsb3NpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgYWZ0ZXJBbGxDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBwYW5lbHMgY291bnRlci4gV29ya3MgbW9yZSBsaWtlIGFuIElELlxuICAgICAqIElzIHVzZWQgdG8gZ2l2ZSBhbiB1bmlxdWUgaWRlbnRpZmllciB0byBtdWx0aXBsZSBzaW1pbGFyIHBhbmVscyBjb25maWd1cmF0aW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgY291bnRlciA9IDE7XG4gICAgLyoqXG4gICAgICogQ2xhc3MgYXBwbGllZCB0byBkaWFsb2cgb3ZlcmxheSByZWxhdGVkIHdpdGggcGFuZWxzXG4gICAgICogSWYgY2hhbmdlLCBjaGFuZ2UgQ1NTIHRvb1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxDbGFzcyA9ICdwYW5lbCc7XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBmb3IgcGFuZWxzIHNldHVwIGJlZm9yZSBuYXZpZ2F0aW9uIGNoYW5nZS5cbiAgICAgKiBVc2VkIHRvIGRldGVjdCBwYW5lbHMgb3BlbmluZ3MvY2xvc2luZ3MgYW5kIGFkYXB0IGZvciBuZXcgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgb2xkRnVsbENvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBzdWJzY3JpcHRpb24gc3RvcFxuICAgICAqL1xuICAgIHByaXZhdGUgcm91dGVTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBmb3Igc3Vic2NyaXB0aW9uIHN0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIG5hdlN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEhvcml6b250YWwgZ2FwcyBiZXR3ZWVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxzT2Zmc2V0SCA9IDM1O1xuXG4gICAgLyoqXG4gICAgICogVmVydGljYWwgZ2FwcyBiZXR3ZWVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxzT2Zmc2V0ViA9IDQwO1xuXG4gICAgLyoqXG4gICAgICogQ2FjaGUgb2YgcHJldmlvdXMgc2NyZWVuIHNpemVcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSBwYW5lbHMgc3RhY2sgb3JpZW50YXRpb24gb24gc21hbGwgc2NyZWVuc1xuICAgICAqL1xuICAgIHByaXZhdGUgbWVkaWE6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChQYW5lbHNIb29rc0NvbmZpZykgcHJpdmF0ZSBob29rc0NvbmZpZzogTmF0dXJhbFBhbmVsc0hvb2tzQ29uZmlnLFxuICAgICAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFPYnNlcnZlcixcbiAgICApIHtcbiAgICAgICAgLy8gV2F0Y2ggbWVkaWEgdG8ga25vdyBpZiBkaXNwbGF5IHBhbmVscyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseVxuICAgICAgICB0aGlzLm1lZGlhU2VydmljZS5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUobWVkaWFzID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWVkaWEgb2YgbWVkaWFzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVkaWEgPSBtZWRpYS5tcUFsaWFzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWRpYSAhPT0gbWVkaWEubXFBbGlhcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhID0gbWVkaWEubXFBbGlhcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiB2b2lkIHtcbiAgICAgICAgTmF0dXJhbFBhbmVsc1NlcnZpY2UuX29wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMucm91dGVTdWIgPSByb3V0ZS51cmwuc3Vic2NyaWJlKHNlZ21lbnRzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFuZWxzKHNlZ21lbnRzLCByb3V0ZS5zbmFwc2hvdC5kYXRhLnBhbmVsc1JvdXRlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmF2U3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldiA9PiB7XG4gICAgICAgICAgICBpZiAoIShldiBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFib3J0IGFuZCBwcm9wYWdhdGUgbmF2aWdhdGlvbiBlcnJvclxuICAgICAgICAgICAgaWYgKGV2LnVybC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGhhY2tpc2g6IHdlIGhhcmRjb2RlIGFuIGltcG9zc2libGUgdXJsIHRvIHRyaWdnZXIgbm9ybWFsIG5hdmlnYXRpb24gZXJyb3IgbWVjaGFuaXNtXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgncGFuZWxzLXJlYWNoZWQtaW52YWxpZC11cmwnKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudGVyKys7XG5cbiAgICAgICAgICAgIC8vIHBjIHN0YW5kcyBmb3IgXCJwYW5lbCBjb3VudGVyXCIsIHJlcXVpcmVkIHRvIGdpdmUgYW4gaWRlbnRpZmljYXRpb24gdG8gcGFuZWxzIHdpdGggZXhhY3Qgc2FtZSBjb25maWdcbiAgICAgICAgICAgIC8vIEUuZyAvbmV3XG4gICAgICAgICAgICBjb25zdCB3YW50ZWRVcmwgPSBldi51cmwgKyAnO3BjPScgKyB0aGlzLmNvdW50ZXI7XG5cbiAgICAgICAgICAgIC8vIFNlZ21lbnRzIG1hdGNoaW5nIGZyb20gd2FudGVkIHVybC4gRS5nIH4gWyduZXcnXVxuICAgICAgICAgICAgY29uc3Qgd2FudGVkVXJTZWdtZW50cyA9IG5ldyBEZWZhdWx0VXJsU2VyaWFsaXplcigpLnBhcnNlKHdhbnRlZFVybCkucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzO1xuXG4gICAgICAgICAgICAvLyBEb24ndCBtYXRjaCBhbnkgY29uZmlnXG4gICAgICAgICAgICBjb25zdCB3YW50ZWRDb25maWcgPSBnZXRTdGFja0NvbmZpZyh3YW50ZWRVclNlZ21lbnRzLCByb3V0ZS5zbmFwc2hvdC5kYXRhLnBhbmVsc1JvdXRlcywgdGhpcy5pbmplY3Rvcik7XG5cbiAgICAgICAgICAgIGlmICh3YW50ZWRDb25maWcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwZW5kQ29uZmlnVG9DdXJyZW50VXJsKHdhbnRlZENvbmZpZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEN1cnJlbnRseSBhY3RpdmF0ZWQgcm91dGVzLiBFLmcgWydvYmplY3RpdmUnLCAnb2JqZWN0aXZlJywgMTIzLCAncmlzayddXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VnbWVudHMgPSBmbGF0dGVuKFxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLm1hcChkID0+IGQuY29tcG9uZW50SW5zdGFuY2UucGFuZWxEYXRhLmNvbmZpZy5yb3V0ZS5zZWdtZW50cyksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBMYXN0IHNlZ21lbnQuIEUuZyBbJ3Jpc2snXVxuICAgICAgICAgICAgY29uc3QgbGFzdE9mQ3VycmVudFNlZ21lbnRzID0gY3VycmVudFNlZ21lbnRzLnNsaWNlKC0xKTtcblxuICAgICAgICAgICAgLy8gQ29uZmlnIGZvciBbJ3Jpc2snLCAnbmV3J11cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmRXYW50ZWRDb25maWcgPSBnZXRTdGFja0NvbmZpZyhcbiAgICAgICAgICAgICAgICBsYXN0T2ZDdXJyZW50U2VnbWVudHMuY29uY2F0KHdhbnRlZFVyU2VnbWVudHMpLFxuICAgICAgICAgICAgICAgIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRDb25maWdUb0N1cnJlbnRVcmwoY3VycmVudEFuZFdhbnRlZENvbmZpZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgZ2l2ZW4gY29uZmlndXJhdGlvbiB0byBhZGQgaW4gdGhlIGVuZCBvZiBjdXJyZW50IHVybFxuICAgICAqIE5ldXRyYWxpemVzIHJvdXRlciBlcnJvciBoYW5kbGluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgYXBwZW5kQ29uZmlnVG9DdXJyZW50VXJsKGNvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFcnJvckhhbmRsZXIgPSB0aGlzLnJvdXRlci5lcnJvckhhbmRsZXI7XG5cbiAgICAgICAgLy8gTnVsbGlmeSBlcnJvciBoYW5kbGVyICh3aWxsIGJlIGRlLW5ldXRyYWxpemVkIGFmdGVyIHJvdXRlIHJlZGlyZWN0aW9uKVxuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5lcnJvckhhbmRsZXIgPSAoKSA9PiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOYXZpZ2F0ZSB0byBzYW1lIHVybCArIC9yaXNrL25ldyBSZXN1bHQgOiAvcmlzay9yaXNrL25ld1xuICAgICAgICBjb25zdCBuZXdVcmwgPSBjb25maWcubWFwKGNvbmYgPT4gc2VnbWVudHNUb1N0cmluZyhjb25mLnJvdXRlLnNlZ21lbnRzKSkuam9pbignLycpO1xuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZXIudXJsICsgJy8nICsgbmV3VXJsKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEFmdGVyIG5hdmlnYXRpb24gaGFzIGVuZGVkLCByZXN0b3JlIG9yaWdpbmFsIGVycm9yIGhhbmRsZXIgYmVjYXVzZSBoZSdzIG5vdCBhIGJhZCBndXlcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmVycm9ySGFuZGxlciA9IG9yaWdpbmFsRXJyb3JIYW5kbGVyO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcCgpOiB2b2lkIHtcbiAgICAgICAgTmF0dXJhbFBhbmVsc1NlcnZpY2UuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlU3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5hdlN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgICAgdGhpcy5vbGRGdWxsQ29uZmlnID0gW107XG4gICAgICAgIHRoaXMuYWZ0ZXJBbGxDbG9zZWQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdvIHRvIHBhbmVsIG1hdGNoaW5nIGdpdmVuIGNvbXBvbmVudC4gQ2F1c2VzIGFuIHVybCBjaGFuZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdvVG9QYW5lbEJ5Q29tcG9uZW50KGNvbXBvbmVudDogTmF0dXJhbEFic3RyYWN0UGFuZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KHRoaXMuZ2V0UGFuZWxJbmRleChjb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHbyB0byBwYW5lbCBtYXRjaGluZyBnaXZlbiBjb21wb25lbnQuIENhdXNlcyBhbiB1cmwgY2hhbmdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnb1RvUGVudWx0aW1hdGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCAtIDIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIHRoZSBuZXcgdXJsIHRoYXQgb25seSBpbmNsdWRlcyB0aGUgc2VnbWVudHMgZnJvbSB0aGUgcGFuZWxzIHdlIHdhbnQgdG8gc3RheSBvcGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnb1RvUGFuZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gRXh0cmFjdHMgdXJsIHNlZ21lbnRzIGZyb20gbmV4dCBwYW5lbCB1bnRpbCBsYXN0IG9uZVxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1xuICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgIC5tYXAoZGlhbG9nID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VnbWVudHNUb1N0cmluZyhkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UucGFuZWxEYXRhLmNvbmZpZy5yb3V0ZS5zZWdtZW50cyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJy8nKTtcblxuICAgICAgICAvLyBSZW1vdmUgZXh0cmEgc2VnbWVudHMgYW5kIHJlZGlyZWN0cyB0byByb290XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UoJy8nICsgdXJsLCAnJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGluZyBhIHBhbmVsIGlzIGVxdWl2YWxlbnQgdG8gY2xvc2UgYWxsIHRob3NlIHRoYXQgYXJlIGluIGZyb250IG9mIGhpbVxuICAgICAqIEBwYXJhbSBpbmRleCBvZiBwYW5lbCBpbiBzdGFjay4gVGhlIG1vc3QgYmVoaW5kICh0aGUgZmlyc3Qgb25lKSBpcyAwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0UGFuZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbGFzdERpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW3RoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBuZXcgcGFuZWxzIHNldCBwb3NpdGlvbnNcbiAgICAgICAgdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMTsgaSA+PSBpbmRleCArIDE7IGktLSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbaV0uY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsYXN0RGlhbG9nLmFmdGVyQ2xvc2VkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBuZXcgcGFuZWxzIGlmIHVybCBoYXMgY2hhbmdlZCB3aXRoIG5ldyBzZWdtZW50c1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlUGFuZWxzKHNlZ21lbnRzOiBVcmxTZWdtZW50W10sIHJvdXRlczogTmF0dXJhbFBhbmVsc1JvdXRlclJ1bGVbXSk6IHZvaWQge1xuICAgICAgICAvLyBUcmFuc2Zvcm0gdXJsIHNlZ21lbnRzIGludG8gYSBjb25maWcgd2l0aCBjb21wb25lbnQgbmFtZSBhbmQgSUQgaWYgcHJvdmlkZWQgaW4gbmV4dCBzZWdtZW50XG4gICAgICAgIC8vIFJldHVybnMgYW4gYXJyYXkgb2YgY29uZmlncywgZWFjaCBjb25maWcgcmVwcmVzZW50cyB0aGUgY29udGVudCByZWxhdGl2ZSB0byBhIHBhbmVsXG4gICAgICAgIGNvbnN0IG5ld0Z1bGxDb25maWcgPSBnZXRTdGFja0NvbmZpZyhzZWdtZW50cywgcm91dGVzLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29uZmlnc1RvUmVtb3ZlID0gZGlmZmVyZW5jZVdpdGgodGhpcy5vbGRGdWxsQ29uZmlnLCBuZXdGdWxsQ29uZmlnLCBjb21wYXJlQ29uZmlncyk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3NUb0FkZCA9IGRpZmZlcmVuY2VXaXRoKG5ld0Z1bGxDb25maWcsIHRoaXMub2xkRnVsbENvbmZpZywgY29tcGFyZUNvbmZpZ3MpO1xuXG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXh0UGFuZWwgPSB0aGlzLm9sZEZ1bGxDb25maWcubGVuZ3RoIC0gY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgaWYgKGNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gQWRkIGFuZCByZW1vdmUgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhbmVsQnlJbmRleChpbmRleE9mTmV4dFBhbmVsKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVscyhjb25maWdzVG9BZGQsIG5ld0Z1bGxDb25maWcpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgIWNvbmZpZ3NUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgcmVtb3ZlIHBhbmVsc1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbEJ5SW5kZXgoaW5kZXhPZk5leHRQYW5lbCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFjb25maWdzVG9SZW1vdmUubGVuZ3RoICYmIGNvbmZpZ3NUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgYWRkIHBhbmVsc1xuICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWxzKGNvbmZpZ3NUb0FkZCwgbmV3RnVsbENvbmZpZykuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbGRGdWxsQ29uZmlnID0gbmV3RnVsbENvbmZpZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIGFsbCBzZXJ2aWNlcywgdGhlbiBvcGVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3BlblBhbmVscyhcbiAgICAgICAgbmV3SXRlbXNDb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZ1tdLFxuICAgICAgICBmdWxsQ29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSxcbiAgICApOiBPYnNlcnZhYmxlPE9ic2VydmFibGU8YW55PiB8IG51bGw+IHtcbiAgICAgICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PE9ic2VydmFibGU8YW55PiB8IG51bGw+KCk7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBldmVyeXRoaW5nIGJlZm9yZSBvcGVuaW5nIGEgc2luZ2xlIHBhbmVsXG4gICAgICAgIGNvbnN0IHJlc29sdmVzID0gbmV3SXRlbXNDb25maWcubWFwKChjb25mOiBOYXR1cmFsUGFuZWxDb25maWcpID0+IHRoaXMuZ2V0UmVzb2x2ZWREYXRhKGNvbmYpKTtcblxuICAgICAgICAvLyBGb3JrSm9pbiBlbWl0cyB3aGVuIGFsbCBwcm9taXNlcyBhcmUgZXhlY3V0ZWQ7XG4gICAgICAgIGZvcmtKb2luKHJlc29sdmVzKS5zdWJzY3JpYmUocmVzb2x2ZWRSZXN1bHQgPT4ge1xuICAgICAgICAgICAgLy8gRm9yIGVhY2ggbmV3IGNvbmZpZyBlbnRyeSwgb3BlbiBhIG5ldyBwYW5lbFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdJdGVtc0NvbmZpZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IG5ld0l0ZW1zQ29uZmlnW2ldO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtRGF0YTogTmF0dXJhbFBhbmVsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uZmlnIG9mIGFjdHVhbCBwYW5lbCByb3V0ZVxuICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcblxuICAgICAgICAgICAgICAgICAgICAvLyBEYXRhIHJlc29sdmVkIGJ5IHNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGluIGNvbXBvbmVudCBieSBjYWxsaW5nIHRoaXMucGFuZWxEYXRhLmRhdGEueHl6XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHJlc29sdmVkUmVzdWx0W2ldLFxuICAgICAgICAgICAgICAgICAgICBsaW5rYWJsZU9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ob29rc0NvbmZpZyAmJiB0aGlzLmhvb2tzQ29uZmlnLmJlZm9yZU9wZW5QYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudDogTmF0dXJhbFBhbmVsc0JlZm9yZU9wZW5QYW5lbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQ29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFJlc3VsdDogcmVzb2x2ZWRSZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsUGFuZWxzQ29uZmlnOiBmdWxsQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhID0gdGhpcy5ob29rc0NvbmZpZy5iZWZvcmVPcGVuUGFuZWwodGhpcy5pbmplY3RvciwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVsKGNvbmZpZy5jb21wb25lbnQsIGl0ZW1EYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMV0uYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlc29sdmVkRGF0YShjb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZyk6IE9ic2VydmFibGU8e1trZXk6IHN0cmluZ106IHVua25vd259PiB7XG4gICAgICAgIGlmICghY29uZmlnLnJlc29sdmUgfHwgKGNvbmZpZy5yZXNvbHZlICYmIE9iamVjdC5rZXlzKGNvbmZpZy5yZXNvbHZlKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZUtleXMgPSBPYmplY3Qua2V5cyhjb25maWcucmVzb2x2ZSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkRGF0YToge1trZXk6IHN0cmluZ106IE9ic2VydmFibGU8dW5rbm93bj59ID0ge307XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gY29uZmlnLmluamVjdG9yO1xuXG4gICAgICAgIGlmIChpbmplY3Rvcikge1xuICAgICAgICAgICAgcmVzb2x2ZUtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkRGF0YVtrZXldID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBjb25maWcucmVzb2x2ZVtrZXldKGNvbmZpZykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ya0pvaW4ocmVzb2x2ZWREYXRhKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQgYXMgYW55KS5tb2RlbCB8fCByZXN1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5QYW5lbChjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlPE5hdHVyYWxBYnN0cmFjdFBhbmVsPiwgZGF0YTogTmF0dXJhbFBhbmVsRGF0YSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25mOiBNYXREaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnBhbmVsQ2xhc3MsXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoID09PSAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogJzk2MHB4JyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbjxOYXR1cmFsQWJzdHJhY3RQYW5lbD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZik7XG5cbiAgICAgICAgLy8gUGFuZWxpc2FibGUgaW50ZXJmYWNlIGF0dHJpYnV0ZXMvZnVuY3Rpb25zXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5pbml0UGFuZWwoZGF0YSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0UGFuZWxJbmRleChkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KGluZGV4IC0gMSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBwYW5lbCBwb3NpdGlvbiAoaW5kZXgpIGJ5IHNlYXJjaGluZyBtYXRjaGluZyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBhbmVsSW5kZXgoY29tcG9uZW50OiBOYXR1cmFsQWJzdHJhY3RQYW5lbCk6IG51bWJlciB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MuZmluZEluZGV4KGRpYWxvZyA9PiBkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UgPT09IGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwb3NpdGlvbnMgcGFuZWxzIGZyb20gc3RhcnQgdW50aWwgZ2l2ZW4gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlbGVjdCB0aGUgcGFuZWxzIHRoYXQgYXJlIHN0aWxsIG9wZW5lZCwgaWdub3JlIHRoZSBvdGhlcnMgYmVjYXVzZSB0aGV5J2xsIGJlIGNsb3NlZFxuICAgICAgICBjb25zdCBhZmZlY3RlZEVsZW1lbnRzID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3M7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2cgPSBhZmZlY3RlZEVsZW1lbnRzW2ldO1xuXG4gICAgICAgICAgICAvLyBTZXQgYWxsIHBhbmVscyBhcyBcImhpZGRlblwiIGV4Y2VwdCBsYXN0IG9uZS4gSXNGcm9udFBhbmVsIGF0dHJpYnV0ZSBjYXVzZXMgYSBDU1MgdGhhdCBoaWRlcyBib2R5IHZpYSBob3N0YmluZGluZ1xuICAgICAgICAgICAgZGlhbG9nLmNvbXBvbmVudEluc3RhbmNlLmlzRnJvbnRQYW5lbCA9IGkgPT09IGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5wYW5lbFNlcnZpY2UgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyBBc3NpZ24gb2Zmc2V0XG4gICAgICAgICAgICBjb25zdCBkZWVwID0gYWZmZWN0ZWRFbGVtZW50cy5sZW5ndGggLSAxIC0gaTtcblxuICAgICAgICAgICAgbGV0IHBvc2l0aW9uOiBhbnkgPSB7cmlnaHQ6IGRlZXAgKiB0aGlzLnBhbmVsc09mZnNldEggKyAncHgnfTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lZGlhID09PSAneHMnICYmIGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IGkgKiB0aGlzLnBhbmVsc09mZnNldFYgKyAncHgnLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlhbG9nLnVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9wYW5lbHMvcGFuZWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVkscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxTQUFTLENBQUM7Ozs7O0FBRWpCLFNBQVMsZ0JBQWdCLENBQUMsUUFBc0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFxQixFQUFFLENBQXFCO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RixD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QjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQThEUSxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lZGlhT2JzZXJ2ZXJ9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XG5pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgRGVmYXVsdFVybFNlcmlhbGl6ZXIsIE5hdmlnYXRpb25FcnJvciwgUm91dGVyLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtkaWZmZXJlbmNlV2l0aCwgZmxhdHRlbiwgaXNFcXVhbH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7Zm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0UGFuZWx9IGZyb20gJy4vYWJzdHJhY3QtcGFuZWwnO1xuaW1wb3J0IHtnZXRTdGFja0NvbmZpZ30gZnJvbSAnLi9wYW5lbHMudXJsbWF0Y2hlcic7XG5pbXBvcnQge1xuICAgIE5hdHVyYWxQYW5lbENvbmZpZyxcbiAgICBOYXR1cmFsUGFuZWxEYXRhLFxuICAgIE5hdHVyYWxQYW5lbHNCZWZvcmVPcGVuUGFuZWwsXG4gICAgTmF0dXJhbFBhbmVsc0hvb2tzQ29uZmlnLFxuICAgIE5hdHVyYWxQYW5lbHNSb3V0ZXJSdWxlLFxuICAgIFBhbmVsc0hvb2tzQ29uZmlnLFxufSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gc2VnbWVudHNUb1N0cmluZyhzZWdtZW50czogVXJsU2VnbWVudFtdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnbWVudHMubWFwKHMgPT4gcy50b1N0cmluZygpKS5qb2luKCcvJyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDb25maWdzKGE6IE5hdHVyYWxQYW5lbENvbmZpZywgYjogTmF0dXJhbFBhbmVsQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEucm91dGUucGF0aCA9PT0gYi5yb3V0ZS5wYXRoICYmIGEucnVsZSA9PT0gYi5ydWxlICYmIGlzRXF1YWwoYS5wYXJhbXMsIGIucGFyYW1zKTtcbn1cblxuLyoqXG4gKiBUT0RPOiBpbXBsZW1lbnQgcm91dGUgdXBkYXRlIHdoZW4gY2xvc2luZyBkaWFsb2cgd2l0aCBlc2NhcGVcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxQYW5lbHNTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBCZWNhdXNlIG9mIHRoaXMgc3RhdGljIHByb3BlcnR5IFBhbmVscyBhcmUgKipub3QqKiBjb21wYXRpYmxlIHdpdGggU1NSLlxuICAgICAqIEFuZCB3ZSBjYW5ub3QgbWFrZSBpdCBub24tc3RhdGljLCBiZWNhdXNlIGBVcmxNYXRjaGVyYCBjYW5ub3QgYmUgaW5qZWN0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29wZW5lZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGFsbCBvcGVuIGRpYWxvZyBoYXZlIGZpbmlzaGVkIGNsb3NpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYWZ0ZXJBbGxDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBwYW5lbHMgY291bnRlci4gV29ya3MgbW9yZSBsaWtlIGFuIElELlxuICAgICAqIElzIHVzZWQgdG8gZ2l2ZSBhbiB1bmlxdWUgaWRlbnRpZmllciB0byBtdWx0aXBsZSBzaW1pbGFyIHBhbmVscyBjb25maWd1cmF0aW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgY291bnRlciA9IDE7XG4gICAgLyoqXG4gICAgICogQ2xhc3MgYXBwbGllZCB0byBkaWFsb2cgb3ZlcmxheSByZWxhdGVkIHdpdGggcGFuZWxzXG4gICAgICogSWYgY2hhbmdlLCBjaGFuZ2UgQ1NTIHRvb1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxDbGFzcyA9ICdwYW5lbCc7XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBmb3IgcGFuZWxzIHNldHVwIGJlZm9yZSBuYXZpZ2F0aW9uIGNoYW5nZS5cbiAgICAgKiBVc2VkIHRvIGRldGVjdCBwYW5lbHMgb3BlbmluZ3MvY2xvc2luZ3MgYW5kIGFkYXB0IGZvciBuZXcgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgb2xkRnVsbENvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBzdWJzY3JpcHRpb24gc3RvcFxuICAgICAqL1xuICAgIHByaXZhdGUgcm91dGVTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBmb3Igc3Vic2NyaXB0aW9uIHN0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIG5hdlN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEhvcml6b250YWwgZ2FwcyBiZXR3ZWVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxzT2Zmc2V0SCA9IDM1O1xuXG4gICAgLyoqXG4gICAgICogVmVydGljYWwgZ2FwcyBiZXR3ZWVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgcGFuZWxzT2Zmc2V0ViA9IDQwO1xuXG4gICAgLyoqXG4gICAgICogQ2FjaGUgb2YgcHJldmlvdXMgc2NyZWVuIHNpemVcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSBwYW5lbHMgc3RhY2sgb3JpZW50YXRpb24gb24gc21hbGwgc2NyZWVuc1xuICAgICAqL1xuICAgIHByaXZhdGUgbWVkaWE6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChQYW5lbHNIb29rc0NvbmZpZykgcHJpdmF0ZSBob29rc0NvbmZpZzogTmF0dXJhbFBhbmVsc0hvb2tzQ29uZmlnLFxuICAgICAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFPYnNlcnZlcixcbiAgICApIHtcbiAgICAgICAgLy8gV2F0Y2ggbWVkaWEgdG8ga25vdyBpZiBkaXNwbGF5IHBhbmVscyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseVxuICAgICAgICB0aGlzLm1lZGlhU2VydmljZS5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUobWVkaWFzID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWVkaWEgb2YgbWVkaWFzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVkaWEgPSBtZWRpYS5tcUFsaWFzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWRpYSAhPT0gbWVkaWEubXFBbGlhcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhID0gbWVkaWEubXFBbGlhcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiB2b2lkIHtcbiAgICAgICAgTmF0dXJhbFBhbmVsc1NlcnZpY2UuX29wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMucm91dGVTdWIgPSByb3V0ZS51cmwuc3Vic2NyaWJlKHNlZ21lbnRzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFuZWxzKHNlZ21lbnRzLCByb3V0ZS5zbmFwc2hvdC5kYXRhLnBhbmVsc1JvdXRlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmF2U3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldiA9PiB7XG4gICAgICAgICAgICBpZiAoIShldiBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFib3J0IGFuZCBwcm9wYWdhdGUgbmF2aWdhdGlvbiBlcnJvclxuICAgICAgICAgICAgaWYgKGV2LnVybC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGhhY2tpc2g6IHdlIGhhcmRjb2RlIGFuIGltcG9zc2libGUgdXJsIHRvIHRyaWdnZXIgbm9ybWFsIG5hdmlnYXRpb24gZXJyb3IgbWVjaGFuaXNtXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgncGFuZWxzLXJlYWNoZWQtaW52YWxpZC11cmwnKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudGVyKys7XG5cbiAgICAgICAgICAgIC8vIHBjIHN0YW5kcyBmb3IgXCJwYW5lbCBjb3VudGVyXCIsIHJlcXVpcmVkIHRvIGdpdmUgYW4gaWRlbnRpZmljYXRpb24gdG8gcGFuZWxzIHdpdGggZXhhY3Qgc2FtZSBjb25maWdcbiAgICAgICAgICAgIC8vIEUuZyAvbmV3XG4gICAgICAgICAgICBjb25zdCB3YW50ZWRVcmwgPSBldi51cmwgKyAnO3BjPScgKyB0aGlzLmNvdW50ZXI7XG5cbiAgICAgICAgICAgIC8vIFNlZ21lbnRzIG1hdGNoaW5nIGZyb20gd2FudGVkIHVybC4gRS5nIH4gWyduZXcnXVxuICAgICAgICAgICAgY29uc3Qgd2FudGVkVXJTZWdtZW50cyA9IG5ldyBEZWZhdWx0VXJsU2VyaWFsaXplcigpLnBhcnNlKHdhbnRlZFVybCkucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzO1xuXG4gICAgICAgICAgICAvLyBEb24ndCBtYXRjaCBhbnkgY29uZmlnXG4gICAgICAgICAgICBjb25zdCB3YW50ZWRDb25maWcgPSBnZXRTdGFja0NvbmZpZyh3YW50ZWRVclNlZ21lbnRzLCByb3V0ZS5zbmFwc2hvdC5kYXRhLnBhbmVsc1JvdXRlcywgdGhpcy5pbmplY3Rvcik7XG5cbiAgICAgICAgICAgIGlmICh3YW50ZWRDb25maWcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwZW5kQ29uZmlnVG9DdXJyZW50VXJsKHdhbnRlZENvbmZpZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEN1cnJlbnRseSBhY3RpdmF0ZWQgcm91dGVzLiBFLmcgWydvYmplY3RpdmUnLCAnb2JqZWN0aXZlJywgMTIzLCAncmlzayddXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VnbWVudHMgPSBmbGF0dGVuKFxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLm1hcChkID0+IGQuY29tcG9uZW50SW5zdGFuY2UucGFuZWxEYXRhLmNvbmZpZy5yb3V0ZS5zZWdtZW50cyksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBMYXN0IHNlZ21lbnQuIEUuZyBbJ3Jpc2snXVxuICAgICAgICAgICAgY29uc3QgbGFzdE9mQ3VycmVudFNlZ21lbnRzID0gY3VycmVudFNlZ21lbnRzLnNsaWNlKC0xKTtcblxuICAgICAgICAgICAgLy8gQ29uZmlnIGZvciBbJ3Jpc2snLCAnbmV3J11cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmRXYW50ZWRDb25maWcgPSBnZXRTdGFja0NvbmZpZyhcbiAgICAgICAgICAgICAgICBsYXN0T2ZDdXJyZW50U2VnbWVudHMuY29uY2F0KHdhbnRlZFVyU2VnbWVudHMpLFxuICAgICAgICAgICAgICAgIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRDb25maWdUb0N1cnJlbnRVcmwoY3VycmVudEFuZFdhbnRlZENvbmZpZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgZ2l2ZW4gY29uZmlndXJhdGlvbiB0byBhZGQgaW4gdGhlIGVuZCBvZiBjdXJyZW50IHVybFxuICAgICAqIE5ldXRyYWxpemVzIHJvdXRlciBlcnJvciBoYW5kbGluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgYXBwZW5kQ29uZmlnVG9DdXJyZW50VXJsKGNvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFcnJvckhhbmRsZXIgPSB0aGlzLnJvdXRlci5lcnJvckhhbmRsZXI7XG5cbiAgICAgICAgLy8gTnVsbGlmeSBlcnJvciBoYW5kbGVyICh3aWxsIGJlIGRlLW5ldXRyYWxpemVkIGFmdGVyIHJvdXRlIHJlZGlyZWN0aW9uKVxuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5lcnJvckhhbmRsZXIgPSAoKSA9PiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOYXZpZ2F0ZSB0byBzYW1lIHVybCArIC9yaXNrL25ldyBSZXN1bHQgOiAvcmlzay9yaXNrL25ld1xuICAgICAgICBjb25zdCBuZXdVcmwgPSBjb25maWcubWFwKGNvbmYgPT4gc2VnbWVudHNUb1N0cmluZyhjb25mLnJvdXRlLnNlZ21lbnRzKSkuam9pbignLycpO1xuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZXIudXJsICsgJy8nICsgbmV3VXJsKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEFmdGVyIG5hdmlnYXRpb24gaGFzIGVuZGVkLCByZXN0b3JlIG9yaWdpbmFsIGVycm9yIGhhbmRsZXIgYmVjYXVzZSBoZSdzIG5vdCBhIGJhZCBndXlcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmVycm9ySGFuZGxlciA9IG9yaWdpbmFsRXJyb3JIYW5kbGVyO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcCgpOiB2b2lkIHtcbiAgICAgICAgTmF0dXJhbFBhbmVsc1NlcnZpY2UuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlU3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5hdlN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgICAgdGhpcy5vbGRGdWxsQ29uZmlnID0gW107XG4gICAgICAgIHRoaXMuYWZ0ZXJBbGxDbG9zZWQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdvIHRvIHBhbmVsIG1hdGNoaW5nIGdpdmVuIGNvbXBvbmVudC4gQ2F1c2VzIGFuIHVybCBjaGFuZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdvVG9QYW5lbEJ5Q29tcG9uZW50KGNvbXBvbmVudDogTmF0dXJhbEFic3RyYWN0UGFuZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KHRoaXMuZ2V0UGFuZWxJbmRleChjb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHbyB0byBwYW5lbCBtYXRjaGluZyBnaXZlbiBjb21wb25lbnQuIENhdXNlcyBhbiB1cmwgY2hhbmdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnb1RvUGVudWx0aW1hdGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCAtIDIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIHRoZSBuZXcgdXJsIHRoYXQgb25seSBpbmNsdWRlcyB0aGUgc2VnbWVudHMgZnJvbSB0aGUgcGFuZWxzIHdlIHdhbnQgdG8gc3RheSBvcGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnb1RvUGFuZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gRXh0cmFjdHMgdXJsIHNlZ21lbnRzIGZyb20gbmV4dCBwYW5lbCB1bnRpbCBsYXN0IG9uZVxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1xuICAgICAgICAgICAgLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgICAgICAgIC5tYXAoZGlhbG9nID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VnbWVudHNUb1N0cmluZyhkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UucGFuZWxEYXRhLmNvbmZpZy5yb3V0ZS5zZWdtZW50cyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJy8nKTtcblxuICAgICAgICAvLyBSZW1vdmUgZXh0cmEgc2VnbWVudHMgYW5kIHJlZGlyZWN0cyB0byByb290XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UoJy8nICsgdXJsLCAnJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGluZyBhIHBhbmVsIGlzIGVxdWl2YWxlbnQgdG8gY2xvc2UgYWxsIHRob3NlIHRoYXQgYXJlIGluIGZyb250IG9mIGhpbVxuICAgICAqIEBwYXJhbSBpbmRleCBvZiBwYW5lbCBpbiBzdGFjay4gVGhlIG1vc3QgYmVoaW5kICh0aGUgZmlyc3Qgb25lKSBpcyAwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0UGFuZWxCeUluZGV4KGluZGV4OiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbGFzdERpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW3RoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBuZXcgcGFuZWxzIHNldCBwb3NpdGlvbnNcbiAgICAgICAgdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMTsgaSA+PSBpbmRleCArIDE7IGktLSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbaV0uY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsYXN0RGlhbG9nLmFmdGVyQ2xvc2VkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBuZXcgcGFuZWxzIGlmIHVybCBoYXMgY2hhbmdlZCB3aXRoIG5ldyBzZWdtZW50c1xuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlUGFuZWxzKHNlZ21lbnRzOiBVcmxTZWdtZW50W10sIHJvdXRlczogTmF0dXJhbFBhbmVsc1JvdXRlclJ1bGVbXSk6IHZvaWQge1xuICAgICAgICAvLyBUcmFuc2Zvcm0gdXJsIHNlZ21lbnRzIGludG8gYSBjb25maWcgd2l0aCBjb21wb25lbnQgbmFtZSBhbmQgSUQgaWYgcHJvdmlkZWQgaW4gbmV4dCBzZWdtZW50XG4gICAgICAgIC8vIFJldHVybnMgYW4gYXJyYXkgb2YgY29uZmlncywgZWFjaCBjb25maWcgcmVwcmVzZW50cyB0aGUgY29udGVudCByZWxhdGl2ZSB0byBhIHBhbmVsXG4gICAgICAgIGNvbnN0IG5ld0Z1bGxDb25maWcgPSBnZXRTdGFja0NvbmZpZyhzZWdtZW50cywgcm91dGVzLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29uZmlnc1RvUmVtb3ZlID0gZGlmZmVyZW5jZVdpdGgodGhpcy5vbGRGdWxsQ29uZmlnLCBuZXdGdWxsQ29uZmlnLCBjb21wYXJlQ29uZmlncyk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3NUb0FkZCA9IGRpZmZlcmVuY2VXaXRoKG5ld0Z1bGxDb25maWcsIHRoaXMub2xkRnVsbENvbmZpZywgY29tcGFyZUNvbmZpZ3MpO1xuXG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXh0UGFuZWwgPSB0aGlzLm9sZEZ1bGxDb25maWcubGVuZ3RoIC0gY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgaWYgKGNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gQWRkIGFuZCByZW1vdmUgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhbmVsQnlJbmRleChpbmRleE9mTmV4dFBhbmVsKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVscyhjb25maWdzVG9BZGQsIG5ld0Z1bGxDb25maWcpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgIWNvbmZpZ3NUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgcmVtb3ZlIHBhbmVsc1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbEJ5SW5kZXgoaW5kZXhPZk5leHRQYW5lbCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFjb25maWdzVG9SZW1vdmUubGVuZ3RoICYmIGNvbmZpZ3NUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgYWRkIHBhbmVsc1xuICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWxzKGNvbmZpZ3NUb0FkZCwgbmV3RnVsbENvbmZpZykuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbGRGdWxsQ29uZmlnID0gbmV3RnVsbENvbmZpZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIGFsbCBzZXJ2aWNlcywgdGhlbiBvcGVuIHBhbmVsc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3BlblBhbmVscyhcbiAgICAgICAgbmV3SXRlbXNDb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZ1tdLFxuICAgICAgICBmdWxsQ29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSxcbiAgICApOiBPYnNlcnZhYmxlPE9ic2VydmFibGU8YW55PiB8IG51bGw+IHtcbiAgICAgICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PE9ic2VydmFibGU8YW55PiB8IG51bGw+KCk7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBldmVyeXRoaW5nIGJlZm9yZSBvcGVuaW5nIGEgc2luZ2xlIHBhbmVsXG4gICAgICAgIGNvbnN0IHJlc29sdmVzID0gbmV3SXRlbXNDb25maWcubWFwKChjb25mOiBOYXR1cmFsUGFuZWxDb25maWcpID0+IHRoaXMuZ2V0UmVzb2x2ZWREYXRhKGNvbmYpKTtcblxuICAgICAgICAvLyBGb3JrSm9pbiBlbWl0cyB3aGVuIGFsbCBwcm9taXNlcyBhcmUgZXhlY3V0ZWQ7XG4gICAgICAgIGZvcmtKb2luKHJlc29sdmVzKS5zdWJzY3JpYmUocmVzb2x2ZWRSZXN1bHQgPT4ge1xuICAgICAgICAgICAgLy8gRm9yIGVhY2ggbmV3IGNvbmZpZyBlbnRyeSwgb3BlbiBhIG5ldyBwYW5lbFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdJdGVtc0NvbmZpZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IG5ld0l0ZW1zQ29uZmlnW2ldO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtRGF0YTogTmF0dXJhbFBhbmVsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uZmlnIG9mIGFjdHVhbCBwYW5lbCByb3V0ZVxuICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcblxuICAgICAgICAgICAgICAgICAgICAvLyBEYXRhIHJlc29sdmVkIGJ5IHNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGluIGNvbXBvbmVudCBieSBjYWxsaW5nIHRoaXMucGFuZWxEYXRhLmRhdGEueHl6XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHJlc29sdmVkUmVzdWx0W2ldLFxuICAgICAgICAgICAgICAgICAgICBsaW5rYWJsZU9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ob29rc0NvbmZpZyAmJiB0aGlzLmhvb2tzQ29uZmlnLmJlZm9yZU9wZW5QYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBldmVudDogTmF0dXJhbFBhbmVsc0JlZm9yZU9wZW5QYW5lbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQ29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFJlc3VsdDogcmVzb2x2ZWRSZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsUGFuZWxzQ29uZmlnOiBmdWxsQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhID0gdGhpcy5ob29rc0NvbmZpZy5iZWZvcmVPcGVuUGFuZWwodGhpcy5pbmplY3RvciwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVsKGNvbmZpZy5jb21wb25lbnQsIGl0ZW1EYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMV0uYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlc29sdmVkRGF0YShjb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZyk6IE9ic2VydmFibGU8e1trZXk6IHN0cmluZ106IHVua25vd259PiB7XG4gICAgICAgIGlmICghY29uZmlnLnJlc29sdmUgfHwgKGNvbmZpZy5yZXNvbHZlICYmIE9iamVjdC5rZXlzKGNvbmZpZy5yZXNvbHZlKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZUtleXMgPSBPYmplY3Qua2V5cyhjb25maWcucmVzb2x2ZSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkRGF0YToge1trZXk6IHN0cmluZ106IE9ic2VydmFibGU8dW5rbm93bj59ID0ge307XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gY29uZmlnLmluamVjdG9yO1xuXG4gICAgICAgIGlmIChpbmplY3Rvcikge1xuICAgICAgICAgICAgcmVzb2x2ZUtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkRGF0YVtrZXldID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiBjb25maWcucmVzb2x2ZVtrZXldKGNvbmZpZykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ya0pvaW4ocmVzb2x2ZWREYXRhKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQgYXMgYW55KS5tb2RlbCB8fCByZXN1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5QYW5lbChjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlPE5hdHVyYWxBYnN0cmFjdFBhbmVsPiwgZGF0YTogTmF0dXJhbFBhbmVsRGF0YSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25mOiBNYXREaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnBhbmVsQ2xhc3MsXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoID09PSAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogJzk2MHB4JyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbjxOYXR1cmFsQWJzdHJhY3RQYW5lbD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZik7XG5cbiAgICAgICAgLy8gUGFuZWxpc2FibGUgaW50ZXJmYWNlIGF0dHJpYnV0ZXMvZnVuY3Rpb25zXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5pbml0UGFuZWwoZGF0YSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0UGFuZWxJbmRleChkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFuZWxCeUluZGV4KGluZGV4IC0gMSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBwYW5lbCBwb3NpdGlvbiAoaW5kZXgpIGJ5IHNlYXJjaGluZyBtYXRjaGluZyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBhbmVsSW5kZXgoY29tcG9uZW50OiBOYXR1cmFsQWJzdHJhY3RQYW5lbCk6IG51bWJlciB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MuZmluZEluZGV4KGRpYWxvZyA9PiBkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UgPT09IGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwb3NpdGlvbnMgcGFuZWxzIGZyb20gc3RhcnQgdW50aWwgZ2l2ZW4gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlbGVjdCB0aGUgcGFuZWxzIHRoYXQgYXJlIHN0aWxsIG9wZW5lZCwgaWdub3JlIHRoZSBvdGhlcnMgYmVjYXVzZSB0aGV5J2xsIGJlIGNsb3NlZFxuICAgICAgICBjb25zdCBhZmZlY3RlZEVsZW1lbnRzID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3M7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2cgPSBhZmZlY3RlZEVsZW1lbnRzW2ldO1xuXG4gICAgICAgICAgICAvLyBTZXQgYWxsIHBhbmVscyBhcyBcImhpZGRlblwiIGV4Y2VwdCBsYXN0IG9uZS4gSXNGcm9udFBhbmVsIGF0dHJpYnV0ZSBjYXVzZXMgYSBDU1MgdGhhdCBoaWRlcyBib2R5IHZpYSBob3N0YmluZGluZ1xuICAgICAgICAgICAgZGlhbG9nLmNvbXBvbmVudEluc3RhbmNlLmlzRnJvbnRQYW5lbCA9IGkgPT09IGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5wYW5lbFNlcnZpY2UgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyBBc3NpZ24gb2Zmc2V0XG4gICAgICAgICAgICBjb25zdCBkZWVwID0gYWZmZWN0ZWRFbGVtZW50cy5sZW5ndGggLSAxIC0gaTtcblxuICAgICAgICAgICAgbGV0IHBvc2l0aW9uOiBhbnkgPSB7cmlnaHQ6IGRlZXAgKiB0aGlzLnBhbmVsc09mZnNldEggKyAncHgnfTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lZGlhID09PSAneHMnICYmIGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IGkgKiB0aGlzLnBhbmVsc09mZnNldFYgKyAncHgnLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlhbG9nLnVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
87
87
  type: ViewChild,
88
88
  args: [TemplateRef, { static: true }]
89
89
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQW1DLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JILE9BQU8sRUFDSCxTQUFTLEVBSVQsTUFBTSxFQUNOLGNBQWMsRUFFZCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUU3QyxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVdGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBbUMsRUFDbkMsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFF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QUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSyxXQUFXO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSwgRm9jdXNUcmFwfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCwgUG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgT25EZXN0cm95LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zfSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci1hbmltYXRpb25zJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhPihcbiAgICAnTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YScsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGFuaW1hdGlvbnM6IFtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG5hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMuZmFkZUluSXRlbXNdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1BvcnRhbE1vZHVsZSwgQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBwb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gICAgcHVibGljIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgICBwcml2YXRlIGFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IEZvY3VzVHJhcCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNUcmFwRmFjdG9yeTogQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSxcbiAgICAgICAgQEluamVjdChOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBKSBwdWJsaWMgZGF0YTogTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaFRlbXBsYXRlUG9ydGFsPEM+KHBvcnRhbDogVGVtcGxhdGVQb3J0YWw8Qz4pOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+KTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMucG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRocm93TWF0RGlhbG9nQ29udGVudEFscmVhZHlBdHRhY2hlZEVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhbmVsQW5pbWF0aW9uU3RhdGUgPSAnZW50ZXInO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdleGl0Jykge1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFwRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwID0gdGhpcy5mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc3RvcmVzIGZvY3VzIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgb3BlbmVkLiAqL1xuICAgIHByaXZhdGUgcmVzdG9yZUZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b0ZvY3VzID0gdGhpcy5lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDtcblxuICAgICAgICAvLyBXZSBuZWVkIHRoZSBleHRyYSBjaGVjaywgYmVjYXVzZSBJRSBjYW4gc2V0IHRoZSBgYWN0aXZlRWxlbWVudGAgdG8gbnVsbCBpbiBzb21lIGNhc2VzLlxuICAgICAgICBpZiAodG9Gb2N1cyAmJiB0eXBlb2YgdG9Gb2N1cy5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUcmFwKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVHJhcC5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgIFtAdHJhbnNmb3JtTWVudV09XCJwYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejJcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXItY29udGVudFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5zaG93VmFsaWRhdGVCdXR0b25cIiBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tdmFsaWRhdGUtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiBpMThuPlZhbGlkZXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQW1DLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JILE9BQU8sRUFDSCxTQUFTLEVBSVQsTUFBTSxFQUNOLGNBQWMsRUFFZCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUU3QyxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE1BQU0sS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQU1ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUM3RCw4QkFBOEIsQ0FDakMsQ0FBQztBQVdGLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxnQkFBZ0I7SUFlbkUsWUFDcUIsVUFBbUMsRUFDbkMsZ0JBQThDLEVBQ2YsSUFBa0M7UUFFbEYsS0FBSyxFQUFF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QUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSyxXQUFXO3NCQUF6RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSwgRm9jdXNUcmFwfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jhc2VQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCwgUG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgT25EZXN0cm95LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zfSBmcm9tICcuL2Ryb3Bkb3duLWNvbnRhaW5lci1hbmltYXRpb25zJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd01hdERpYWxvZ0NvbnRlbnRBbHJlYWR5QXR0YWNoZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSB7XG4gICAgc2hvd1ZhbGlkYXRlQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkFUVVJBTF9EUk9QRE9XTl9DT05UQUlORVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsRHJvcGRvd25Db250YWluZXJEYXRhPihcbiAgICAnTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YScsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGFuaW1hdGlvbnM6IFtuYXR1cmFsRHJvcGRvd25BbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG5hdHVyYWxEcm9wZG93bkFuaW1hdGlvbnMuZmFkZUluSXRlbXNdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1BvcnRhbE1vZHVsZSwgQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRHJvcGRvd25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9ydGFsT3V0bGV0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKENka1BvcnRhbE91dGxldCwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBwb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gICAgcHVibGljIHBhbmVsQW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgPSAndm9pZCc7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBmb2N1c1RyYXA6IEZvY3VzVHJhcCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNUcmFwRmFjdG9yeTogQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSxcbiAgICAgICAgQEluamVjdChOQVRVUkFMX0RST1BET1dOX0NPTlRBSU5FUl9EQVRBKSBwdWJsaWMgZGF0YTogTmF0dXJhbERyb3Bkb3duQ29udGFpbmVyRGF0YSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaFRlbXBsYXRlUG9ydGFsPEM+KHBvcnRhbDogVGVtcGxhdGVQb3J0YWw8Qz4pOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXR0YWNoQ29tcG9uZW50UG9ydGFsPFQ+KHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+KTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMucG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRocm93TWF0RGlhbG9nQ29udGVudEFscmVhZHlBdHRhY2hlZEVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhbmVsQW5pbWF0aW9uU3RhdGUgPSAnZW50ZXInO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdleGl0Jykge1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFwRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNUcmFwID0gdGhpcy5mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc3RvcmVzIGZvY3VzIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgb3BlbmVkLiAqL1xuICAgIHByaXZhdGUgcmVzdG9yZUZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b0ZvY3VzID0gdGhpcy5lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDtcblxuICAgICAgICAvLyBXZSBuZWVkIHRoZSBleHRyYSBjaGVjaywgYmVjYXVzZSBJRSBjYW4gc2V0IHRoZSBgYWN0aXZlRWxlbWVudGAgdG8gbnVsbCBpbiBzb21lIGNhc2VzLlxuICAgICAgICBpZiAodG9Gb2N1cyAmJiB0eXBlb2YgdG9Gb2N1cy5mb2N1cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUcmFwKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVHJhcC5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgIFtAdHJhbnNmb3JtTWVudV09XCJwYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejJcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwibmF0dXJhbC1kcm9wZG93bi1jb250YWluZXItY29udGVudFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5zaG93VmFsaWRhdGVCdXR0b25cIiBjbGFzcz1cIm5hdHVyYWwtZHJvcGRvd24tdmFsaWRhdGUtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiBpMThuPlZhbGlkZXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
49
49
  type: Inject,
50
50
  args: [NATURAL_DROPDOWN_DATA]
51
51
  }] }, { type: i1.NaturalDropdownRef }]; } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFBQyxxQkFBcUIsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc1RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQWU3QyxNQUFNLE9BQU8sc0JBQXNCO0lBTS9CLFlBQzBDLElBQXFELEVBQ2pGLFdBQStCO1FBREgsU0FBSSxHQUFKLElBQUksQ0FBaUQ7UUFDakYsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBUDdDLHlCQUF5QjtRQUNsQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGNBQVMsR0FBaUIsSUFBSSxDQUFDO1FBTWxDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDbkIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQ3hCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVNLE9BQU87UUFDVixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0F0Q1Esc0JBQXNCLGtCQU9uQixxQkFBcUI7a0dBUHhCLHNCQUFzQix3RUN2Qm5DLDhRQU1BLHFLRGVjLFlBQVksK1BBQUUsYUFBYTs7MkZBRTVCLHNCQUFzQjtrQkFObEMsU0FBUztpQ0FHTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQzs7MEJBUy9DLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uLy4uL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtOYXR1cmFsRHJvcGRvd25SZWZ9IGZyb20gJy4uLy4uL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tcmVmJztcbmltcG9ydCB7TkFUVVJBTF9EUk9QRE9XTl9EQVRBLCBOYXR1cmFsRHJvcGRvd25EYXRhfSBmcm9tICcuLi8uLi9zZWFyY2gvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vdHlwZXMvZHJvcGRvd24tY29tcG9uZW50JztcbmltcG9ydCB7RmFjZXQsIE5hdHVyYWxTZWFyY2hGYWNldHN9IGZyb20gJy4uL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7TWF0TGlzdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBmYWNldCBzZWxlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbiB7XG4gICAgZmFjZXRzOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRMaXN0TW9kdWxlLCBDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGYWNldFNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgRHJvcGRvd25Db21wb25lbnQge1xuICAgIC8vIE5ldmVyIGhhcyBhIHJlYWwgdmFsdWVcbiAgICBwdWJsaWMgcmVuZGVyZWRWYWx1ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHVibGljIGZhY2V0czogTmF0dXJhbFNlYXJjaEZhY2V0cztcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5BVFVSQUxfRFJPUERPV05fREFUQSkgcHVibGljIGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGE8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+LFxuICAgICAgICBwcm90ZWN0ZWQgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZixcbiAgICApIHtcbiAgICAgICAgdGhpcy5mYWNldHMgPSBkYXRhLmNvbmZpZ3VyYXRpb24uZmFjZXRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB2YWx1ZSwgaW5jbHVkaW5nIHJpY2ggb2JqZWN0IHR5cGVzXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmRpdGlvbigpOiBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsbG93IHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aXRoIGEgdmFsaWQgdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSh7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiB7fSxcbiAgICAgICAgICAgICAgICBmYWNldDogdGhpcy5zZWxlY3Rpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRpdGxlIG1hdC1ib2R5LTJcIiAqbmdJZj1cImRhdGEudGl0bGVcIj57eyBkYXRhLnRpdGxlIH19PC9kaXY+XG48bWF0LW5hdi1saXN0PlxuICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJzZWxlY3Rpb24gPSBmYWNldDsgY2xvc2UoKVwiICpuZ0Zvcj1cImxldCBmYWNldCBvZiBmYWNldHNcIj5cbiAgICAgICAgPGE+e3sgZmFjZXQuZGlzcGxheSB9fTwvYT5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG48L21hdC1uYXYtbGlzdD5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9mYWNldC1zZWxlY3Rvci9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFBQyxxQkFBcUIsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc1RyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQWU3QyxNQUFNLE9BQU8sc0JBQXNCO0lBTS9CLFlBQzBDLElBQXFELEVBQ2pGLFdBQStCO1FBREgsU0FBSSxHQUFKLElBQUksQ0FBaUQ7UUFDakYsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBUDdDLHlCQUF5QjtRQUNULGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFekQsY0FBUyxHQUFpQixJQUFJLENBQUM7UUFNbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUNuQixTQUFTLEVBQUUsRUFBRTtnQkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDeEIsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU0sT0FBTztRQUNWLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVNLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQXRDUSxzQkFBc0Isa0JBT25CLHFCQUFxQjtrR0FQeEIsc0JBQXNCLHdFQ3ZCbkMsOFFBTUEscUtEZWMsWUFBWSwrUEFBRSxhQUFhOzsyRkFFNUIsc0JBQXNCO2tCQU5sQyxTQUFTO2lDQUdNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDOzswQkFTL0MsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZH0gZnJvbSAnLi4vLi4vc2VhcmNoL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vLi4vc2VhcmNoL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1yZWYnO1xuaW1wb3J0IHtOQVRVUkFMX0RST1BET1dOX0RBVEEsIE5hdHVyYWxEcm9wZG93bkRhdGF9IGZyb20gJy4uLy4uL3NlYXJjaC9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtGYWNldCwgTmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vdHlwZXMvZmFjZXQnO1xuaW1wb3J0IHtNYXRMaXN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGZhY2V0IHNlbGVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9uIHtcbiAgICBmYWNldHM6IE5hdHVyYWxTZWFyY2hGYWNldHM7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9mYWNldC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmFjZXQtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdExpc3RNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZhY2V0U2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgLy8gTmV2ZXIgaGFzIGEgcmVhbCB2YWx1ZVxuICAgIHB1YmxpYyByZWFkb25seSByZW5kZXJlZFZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwdWJsaWMgZmFjZXRzOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xuICAgIHB1YmxpYyBzZWxlY3Rpb246IEZhY2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTkFUVVJBTF9EUk9QRE9XTl9EQVRBKSBwdWJsaWMgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4sXG4gICAgICAgIHByb3RlY3RlZCBkcm9wZG93blJlZjogTmF0dXJhbERyb3Bkb3duUmVmLFxuICAgICkge1xuICAgICAgICB0aGlzLmZhY2V0cyA9IGRhdGEuY29uZmlndXJhdGlvbi5mYWNldHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZhbHVlLCBpbmNsdWRpbmcgcmljaCBvYmplY3QgdHlwZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZGl0aW9uKCk6IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxsb3cgdG8gY2xvc2UgdGhlIGRyb3Bkb3duIHdpdGggYSB2YWxpZCB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgICAgIGZhY2V0OiB0aGlzLnNlbGVjdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdGl0bGUgbWF0LWJvZHktMlwiICpuZ0lmPVwiZGF0YS50aXRsZVwiPnt7IGRhdGEudGl0bGUgfX08L2Rpdj5cbjxtYXQtbmF2LWxpc3Q+XG4gICAgPG1hdC1saXN0LWl0ZW0gKGNsaWNrKT1cInNlbGVjdGlvbiA9IGZhY2V0OyBjbG9zZSgpXCIgKm5nRm9yPVwibGV0IGZhY2V0IG9mIGZhY2V0c1wiPlxuICAgICAgICA8YT57eyBmYWNldC5kaXNwbGF5IH19PC9hPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbjwvbWF0LW5hdi1saXN0PlxuIl19