turbogui-angular 13.0.2 → 15.0.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.
Files changed (74) hide show
  1. package/esm2022/main/controller/browser.service.mjs +6 -3
  2. package/esm2022/main/controller/dialog.service.mjs +63 -21
  3. package/esm2022/main/controller/globalerror.service.mjs +10 -5
  4. package/esm2022/main/controller/http.service.mjs +7 -4
  5. package/esm2022/main/controller/localization.service.mjs +6 -3
  6. package/esm2022/main/controller/notification.service.mjs +10 -5
  7. package/esm2022/main/controller/user.service.mjs +9 -4
  8. package/esm2022/main/controller/views.service.mjs +9 -22
  9. package/esm2022/main/model/classes/SingletoneStrictClass.mjs +24 -0
  10. package/esm2022/main/model/classes/View.mjs +8 -18
  11. package/esm2022/main/model/classes/ViewService.mjs +3 -16
  12. package/esm2022/main/model/modules/turbogui-angular.module.mjs +6 -111
  13. package/esm2022/main/view/components/busy-state-base/busy-state-base.component.mjs +3 -3
  14. package/esm2022/main/view/components/button-container/button-container.component.mjs +3 -3
  15. package/esm2022/main/view/components/button-image/button-image.component.mjs +3 -3
  16. package/esm2022/main/view/components/dialog-base/dialog-base.component.mjs +32 -5
  17. package/esm2022/main/view/components/dialog-date-selection/dialog-date-selection.component.mjs +12 -7
  18. package/esm2022/main/view/components/dialog-error/dialog-error.component.mjs +16 -9
  19. package/esm2022/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +13 -9
  20. package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs +13 -9
  21. package/esm2022/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +17 -12
  22. package/esm2022/main/view/components/dialog-two-option/dialog-two-option.component.mjs +13 -9
  23. package/esm2022/main/view/components/views-container/views-container.component.mjs +3 -3
  24. package/esm2022/public_api.mjs +2 -2
  25. package/fesm2022/turbogui-angular.mjs +1324 -1332
  26. package/fesm2022/turbogui-angular.mjs.map +1 -1
  27. package/main/controller/browser.service.d.ts.map +1 -1
  28. package/main/controller/dialog.service.d.ts +28 -8
  29. package/main/controller/dialog.service.d.ts.map +1 -1
  30. package/main/controller/globalerror.service.d.ts +3 -1
  31. package/main/controller/globalerror.service.d.ts.map +1 -1
  32. package/main/controller/http.service.d.ts.map +1 -1
  33. package/main/controller/localization.service.d.ts.map +1 -1
  34. package/main/controller/notification.service.d.ts +3 -1
  35. package/main/controller/notification.service.d.ts.map +1 -1
  36. package/main/controller/user.service.d.ts +2 -1
  37. package/main/controller/user.service.d.ts.map +1 -1
  38. package/main/controller/views.service.d.ts +2 -13
  39. package/main/controller/views.service.d.ts.map +1 -1
  40. package/main/model/classes/{ViewModel.d.ts → SingletoneStrictClass.d.ts} +8 -3
  41. package/main/model/classes/SingletoneStrictClass.d.ts.map +1 -0
  42. package/main/model/classes/View.d.ts +6 -24
  43. package/main/model/classes/View.d.ts.map +1 -1
  44. package/main/model/classes/ViewService.d.ts +6 -13
  45. package/main/model/classes/ViewService.d.ts.map +1 -1
  46. package/main/model/modules/turbogui-angular.module.d.ts +5 -23
  47. package/main/model/modules/turbogui-angular.module.d.ts.map +1 -1
  48. package/main/view/components/busy-state-base/busy-state-base.component.d.ts +1 -1
  49. package/main/view/components/busy-state-base/busy-state-base.component.d.ts.map +1 -1
  50. package/main/view/components/button-container/button-container.component.d.ts +1 -1
  51. package/main/view/components/button-container/button-container.component.d.ts.map +1 -1
  52. package/main/view/components/button-image/button-image.component.d.ts +1 -1
  53. package/main/view/components/button-image/button-image.component.d.ts.map +1 -1
  54. package/main/view/components/dialog-base/dialog-base.component.d.ts +11 -4
  55. package/main/view/components/dialog-base/dialog-base.component.d.ts.map +1 -1
  56. package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts +13 -2
  57. package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts.map +1 -1
  58. package/main/view/components/dialog-error/dialog-error.component.d.ts +13 -2
  59. package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
  60. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +13 -2
  61. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
  62. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +13 -2
  63. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
  64. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +13 -2
  65. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
  66. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +13 -2
  67. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
  68. package/main/view/components/views-container/views-container.component.d.ts +1 -1
  69. package/main/view/components/views-container/views-container.component.d.ts.map +1 -1
  70. package/package.json +1 -1
  71. package/public_api.d.ts +1 -1
  72. package/public_api.d.ts.map +1 -1
  73. package/esm2022/main/model/classes/ViewModel.mjs +0 -14
  74. package/main/model/classes/ViewModel.d.ts.map +0 -1
@@ -40,9 +40,12 @@ export class BrowserService extends BrowserManager {
40
40
  return this.location.subscribe(onNext);
41
41
  }
42
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, providedIn: 'root' }); }
44
44
  }
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowserService, decorators: [{
46
- type: Injectable
46
+ type: Injectable,
47
+ args: [{
48
+ providedIn: 'root',
49
+ }]
47
50
  }], ctorParameters: () => [{ type: i1.Location }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2Jyb3dzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUlqRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYztJQUc5QyxZQUE2QixRQUFrQjtRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUZpQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRy9DLENBQUM7SUFHRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxLQUEwQjtRQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLE1BQXNDO1FBRXZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FqQ1EsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCcm93c2VyTWFuYWdlciB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IExvY2F0aW9uLCBQb3BTdGF0ZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcblxyXG4vKipcclxuICogQW4gYWJzdHJhY3Rpb24gb2YgdGhlIGJyb3dzZXIgZW50aXR5IGFuIGFsbCBpdHMgcmVsYXRlZCBvcGVyYXRpb25zIGFuZCBwcm9wZXJ0aWVzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyU2VydmljZSBleHRlbmRzIEJyb3dzZXJNYW5hZ2VyIHtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24pIHtcclxuXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2RpZnkgdGhlIGN1cnJlbnQgYnJvd3NlciBVUkkgd2l0aG91dCByZWxvYWRpbmcgdGhlIGN1cnJlbnQgcGFnZSBkb2N1bWVudFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXRoIFRoZSB1cmkgdmFsdWUgd2Ugd2FudCB0byBzZXRcclxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdXJsIHBhcmFtZXRlcnMgcGFydCB3ZSB3YW50IHRvIHNwZWNpZnkgaWYgYW55XHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICovXHJcbiAgICBzZXRVUkkocGF0aDogc3RyaW5nLCBxdWVyeT86IHN0cmluZyB8IHVuZGVmaW5lZCl7XHJcblxyXG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28ocGF0aCwgcXVlcnkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogT2J0YWluIGEgc3Vic2NyaXB0aW9uIHRvIGdldCBub3RpZmllZCBvbiBhbnkgY2hhbmdlcyBhdCB0aGUgYnJvd3NlciB1cmxcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb25OZXh0IEEgbWV0aG9kIHRvIGJlIGV4ZWN1dGVkIGV2ZXJ5IHRpbWUgdGhlIHVybCBjaGFuZ2VzIG9uIHRoZSBicm93c2VyLiBUaGUgdXJsIHdpbGwgYmUgYXZhaWxhYmxlIGluc2lkZSB0aGUgdmFsdWUgcGFyYW1ldGVyXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgU3Vic2NyaWJlZCBldmVudHMuIE1ha2Ugc3VyZSB0byB1bnN1YnNjcmliZSB3aGVuIG5vdCBuZWVkZWRcclxuICAgICAqL1xyXG4gICAgc3Vic2NyaWJlVG9VcmxDaGFuZ2Uob25OZXh0OiAodmFsdWU6IFBvcFN0YXRlRXZlbnQpID0+IHZvaWQpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uLnN1YnNjcmliZShvbk5leHQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2Jyb3dzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUlqRDs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYztJQUc5QyxZQUE2QixRQUFrQjtRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUZpQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRy9DLENBQUM7SUFHRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxLQUEwQjtRQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLE1BQXNDO1FBRXZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0FqQ1EsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJyb3dzZXJNYW5hZ2VyIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgTG9jYXRpb24sIFBvcFN0YXRlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBbiBhYnN0cmFjdGlvbiBvZiB0aGUgYnJvd3NlciBlbnRpdHkgYW4gYWxsIGl0cyByZWxhdGVkIG9wZXJhdGlvbnMgYW5kIHByb3BlcnRpZXNcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyU2VydmljZSBleHRlbmRzIEJyb3dzZXJNYW5hZ2VyIHtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24pIHtcclxuXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2RpZnkgdGhlIGN1cnJlbnQgYnJvd3NlciBVUkkgd2l0aG91dCByZWxvYWRpbmcgdGhlIGN1cnJlbnQgcGFnZSBkb2N1bWVudFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXRoIFRoZSB1cmkgdmFsdWUgd2Ugd2FudCB0byBzZXRcclxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdXJsIHBhcmFtZXRlcnMgcGFydCB3ZSB3YW50IHRvIHNwZWNpZnkgaWYgYW55XHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgdm9pZFxyXG4gICAgICovXHJcbiAgICBzZXRVUkkocGF0aDogc3RyaW5nLCBxdWVyeT86IHN0cmluZyB8IHVuZGVmaW5lZCl7XHJcblxyXG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28ocGF0aCwgcXVlcnkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogT2J0YWluIGEgc3Vic2NyaXB0aW9uIHRvIGdldCBub3RpZmllZCBvbiBhbnkgY2hhbmdlcyBhdCB0aGUgYnJvd3NlciB1cmxcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb25OZXh0IEEgbWV0aG9kIHRvIGJlIGV4ZWN1dGVkIGV2ZXJ5IHRpbWUgdGhlIHVybCBjaGFuZ2VzIG9uIHRoZSBicm93c2VyLiBUaGUgdXJsIHdpbGwgYmUgYXZhaWxhYmxlIGluc2lkZSB0aGUgdmFsdWUgcGFyYW1ldGVyXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgU3Vic2NyaWJlZCBldmVudHMuIE1ha2Ugc3VyZSB0byB1bnN1YnNjcmliZSB3aGVuIG5vdCBuZWVkZWRcclxuICAgICAqL1xyXG4gICAgc3Vic2NyaWJlVG9VcmxDaGFuZ2Uob25OZXh0OiAodmFsdWU6IFBvcFN0YXRlRXZlbnQpID0+IHZvaWQpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uLnN1YnNjcmliZShvbk5leHQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -11,14 +11,16 @@ import { Injectable } from '@angular/core';
11
11
  import { BusyStateBaseComponent } from '../view/components/busy-state-base/busy-state-base.component';
12
12
  import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
13
13
  import { DialogDateSelectionComponent } from '../view/components/dialog-date-selection/dialog-date-selection.component';
14
+ import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "@angular/material/snack-bar";
16
17
  import * as i2 from "@angular/material/dialog";
17
18
  /**
18
19
  * Manages the application modal and non modal floating elements
19
20
  */
20
- export class DialogService {
21
+ export class DialogService extends SingletoneStrictClass {
21
22
  constructor(rendererFactory, matSnackBar, matDialog, injector, applicationRef, componentFactoryResolver) {
23
+ super(DialogService);
22
24
  this.matSnackBar = matSnackBar;
23
25
  this.matDialog = matDialog;
24
26
  this.injector = injector;
@@ -220,6 +222,7 @@ export class DialogService {
220
222
  *
221
223
  * @param dialogComponentClass A class for a component that extends DialogBaseComponent, which will be the dialog that is shown to the user.
222
224
  * @param properties An object containing the different visual and textual options that this dialog allows:
225
+ * - id: The html unique identifier that the dialog will have once created. If not specified, no id will be explicitly set
223
226
  * - width: Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
224
227
  * reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
225
228
  * %, vh, vw, or any other. For example: '400px', '50%', etc.
@@ -232,6 +235,8 @@ export class DialogService {
232
235
  * - texts: A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should
233
236
  * be placed first, subtitle second and so (Each dialog may accept different number of texts).
234
237
  * - options: A list of strings that will be used as button captions for each one of the accepted dialog options
238
+ * - viewContainerRef: This is important if we want to propagate providers from a parent component to this dialog. We must specify
239
+ * this reference to make sure the same services injected on the parent are available too at the child dialog
235
240
  *
236
241
  * @param callback A function that will be called after the dialog is closed and will receive a selection object with the numeric index and value for
237
242
  * the option that's been selected by the user. if no option was selected, index will be -1 and value null
@@ -245,7 +250,13 @@ export class DialogService {
245
250
  properties.texts = properties.texts ?? [];
246
251
  properties.options = properties.options ?? [];
247
252
  // Generate a string to uniquely identify this dialog on the list of active dialogs
248
- const dialogHash = properties.texts.join('') + properties.options.join('') + dialogComponentClass.name;
253
+ // A dialog is considered as unique if the dialog id and texts are exactly the same. We do not take options into consideration
254
+ // as there may be dialogs with a big amount of options available.
255
+ let className = dialogComponentClass.DIALOG_CLASS_NAME;
256
+ if (className === '') {
257
+ throw new Error(`The static property DIALOG_CLASS_NAME is not defined or is empty for this dialog component (${dialogComponentClass})`);
258
+ }
259
+ const dialogHash = className + properties.texts.join('');
249
260
  // identical dialogs won't be allowed at the same time
250
261
  if (this._activeDialogs.includes(dialogHash)) {
251
262
  return;
@@ -256,8 +267,13 @@ export class DialogService {
256
267
  disableClose: properties.modal,
257
268
  autoFocus: false,
258
269
  closeOnNavigation: !properties.modal,
270
+ viewContainerRef: properties.viewContainerRef,
259
271
  data: { texts: properties.texts, options: properties.options }
260
272
  });
273
+ // Assign the dialog ID only if specifically set on properties
274
+ if (properties.id && properties.id !== undefined) {
275
+ dialogRef.id = properties.id;
276
+ }
261
277
  this._activeDialogs.push(dialogHash);
262
278
  this._activeDialogInstances.push(dialogRef);
263
279
  dialogRef.beforeClosed().subscribe((selection) => {
@@ -277,25 +293,11 @@ export class DialogService {
277
293
  }
278
294
  });
279
295
  }
280
- /**
281
- * Force the removal of all the dialogs that are currently visible.
282
- *
283
- * If no dialogs are currently visible, this method will do nothing
284
- */
285
- removeAllDialogs() {
286
- if (!this._isEnabled) {
287
- return;
288
- }
289
- for (const dialogRef of this._activeDialogInstances) {
290
- dialogRef.close({ index: -1 });
291
- }
292
- this._activeDialogs = [];
293
- this._activeDialogInstances = [];
294
- }
295
296
  /**
296
297
  * Show a dialog with a calendar to let the user pick a date.
297
298
  *
298
299
  * @param properties An object containing the different visual and textual options that this dialog allows:
300
+ * - id: The html unique identifier that the dialog will have once created. If not specified, no id will be explicitly set
299
301
  * - width: Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
300
302
  * reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
301
303
  * %, vh, vw, or any other. For example: '400px', '50%', etc.
@@ -306,6 +308,8 @@ export class DialogService {
306
308
  * - modal: True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
307
309
  * by the user clicking outside it
308
310
  * - title: An optional dialog title
311
+ * - viewContainerRef: This is important to propagate providers from a parent component to this dialog. We must specify
312
+ * this reference to make sure the same services injected on the parent are available too at the child dialog
309
313
  * @param callback A function to be called after the dialog is closed. It will receive a Date() object selected by the user or null if no selection happened
310
314
  */
311
315
  addDateSelectionDialog(properties, callback) {
@@ -313,16 +317,51 @@ export class DialogService {
313
317
  return;
314
318
  }
315
319
  this.addDialog(DialogDateSelectionComponent, {
320
+ id: properties.id ?? undefined,
316
321
  width: properties.width ?? "50%",
317
322
  maxWidth: properties.maxWidth ?? "96vw",
318
323
  height: properties.height ?? "50%",
319
324
  maxHeight: properties.maxHeight ?? "92vw",
320
325
  modal: properties.modal ?? false,
321
- texts: [properties.title ?? '']
326
+ texts: [properties.title ?? ''],
327
+ viewContainerRef: properties.viewContainerRef
322
328
  }, (selection) => {
323
329
  callback(selection.index === -1 ? null : selection.value);
324
330
  });
325
331
  }
332
+ /**
333
+ * Force the removal of all the dialogs that are currently visible.
334
+ *
335
+ * If no dialogs are currently visible, this method will do nothing
336
+ */
337
+ removeAllDialogs() {
338
+ if (!this._isEnabled) {
339
+ return;
340
+ }
341
+ for (const dialogRef of this._activeDialogInstances) {
342
+ dialogRef.close({ index: -1 });
343
+ }
344
+ this._activeDialogs = [];
345
+ this._activeDialogInstances = [];
346
+ }
347
+ /**
348
+ * TODO - translate from TS version
349
+ */
350
+ // addSideNav(){
351
+ //
352
+ // }
353
+ /**
354
+ * TODO - translate from TS version
355
+ */
356
+ // get isShowingSideNav(){
357
+ //
358
+ // }
359
+ /**
360
+ * TODO - translate from TS version
361
+ */
362
+ // removeSideNav(){
363
+ //
364
+ // }
326
365
  /**
327
366
  * Block all the user interactions with the application (keyboard, touch, mouse, ...)
328
367
  */
@@ -355,9 +394,12 @@ export class DialogService {
355
394
  }
356
395
  }
357
396
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, deps: [{ token: i0.RendererFactory2 }, { token: i1.MatSnackBar }, { token: i2.MatDialog }, { token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
358
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService }); }
397
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, providedIn: 'root' }); }
359
398
  }
360
399
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, decorators: [{
361
- type: Injectable
400
+ type: Injectable,
401
+ args: [{
402
+ providedIn: 'root',
403
+ }]
362
404
  }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: i1.MatSnackBar }, { type: i2.MatDialog }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }] });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBbUYsTUFBTSxlQUFlLENBQUM7QUFHbEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQUd4SDs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBeUZ0QixZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUpsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7UUFDSyxxQkFBZ0IsR0FBbUQsSUFBSSxDQUFDO1FBR2hGOztXQUVHO1FBQ0ssd0JBQW1CLEdBQTJCLElBQUksQ0FBQztRQUczRDs7V0FFRztRQUNLLHVC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UyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUN2SDtRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDM0g7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSyxzQkFBc0I7UUFFMUIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxFQUFFO1lBRXhDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEVBQUU7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs4R0E5ZVEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQXJyYXlVdGlscywgTnVtZXJpY1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgVHlwZSwgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctYmFzZS9kaWFsb2ctYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRlU2VsZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50JztcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgdGhlIGFwcGxpY2F0aW9uIG1vZGFsIGFuZCBub24gbW9kYWwgZmxvYXRpbmcgZWxlbWVudHNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgdG8gbW9kaWZ5IHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIHNob3duIGJ5IGRlZmF1bHQgYnkgdGhlIGFkZE1vZGFsQnVzeVN0YXRlKCkgbWV0aG9kLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgdGhpcy5hZGRNb2RhbEJ1c3lTdGF0ZSgpXHJcbiAgICAgKi9cclxuICAgIGN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzOiBUeXBlPEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ+ID0gQnVzeVN0YXRlQmFzZUNvbXBvbmVudDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBwdWJsaWMgZ2V0dGVyIGZvciBkb2NzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzRW5hYmxlZCA9IHRydWU7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIG1haW4gYXBwbGljYXRpb24gaXMgY3VycmVudGx5IHNob3dpbmcgYSBidXN5IHN0YXRlIHRoYXQgYmxvY2tzIGFsbCB1c2VyIGludGVyYWN0aW9uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RhbCBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIGluaXRpYWxpemVkIG9ubHkgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLlxyXG4gICAgICpcclxuICAgICAqIChUbyBhcHBlbmQgdGhlIGJ1c3kgc3RhdGUgZHluYW1pY2FsbHksIHdlIHVzZSB0aGUgUG9ydGFsIGNvbmNlcHQgZnJvbSB0aGUgYW5ndWxhciBtYXRlcmlhbCBsaWJyYXJ5KVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRQb3J0YWw6IENvbXBvbmVudFBvcnRhbDxCdXN5U3RhdGVCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RhbCBidXN5IHN0YXRlIGNvbnRhaW5lciB3aGVyZSB0aGUgY29tcG9uZW50IHdpbGwgYmUgYWRkZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbW9kYWxCdXN5U3RhdGVIb3N0OiBEb21Qb3J0YWxPdXRsZXQgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgbWFuYWdlciBpcyBjdXJyZW50bHkgc2hvd2luZyBhIHNuYWNrYmFyIGVsZW1lbnQgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzU2hvd2luZ1NuYWNrQmFyID0gZmFsc2U7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbnMgYSBsaXN0IG9mIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyLlxyXG4gICAgICogRWFjaCBpdGVtIGluIHRoaXMgbGlzdCBpcyBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCB3aGVuIGRpYWxvZyBpcyBjcmVhdGVkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGl0LlxyXG4gICAgICpcclxuICAgICAqIEVtcHR5IGxpc3QgbWVhbnMgbm8gZGlhbG9ncyBhcmUgY3VycmVudGx5IHZpc2libGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nczogc3RyaW5nW10gPSBbXTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgd2l0aCBhbGwgdGhlIE1hdERpYWxvZyBpbnN0YW5jZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBUaGUgbGlzdCB1c2VzIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBsaXN0IG9mIF9hY3RpdmVEaWFsb2dzIGhhc2ggdmFsdWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FjdGl2ZURpYWxvZ0luc3RhbmNlczogTWF0RGlhbG9nUmVmPERpYWxvZ0Jhc2VDb21wb25lbnQ+W10gPSBbXTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIHRvIHN0b3JlIHRoZSBpbml0aWFsaXplZCBSZW5kZXJlciAyIGluc3RhbmNlIHRoYXQgaXMgdXNlZCBieSB0aGlzIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIHdpbmRvdyBiZWZvcmV1bmxvYWQgZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQga2V5ZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRLZXlkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBtb3VzZWRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBwb2ludGVyZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtYXRTbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuXHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhpcyBkaWFsb2cgc2VydmljZSBpcyBlbmFibGVkIG9yIG5vdC4gSWYgZGlhbG9nIHNlcnZpY2UgaXMgZGlzYWJsZWQsIG5vbmUgb2YgaXQncyBmZWF0dXJlcyB3aWxsIHdvcmtcclxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBibG9jayBhbGwgZGlhbG9nIGZlYXR1cmVzIG5vcm1hbGx5IHdoZW4gc2h1dHRpbmcgZG93biB0aGUgYXBwbGljYXRpb25cclxuICAgICAqXHJcbiAgICAgKiBVc2Ugd2l0aCBjYXV0aW9uLiBXaGVuIHRoaXMgaXMgc2V0IHRvIGZhbHNlLCBkaWFsb2cgc2VydmljZSBzdG9wcyB3b3JraW5nLlxyXG4gICAgICovXHJcbiAgICBzZXQgaXNFbmFibGVkKHY6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHYgPT09IHRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5faXNFbmFibGVkID0gdjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIGEgd2FybmluZyB0aGF0IHdpbGwgYmUgc2hvd24gdG8gdGhlIHVzZXIgd2hlbiBoZS9zaGUgdHJpZXMgdG8gY2xvc2UgdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAgICogVGhpcyB3YXJuaW5nIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIGNvbnRpbnVlIHdpdGggdGhlIGV4aXQgcHJvY2VzcyBvciBjYW5jZWwgaXQuXHJcbiAgICAgKiBUaGUgc3BlY2lmaWMgdGV4dHMgb2YgdGhpcyBtZXNzYWdlIGFyZSBhIGdlbmVyaWMgb25lcyBhbmQgY2Fubm90IGJlIGNoYW5nZWQuXHJcbiAgICAgKlxyXG4gICAgICogSU1QT1JUQU5UOiBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgbWFpbiBhcHBsaWNhdGlvbiBoYXMgYmVlbiBpbml0aWFsaXplZCBpbiBvcmRlciB0byB3b3JrLFxyXG4gICAgICogb3RoZXJ3aXNlIGl0IHdpbGwgZG8gbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgYWRkQ2xvc2VBcHBsaWNhdGlvbldhcm5pbmcoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdiZWZvcmV1bmxvYWQnLFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiBldmVudC5yZXR1cm5WYWx1ZSA9IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGNsb3NlIGFwcGxpY2F0aW9uIHdhcm5pbmcgbWVzc2FnZSBpZiBwcmV2aW91c2x5IGFzc2lnbmVkXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUNsb3NlQXBwbGljYXRpb25XYXJuaW5nKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hhbmdlIHRoZSBhcHBsaWNhdGlvbiB2aXN1YWwgYXBwZWFyYW5jZSBzbyB0aGUgdXNlciBwZXJjZWl2ZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gaXNcclxuICAgICAqIGN1cnJlbnRseSBidXN5LiBXaGlsZSBtb2RhbCBidXN5IHN0YXRlIGlzIGVuYWJsZWQsIG5vIHVzZXIgaW5wdXQgaXMgcG9zc2libGUgbmVpdGhlciB2aWFcclxuICAgICAqIGtleWJvYXJkLCBtb3VzZSBvciB0b3VjaC4gVXNlIHRoaXMgc3RhdGUgd2hlbiBwZXJmb3JtaW5nIHNlcnZlciByZXF1ZXN0cyBvciBvcGVyYXRpb25zIHRoYXRcclxuICAgICAqIG11c3QgYmxvY2sgdGhlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYXBwbGljYXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogTm90ZTogV2UgY2FuIG1vZGlmeSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBzaG93biBieSB0aGlzIG1ldGhvZC4gVG8gZG8gaXQsIHdlIG11c3RcclxuICAgICAqIHNldCB0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzIHByb3BlcnR5IHdpdGggb3VyIG93biBjdXN0b20gYnVzeSBzdGF0ZSBjb21wb25lbnQgY2xhc3MuIChXZSBjYW4gZG8gaXQgYXRcclxuICAgICAqIG91ciBtYWluIGFwcGxpY2F0aW9uIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBmb3IgZXhhbXBsZSkuIE91ciBjdXN0b20gY29tcG9uZW50IG11c3QgZXh0ZW5kIHRoZVxyXG4gICAgICogQnVzeVN0YXRlQmFzZUNvbXBvbmVudCBvbmUgdG8gYWRkIGl0cyBvd24gdmlzdWFsIGFwcGVhcmFuY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSB0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzXHJcbiAgICAgKi9cclxuICAgIGFkZE1vZGFsQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24oKTtcclxuXHJcbiAgICAgICAgLy8gRHluYW1pY2FsbHkgY3JlYXRlIHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCByZWZlcmVuY2UgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRQb3J0YWwgPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzcyk7XHJcblxyXG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBQb3J0YWxIb3N0IHdpdGggZG9jdW1lbnQuYm9keSBhcyBpdHMgYW5jaG9yIGVsZW1lbnRcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAodGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0IGFzIERvbVBvcnRhbE91dGxldCkuYXR0YWNoKHRoaXMuX2NvbXBvbmVudFBvcnRhbCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBsb2NrZWQgaW4gYSBtb2RhbCBidXN5IHN0YXRlIChjYXVzZWQgYnkgYW4gYWRkTW9kYWxCdXN5U3RhdGUoKSBjYWxsKVxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaG93aW5nQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgYXBwbGljYXRpb24gYnVzeSBzdGF0ZSBhbmQgcmVzdG9yZSBpdCBiYWNrIHRvIG5vcm1hbCB1c2VyIGludGVyYWN0aW9uXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZU1vZGFsQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCAhdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UG9ydGFsICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAodGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0IGFzIERvbVBvcnRhbE91dGxldCkuZGV0YWNoKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9lbmFibGVVc2VySW50ZXJhY3Rpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gYWRhcHQgZnJvbSBUUyB2ZXJzaW9uXHJcbiAgICAgKi9cclxuICAgIGFkZFRvb2xUaXAoKSB7XHJcblxyXG4gICAgICAgIC8vIFRPRE8gLSBhZGFwdCBmcm9tIFRTIHZlcnNpb25cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgbm9uIG1vZGFsIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlciAoT25seSBvbmUgc25hY2stYmFyIGNhbiBldmVyIGJlIG9wZW5lZCBhdCB0aGUgc2FtZSB0aW1lKS5cclxuICAgICAqXHJcbiAgICAgKiBTbmFja2JhcnMgaW5mb3JtIHVzZXJzIG9mIGEgcHJvY2VzcyB0aGF0IGFuIGFwcCBoYXMgcGVyZm9ybWVkIG9yIHdpbGwgcGVyZm9ybS4gVGhleSBhcHBlYXIgdGVtcG9yYXJpbHksIHRvd2FyZHMgdGhlIGJvdHRvbSBvciB0b3Agb2YgdGhlIHNjcmVlbi5cclxuICAgICAqIFRoZXkgc2hvdWxkbuKAmXQgaW50ZXJydXB0IHRoZSB1c2VyIGV4cGVyaWVuY2UsIGFuZCB0aGV5IGRvbuKAmXQgcmVxdWlyZSB1c2VyIGlucHV0IHRvIGRpc2FwcGVhci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIEEgTWF0U25hY2tCYXJDb25maWcgaW5zdGFuY2Ugd2l0aCB0aGUgY3VzdG9taXphdGlvbnMgd2Ugd2FudCBmb3IgdGhpcyBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gc2hvdyBvbiB0aGUgc25hY2tiYXJcclxuICAgICAqIEBwYXJhbSBhY3Rpb24gSWYgbm90IGVtcHR5LCB0aGUgdGV4dCB0byBwbGFjZSBvbiB0aGUgc25hY2tiYXIgY29uZmlybWF0aW9uIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIGFjdGlvbkNhbGxiYWNrIEEgbWV0aG9kIHRvIGV4ZWN1dGUgb25jZSB0aGUgdXNlciBjbGlja3MgaW50byB0aGUgYWN0aW9uIGJ1dHRvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHZvaWRcclxuICAgICAqL1xyXG4gICAgYWRkU25hY2tCYXIoY29uZmlnOiBNYXRTbmFja0JhckNvbmZpZywgbWVzc2FnZTogc3RyaW5nLCBhY3Rpb24gPSAnJywgYWN0aW9uQ2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5faXNTaG93aW5nU25hY2tCYXIpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHNob3cgYSBzbmFja2JhciB3aGlsZSBhbm90aGVyIG9uZSBpcyBzdGlsbCB2aXNpYmxlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdTbmFja0JhciA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHNuYWNrQmFyUmVmID0gdGhpcy5tYXRTbmFja0Jhci5vcGVuKG1lc3NhZ2UsIGFjdGlvbiA9PT0gJycgPyB1bmRlZmluZWQgOiBhY3Rpb24sIGNvbmZpZyk7XHJcblxyXG4gICAgICAgIGlmIChhY3Rpb25DYWxsYmFjayAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgc25hY2tCYXJSZWYub25BY3Rpb24oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGFjdGlvbkNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IHNob3dpbmcgYSBzbmFja2JhciBvciBub3RcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2hvd2luZ1NuYWNrQmFyKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93aW5nU25hY2tCYXI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgdGhlIHNuYWNrIGJhciBkaWFsb2cgaWYgaXQgZXhpc3RzLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIHNuYWNrYmFyIGlzIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlU25hY2tCYXIoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8ICF0aGlzLl9pc1Nob3dpbmdTbmFja0Jhcikge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5kaXNtaXNzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIGRpYWxvZyB3aXRoIG9uZSBvciBtb3JlIG9wdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjbG9zZSBpdC4gV2UgY2FuIHVzZSBhbnkgb2YgdGhlIHByZWRlZmluZWQgZGlhbG9nIHR5cGVzIHRoYXQgYXJlIGJ1bmRsZWQgd2l0aFxyXG4gICAgICogdGhpcyBsaWJyYXJ5IG9yIGV4dGVuZCBEaWFsb2dCYXNlQ29tcG9uZW50IHRvIGNyZWF0ZSBvdXIgb3duIGN1c3RvbSBvbmVzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkaWFsb2dDb21wb25lbnRDbGFzcyBBIGNsYXNzIGZvciBhIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgRGlhbG9nQmFzZUNvbXBvbmVudCwgd2hpY2ggd2lsbCBiZSB0aGUgZGlhbG9nIHRoYXQgaXMgc2hvd24gdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGlmZmVyZW50IHZpc3VhbCBhbmQgdGV4dHVhbCBvcHRpb25zIHRoYXQgdGhpcyBkaWFsb2cgYWxsb3dzOlxyXG4gICAgICogICAgICAgICAgICAtIHdpZHRoOiBTcGVjaWZ5IHRoZSBjc3MgdmFsdWUgZm9yIHRoZSBkZWZhdWx0IGRpYWxvZyB3aWR0aC4gQXMgdGhlIGRpYWxvZyBpcyByZXNwb25zaXZlLCB0aGUgdmFsdWUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XHJcbiAgICAgKiAgICAgICAgICAgICAgcmVkdWNlZCBpZiB0aGUgYXZhaWxhYmxlIHNjcmVlbiBpcyBub3QgZW5vdWdoLCBhbmQgd2lsbCByZWFjaCB0aGUgZGVzaXJlZCB2YWx1ZSBvdGhlcndpc2UuIFdlIGNhbiBzZXQgYW55IGNzcyB1bml0IGxpa2UgcGl4ZWxzLCBcclxuICAgICAqICAgICAgICAgICAgICAlLCB2aCwgdncsIG9yIGFueSBvdGhlci4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4V2lkdGg6IERlZmluZXMgdGhlIG1heGltdW0gd2lkdGggdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSByZWdhcmRpbmcgdGhlIHZpZXdwb3J0LiBXZSBjYW4gc3BlY2lmeSBpdCBpbiAlIG9yIHZ3LCBqdXN0IGxpa2UgaXMgZG9uZSBpblxyXG4gICAgICogICAgICAgICAgICAgIGNzcy4gQnkgZGVmYXVsdCBpdCBpcyBkZWZpbmVkIGFzIDk2dncsIHdoaWNoIHdpbGwgZml0IDk2JSBvZiB0aGUgdmlld3BvcnQgb24gc21hbGwgZGV2aWNlc1xyXG4gICAgICogICAgICAgICAgICAtIGhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4SGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtb2RhbDogVHJ1ZSAoZGVmYXVsdCkgaWYgc2VsZWN0aW5nIGFuIG9wdGlvbiBpcyBtYW5kYXRvcnkgdG8gY2xvc2UgdGhlIGRpYWxvZywgZmFsc2UgaWYgdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkXHJcbiAgICAgKiAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgY2xpY2tpbmcgb3V0c2lkZSBpdCBcclxuICAgICAqICAgICAgICAgICAgLSB0ZXh0czogQSBsaXN0IHdpdGggc3RyaW5ncyBjb250YWluaW5nIHRoZSBkaWFsb2cgdGV4dHMsIHNvcnRlZCBieSBpbXBvcnRhbmNlLiBXaGVuIGRpYWxvZyBoYXMgYSB0aXRsZSwgdGhpcyBzaG91bGRcclxuICAgICAqICAgICAgICAgICAgICBiZSBwbGFjZWQgZmlyc3QsIHN1YnRpdGxlIHNlY29uZCBhbmQgc28gKEVhY2ggZGlhbG9nIG1heSBhY2NlcHQgZGlmZmVyZW50IG51bWJlciBvZiB0ZXh0cykuXHJcbiAgICAgKiAgICAgICAgICAgIC0gb3B0aW9uczogQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYnV0dG9uIGNhcHRpb25zIGZvciBlYWNoIG9uZSBvZiB0aGUgYWNjZXB0ZWQgZGlhbG9nIG9wdGlvbnNcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZCBhbmQgd2lsbCByZWNlaXZlIGEgc2VsZWN0aW9uIG9iamVjdCB3aXRoIHRoZSBudW1lcmljIGluZGV4IGFuZCB2YWx1ZSBmb3JcclxuICAgICAqICAgICAgICB0aGUgb3B0aW9uIHRoYXQncyBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLiBpZiBubyBvcHRpb24gd2FzIHNlbGVjdGVkLCBpbmRleCB3aWxsIGJlIC0xIGFuZCB2YWx1ZSBudWxsXHJcbiAgICAgKi9cclxuICAgIGFkZERpYWxvZyhkaWFsb2dDb21wb25lbnRDbGFzczogVHlwZTxEaWFsb2dCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7d2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWw/OiBib29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz86IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogc3RyaW5nW119LCBcclxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbCB8ICgoc2VsZWN0aW9uOiB7aW5kZXg6bnVtYmVyLCB2YWx1ZT86IGFueX0pID0+IHZvaWQpID0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBub24gc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgICAgICBwcm9wZXJ0aWVzLm1vZGFsID0gcHJvcGVydGllcy5tb2RhbCA/PyB0cnVlO1xyXG4gICAgICAgIHByb3BlcnRpZXMudGV4dHMgPSBwcm9wZXJ0aWVzLnRleHRzID8/IFtdO1xyXG4gICAgICAgIHByb3BlcnRpZXMub3B0aW9ucyA9IHByb3BlcnRpZXMub3B0aW9ucyA/PyBbXTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgYSBzdHJpbmcgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBkaWFsb2cgb24gdGhlIGxpc3Qgb2YgYWN0aXZlIGRpYWxvZ3NcclxuICAgICAgICBjb25zdCBkaWFsb2dIYXNoID0gcHJvcGVydGllcy50ZXh0cy5qb2luKCcnKSArIHByb3BlcnRpZXMub3B0aW9ucy5qb2luKCcnKSArIGRpYWxvZ0NvbXBvbmVudENsYXNzLm5hbWU7XHJcblxyXG4gICAgICAgIC8vIGlkZW50aWNhbCBkaWFsb2dzIHdvbid0IGJlIGFsbG93ZWQgYXQgdGhlIHNhbWUgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVEaWFsb2dzLmluY2x1ZGVzKGRpYWxvZ0hhc2gpKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGRpYWxvZ0NvbXBvbmVudENsYXNzLCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBwcm9wZXJ0aWVzLndpZHRoID8/IFwiNTAlXCIsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHByb3BlcnRpZXMubW9kYWwsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiAhcHJvcGVydGllcy5tb2RhbCxcclxuICAgICAgICAgICAgZGF0YTogeyB0ZXh0czogcHJvcGVydGllcy50ZXh0cywgb3B0aW9uczogcHJvcGVydGllcy5vcHRpb25zIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzLnB1c2goZGlhbG9nSGFzaCk7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLnB1c2goZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoc2VsZWN0aW9uOntpbmRleDpudW1iZXIsIHZhbHVlPzphbnl9KSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gQXJyYXlVdGlscy5yZW1vdmVFbGVtZW50KHRoaXMuX2FjdGl2ZURpYWxvZ3MsIGRpYWxvZ0hhc2gpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMgPSBBcnJheVV0aWxzLnJlbW92ZUVsZW1lbnQodGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLCBkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICAgICAgaWYoIXByb3BlcnRpZXMubW9kYWwgJiYgc2VsZWN0aW9uID09PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgaW5kZXg6IC0xIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAoIU51bWVyaWNVdGlscy5pc0ludGVnZXIoc2VsZWN0aW9uLmluZGV4KSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2xvc2VEaWFsb2coKSBleHBlY3RzIGluZGV4IHRvIGJlIGFuIGludGVnZXJgKTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYoc2VsZWN0aW9uLmluZGV4ID49IDAgJiYgc2VsZWN0aW9uLnZhbHVlID09PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24udmFsdWUgPSBwcm9wZXJ0aWVzLm9wdGlvbnMhW3NlbGVjdGlvbi5pbmRleF07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKGNhbGxiYWNrIGFzICgoc2VsZWN0aW9uOntpbmRleDpudW1iZXIsIHZhbHVlPzphbnl9KSA9PiB2b2lkKSkoc2VsZWN0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgYWxsIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQWxsRGlhbG9ncygpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZGlhbG9nUmVmIG9mIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcykge1xyXG5cclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKHtpbmRleDotMX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gW107XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggYSBjYWxlbmRhciB0byBsZXQgdGhlIHVzZXIgcGljayBhIGRhdGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVudCB2aXN1YWwgYW5kIHRleHR1YWwgb3B0aW9ucyB0aGF0IHRoaXMgZGlhbG9nIGFsbG93czpcclxuICAgICAqICAgICAgICAgICAgLSB3aWR0aDogU3BlY2lmeSB0aGUgY3NzIHZhbHVlIGZvciB0aGUgZGVmYXVsdCBkaWFsb2cgd2lkdGguIEFzIHRoZSBkaWFsb2cgaXMgcmVzcG9uc2l2ZSwgdGhlIHZhbHVlIHdpbGwgYmUgYXV0b21hdGljYWxseVxyXG4gICAgICogICAgICAgICAgICAgIHJlZHVjZWQgaWYgdGhlIGF2YWlsYWJsZSBzY3JlZW4gaXMgbm90IGVub3VnaCwgYW5kIHdpbGwgcmVhY2ggdGhlIGRlc2lyZWQgdmFsdWUgb3RoZXJ3aXNlLiBXZSBjYW4gc2V0IGFueSBjc3MgdW5pdCBsaWtlIHBpeGVscywgXHJcbiAgICAgKiAgICAgICAgICAgICAgJSwgdmgsIHZ3LCBvciBhbnkgb3RoZXIuIEZvciBleGFtcGxlOiAnNDAwcHgnLCAnNTAlJywgZXRjLlxyXG4gICAgICogICAgICAgICAgICAtIG1heFdpZHRoOiBEZWZpbmVzIHRoZSBtYXhpbXVtIHdpZHRoIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgcmVnYXJkaW5nIHRoZSB2aWV3cG9ydC4gV2UgY2FuIHNwZWNpZnkgaXQgaW4gJSBvciB2dywganVzdCBsaWtlIGlzIGRvbmUgaW5cclxuICAgICAqICAgICAgICAgICAgICBjc3MuIEJ5IGRlZmF1bHQgaXQgaXMgZGVmaW5lZCBhcyA5NnZ3LCB3aGljaCB3aWxsIGZpdCA5NiUgb2YgdGhlIHZpZXdwb3J0IG9uIHNtYWxsIGRldmljZXNcclxuICAgICAqICAgICAgICAgICAgLSBoZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1heEhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbW9kYWw6IFRydWUgKGRlZmF1bHQpIGlmIHNlbGVjdGluZyBhbiBvcHRpb24gaXMgbWFuZGF0b3J5IHRvIGNsb3NlIHRoZSBkaWFsb2csIGZhbHNlIGlmIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZFxyXG4gICAgICogICAgICAgICAgICAgIGJ5IHRoZSB1c2VyIGNsaWNraW5nIG91dHNpZGUgaXQgXHJcbiAgICAgKiAgICAgICAgICAgIC0gdGl0bGU6IEFuIG9wdGlvbmFsIGRpYWxvZyB0aXRsZVxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkLiBJdCB3aWxsIHJlY2VpdmUgYSBEYXRlKCkgb2JqZWN0IHNlbGVjdGVkIGJ5IHRoZSB1c2VyIG9yIG51bGwgaWYgbm8gc2VsZWN0aW9uIGhhcHBlbmVkXHJcbiAgICAgKi9cclxuICAgIGFkZERhdGVTZWxlY3Rpb25EaWFsb2cocHJvcGVydGllczoge3dpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbD86IGJvb2xlYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPzogc3RyaW5nfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgoc2VsZWN0ZWREYXRlOiBudWxsIHwgRGF0ZSkgPT4gdm9pZCkpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGREaWFsb2coRGlhbG9nRGF0ZVNlbGVjdGlvbkNvbXBvbmVudCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHByb3BlcnRpZXMud2lkdGggPz8gXCI1MCVcIixcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwcm9wZXJ0aWVzLmhlaWdodCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBwcm9wZXJ0aWVzLm1heEhlaWdodCA/PyBcIjkydndcIixcclxuICAgICAgICAgICAgICAgIG1vZGFsOiBwcm9wZXJ0aWVzLm1vZGFsID8/IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdGV4dHM6IFtwcm9wZXJ0aWVzLnRpdGxlID8/ICcnXSAgIFxyXG4gICAgICAgICAgICB9LChzZWxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZWN0aW9uLmluZGV4ID09PSAtMSA/IG51bGwgOiAoc2VsZWN0aW9uLnZhbHVlIGFzIERhdGUpKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCbG9jayBhbGwgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGFwcGxpY2F0aW9uIChrZXlib2FyZCwgdG91Y2gsIG1vdXNlLCAuLi4pXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleWRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSB0aGUgdXNlciBpbnRlcmFjdGlvbnMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZGlzYWJsZWQgd2l0aCBfZGlzYWJsZVVzZXJJbnRlcmFjdGlvbiBtZXRob2RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZW5hYmxlVXNlckludGVyYWN0aW9uKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBcUcsTUFBTSxlQUFlLENBQUM7QUFHcEosT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUcvRTs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEscUJBQXFCO0lBeUZwRCxZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUVqRixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFOVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7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d0JBQXdCLEtBQUssSUFBSSxFQUFFO1lBRXhDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEVBQUU7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs4R0FuaUJRLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQXJyYXlVdGlscywgTnVtZXJpY1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgVHlwZSwgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyLCBNYXRTbmFja0JhckNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvYnVzeS1zdGF0ZS1iYXNlL2J1c3ktc3RhdGUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtc2VsZWN0aW9uL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL1NpbmdsZXRvbmVTdHJpY3RDbGFzcyc7XG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBhcHBsaWNhdGlvbiBtb2RhbCBhbmQgbm9uIG1vZGFsIGZsb2F0aW5nIGVsZW1lbnRzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSBleHRlbmRzIFNpbmdsZXRvbmVTdHJpY3RDbGFzcyB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCB0byBtb2RpZnkgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgc2hvd24gYnkgZGVmYXVsdCBieSB0aGUgYWRkTW9kYWxCdXN5U3RhdGUoKSBtZXRob2QuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSB0aGlzLmFkZE1vZGFsQnVzeVN0YXRlKClcclxuICAgICAqL1xyXG4gICAgY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3M6IFR5cGU8QnVzeVN0YXRlQmFzZUNvbXBvbmVudD4gPSBCdXN5U3RhdGVCYXNlQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIHB1YmxpYyBnZXR0ZXIgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNFbmFibGVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgbWFpbiBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIGJ1c3kgc3RhdGUgdGhhdCBibG9ja3MgYWxsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nQnVzeVN0YXRlID0gZmFsc2U7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgaW5pdGlhbGl6ZWQgb25seSB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuXHJcbiAgICAgKlxyXG4gICAgICogKFRvIGFwcGVuZCB0aGUgYnVzeSBzdGF0ZSBkeW5hbWljYWxseSwgd2UgdXNlIHRoZSBQb3J0YWwgY29uY2VwdCBmcm9tIHRoZSBhbmd1bGFyIG1hdGVyaWFsIGxpYnJhcnkpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIG1vZGFsIGJ1c3kgc3RhdGUgY29udGFpbmVyIHdoZXJlIHRoZSBjb21wb25lbnQgd2lsbCBiZSBhZGRlZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tb2RhbEJ1c3lTdGF0ZUhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBtYW5hZ2VyIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgc25hY2tiYXIgZWxlbWVudCBvciBub3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgb2YgdGhlIGRpYWxvZ3MgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBFYWNoIGl0ZW0gaW4gdGhpcyBsaXN0IGlzIGEgaGFzaCB0aGF0IGlzIGNvbXB1dGVkIHdoZW4gZGlhbG9nIGlzIGNyZWF0ZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgaXQuXHJcbiAgICAgKlxyXG4gICAgICogRW1wdHkgbGlzdCBtZWFucyBubyBkaWFsb2dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEaWFsb2dzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIGEgbGlzdCB3aXRoIGFsbCB0aGUgTWF0RGlhbG9nIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci5cclxuICAgICAqIFRoZSBsaXN0IHVzZXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGxpc3Qgb2YgX2FjdGl2ZURpYWxvZ3MgaGFzaCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nSW5zdGFuY2VzOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD5bXSA9IFtdO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgdG8gc3RvcmUgdGhlIGluaXRpYWxpemVkIFJlbmRlcmVyIDIgaW5zdGFuY2UgdGhhdCBpcyB1c2VkIGJ5IHRoaXMgY2xhc3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgd2luZG93IGJlZm9yZXVubG9hZCBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBrZXlkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudEtleWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IG1vdXNlZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IHBvaW50ZXJkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG5cclxuXHRcdHN1cGVyKERpYWxvZ1NlcnZpY2UpO1xyXG5cclxuICAgICAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGlzIGRpYWxvZyBzZXJ2aWNlIGlzIGVuYWJsZWQgb3Igbm90LiBJZiBkaWFsb2cgc2VydmljZSBpcyBkaXNhYmxlZCwgbm9uZSBvZiBpdCdzIGZlYXR1cmVzIHdpbGwgd29ya1xyXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGJsb2NrIGFsbCBkaWFsb2cgZmVhdHVyZXMgbm9ybWFsbHkgd2hlbiBzaHV0dGluZyBkb3duIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICpcclxuICAgICAqIFVzZSB3aXRoIGNhdXRpb24uIFdoZW4gdGhpcyBpcyBzZXQgdG8gZmFsc2UsIGRpYWxvZyBzZXJ2aWNlIHN0b3BzIHdvcmtpbmcuXHJcbiAgICAgKi9cclxuICAgIHNldCBpc0VuYWJsZWQodjogYm9vbGVhbikge1xyXG5cclxuICAgICAgICBpZiAodiA9PT0gdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSB2O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZXMgYSB3YXJuaW5nIHRoYXQgd2lsbCBiZSBzaG93biB0byB0aGUgdXNlciB3aGVuIGhlL3NoZSB0cmllcyB0byBjbG9zZSB0aGUgYXBwbGljYXRpb24uXHJcbiAgICAgKiBUaGlzIHdhcm5pbmcgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gY29udGludWUgd2l0aCB0aGUgZXhpdCBwcm9jZXNzIG9yIGNhbmNlbCBpdC5cclxuICAgICAqIFRoZSBzcGVjaWZpYyB0ZXh0cyBvZiB0aGlzIG1lc3NhZ2UgYXJlIGEgZ2VuZXJpYyBvbmVzIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC5cclxuICAgICAqXHJcbiAgICAgKiBJTVBPUlRBTlQ6IFRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBtYWluIGFwcGxpY2F0aW9uIGhhcyBiZWVuIGluaXRpYWxpemVkIGluIG9yZGVyIHRvIHdvcmssXHJcbiAgICAgKiBvdGhlcndpc2UgaXQgd2lsbCBkbyBub3RoaW5nLlxyXG4gICAgICovXHJcbiAgICBhZGRDbG9zZUFwcGxpY2F0aW9uV2FybmluZygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9IHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2JlZm9yZXVubG9hZCcsXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50LnJldHVyblZhbHVlID0gdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgY2xvc2UgYXBwbGljYXRpb24gd2FybmluZyBtZXNzYWdlIGlmIHByZXZpb3VzbHkgYXNzaWduZWRcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQ2xvc2VBcHBsaWNhdGlvbldhcm5pbmcoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2UgdGhlIGFwcGxpY2F0aW9uIHZpc3VhbCBhcHBlYXJhbmNlIHNvIHRoZSB1c2VyIHBlcmNlaXZlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpc1xyXG4gICAgICogY3VycmVudGx5IGJ1c3kuIFdoaWxlIG1vZGFsIGJ1c3kgc3RhdGUgaXMgZW5hYmxlZCwgbm8gdXNlciBpbnB1dCBpcyBwb3NzaWJsZSBuZWl0aGVyIHZpYVxyXG4gICAgICoga2V5Ym9hcmQsIG1vdXNlIG9yIHRvdWNoLiBVc2UgdGhpcyBzdGF0ZSB3aGVuIHBlcmZvcm1pbmcgc2VydmVyIHJlcXVlc3RzIG9yIG9wZXJhdGlvbnMgdGhhdFxyXG4gICAgICogbXVzdCBibG9jayB0aGUgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBXZSBjYW4gbW9kaWZ5IHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIHNob3duIGJ5IHRoaXMgbWV0aG9kLiBUbyBkbyBpdCwgd2UgbXVzdFxyXG4gICAgICogc2V0IHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3MgcHJvcGVydHkgd2l0aCBvdXIgb3duIGN1c3RvbSBidXN5IHN0YXRlIGNvbXBvbmVudCBjbGFzcy4gKFdlIGNhbiBkbyBpdCBhdFxyXG4gICAgICogb3VyIG1haW4gYXBwbGljYXRpb24gY29tcG9uZW50IGNvbnN0cnVjdG9yIGZvciBleGFtcGxlKS4gT3VyIGN1c3RvbSBjb21wb25lbnQgbXVzdCBleHRlbmQgdGhlXHJcbiAgICAgKiBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IG9uZSB0byBhZGQgaXRzIG93biB2aXN1YWwgYXBwZWFyYW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3NcclxuICAgICAqL1xyXG4gICAgYWRkTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8IHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHJlZmVyZW5jZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFBvcnRhbCA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIFBvcnRhbEhvc3Qgd2l0aCBkb2N1bWVudC5ib2R5IGFzIGl0cyBhbmNob3IgZWxlbWVudFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZixcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5hdHRhY2godGhpcy5fY29tcG9uZW50UG9ydGFsKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IGxvY2tlZCBpbiBhIG1vZGFsIGJ1c3kgc3RhdGUgKGNhdXNlZCBieSBhbiBhZGRNb2RhbEJ1c3lTdGF0ZSgpIGNhbGwpXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1Nob3dpbmdCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBhcHBsaWNhdGlvbiBidXN5IHN0YXRlIGFuZCByZXN0b3JlIGl0IGJhY2sgdG8gbm9ybWFsIHVzZXIgaW50ZXJhY3Rpb25cclxuICAgICAqL1xyXG4gICAgcmVtb3ZlTW9kYWxCdXN5U3RhdGUoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8ICF0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRQb3J0YWwgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICh0aGlzLl9tb2RhbEJ1c3lTdGF0ZUhvc3QgYXMgRG9tUG9ydGFsT3V0bGV0KS5kZXRhY2goKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRPRE8gLSBhZGFwdCBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4gICAgYWRkVG9vbFRpcCgpIHtcclxuXHJcbiAgICAgICAgLy8gVE9ETyAtIGFkYXB0IGZyb20gVFMgdmVyc2lvblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBub24gbW9kYWwgc25hY2tiYXIgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyIChPbmx5IG9uZSBzbmFjay1iYXIgY2FuIGV2ZXIgYmUgb3BlbmVkIGF0IHRoZSBzYW1lIHRpbWUpLlxyXG4gICAgICpcclxuICAgICAqIFNuYWNrYmFycyBpbmZvcm0gdXNlcnMgb2YgYSBwcm9jZXNzIHRoYXQgYW4gYXBwIGhhcyBwZXJmb3JtZWQgb3Igd2lsbCBwZXJmb3JtLiBUaGV5IGFwcGVhciB0ZW1wb3JhcmlseSwgdG93YXJkcyB0aGUgYm90dG9tIG9yIHRvcCBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICogVGhleSBzaG91bGRu4oCZdCBpbnRlcnJ1cHQgdGhlIHVzZXIgZXhwZXJpZW5jZSwgYW5kIHRoZXkgZG9u4oCZdCByZXF1aXJlIHVzZXIgaW5wdXQgdG8gZGlzYXBwZWFyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb25maWcgQSBNYXRTbmFja0JhckNvbmZpZyBpbnN0YW5jZSB3aXRoIHRoZSBjdXN0b21pemF0aW9ucyB3ZSB3YW50IGZvciB0aGlzIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBzaG93IG9uIHRoZSBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIGFjdGlvbiBJZiBub3QgZW1wdHksIHRoZSB0ZXh0IHRvIHBsYWNlIG9uIHRoZSBzbmFja2JhciBjb25maXJtYXRpb24gYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uQ2FsbGJhY2sgQSBtZXRob2QgdG8gZXhlY3V0ZSBvbmNlIHRoZSB1c2VyIGNsaWNrcyBpbnRvIHRoZSBhY3Rpb24gYnV0dG9uLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gdm9pZFxyXG4gICAgICovXHJcbiAgICBhZGRTbmFja0Jhcihjb25maWc6IE1hdFNuYWNrQmFyQ29uZmlnLCBtZXNzYWdlOiBzdHJpbmcsIGFjdGlvbiA9ICcnLCBhY3Rpb25DYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9pc1Nob3dpbmdTbmFja0Jhcikge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gc2hvdyBhIHNuYWNrYmFyIHdoaWxlIGFub3RoZXIgb25lIGlzIHN0aWxsIHZpc2libGUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc25hY2tCYXJSZWYgPSB0aGlzLm1hdFNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uID09PSAnJyA/IHVuZGVmaW5lZCA6IGFjdGlvbiwgY29uZmlnKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGlvbkNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICBzbmFja0JhclJlZi5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgYWN0aW9uQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgc2hvd2luZyBhIHNuYWNrYmFyIG9yIG5vdFxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaG93aW5nU25hY2tCYXIoKSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmdTbmFja0JhcjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JjZSB0aGUgcmVtb3ZhbCBvZiB0aGUgc25hY2sgYmFyIGRpYWxvZyBpZiBpdCBleGlzdHMuXHJcbiAgICAgKlxyXG4gICAgICogSWYgbm8gc25hY2tiYXIgaXMgY3VycmVudGx5IHZpc2libGUsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZ1xyXG4gICAgICovXHJcbiAgICByZW1vdmVTbmFja0JhcigpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgIXRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLmRpc21pc3MoKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nU25hY2tCYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggb25lIG9yIG1vcmUgb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNsb3NlIGl0LiBXZSBjYW4gdXNlIGFueSBvZiB0aGUgcHJlZGVmaW5lZCBkaWFsb2cgdHlwZXMgdGhhdCBhcmUgYnVuZGxlZCB3aXRoXHJcbiAgICAgKiB0aGlzIGxpYnJhcnkgb3IgZXh0ZW5kIERpYWxvZ0Jhc2VDb21wb25lbnQgdG8gY3JlYXRlIG91ciBvd24gY3VzdG9tIG9uZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0NvbXBvbmVudENsYXNzIEEgY2xhc3MgZm9yIGEgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50LCB3aGljaCB3aWxsIGJlIHRoZSBkaWFsb2cgdGhhdCBpcyBzaG93biB0byB0aGUgdXNlci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkaWZmZXJlbnQgdmlzdWFsIGFuZCB0ZXh0dWFsIG9wdGlvbnMgdGhhdCB0aGlzIGRpYWxvZyBhbGxvd3M6XHJcbiAgICAgKiAgICAgICAgICAgIC0gaWQ6IFRoZSBodG1sIHVuaXF1ZSBpZGVudGlmaWVyIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgb25jZSBjcmVhdGVkLiBJZiBub3Qgc3BlY2lmaWVkLCBubyBpZCB3aWxsIGJlIGV4cGxpY2l0bHkgc2V0XHJcbiAgICAgKiAgICAgICAgICAgIC0gd2lkdGg6IFNwZWNpZnkgdGhlIGNzcyB2YWx1ZSBmb3IgdGhlIGRlZmF1bHQgZGlhbG9nIHdpZHRoLiBBcyB0aGUgZGlhbG9nIGlzIHJlc3BvbnNpdmUsIHRoZSB2YWx1ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcclxuICAgICAqICAgICAgICAgICAgICByZWR1Y2VkIGlmIHRoZSBhdmFpbGFibGUgc2NyZWVuIGlzIG5vdCBlbm91Z2gsIGFuZCB3aWxsIHJlYWNoIHRoZSBkZXNpcmVkIHZhbHVlIG90aGVyd2lzZS4gV2UgY2FuIHNldCBhbnkgY3NzIHVuaXQgbGlrZSBwaXhlbHMsIFxyXG4gICAgICogICAgICAgICAgICAgICUsIHZoLCB2dywgb3IgYW55IG90aGVyLiBGb3IgZXhhbXBsZTogJzQwMHB4JywgJzUwJScsIGV0Yy5cclxuICAgICAqICAgICAgICAgICAgLSBtYXhXaWR0aDogRGVmaW5lcyB0aGUgbWF4aW11bSB3aWR0aCB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIHJlZ2FyZGluZyB0aGUgdmlld3BvcnQuIFdlIGNhbiBzcGVjaWZ5IGl0IGluICUgb3IgdncsIGp1c3QgbGlrZSBpcyBkb25lIGluXHJcbiAgICAgKiAgICAgICAgICAgICAgY3NzLiBCeSBkZWZhdWx0IGl0IGlzIGRlZmluZWQgYXMgOTZ2dywgd2hpY2ggd2lsbCBmaXQgOTYlIG9mIHRoZSB2aWV3cG9ydCBvbiBzbWFsbCBkZXZpY2VzXHJcbiAgICAgKiAgICAgICAgICAgIC0gaGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtYXhIZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1vZGFsOiBUcnVlIChkZWZhdWx0KSBpZiBzZWxlY3RpbmcgYW4gb3B0aW9uIGlzIG1hbmRhdG9yeSB0byBjbG9zZSB0aGUgZGlhbG9nLCBmYWxzZSBpZiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWRcclxuICAgICAqICAgICAgICAgICAgICBieSB0aGUgdXNlciBjbGlja2luZyBvdXRzaWRlIGl0IFxyXG4gICAgICogICAgICAgICAgICAtIHRleHRzOiBBIGxpc3Qgd2l0aCBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIGRpYWxvZyB0ZXh0cywgc29ydGVkIGJ5IGltcG9ydGFuY2UuIFdoZW4gZGlhbG9nIGhhcyBhIHRpdGxlLCB0aGlzIHNob3VsZFxyXG4gICAgICogICAgICAgICAgICAgIGJlIHBsYWNlZCBmaXJzdCwgc3VidGl0bGUgc2Vjb25kIGFuZCBzbyAoRWFjaCBkaWFsb2cgbWF5IGFjY2VwdCBkaWZmZXJlbnQgbnVtYmVyIG9mIHRleHRzKS5cclxuICAgICAqICAgICAgICAgICAgLSBvcHRpb25zOiBBIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBidXR0b24gY2FwdGlvbnMgZm9yIGVhY2ggb25lIG9mIHRoZSBhY2NlcHRlZCBkaWFsb2cgb3B0aW9uc1xyXG4gICAgICogICAgICAgICAgICAtIHZpZXdDb250YWluZXJSZWY6IFRoaXMgaXMgaW1wb3J0YW50IGlmIHdlIHdhbnQgdG8gcHJvcGFnYXRlIHByb3ZpZGVycyBmcm9tIGEgcGFyZW50IGNvbXBvbmVudCB0byB0aGlzIGRpYWxvZy4gV2UgbXVzdCBzcGVjaWZ5IFxyXG5cdCAqICAgICAgICAgICAgICB0aGlzIHJlZmVyZW5jZSB0byBtYWtlIHN1cmUgdGhlIHNhbWUgc2VydmljZXMgaW5qZWN0ZWQgb24gdGhlIHBhcmVudCBhcmUgYXZhaWxhYmxlIHRvbyBhdCB0aGUgY2hpbGQgZGlhbG9nIFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGFuZCB3aWxsIHJlY2VpdmUgYSBzZWxlY3Rpb24gb2JqZWN0IHdpdGggdGhlIG51bWVyaWMgaW5kZXggYW5kIHZhbHVlIGZvclxyXG4gICAgICogICAgICAgIHRoZSBvcHRpb24gdGhhdCdzIGJlZW4gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuIGlmIG5vIG9wdGlvbiB3YXMgc2VsZWN0ZWQsIGluZGV4IHdpbGwgYmUgLTEgYW5kIHZhbHVlIG51bGxcclxuICAgICAqL1xyXG4gICAgYWRkRGlhbG9nKGRpYWxvZ0NvbXBvbmVudENsYXNzOiBUeXBlPERpYWxvZ0Jhc2VDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtpZD86IHN0cmluZyxcclxuXHRcdFx0XHRcdFx0ICAgd2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWw/OiBib29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz86IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmfSwgXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6IG51bGwgfCAoKHNlbGVjdGlvbjoge2luZGV4Om51bWJlciwgdmFsdWU/OiBhbnl9KSA9PiB2b2lkKSA9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3Igbm9uIHNwZWNpZmllZCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgcHJvcGVydGllcy5tb2RhbCA9IHByb3BlcnRpZXMubW9kYWwgPz8gdHJ1ZTtcclxuICAgICAgICBwcm9wZXJ0aWVzLnRleHRzID0gcHJvcGVydGllcy50ZXh0cyA/PyBbXTtcclxuICAgICAgICBwcm9wZXJ0aWVzLm9wdGlvbnMgPSBwcm9wZXJ0aWVzLm9wdGlvbnMgPz8gW107XHJcblxyXG4gICAgICAgIC8vIEdlbmVyYXRlIGEgc3RyaW5nIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgZGlhbG9nIG9uIHRoZSBsaXN0IG9mIGFjdGl2ZSBkaWFsb2dzXHJcbiAgICAgICAgLy8gQSBkaWFsb2cgaXMgY29uc2lkZXJlZCBhcyB1bmlxdWUgaWYgdGhlIGRpYWxvZyBpZCBhbmQgdGV4dHMgYXJlIGV4YWN0bHkgdGhlIHNhbWUuIFdlIGRvIG5vdCB0YWtlIG9wdGlvbnMgaW50byBjb25zaWRlcmF0aW9uXHJcbiAgICAgICAgLy8gYXMgdGhlcmUgbWF5IGJlIGRpYWxvZ3Mgd2l0aCBhIGJpZyBhbW91bnQgb2Ygb3B0aW9ucyBhdmFpbGFibGUuXHJcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IChkaWFsb2dDb21wb25lbnRDbGFzcyBhcyBhbnkpLkRJQUxPR19DTEFTU19OQU1FO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGNsYXNzTmFtZSA9PT0gJycpe1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzdGF0aWMgcHJvcGVydHkgRElBTE9HX0NMQVNTX05BTUUgaXMgbm90IGRlZmluZWQgb3IgaXMgZW1wdHkgZm9yIHRoaXMgZGlhbG9nIGNvbXBvbmVudCAoJHtkaWFsb2dDb21wb25lbnRDbGFzc30pYCk7ICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZGlhbG9nSGFzaCA9IGNsYXNzTmFtZSArIHByb3BlcnRpZXMudGV4dHMuam9pbignJyk7XHJcblxyXG4gICAgICAgIC8vIGlkZW50aWNhbCBkaWFsb2dzIHdvbid0IGJlIGFsbG93ZWQgYXQgdGhlIHNhbWUgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVEaWFsb2dzLmluY2x1ZGVzKGRpYWxvZ0hhc2gpKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGRpYWxvZ0NvbXBvbmVudENsYXNzLCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBwcm9wZXJ0aWVzLndpZHRoID8/IFwiNTAlXCIsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHByb3BlcnRpZXMubW9kYWwsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiAhcHJvcGVydGllcy5tb2RhbCxcclxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogcHJvcGVydGllcy52aWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgICAgICBkYXRhOiB7IHRleHRzOiBwcm9wZXJ0aWVzLnRleHRzLCBvcHRpb25zOiBwcm9wZXJ0aWVzLm9wdGlvbnMgfVxyXG4gICAgICAgICAgfSk7ICAgICAgXHJcblx0XHRcclxuXHRcdC8vIEFzc2lnbiB0aGUgZGlhbG9nIElEIG9ubHkgaWYgc3BlY2lmaWNhbGx5IHNldCBvbiBwcm9wZXJ0aWVzXHJcblx0XHRpZihwcm9wZXJ0aWVzLmlkICYmIHByb3BlcnRpZXMuaWQgIT09IHVuZGVmaW5lZCl7XHJcblx0XHRcdFxyXG5cdFx0XHRkaWFsb2dSZWYuaWQgPSBwcm9wZXJ0aWVzLmlkO1xyXG5cdFx0fVxyXG5cdFx0XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncy5wdXNoKGRpYWxvZ0hhc2gpO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKHNlbGVjdGlvbjp7aW5kZXg6bnVtYmVyLCB2YWx1ZT86YW55fSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9ncyA9IEFycmF5VXRpbHMucmVtb3ZlRWxlbWVudCh0aGlzLl9hY3RpdmVEaWFsb2dzLCBkaWFsb2dIYXNoKTtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gQXJyYXlVdGlscy5yZW1vdmVFbGVtZW50KHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcywgZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgICAgIGlmKCFwcm9wZXJ0aWVzLm1vZGFsICYmIHNlbGVjdGlvbiA9PT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGluZGV4OiAtMSB9O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfWVsc2UgaWYgKCFOdW1lcmljVXRpbHMuaXNJbnRlZ2VyKHNlbGVjdGlvbi5pbmRleCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNsb3NlRGlhbG9nKCkgZXhwZWN0cyBpbmRleCB0byBiZSBhbiBpbnRlZ2VyYCk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHNlbGVjdGlvbi5pbmRleCA+PSAwICYmIHNlbGVjdGlvbi52YWx1ZSA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnZhbHVlID0gcHJvcGVydGllcy5vcHRpb25zIVtzZWxlY3Rpb24uaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIChjYWxsYmFjayBhcyAoKHNlbGVjdGlvbjp7aW5kZXg6bnVtYmVyLCB2YWx1ZT86YW55fSkgPT4gdm9pZCkpKHNlbGVjdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBkaWFsb2cgd2l0aCBhIGNhbGVuZGFyIHRvIGxldCB0aGUgdXNlciBwaWNrIGEgZGF0ZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGlmZmVyZW50IHZpc3VhbCBhbmQgdGV4dHVhbCBvcHRpb25zIHRoYXQgdGhpcyBkaWFsb2cgYWxsb3dzOlxyXG4gICAgICogICAgICAgICAgICAtIGlkOiBUaGUgaHRtbCB1bmlxdWUgaWRlbnRpZmllciB0aGF0IHRoZSBkaWFsb2cgd2lsbCBoYXZlIG9uY2UgY3JlYXRlZC4gSWYgbm90IHNwZWNpZmllZCwgbm8gaWQgd2lsbCBiZSBleHBsaWNpdGx5IHNldFxyXG4gICAgICogICAgICAgICAgICAtIHdpZHRoOiBTcGVjaWZ5IHRoZSBjc3MgdmFsdWUgZm9yIHRoZSBkZWZhdWx0IGRpYWxvZyB3aWR0aC4gQXMgdGhlIGRpYWxvZyBpcyByZXNwb25zaXZlLCB0aGUgdmFsdWUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XHJcbiAgICAgKiAgICAgICAgICAgICAgcmVkdWNlZCBpZiB0aGUgYXZhaWxhYmxlIHNjcmVlbiBpcyBub3QgZW5vdWdoLCBhbmQgd2lsbCByZWFjaCB0aGUgZGVzaXJlZCB2YWx1ZSBvdGhlcndpc2UuIFdlIGNhbiBzZXQgYW55IGNzcyB1bml0IGxpa2UgcGl4ZWxzLCBcclxuICAgICAqICAgICAgICAgICAgICAlLCB2aCwgdncsIG9yIGFueSBvdGhlci4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4V2lkdGg6IERlZmluZXMgdGhlIG1heGltdW0gd2lkdGggdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSByZWdhcmRpbmcgdGhlIHZpZXdwb3J0LiBXZSBjYW4gc3BlY2lmeSBpdCBpbiAlIG9yIHZ3LCBqdXN0IGxpa2UgaXMgZG9uZSBpblxyXG4gICAgICogICAgICAgICAgICAgIGNzcy4gQnkgZGVmYXVsdCBpdCBpcyBkZWZpbmVkIGFzIDk2dncsIHdoaWNoIHdpbGwgZml0IDk2JSBvZiB0aGUgdmlld3BvcnQgb24gc21hbGwgZGV2aWNlc1xyXG4gICAgICogICAgICAgICAgICAtIGhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4SGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtb2RhbDogVHJ1ZSAoZGVmYXVsdCkgaWYgc2VsZWN0aW5nIGFuIG9wdGlvbiBpcyBtYW5kYXRvcnkgdG8gY2xvc2UgdGhlIGRpYWxvZywgZmFsc2UgaWYgdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkXHJcbiAgICAgKiAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgY2xpY2tpbmcgb3V0c2lkZSBpdCBcclxuICAgICAqICAgICAgICAgICAgLSB0aXRsZTogQW4gb3B0aW9uYWwgZGlhbG9nIHRpdGxlXHJcbiAgICAgKiAgICAgICAgICAgIC0gdmlld0NvbnRhaW5lclJlZjogVGhpcyBpcyBpbXBvcnRhbnQgdG8gcHJvcGFnYXRlIHByb3ZpZGVycyBmcm9tIGEgcGFyZW50IGNvbXBvbmVudCB0byB0aGlzIGRpYWxvZy4gV2UgbXVzdCBzcGVjaWZ5IFxyXG5cdCAqICAgICAgICAgICAgICB0aGlzIHJlZmVyZW5jZSB0byBtYWtlIHN1cmUgdGhlIHNhbWUgc2VydmljZXMgaW5qZWN0ZWQgb24gdGhlIHBhcmVudCBhcmUgYXZhaWxhYmxlIHRvbyBhdCB0aGUgY2hpbGQgZGlhbG9nIFxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkLiBJdCB3aWxsIHJlY2VpdmUgYSBEYXRlKCkgb2JqZWN0IHNlbGVjdGVkIGJ5IHRoZSB1c2VyIG9yIG51bGwgaWYgbm8gc2VsZWN0aW9uIGhhcHBlbmVkXHJcbiAgICAgKi9cclxuICAgIGFkZERhdGVTZWxlY3Rpb25EaWFsb2cocHJvcGVydGllczoge2lkPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsPzogYm9vbGVhbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcdFx0XHRcdHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogKChzZWxlY3RlZERhdGU6IG51bGwgfCBEYXRlKSA9PiB2b2lkKSkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmFkZERpYWxvZyhEaWFsb2dEYXRlU2VsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogcHJvcGVydGllcy5pZCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogcHJvcGVydGllcy53aWR0aCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IHByb3BlcnRpZXMubWF4V2lkdGggPz8gXCI5NnZ3XCIsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHByb3BlcnRpZXMuaGVpZ2h0ID8/IFwiNTAlXCIsXHJcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IHByb3BlcnRpZXMubWF4SGVpZ2h0ID8/IFwiOTJ2d1wiLFxyXG4gICAgICAgICAgICAgICAgbW9kYWw6IHByb3BlcnRpZXMubW9kYWwgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0ZXh0czogW3Byb3BlcnRpZXMudGl0bGUgPz8gJyddLFxyXG4gICAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogcHJvcGVydGllcy52aWV3Q29udGFpbmVyUmVmXHJcbiAgICAgICAgICAgIH0sKHNlbGVjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhzZWxlY3Rpb24uaW5kZXggPT09IC0xID8gbnVsbCA6IChzZWxlY3Rpb24udmFsdWUgYXMgRGF0ZSkpOyAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgYWxsIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQWxsRGlhbG9ncygpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZGlhbG9nUmVmIG9mIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcykge1xyXG5cclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKHtpbmRleDotMX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gW107XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gW107XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIHRyYW5zbGF0ZSBmcm9tIFRTIHZlcnNpb25cclxuICAgICAqL1xyXG4vLyAgICBhZGRTaWRlTmF2KCl7XHJcbi8vXHJcbi8vICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gdHJhbnNsYXRlIGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbi8vICAgIGdldCBpc1Nob3dpbmdTaWRlTmF2KCl7XHJcbi8vXHJcbi8vICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gdHJhbnNsYXRlIGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbi8vICAgIHJlbW92ZVNpZGVOYXYoKXtcclxuLy9cclxuLy8gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmxvY2sgYWxsIHRoZSB1c2VyIGludGVyYWN0aW9ucyB3aXRoIHRoZSBhcHBsaWNhdGlvbiAoa2V5Ym9hcmQsIHRvdWNoLCBtb3VzZSwgLi4uKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kaXNhYmxlVXNlckludGVyYWN0aW9uKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdrZXlkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZWRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdwb2ludGVyZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RvcmUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRpc2FibGVkIHdpdGggX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24gbWV0aG9kXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -7,6 +7,7 @@
7
7
  * CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
8
8
  */
9
9
  import { Injectable } from '@angular/core';
10
+ import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * Captures all the application exceptions and performs any required action.
@@ -24,8 +25,9 @@ import * as i0 from "@angular/core";
24
25
  * or implement your custom ones, you must extend this class and set your new one as the error
25
26
  * handler provider.
26
27
  */
27
- export class GlobalErrorService {
28
+ export class GlobalErrorService extends SingletoneStrictClass {
28
29
  constructor() {
30
+ super(GlobalErrorService);
29
31
  /**
30
32
  * Enables or disables the error notification to user via an alert box
31
33
  * Extend this class and override this value on your custom error handle to change it
@@ -60,9 +62,12 @@ export class GlobalErrorService {
60
62
  throw error;
61
63
  }
62
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService }); }
65
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, providedIn: 'root' }); }
64
66
  }
65
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: GlobalErrorService, decorators: [{
66
- type: Injectable
67
- }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vY29udHJvbGxlci9nbG9iYWxlcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7QUFHekQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUlJOzs7V0FHRztRQUNjLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUc3Qzs7O1dBR0c7UUFDYyw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFHaEQ7Ozs7V0FJRztRQUNjLHNCQUFpQixHQUFHLDRCQUE0QixDQUFDO0tBd0JyRTtJQXJCRzs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsS0FBVTtRQUVsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFJLEtBQWdCLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBRTlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEI7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDOzhHQTdDUSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEVycm9ySGFuZGxlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDYXB0dXJlcyBhbGwgdGhlIGFwcGxpY2F0aW9uIGV4Y2VwdGlvbnMgYW5kIHBlcmZvcm1zIGFueSByZXF1aXJlZCBhY3Rpb24uXHJcbiAqIEl0IGFsc28gY29udGFpbnMgbXVsdGlwbGUgZ2VuZXJhbCBlcnJvciBtYW5hZ2VtZW50IGZlYXR1cmVzLlxyXG4gKlxyXG4gKiBUbyBkZWZpbmUgdGhpcyBjbGFzcyBhcyB5b3VyIGFwcGxpY2F0aW9uIGVycm9yIGhhbmRsZXIsIHlvdSBtdXN0IGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXJcclxuICogbWFpbiBhcHAgbW9kdWxlIHByb3ZpZGVyczpcclxuICogICAgICB7XHJcbiAqICAgICAgICAgIHByb3ZpZGU6IEVycm9ySGFuZGxlcixcclxuICogICAgICAgICAgdXNlQ2xhc3M6IEdsb2JhbEVycm9yU2VydmljZVxyXG4gKiAgICAgIH0sXHJcbiAqICAgICAgR2xvYmFsRXJyb3JTZXJ2aWNlXHJcbiAqXHJcbiAqIFlvdSBjYW5ub3QgYWNjZXNzIHRoZSBlcnJvciBoYW5kbGVyIGF0IHJ1bnRpbWUuIElmIHlvdSBuZWVkIHRvIG1vZGlmeSBhbnkgb2YgdGhlIGJlaGF2aW91cnNcclxuICogb3IgaW1wbGVtZW50IHlvdXIgY3VzdG9tIG9uZXMsIHlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIGFuZCBzZXQgeW91ciBuZXcgb25lIGFzIHRoZSBlcnJvclxyXG4gKiBoYW5kbGVyIHByb3ZpZGVyLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgR2xvYmFsRXJyb3JTZXJ2aWNlIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlcnJvciBub3RpZmljYXRpb24gdG8gdXNlciB2aWEgYW4gYWxlcnQgYm94XHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2hvd0V4Y2VwdGlvbnNUb1VzZXIgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGVycm9yIG5vdGlmaWNhdGlvbiB0byB1c2VyIHZpYSBhbiBhbGVydCBib3hcclxuICAgICAqIEV4dGVuZCB0aGlzIGNsYXNzIGFuZCBvdmVycmlkZSB0aGlzIHZhbHVlIG9uIHlvdXIgY3VzdG9tIGVycm9yIGhhbmRsZSB0byBjaGFuZ2UgaXRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaG93RXhjZXB0aW9uc09uQ29uc29sZSA9IHRydWU7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGUgdGV4dCB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGFsZXJ0IHRoYXQgaXMgc2hvd24gdG8gdGhlIHVzZXIgd2hlbiBhbiBleGNlcHRpb24gaGFwcGVuc1xyXG4gICAgICogYW5kIHNob3dFeGNlcHRpb25zVG9Vc2VyIGlzIHRydWVcclxuICAgICAqIEV4dGVuZCB0aGlzIGNsYXNzIGFuZCBvdmVycmlkZSB0aGlzIHZhbHVlIG9uIHlvdXIgY3VzdG9tIGVycm9yIGhhbmRsZSB0byBjaGFuZ2UgaXRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvckFsZXJ0TWVzc2FnZSA9ICdBcHBsaWNhdGlvbiBleGNlcHRpb246XFxuXFxuJztcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGFuIGFsZXJ0IHdpdGggdGhlIHJlY2VpdmVkIGVycm9yIGRldGFpbCBhbmQgYWxzbyBsb2cgaXQgdG8gdGhlIGpzIGNvbnNvbGUuXHJcbiAgICAgKlxyXG4gICAgICogQW5ndWxhciBleHBlY3RzIGF0IGxlYXN0IHRoaXMgbWV0aG9kIHRvIGJlIGltcGxlbWVudGVkIG9uIGFueSBjbGFzcyB0aGF0IGlzIHVzZWQgYXMgYSBnbG9iYWwgZXhjZXB0aW9uIGhhbmRsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVycm9yIEFuIGVycm9yIGluc3RhbmNlXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0V4Y2VwdGlvbnNUb1VzZXIpIHtcclxuXHJcbiAgICAgICAgICAgIGFsZXJ0KHRoaXMuZXJyb3JBbGVydE1lc3NhZ2UgKyAoZXJyb3IgYXMgc3RyaW5nKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RXhjZXB0aW9uc09uQ29uc29sZSkge1xyXG5cclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbn1cclxuIl19
68
+ type: Injectable,
69
+ args: [{
70
+ providedIn: 'root',
71
+ }]
72
+ }], ctorParameters: () => [] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vY29udHJvbGxlci9nbG9iYWxlcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFHL0U7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHFCQUFxQjtJQXlCNUQ7UUFFQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQXhCeEI7OztXQUdHO1FBQ2MseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRzdDOzs7V0FHRztRQUNjLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUdoRDs7OztXQUlHO1FBQ2Msc0JBQWlCLEdBQUcsNEJBQTRCLENBQUM7SUFNckUsQ0FBQztJQUVFOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxLQUFVO1FBRWxCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBRTNCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUksS0FBZ0IsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFFOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7OEdBbERRLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBFcnJvckhhbmRsZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2luZ2xldG9uZVN0cmljdENsYXNzIH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9TaW5nbGV0b25lU3RyaWN0Q2xhc3MnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDYXB0dXJlcyBhbGwgdGhlIGFwcGxpY2F0aW9uIGV4Y2VwdGlvbnMgYW5kIHBlcmZvcm1zIGFueSByZXF1aXJlZCBhY3Rpb24uXHJcbiAqIEl0IGFsc28gY29udGFpbnMgbXVsdGlwbGUgZ2VuZXJhbCBlcnJvciBtYW5hZ2VtZW50IGZlYXR1cmVzLlxyXG4gKlxyXG4gKiBUbyBkZWZpbmUgdGhpcyBjbGFzcyBhcyB5b3VyIGFwcGxpY2F0aW9uIGVycm9yIGhhbmRsZXIsIHlvdSBtdXN0IGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXJcclxuICogbWFpbiBhcHAgbW9kdWxlIHByb3ZpZGVyczpcclxuICogICAgICB7XHJcbiAqICAgICAgICAgIHByb3ZpZGU6IEVycm9ySGFuZGxlcixcclxuICogICAgICAgICAgdXNlQ2xhc3M6IEdsb2JhbEVycm9yU2VydmljZVxyXG4gKiAgICAgIH0sXHJcbiAqICAgICAgR2xvYmFsRXJyb3JTZXJ2aWNlXHJcbiAqXHJcbiAqIFlvdSBjYW5ub3QgYWNjZXNzIHRoZSBlcnJvciBoYW5kbGVyIGF0IHJ1bnRpbWUuIElmIHlvdSBuZWVkIHRvIG1vZGlmeSBhbnkgb2YgdGhlIGJlaGF2aW91cnNcclxuICogb3IgaW1wbGVtZW50IHlvdXIgY3VzdG9tIG9uZXMsIHlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIGFuZCBzZXQgeW91ciBuZXcgb25lIGFzIHRoZSBlcnJvclxyXG4gKiBoYW5kbGVyIHByb3ZpZGVyLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdsb2JhbEVycm9yU2VydmljZSBleHRlbmRzIFNpbmdsZXRvbmVTdHJpY3RDbGFzcyBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZXJyb3Igbm90aWZpY2F0aW9uIHRvIHVzZXIgdmlhIGFuIGFsZXJ0IGJveFxyXG4gICAgICogRXh0ZW5kIHRoaXMgY2xhc3MgYW5kIG92ZXJyaWRlIHRoaXMgdmFsdWUgb24geW91ciBjdXN0b20gZXJyb3IgaGFuZGxlIHRvIGNoYW5nZSBpdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNob3dFeGNlcHRpb25zVG9Vc2VyID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlcnJvciBub3RpZmljYXRpb24gdG8gdXNlciB2aWEgYW4gYWxlcnQgYm94XHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2hvd0V4Y2VwdGlvbnNPbkNvbnNvbGUgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgdGhlIHRleHQgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBhbGVydCB0aGF0IGlzIHNob3duIHRvIHRoZSB1c2VyIHdoZW4gYW4gZXhjZXB0aW9uIGhhcHBlbnNcclxuICAgICAqIGFuZCBzaG93RXhjZXB0aW9uc1RvVXNlciBpcyB0cnVlXHJcbiAgICAgKiBFeHRlbmQgdGhpcyBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhpcyB2YWx1ZSBvbiB5b3VyIGN1c3RvbSBlcnJvciBoYW5kbGUgdG8gY2hhbmdlIGl0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JBbGVydE1lc3NhZ2UgPSAnQXBwbGljYXRpb24gZXhjZXB0aW9uOlxcblxcbic7XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcigpe1xyXG5cdFx0XHJcblx0XHRzdXBlcihHbG9iYWxFcnJvclNlcnZpY2UpO1xyXG5cdH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYW4gYWxlcnQgd2l0aCB0aGUgcmVjZWl2ZWQgZXJyb3IgZGV0YWlsIGFuZCBhbHNvIGxvZyBpdCB0byB0aGUganMgY29uc29sZS5cclxuICAgICAqXHJcbiAgICAgKiBBbmd1bGFyIGV4cGVjdHMgYXQgbGVhc3QgdGhpcyBtZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQgb24gYW55IGNsYXNzIHRoYXQgaXMgdXNlZCBhcyBhIGdsb2JhbCBleGNlcHRpb24gaGFuZGxlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXJyb3IgQW4gZXJyb3IgaW5zdGFuY2VcclxuICAgICAqL1xyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RXhjZXB0aW9uc1RvVXNlcikge1xyXG5cclxuICAgICAgICAgICAgYWxlcnQodGhpcy5lcnJvckFsZXJ0TWVzc2FnZSArIChlcnJvciBhcyBzdHJpbmcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNob3dFeGNlcHRpb25zT25Db25zb2xlKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -53,7 +53,7 @@ export class HTTPService extends HTTPManager {
53
53
  errorMsg = 'Unknown error. Make sure Internet connection is available';
54
54
  }
55
55
  this.dialogService.addDialog(DialogErrorComponent, {
56
- width: '600px',
56
+ width: '50vw',
57
57
  texts: ['Error: ' + result.code, errorMsg],
58
58
  options: ['Ok']
59
59
  });
@@ -66,9 +66,12 @@ export class HTTPService extends HTTPManager {
66
66
  }, progressCallback);
67
67
  }
68
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, providedIn: 'root' }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, decorators: [{
72
- type: Injectable
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root',
75
+ }]
73
76
  }], ctorParameters: () => [{ type: i1.DialogService }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBRzlGOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDOzs7T0FHRzthQUNhLHdCQUFtQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUc1RDs7O09BR0c7YUFDYSwyQkFBc0IsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEI7SUFHbEUsWUFBbUIsYUFBNEI7UUFFM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHL0MsQ0FBQztJQUdEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsUUFBeUUsRUFDekUsbUJBQThJLElBQUksRUFDbEosbUJBQW1GLElBQUksRUFDdkYsVUFBZ0csRUFBRTtRQUV0RyxJQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBRTFDLElBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBRXBELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QztZQUVELElBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBQztnQkFFckUsS0FBSSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUM7b0JBRXRCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQzt3QkFFZCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUUxRCxJQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7NEJBRTdCLFFBQVEsR0FBRywyREFBMkQsQ0FBQzt5QkFDMUU7d0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQzdDOzRCQUNJLEtBQUssRUFBQyxPQUFPOzRCQUNiLEtBQUssRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzs0QkFDMUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNsQixDQUFDLENBQUM7cUJBQ1Y7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQTdFUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhUVFBNYW5hZ2VyLCBIVFRQTWFuYWdlckJhc2VSZXF1ZXN0LCBTdHJpbmdVdGlscyB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIGFwcGxpY2F0aW9uIGh0dHAgY29tbXVuaWNhdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlIGV4dGVuZHMgSFRUUE1hbmFnZXIge1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogZXhlY3V0ZSgpIG1ldGhvZCBvcHRpb24gdGhhdCB0ZWxscyB0aGUgc2VydmljZSB0byBhdm9pZCBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2Ugd2l0aCBhIG1vZGFsIGJ1c3kgc3RhdGUgd2hpbGUgdGhlIHJlcXVlc3RzIHRoYXQgYXJlXHJcbiAgICAgKiBsYXVuY2hlZCBieSB0aGUgZXhlY3V0ZSBtZXRob2QgYXJlIHJ1bm5pbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZWFkb25seSBOT19NT0RBTF9CVVNZX1NUQVRFID0gJ05PX01PREFMX0JVU1lfU1RBVEUnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIGV4ZWN1dGUoKSBtZXRob2Qgb3B0aW9uIHRoYXQgdGVsbHMgdGhlIHNlcnZpY2UgdG8gc2tpcCBzaG93aW5nIGFuIGVycm9yIGRpYWxvZyB3aGVuIGEgcmVxdWVzdCBmYWlscy4gV2Ugbm9ybWFsbHkgdXNlIHRoaXMgdG8gaGFuZGxlIHRoZVxyXG4gICAgICogZXJyb3JzIGJ5IG91cnNlbHZlcyBvciBpZiB3ZSB3YW50IHRvIGhpZGUgdGhlIGVycm9yIGRpYWxvZyBmb3IgYSBzcGVjaWZpYyByZXF1ZXN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRV9FUlJPUl9IQU5ETElORyA9ICdESVNBQkxFX0VSUk9SX0hBTkRMSU5HJztcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgc3VwZXIodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2FtZSBtZXRob2QgYXMgSFRUUE1hbmFnZXIuZXhlY3V0ZSBidXQgd2l0aCB0aGUgYWJpbGl0eSB0byBlbmFibGUgc2V2ZXJhbCBvcHRpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGlzIHNlcnZpY2U6XHJcbiAgICAgKlxyXG4gICAgICogLSBIVFRQU2VydmljZS5OT19NT0RBTF9CVVNZX1NUQVRFIFRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGxvY2tpbmcgdGhlIFVJIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHJ1bm5pbmdcclxuICAgICAqIC0gSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORyBUbyBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBzaG93aW5nIGEgZGV0YWlsZWQgZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBIVFRQTWFuYWdlci5leGVjdXRlKClcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZShyZXF1ZXN0czogc3RyaW5nfHN0cmluZ1tdfEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3R8SFRUUE1hbmFnZXJCYXNlUmVxdWVzdFtdLFxyXG4gICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrOiAoKHJlc3VsdHM6IHt1cmw6c3RyaW5nLCByZXNwb25zZTphbnksIGlzRXJyb3I6Ym9vbGVhbiwgZXJyb3JNc2c6c3RyaW5nLCBjb2RlOm51bWJlcn1bXSwgYW55RXJyb3I6Ym9vbGVhbikgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcclxuICAgICAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogbnVsbCB8ICgoY29tcGxldGVkVXJsOiBzdHJpbmcsIHRvdGFsUmVxdWVzdHM6IG51bWJlcikgPT4gdm9pZCkgPSBudWxsLFxyXG4gICAgICAgICAgICBvcHRpb25zOiAodHlwZW9mIEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEV8dHlwZW9mIEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpW10gPSBbXSl7XHJcbiAgICBcclxuICAgICAgICBpZihvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURSkgPCAwKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShyZXF1ZXN0cywgKHJlc3VsdHMsIGFueUVycm9yKSA9PiB7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEUpIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZigob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpIDwgMCkgJiYgYW55RXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IHJlc3VsdCBvZiByZXN1bHRzKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQuaXNFcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSByZXN1bHQuZXJyb3JNc2cgKyAnXFxuXFxuJyArIHJlc3VsdC5yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKFN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3JNc2cpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1zZyA9ICdVbmtub3duIGVycm9yLiBNYWtlIHN1cmUgSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUnOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGREaWFsb2coRGlhbG9nRXJyb3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6JzYwMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogWydFcnJvcjogJyArIHJlc3VsdC5jb2RlLCBlcnJvck1zZ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogWydPayddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoZmluaXNoZWRDYWxsYmFjayAhPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2socmVzdWx0cywgYW55RXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICB9LCBwcm9ncmVzc0NhbGxiYWNrKTtcclxuICAgIH1cclxufVxyXG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBRzlGOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDOzs7T0FHRzthQUNhLHdCQUFtQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUc1RDs7O09BR0c7YUFDYSwyQkFBc0IsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEI7SUFHbEUsWUFBbUIsYUFBNEI7UUFFM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHL0MsQ0FBQztJQUdEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsUUFBeUUsRUFDekUsbUJBQThJLElBQUksRUFDbEosbUJBQW1GLElBQUksRUFDdkYsVUFBZ0csRUFBRTtRQUV0RyxJQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBRTFDLElBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBRXBELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QztZQUVELElBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBQztnQkFFckUsS0FBSSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUM7b0JBRXRCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQzt3QkFFZCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUUxRCxJQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7NEJBRTdCLFFBQVEsR0FBRywyREFBMkQsQ0FBQzt5QkFDMUU7d0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQzdDOzRCQUNJLEtBQUssRUFBQyxNQUFNOzRCQUNaLEtBQUssRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzs0QkFDMUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNsQixDQUFDLENBQUM7cUJBQ1Y7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQTdFUSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSFRUUE1hbmFnZXIsIEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3QsIFN0cmluZ1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dFcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctZXJyb3IvZGlhbG9nLWVycm9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gaHR0cCBjb21tdW5pY2F0aW9uc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlIGV4dGVuZHMgSFRUUE1hbmFnZXIge1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogZXhlY3V0ZSgpIG1ldGhvZCBvcHRpb24gdGhhdCB0ZWxscyB0aGUgc2VydmljZSB0byBhdm9pZCBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2Ugd2l0aCBhIG1vZGFsIGJ1c3kgc3RhdGUgd2hpbGUgdGhlIHJlcXVlc3RzIHRoYXQgYXJlXHJcbiAgICAgKiBsYXVuY2hlZCBieSB0aGUgZXhlY3V0ZSBtZXRob2QgYXJlIHJ1bm5pbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZWFkb25seSBOT19NT0RBTF9CVVNZX1NUQVRFID0gJ05PX01PREFMX0JVU1lfU1RBVEUnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIGV4ZWN1dGUoKSBtZXRob2Qgb3B0aW9uIHRoYXQgdGVsbHMgdGhlIHNlcnZpY2UgdG8gc2tpcCBzaG93aW5nIGFuIGVycm9yIGRpYWxvZyB3aGVuIGEgcmVxdWVzdCBmYWlscy4gV2Ugbm9ybWFsbHkgdXNlIHRoaXMgdG8gaGFuZGxlIHRoZVxyXG4gICAgICogZXJyb3JzIGJ5IG91cnNlbHZlcyBvciBpZiB3ZSB3YW50IHRvIGhpZGUgdGhlIGVycm9yIGRpYWxvZyBmb3IgYSBzcGVjaWZpYyByZXF1ZXN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRV9FUlJPUl9IQU5ETElORyA9ICdESVNBQkxFX0VSUk9SX0hBTkRMSU5HJztcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgc3VwZXIodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2FtZSBtZXRob2QgYXMgSFRUUE1hbmFnZXIuZXhlY3V0ZSBidXQgd2l0aCB0aGUgYWJpbGl0eSB0byBlbmFibGUgc2V2ZXJhbCBvcHRpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGlzIHNlcnZpY2U6XHJcbiAgICAgKlxyXG4gICAgICogLSBIVFRQU2VydmljZS5OT19NT0RBTF9CVVNZX1NUQVRFIFRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGxvY2tpbmcgdGhlIFVJIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHJ1bm5pbmdcclxuICAgICAqIC0gSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORyBUbyBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBzaG93aW5nIGEgZGV0YWlsZWQgZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBIVFRQTWFuYWdlci5leGVjdXRlKClcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZShyZXF1ZXN0czogc3RyaW5nfHN0cmluZ1tdfEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3R8SFRUUE1hbmFnZXJCYXNlUmVxdWVzdFtdLFxyXG4gICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrOiAoKHJlc3VsdHM6IHt1cmw6c3RyaW5nLCByZXNwb25zZTphbnksIGlzRXJyb3I6Ym9vbGVhbiwgZXJyb3JNc2c6c3RyaW5nLCBjb2RlOm51bWJlcn1bXSwgYW55RXJyb3I6Ym9vbGVhbikgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcclxuICAgICAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogbnVsbCB8ICgoY29tcGxldGVkVXJsOiBzdHJpbmcsIHRvdGFsUmVxdWVzdHM6IG51bWJlcikgPT4gdm9pZCkgPSBudWxsLFxyXG4gICAgICAgICAgICBvcHRpb25zOiAodHlwZW9mIEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEV8dHlwZW9mIEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpW10gPSBbXSl7XHJcbiAgICBcclxuICAgICAgICBpZihvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURSkgPCAwKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShyZXF1ZXN0cywgKHJlc3VsdHMsIGFueUVycm9yKSA9PiB7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEUpIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZigob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpIDwgMCkgJiYgYW55RXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IHJlc3VsdCBvZiByZXN1bHRzKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQuaXNFcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSByZXN1bHQuZXJyb3JNc2cgKyAnXFxuXFxuJyArIHJlc3VsdC5yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKFN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3JNc2cpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1zZyA9ICdVbmtub3duIGVycm9yLiBNYWtlIHN1cmUgSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUnOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGREaWFsb2coRGlhbG9nRXJyb3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6JzUwdncnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiBbJ0Vycm9yOiAnICsgcmVzdWx0LmNvZGUsIGVycm9yTXNnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbJ09rJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihmaW5pc2hlZENhbGxiYWNrICE9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZmluaXNoZWRDYWxsYmFjayhyZXN1bHRzLCBhbnlFcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgIH0sIHByb2dyZXNzQ2FsbGJhY2spO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -14,9 +14,12 @@ import * as i0 from "@angular/core";
14
14
  */
15
15
  export class LocalizationService extends LocalizationManager {
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LocalizationService, decorators: [{
20
- type: Injectable
20
+ type: Injectable,
21
+ args: [{
22
+ providedIn: 'root',
23
+ }]
21
24
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3REOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjs4R0FBL0MsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1hbmFnZXIgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIGFwcGxpY2F0aW9uIHRleHQgdHJhbnNsYXRpb25zIGFuZCBsYW5ndWFnZXNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2UgZXh0ZW5kcyBMb2NhbGl6YXRpb25NYW5hZ2VyIHtcclxuXHJcbn1cclxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3REOztHQUVHO0FBSUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjs4R0FBL0MsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uTWFuYWdlciB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgYXBwbGljYXRpb24gdGV4dCB0cmFuc2xhdGlvbnMgYW5kIGxhbmd1YWdlc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2UgZXh0ZW5kcyBMb2NhbGl6YXRpb25NYW5hZ2VyIHtcclxuXHJcbn1cclxuIl19
@@ -8,14 +8,16 @@
8
8
  */
9
9
  import { Injectable } from '@angular/core';
10
10
  import { Subject } from 'rxjs';
11
+ import { SingletoneStrictClass } from '../model/classes/SingletoneStrictClass';
11
12
  import * as i0 from "@angular/core";
12
13
  /**
13
14
  * This is the main application event bus.
14
15
  * All global events that happen on the application are broadcasted by this service, and
15
16
  * can be listened by any application element who previously subscribed
16
17
  */
17
- export class NotificationService {
18
+ export class NotificationService extends SingletoneStrictClass {
18
19
  constructor() {
20
+ super(NotificationService);
19
21
  /**
20
22
  * The Observable instance that handles subscriptions and notifications
21
23
  */
@@ -48,9 +50,12 @@ export class NotificationService {
48
50
  return subscription.unsubscribe();
49
51
  }
50
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService }); }
53
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
52
54
  }
53
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NotificationService, decorators: [{
54
- type: Injectable
55
- }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0FBSTdDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBSUk7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0tBb0NwRTtJQWpDRzs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsbUJBQTJEO1FBRWpFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxZQUE2QjtRQUU5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUEwQjtRQUVsQyxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzhHQXpDUSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdVSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uL21vZGVsL2NsYXNzZXMvR1VJTm90aWZpY2F0aW9uJztcclxuXHJcblxyXG4vKipcclxuICogVGhpcyBpcyB0aGUgbWFpbiBhcHBsaWNhdGlvbiBldmVudCBidXMuXHJcbiAqIEFsbCBnbG9iYWwgZXZlbnRzIHRoYXQgaGFwcGVuIG9uIHRoZSBhcHBsaWNhdGlvbiBhcmUgYnJvYWRjYXN0ZWQgYnkgdGhpcyBzZXJ2aWNlLCBhbmRcclxuICogY2FuIGJlIGxpc3RlbmVkIGJ5IGFueSBhcHBsaWNhdGlvbiBlbGVtZW50IHdobyBwcmV2aW91c2x5IHN1YnNjcmliZWRcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBPYnNlcnZhYmxlIGluc3RhbmNlIHRoYXQgaGFuZGxlcyBzdWJzY3JpcHRpb25zIGFuZCBub3RpZmljYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnMgPSBuZXcgU3ViamVjdDxHVUlOb3RpZmljYXRpb24+KCk7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdXNlZCBieSBvdGhlciBzZXJ2aWNlcyBvciBjb21wb25lbnRzIHRvIHN1YnNjcmliZSB0byBhbGwgbm90aWZpY2F0aW9ucyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgdGhpcyBzZXJ2aWNlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbkhhbmRsZXIgQSBtZXRob2QgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmVjZWl2ZSBlYWNoIG5vdGlmaWNhdGlvbiBhcyBhIEdVSU5vdGlmaWNhdGlvbiBpbnN0YW5jZVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgc3Vic2NyaXB0aW9uIG9iamVjdC4gTWFrZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4gbm90IHJlcXVpcmVkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgc3Vic2NyaWJlKG5vdGlmaWNhdGlvbkhhbmRsZXI6IChub3RpZmljYXRpb246IEdVSU5vdGlmaWNhdGlvbikgPT4gYW55KSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zLnN1YnNjcmliZShub3RpZmljYXRpb25IYW5kbGVyKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYXVuY2ggYSBub3RpZmljYXRpb24gdG8gYW55b25lIHdobyBtYXkgYmUgbGlzdGVuaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiBBIG5vdGlmaWNhdGlvbiBpbnN0YW5jZSB0byBsYXVuY2hcclxuICAgICAqL1xyXG4gICAgc2VuZChub3RpZmljYXRpb246IEdVSU5vdGlmaWNhdGlvbikge1xyXG5cclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zLm5leHQobm90aWZpY2F0aW9uKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmQgYSBwcmV2aW91c2x5IGluaXRpYXRlZCBzdWJzY3JpcHRpb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uIEEgcHJldmlvdXNseSBjcmVhdGVkIHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBmcm9tIHdoaWNoIHdlIHdhbnQgdG8gdW5zdWJzY3JpYmVcclxuICAgICAqL1xyXG4gICAgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: 'root',
59
+ }]
60
+ }], ctorParameters: () => [] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRy9FOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQXFCO0lBUzdEO1FBRUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFSekI7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0lBTXBFLENBQUM7SUFHRTs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsbUJBQTJEO1FBRWpFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxZQUE2QjtRQUU5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUEwQjtRQUVsQyxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzhHQS9DUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR1VJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9HVUlOb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25lU3RyaWN0Q2xhc3MgfSBmcm9tICcuLi9tb2RlbC9jbGFzc2VzL1NpbmdsZXRvbmVTdHJpY3RDbGFzcyc7XG5cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIHRoZSBtYWluIGFwcGxpY2F0aW9uIGV2ZW50IGJ1cy5cclxuICogQWxsIGdsb2JhbCBldmVudHMgdGhhdCBoYXBwZW4gb24gdGhlIGFwcGxpY2F0aW9uIGFyZSBicm9hZGNhc3RlZCBieSB0aGlzIHNlcnZpY2UsIGFuZFxyXG4gKiBjYW4gYmUgbGlzdGVuZWQgYnkgYW55IGFwcGxpY2F0aW9uIGVsZW1lbnQgd2hvIHByZXZpb3VzbHkgc3Vic2NyaWJlZFxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2UgZXh0ZW5kcyBTaW5nbGV0b25lU3RyaWN0Q2xhc3Mge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBPYnNlcnZhYmxlIGluc3RhbmNlIHRoYXQgaGFuZGxlcyBzdWJzY3JpcHRpb25zIGFuZCBub3RpZmljYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnMgPSBuZXcgU3ViamVjdDxHVUlOb3RpZmljYXRpb24+KCk7XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcigpe1xyXG5cdFx0XHJcblx0XHRzdXBlcihOb3RpZmljYXRpb25TZXJ2aWNlKTtcclxuXHR9XHJcblx0XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1c2VkIGJ5IG90aGVyIHNlcnZpY2VzIG9yIGNvbXBvbmVudHMgdG8gc3Vic2NyaWJlIHRvIGFsbCBub3RpZmljYXRpb25zIHRoYXQgYXJlIGdlbmVyYXRlZCBieSB0aGlzIHNlcnZpY2VcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uSGFuZGxlciBBIG1ldGhvZCB0aGF0IHdpbGwgYmUgdXNlZCB0byByZWNlaXZlIGVhY2ggbm90aWZpY2F0aW9uIGFzIGEgR1VJTm90aWZpY2F0aW9uIGluc3RhbmNlXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBzdWJzY3JpcHRpb24gb2JqZWN0LiBNYWtlIHN1cmUgdG8gdW5zdWJzY3JpYmUgd2hlbiBub3QgcmVxdWlyZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBzdWJzY3JpYmUobm90aWZpY2F0aW9uSGFuZGxlcjogKG5vdGlmaWNhdGlvbjogR1VJTm90aWZpY2F0aW9uKSA9PiBhbnkpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbnMuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbkhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIExhdW5jaCBhIG5vdGlmaWNhdGlvbiB0byBhbnlvbmUgd2hvIG1heSBiZSBsaXN0ZW5pbmdcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uIEEgbm90aWZpY2F0aW9uIGluc3RhbmNlIHRvIGxhdW5jaFxyXG4gICAgICovXHJcbiAgICBzZW5kKG5vdGlmaWNhdGlvbjogR1VJTm90aWZpY2F0aW9uKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMubmV4dChub3RpZmljYXRpb24pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuZCBhIHByZXZpb3VzbHkgaW5pdGlhdGVkIHN1YnNjcmlwdGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzdWJzY3JpcHRpb24gQSBwcmV2aW91c2x5IGNyZWF0ZWQgc3Vic2NyaXB0aW9uIGluc3RhbmNlIGZyb20gd2hpY2ggd2Ugd2FudCB0byB1bnN1YnNjcmliZVxyXG4gICAgICovXHJcbiAgICB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikge1xyXG5cclxuICAgICAgICByZXR1cm4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19