@eui/core 18.0.0-rc.4 → 18.0.0-rc.41

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 (56) hide show
  1. package/docs/classes/CssUtils.html +59 -2
  2. package/docs/dependencies.html +3 -3
  3. package/docs/index.html +1 -1
  4. package/docs/injectables/CoreAppEffects.html +24 -5
  5. package/docs/injectables/EuiAppShellService.html +13 -1
  6. package/docs/injectables/EuiDynamicMenuService.html +2 -2
  7. package/docs/injectables/EuiThemeService.html +297 -96
  8. package/docs/injectables/LocalStorageService.html +12 -1
  9. package/docs/injectables/StoreService.html +12 -1
  10. package/docs/interfaces/IEuiTheme.html +387 -0
  11. package/docs/interfaces/ThemeState.html +309 -0
  12. package/docs/js/menu-wc.js +6 -0
  13. package/docs/js/menu-wc_es5.js +1 -1
  14. package/docs/js/search/search_index.js +2 -2
  15. package/docs/miscellaneous/enumerations.html +66 -6
  16. package/docs/miscellaneous/functions.html +284 -0
  17. package/docs/miscellaneous/variables.html +119 -31
  18. package/esm2022/index.mjs +3 -1
  19. package/esm2022/lib/helpers/css-utils.mjs +74 -60
  20. package/esm2022/lib/helpers/dom-helpers.mjs +3 -9
  21. package/esm2022/lib/services/dynamic-menu/dynamic-menu.service.mjs +2 -5
  22. package/esm2022/lib/services/eui-app-shell.service.mjs +20 -16
  23. package/esm2022/lib/services/eui-theme.service.mjs +186 -26
  24. package/esm2022/lib/services/locale/locale.service.mjs +2 -1
  25. package/esm2022/lib/services/storage/local-storage.service.mjs +36 -25
  26. package/esm2022/lib/services/store/effects/app.effects.mjs +19 -7
  27. package/esm2022/lib/services/store/reducers/meta.reducers.mjs +46 -32
  28. package/esm2022/lib/services/store/store.service.mjs +17 -9
  29. package/esm2022/lib/services/store/store.service.mock.mjs +3 -2
  30. package/fesm2022/eui-core.mjs +403 -194
  31. package/fesm2022/eui-core.mjs.map +1 -1
  32. package/index.d.ts +1 -0
  33. package/index.d.ts.map +1 -1
  34. package/lib/helpers/css-utils.d.ts +24 -18
  35. package/lib/helpers/css-utils.d.ts.map +1 -1
  36. package/lib/helpers/dom-helpers.d.ts +1 -1
  37. package/lib/helpers/dom-helpers.d.ts.map +1 -1
  38. package/lib/services/dynamic-menu/dynamic-menu.service.d.ts +5 -5
  39. package/lib/services/dynamic-menu/dynamic-menu.service.d.ts.map +1 -1
  40. package/lib/services/eui-app-shell.service.d.ts +3 -2
  41. package/lib/services/eui-app-shell.service.d.ts.map +1 -1
  42. package/lib/services/eui-theme.service.d.ts +41 -15
  43. package/lib/services/eui-theme.service.d.ts.map +1 -1
  44. package/lib/services/locale/locale.service.d.ts +1 -0
  45. package/lib/services/locale/locale.service.d.ts.map +1 -1
  46. package/lib/services/storage/local-storage.service.d.ts +3 -2
  47. package/lib/services/storage/local-storage.service.d.ts.map +1 -1
  48. package/lib/services/store/effects/app.effects.d.ts +2 -1
  49. package/lib/services/store/effects/app.effects.d.ts.map +1 -1
  50. package/lib/services/store/reducers/meta.reducers.d.ts +11 -1
  51. package/lib/services/store/reducers/meta.reducers.d.ts.map +1 -1
  52. package/lib/services/store/store.service.d.ts +3 -2
  53. package/lib/services/store/store.service.d.ts.map +1 -1
  54. package/lib/services/store/store.service.mock.d.ts +1 -0
  55. package/lib/services/store/store.service.mock.d.ts.map +1 -1
  56. package/package.json +4 -4
@@ -21,6 +21,7 @@ export const LOCALE_ID_MAPPER = new InjectionToken('localeIdMapper');
21
21
  * - Updating the Angular LOCALE_ID token.
22
22
  *
23
23
  * @template T - Extends LocaleState, representing the state structure for locales.
24
+ * @template L - The type of the locale data.
24
25
  * @extends EuiService<T | LocaleState>
25
26
  */
26
27
  export class LocaleService extends EuiService {
@@ -233,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
233
234
  }] }, { type: i3.LogService, decorators: [{
234
235
  type: Optional
235
236
  }] }] });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNILFVBQVUsRUFFVixjQUFjLEVBQ2QsOEJBQThCLEdBS2pDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGFBQW1ELFNBQVEsVUFBMkI7SUFLL0YsWUFDYyxLQUFtQixFQUNVLGdCQUE4QixFQUN4QyxTQUFpQixFQUNBLFlBQTBCLEVBQ3BELElBQWlCLEVBQ2pCLEdBQWU7UUFFbkMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFQNUIs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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxlSWQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFdWlTZXJ2aWNlLFxuICAgIEV1aVNlcnZpY2VTdGF0dXMsXG4gICAgZ2V0TG9jYWxlU3RhdGUsXG4gICAgZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlLFxuICAgIEdsb2JhbENvbmZpZyxcbiAgICBMb2NhbGVTZXJ2aWNlQ29uZmlnLFxuICAgIExvY2FsZVN0YXRlLFxuICAgIExvZ2dlcixcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24gfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlTWFwcGVyID0gKGxvY2FsZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgY29uc3QgTE9DQUxFX0lEX01BUFBFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhbGVNYXBwZXI+KCdsb2NhbGVJZE1hcHBlcicpO1xuXG4vKipcbiAqIExvY2FsZVNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGxvY2FsZSBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGluIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKiBJdCB1dGlsaXplcyB0aGUgQ0xEUiBsaWJyYXJ5IHRvIGxvYWQgYW5kIGNvbnN0cnVjdCB0aGUgbG9jYWxlIGZvciBlYWNoIHJlZ2lvbi4gVGhpcyBzZXJ2aWNlIGFsbG93c1xuICogZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBsb2NhbGVzIHVwb24gcmVxdWVzdCBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIEVVSSBhcHAgYWNjb3JkaW5nbHkuXG4gKlxuICogS2V5IGZ1bmN0aW9uYWxpdGllcyBpbmNsdWRlOlxuICogIC0gQmluZGluZyB0byBhIHRyYW5zbGF0aW9uIHNlcnZpY2UgZm9yIGxvY2FsZSBjaGFuZ2VzLlxuICogIC0gVXBkYXRpbmcgdGhlIEFuZ3VsYXIgTE9DQUxFX0lEIHRva2VuLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gRXh0ZW5kcyBMb2NhbGVTdGF0ZSwgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgZm9yIGxvY2FsZXMuXG4gKiBAZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRF9NQVBQRVIpIHByaXZhdGUgbG9jYWxlTWFwcGVyOiBMb2NhbGVNYXBwZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGlkOiBnZXRMb2NhbGVJZChsb2NhbGVfaWQpIH0pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuTG9jYWxlU2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UodGhpcy5iYXNlR2xvYmFsQ29uZmlnKTtcbiAgICAgICAgLy8gaW4gY2FzZSBubyBsb2NhbGVNYXBwZXIgcHJvdmlkZWQsIHNldCB0aGUgYW5ndWxhciBnZXRMb2NhbGVJZCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVNYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlTWFwcGVyID0gZ2V0TG9jYWxlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5uZXh0KHZvaWQgMCk7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBsb2NhbGUgc2VydmljZS4gVGhpcyBtZXRob2QgaXMgb3ZlcmxvYWRlZCB0byBhbGxvdyBkaWZmZXJlbnQgd2F5cyBvZiBhY2Nlc3NpbmcgdGhlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIERlZmF1bHRzIHRvIHRoZSB0eXBlIG9mIHRoZSBsb2NhbGUgc3RhdGUgKFQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKX0gW21hcEZuXSAtIEEgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBzdGF0ZSB0byBhIHNwZWNpZmljIGZvcm0uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRha2VzIHRoZSBjdXJyZW50IHN0YXRlIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSB0cmFuc2Zvcm1lZCBzdGF0ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqL1xuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgLyoqXG4gICAgICogQHRlbXBsYXRlIGEgLSBBIGtleSB0aGF0IGV4dGVuZHMgdGhlIGtleXMgb2YgdGhlIHN0YXRlIHR5cGUgVC5cbiAgICAgKiBAcGFyYW0ge2F9IFtrZXldIC0gQSBzcGVjaWZpYyBrZXkgdG8gYWNjZXNzIGEgcGFydCBvZiB0aGUgc3RhdGUuXG4gICAgICogICAgICAgICAgICAgICAgICAgIFRoZSBrZXkgc2hvdWxkIGJlIGEgcHJvcGVydHkgbmFtZSBvZiB0aGUgc3RhdGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRbYV0+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZ30gW2tleU9yTWFwRm5dIC0gRWl0aGVyIGEgbWFwcGluZyBmdW5jdGlvbiBvciBhIHN0cmluZyBrZXkuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgZG90IG5vdGF0aW9uIHRvIGFjY2VzcyBuZXN0ZWQgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNlbGVjdGVkIG9yIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgbm8gcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGVudGlyZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0ga2V5T3JNYXBGblxuICAgICAqL1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IChzOiBUKSA9PiBLIHwgTG9jYWxlU3RhdGUgPSBnZXRMb2NhbGVTdGF0ZTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBkb3ROb3RhdGlvblRvT2JqZWN0ID0gPE8+KG9iajogTywga2V5OiBzdHJpbmcpOiBhbnkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChzbGljZSwgaSkgPT4gc2xpY2VbaV0sIG9iaik7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIGtleU9yTWFwRm4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKChzdGF0ZSkgPT4gKHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBMb2NhbGVTZXJ2aWNlIHdpdGggbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzdGF0ZS5cbiAgICAgKiBCaW5kcyBsYW5ndWFnZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBhbmQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIGxvY2FsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlIHwgdW5kZWZpbmVkfSBbc3RhdGVdIC0gT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGxvY2FsZSBzZXJ2aWNlLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24uXG4gICAgICovXG4gICAgaW5pdChzdGF0ZT86IExvY2FsZVN0YXRlIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoc3RhdGUgfHwgeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsb2NhbGUgc3RhdGUgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhlIG5ldyBzdGF0ZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgICAqIGl0IHRocm93cyBhbiBlcnJvci4gQWxzbyB1cGRhdGVzIHRoZSBnbG9iYWwgTE9DQUxFX0lEIHRva2VuIGlmIGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlfSBzdGF0ZSAtIFRoZSBuZXcgc3RhdGUgdG8gYmUgc2V0IGZvciB0aGUgbG9jYWxlLlxuICAgICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbG9jYWxlIGZvciB0aGUgZ2l2ZW4gc3RhdGUgaWQgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5sb2NhbGVNYXBwZXIoc3RhdGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24oeyAuLi5zdGF0ZSwgaWQgfSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGdsb2JhbCBUT0tFTiBJRCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuYWZmZWN0R2xvYmFsTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVfaWQgPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBMb2NhbGUgZm9yICcke3N0YXRlLmlkfScgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBhZGRMb2NhbGUoJyR7c3RhdGUuaWR9JykgZmlyc3RgO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGV1aSBkb2VzIG5vdCBvZmZlciBhIHdheSB0byBkeW5hbWljYWxseSBhZGQgbG9jYWxlIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZExvY2FsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcHJldmlvdXMgbG9jYWxlIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcHJldmlvdXMgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IHByZXZpb3VzTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZTdGF0ZUluc3RhbmNlPy5pZCB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxvY2FsZSB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgZXVpIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIGR5bmFtaWNhbGx5IGFkZCBsb2NhbGUgaXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9uc1xuICAgICAqXG4gICAgICogRHluYW1pY2FsbHkgbG9hZHMgYW5kIHJlZ2lzdGVycyBsb2NhbGUgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gbG9jYWxlIGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gbG9jYWxlIC0gQW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIG9yIGEgc2luZ2xlIGxvY2FsZSBpZGVudGlmaWVyLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZGluZyBwcm9jZXNzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVucyBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0cyB0aGUgbG9jYWxlIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgaWYgYWN0aXZlTGFuZyBpcyAnZW4nIGFuZCBsb2NhbGUgaXMgJ2VuLUdCJyBpdCB3aWxsIG5vdCB0cmlnZ2VyIGxvY2FsZSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUuYWN0aXZlTGFuZy50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpMThzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaTE4c3RhdGUuYWN0aXZlTGFuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvY2FsZU1hcHBlcihpMThzdGF0ZS5hY3RpdmVMYW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxvY2FsZU1hcHBlcih2YWx1ZT8uYWN0aXZlTGFuZykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsIGUuZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHN0YXRlWydhdmFpbGFibGUnXSA/IHN0YXRlWydhdmFpbGFibGUnXSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gLSBBbiBhcnJheSBvZiBicm93c2VyIGxvY2FsZSBpZGVudGlmaWVycyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NlckxvY2FsZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBicm93c2VyTG9jYWxlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPT09IHVuZGVmaW5lZCA/IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdIDogbmF2aWdhdG9yLmxhbmd1YWdlcztcblxuICAgICAgICBpZiAoIWJyb3dzZXJMb2NhbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMb2NhbGVzLm1hcCgobG9jYWxlKSA9PiBsb2NhbGUudHJpbSgpKTtcbiAgICB9XG5cbn1cbiJdfQ==
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNILFVBQVUsRUFFVixjQUFjLEVBQ2QsOEJBQThCLEdBS2pDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7Ozs7Ozs7R0FZRztBQUlILE1BQU0sT0FBTyxhQUFtRCxTQUFRLFVBQTJCO0lBSy9GLFlBQ2MsS0FBbUIsRUFDVSxnQkFBOEIsRUFDeEMsU0FBaUIsRUFDQSxZQUEwQixFQUNwRCxJQUFpQixFQUNqQixHQUFlO1FBRW5DLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBUDVC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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExvY2FsZUlkIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UsIFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gc3RyaW5nO1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuLyoqXG4gKiBMb2NhbGVTZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBsb2NhbGUgc3RhdGVzIGFuZCBjb25maWd1cmF0aW9ucyBpbiBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uLlxuICogSXQgdXRpbGl6ZXMgdGhlIENMRFIgbGlicmFyeSB0byBsb2FkIGFuZCBjb25zdHJ1Y3QgdGhlIGxvY2FsZSBmb3IgZWFjaCByZWdpb24uIFRoaXMgc2VydmljZSBhbGxvd3NcbiAqIGZvciBkeW5hbWljIGxvYWRpbmcgb2YgbG9jYWxlcyB1cG9uIHJlcXVlc3QgYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIG9mIHRoZSBFVUkgYXBwIGFjY29yZGluZ2x5LlxuICpcbiAqIEtleSBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkZTpcbiAqICAtIEJpbmRpbmcgdG8gYSB0cmFuc2xhdGlvbiBzZXJ2aWNlIGZvciBsb2NhbGUgY2hhbmdlcy5cbiAqICAtIFVwZGF0aW5nIHRoZSBBbmd1bGFyIExPQ0FMRV9JRCB0b2tlbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIEV4dGVuZHMgTG9jYWxlU3RhdGUsIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgc3RydWN0dXJlIGZvciBsb2NhbGVzLlxuICogQHRlbXBsYXRlIEwgLSBUaGUgdHlwZSBvZiB0aGUgbG9jYWxlIGRhdGEuXG4gKiBAZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRF9NQVBQRVIpIHByaXZhdGUgbG9jYWxlTWFwcGVyOiBMb2NhbGVNYXBwZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGlkOiBnZXRMb2NhbGVJZChsb2NhbGVfaWQpIH0pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuTG9jYWxlU2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UodGhpcy5iYXNlR2xvYmFsQ29uZmlnKTtcbiAgICAgICAgLy8gaW4gY2FzZSBubyBsb2NhbGVNYXBwZXIgcHJvdmlkZWQsIHNldCB0aGUgYW5ndWxhciBnZXRMb2NhbGVJZCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVNYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlTWFwcGVyID0gZ2V0TG9jYWxlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5uZXh0KHZvaWQgMCk7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBsb2NhbGUgc2VydmljZS4gVGhpcyBtZXRob2QgaXMgb3ZlcmxvYWRlZCB0byBhbGxvdyBkaWZmZXJlbnQgd2F5cyBvZiBhY2Nlc3NpbmcgdGhlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIERlZmF1bHRzIHRvIHRoZSB0eXBlIG9mIHRoZSBsb2NhbGUgc3RhdGUgKFQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKX0gW21hcEZuXSAtIEEgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBzdGF0ZSB0byBhIHNwZWNpZmljIGZvcm0uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRha2VzIHRoZSBjdXJyZW50IHN0YXRlIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSB0cmFuc2Zvcm1lZCBzdGF0ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqL1xuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgLyoqXG4gICAgICogQHRlbXBsYXRlIGEgLSBBIGtleSB0aGF0IGV4dGVuZHMgdGhlIGtleXMgb2YgdGhlIHN0YXRlIHR5cGUgVC5cbiAgICAgKiBAcGFyYW0ge2F9IFtrZXldIC0gQSBzcGVjaWZpYyBrZXkgdG8gYWNjZXNzIGEgcGFydCBvZiB0aGUgc3RhdGUuXG4gICAgICogICAgICAgICAgICAgICAgICAgIFRoZSBrZXkgc2hvdWxkIGJlIGEgcHJvcGVydHkgbmFtZSBvZiB0aGUgc3RhdGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRbYV0+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZ30gW2tleU9yTWFwRm5dIC0gRWl0aGVyIGEgbWFwcGluZyBmdW5jdGlvbiBvciBhIHN0cmluZyBrZXkuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgZG90IG5vdGF0aW9uIHRvIGFjY2VzcyBuZXN0ZWQgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNlbGVjdGVkIG9yIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgbm8gcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGVudGlyZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0ga2V5T3JNYXBGblxuICAgICAqL1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IChzOiBUKSA9PiBLIHwgTG9jYWxlU3RhdGUgPSBnZXRMb2NhbGVTdGF0ZTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBkb3ROb3RhdGlvblRvT2JqZWN0ID0gPE8+KG9iajogTywga2V5OiBzdHJpbmcpOiBhbnkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChzbGljZSwgaSkgPT4gc2xpY2VbaV0sIG9iaik7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIGtleU9yTWFwRm4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKChzdGF0ZSkgPT4gKHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBMb2NhbGVTZXJ2aWNlIHdpdGggbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzdGF0ZS5cbiAgICAgKiBCaW5kcyBsYW5ndWFnZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBhbmQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIGxvY2FsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlIHwgdW5kZWZpbmVkfSBbc3RhdGVdIC0gT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGxvY2FsZSBzZXJ2aWNlLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24uXG4gICAgICovXG4gICAgaW5pdChzdGF0ZT86IExvY2FsZVN0YXRlIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoc3RhdGUgfHwgeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsb2NhbGUgc3RhdGUgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhlIG5ldyBzdGF0ZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgICAqIGl0IHRocm93cyBhbiBlcnJvci4gQWxzbyB1cGRhdGVzIHRoZSBnbG9iYWwgTE9DQUxFX0lEIHRva2VuIGlmIGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlfSBzdGF0ZSAtIFRoZSBuZXcgc3RhdGUgdG8gYmUgc2V0IGZvciB0aGUgbG9jYWxlLlxuICAgICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbG9jYWxlIGZvciB0aGUgZ2l2ZW4gc3RhdGUgaWQgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5sb2NhbGVNYXBwZXIoc3RhdGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24oeyAuLi5zdGF0ZSwgaWQgfSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGdsb2JhbCBUT0tFTiBJRCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuYWZmZWN0R2xvYmFsTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVfaWQgPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBMb2NhbGUgZm9yICcke3N0YXRlLmlkfScgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBhZGRMb2NhbGUoJyR7c3RhdGUuaWR9JykgZmlyc3RgO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGV1aSBkb2VzIG5vdCBvZmZlciBhIHdheSB0byBkeW5hbWljYWxseSBhZGQgbG9jYWxlIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZExvY2FsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcHJldmlvdXMgbG9jYWxlIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcHJldmlvdXMgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IHByZXZpb3VzTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZTdGF0ZUluc3RhbmNlPy5pZCB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxvY2FsZSB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgZXVpIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIGR5bmFtaWNhbGx5IGFkZCBsb2NhbGUgaXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9uc1xuICAgICAqXG4gICAgICogRHluYW1pY2FsbHkgbG9hZHMgYW5kIHJlZ2lzdGVycyBsb2NhbGUgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gbG9jYWxlIGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gbG9jYWxlIC0gQW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIG9yIGEgc2luZ2xlIGxvY2FsZSBpZGVudGlmaWVyLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZGluZyBwcm9jZXNzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVucyBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0cyB0aGUgbG9jYWxlIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgaWYgYWN0aXZlTGFuZyBpcyAnZW4nIGFuZCBsb2NhbGUgaXMgJ2VuLUdCJyBpdCB3aWxsIG5vdCB0cmlnZ2VyIGxvY2FsZSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUuYWN0aXZlTGFuZy50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpMThzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaTE4c3RhdGUuYWN0aXZlTGFuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvY2FsZU1hcHBlcihpMThzdGF0ZS5hY3RpdmVMYW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxvY2FsZU1hcHBlcih2YWx1ZT8uYWN0aXZlTGFuZykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsIGUuZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHN0YXRlWydhdmFpbGFibGUnXSA/IHN0YXRlWydhdmFpbGFibGUnXSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gLSBBbiBhcnJheSBvZiBicm93c2VyIGxvY2FsZSBpZGVudGlmaWVycyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NlckxvY2FsZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBicm93c2VyTG9jYWxlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPT09IHVuZGVmaW5lZCA/IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdIDogbmF2aWdhdG9yLmxhbmd1YWdlcztcblxuICAgICAgICBpZiAoIWJyb3dzZXJMb2NhbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMb2NhbGVzLm1hcCgobG9jYWxlKSA9PiBsb2NhbGUudHJpbSgpKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
- import { Injectable, Optional } from '@angular/core';
1
+ import { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
2
3
  import { StorageService } from './storage.service';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../log/log.service";
@@ -7,9 +8,10 @@ import * as i1 from "../log/log.service";
7
8
  */
8
9
  export class LocalStorageService extends StorageService {
9
10
  static { this.NAME = 'LocalStorageService'; }
10
- constructor(log) {
11
+ constructor(log, platformId) {
11
12
  super();
12
13
  this.log = log;
14
+ this.platformId = platformId;
13
15
  }
14
16
  /**
15
17
  * the name of the storage service
@@ -25,15 +27,17 @@ export class LocalStorageService extends StorageService {
25
27
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
26
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
29
  get(key) {
28
- try {
29
- const serialized = localStorage.getItem(key);
30
- return serialized && JSON.parse(serialized);
31
- }
32
- catch (err) {
33
- if (this.log) {
34
- this.log.error(this.name(), 'get', err);
30
+ if (isPlatformBrowser(this.platformId)) {
31
+ try {
32
+ const serialized = localStorage.getItem(key);
33
+ return serialized && JSON.parse(serialized);
34
+ }
35
+ catch (err) {
36
+ if (this.log) {
37
+ this.log.error(this.name(), 'get', err);
38
+ }
39
+ return undefined;
35
40
  }
36
- return undefined;
37
41
  }
38
42
  }
39
43
  /**
@@ -44,13 +48,15 @@ export class LocalStorageService extends StorageService {
44
48
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
45
49
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
50
  set(key, value) {
47
- try {
48
- const serialized = JSON.stringify(value);
49
- localStorage.setItem(key, serialized);
50
- }
51
- catch (err) {
52
- if (this.log) {
53
- this.log.error(this.name(), 'set', err);
51
+ if (isPlatformBrowser(this.platformId)) {
52
+ try {
53
+ const serialized = JSON.stringify(value);
54
+ localStorage.setItem(key, serialized);
55
+ }
56
+ catch (err) {
57
+ if (this.log) {
58
+ this.log.error(this.name(), 'set', err);
59
+ }
54
60
  }
55
61
  }
56
62
  }
@@ -59,21 +65,26 @@ export class LocalStorageService extends StorageService {
59
65
  * @param key the associated key
60
66
  */
61
67
  remove(key) {
62
- try {
63
- localStorage.removeItem(key);
64
- }
65
- catch (err) {
66
- if (this.log) {
67
- this.log.error(this.name(), 'remove', err);
68
+ if (isPlatformBrowser(this.platformId)) {
69
+ try {
70
+ localStorage.removeItem(key);
71
+ }
72
+ catch (err) {
73
+ if (this.log) {
74
+ this.log.error(this.name(), 'remove', err);
75
+ }
68
76
  }
69
77
  }
70
78
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.LogService, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
72
80
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService }); }
73
81
  }
74
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, decorators: [{
75
83
  type: Injectable
76
84
  }], ctorParameters: () => [{ type: i1.LogService, decorators: [{
77
85
  type: Optional
86
+ }] }, { type: undefined, decorators: [{
87
+ type: Inject,
88
+ args: [PLATFORM_ID]
78
89
  }] }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUduRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxjQUFjO2FBQzVDLFNBQUksR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUFFcEMsWUFBa0MsR0FBZTtRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQURzQixRQUFHLEdBQUgsR0FBRyxDQUFZO0lBRWpELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDQSxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1IQUFtSDtJQUNuSCw4REFBOEQ7SUFDOUQsR0FBRyxDQUFDLEdBQVc7UUFDWCxJQUFJLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN2QixJQUFJLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ1gsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBVztRQUNkLElBQUksQ0FBQztZQUNELFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0EvRFEsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUlNLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nL2xvZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBsb2NhbFN0b3JhZ2Ugc2VydmljZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSBleHRlbmRzIFN0b3JhZ2VTZXJ2aWNlIHtcbiAgICBzdGF0aWMgTkFNRSA9ICdMb2NhbFN0b3JhZ2VTZXJ2aWNlJztcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2c6IExvZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBzZXJ2aWNlXG4gICAgICovXG4gICAgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTG9jYWxTdG9yYWdlU2VydmljZS5OQU1FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHJpZXZlIGFuIG9iamVjdCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvciB1bmRlZmluZWQsIGlmIGNhc2Ugb2YgZXJyb3JcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplZCAmJiBKU09OLnBhcnNlKHNlcmlhbGl6ZWQpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nLmVycm9yKHRoaXMubmFtZSgpLCAnZ2V0JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGFuIG9iamVjdCBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICogQHBhcmFtIGtleSB0aGUgYXNzb2NpYXRlZCBrZXlcbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldFxuICAgICAqL1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdzZXQnLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVtb3ZlcyBhbiBvYmplY3QgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICogQHBhcmFtIGtleSB0aGUgYXNzb2NpYXRlZCBrZXlcbiAgICAgKi9cbiAgICByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdyZW1vdmUnLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25EOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7YUFDNUMsU0FBSSxHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUVwQyxZQUFrQyxHQUFlLEVBQStCLFVBQW1CO1FBQy9GLEtBQUssRUFBRSxDQUFDO1FBRHNCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBK0IsZUFBVSxHQUFWLFVBQVUsQ0FBUztJQUVuRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxHQUFXO1FBQ1gsSUFBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELE9BQU8sU0FBUyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN2QixJQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDZCxJQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNYLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBckVRLG1CQUFtQiw0REFHK0IsV0FBVztrSEFIN0QsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFJTSxRQUFROzswQkFBK0IsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5cbi8qKlxuICogbG9jYWxTdG9yYWdlIHNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBTdG9yYWdlU2VydmljZSB7XG4gICAgc3RhdGljIE5BTUUgPSAnTG9jYWxTdG9yYWdlU2VydmljZSc7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nOiBMb2dTZXJ2aWNlLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IHVua25vd24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBzZXJ2aWNlXG4gICAgICovXG4gICAgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTG9jYWxTdG9yYWdlU2VydmljZS5OQU1FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHJpZXZlIGFuIG9iamVjdCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvciB1bmRlZmluZWQsIGlmIGNhc2Ugb2YgZXJyb3JcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZihpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVkICYmIEpTT04ucGFyc2Uoc2VyaWFsaXplZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdnZXQnLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyBhbiBvYmplY3QgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdzZXQnLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlbW92ZXMgYW4gb2JqZWN0IGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICovXG4gICAgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3JlbW92ZScsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,9 +1,10 @@
1
- import { Injectable, Inject } from '@angular/core';
1
+ import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
2
2
  import { ofType, createEffect } from '@ngrx/effects';
3
- import { fromEvent, merge } from 'rxjs';
3
+ import { fromEvent, merge, of } from 'rxjs';
4
4
  import { map, mapTo, mergeMap, tap } from 'rxjs/operators';
5
5
  import { CoreAppActionTypes, UpdateCurrentModuleAction, UpdateAppConnectionAction } from '../actions/app.actions';
6
6
  import { SHOW_CONNECTION_STATUS_TOKEN } from '../../config/tokens';
7
+ import { isPlatformBrowser } from '@angular/common';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@ngrx/effects";
9
10
  import * as i2 from "@ngx-translate/core";
@@ -11,12 +12,20 @@ import * as i3 from "../../growl/eui-growl.service";
11
12
  export class CoreAppEffects {
12
13
  constructor(actions,
13
14
  // TODO: remove on eUI 14
14
- showConnectionStatus, translateService, asService) {
15
+ showConnectionStatus, translateService, asService, platformId) {
15
16
  this.actions = actions;
16
17
  this.showConnectionStatus = showConnectionStatus;
17
18
  this.translateService = translateService;
18
19
  this.asService = asService;
19
- this.getAppConnectionInformation = createEffect(() => merge(fromEvent(window, 'online').pipe(mapTo(true)), fromEvent(window, 'offline').pipe(mapTo(false))).pipe(map((connected) => new UpdateAppConnectionAction(connected))));
20
+ this.platformId = platformId;
21
+ this.getAppConnectionInformation = createEffect(() => {
22
+ if (isPlatformBrowser(this.platformId)) {
23
+ return merge(fromEvent(window, 'online').pipe(mapTo(true)), fromEvent(window, 'offline').pipe(mapTo(false))).pipe(map((connected) => new UpdateAppConnectionAction(connected)));
24
+ }
25
+ else {
26
+ return of(new UpdateAppConnectionAction(false));
27
+ }
28
+ });
20
29
  this.activatedRoute = createEffect(() => this.actions.pipe(ofType(CoreAppActionTypes.ACTIVATED_ROUTE), map((action) => action.payload), mergeMap((route) => {
21
30
  // extract the module name, if defined
22
31
  const module = route.snapshot.data['module'] || 'undefined';
@@ -43,7 +52,7 @@ export class CoreAppEffects {
43
52
  }
44
53
  })), { dispatch: false });
45
54
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, deps: [{ token: i1.Actions }, { token: SHOW_CONNECTION_STATUS_TOKEN }, { token: i2.TranslateService }, { token: i3.EuiGrowlService }], target: i0.ɵɵFactoryTarget.Injectable }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, deps: [{ token: i1.Actions }, { token: SHOW_CONNECTION_STATUS_TOKEN }, { token: i2.TranslateService }, { token: i3.EuiGrowlService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
47
56
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects }); }
48
57
  }
49
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, decorators: [{
@@ -51,5 +60,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
51
60
  }], ctorParameters: () => [{ type: i1.Actions }, { type: undefined, decorators: [{
52
61
  type: Inject,
53
62
  args: [SHOW_CONNECTION_STATUS_TOKEN]
54
- }] }, { type: i2.TranslateService }, { type: i3.EuiGrowlService }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JlL2VmZmVjdHMvYXBwLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFXLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBd0IseUJBQXlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd4SSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFJbkUsTUFBTSxPQUFPLGNBQWM7SUEwRHZCLFlBQ2MsT0FBZ0I7SUFDMUIseUJBQXlCO0lBQ3VCLG9CQUFnRCxFQUN0RixnQkFBa0MsRUFDbEMsU0FBMEI7UUFKMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUVzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTRCO1FBQ3RGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUE5RHhDLGdDQUEyQixHQUF1QixZQUFZLENBQUMsR0FBRyxFQUFFLENBQ2hFLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFD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QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSwgY3JlYXRlRWZmZWN0IH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb3JlQXBwQWN0aW9uVHlwZXMsIEFjdGl2YXRlZFJvdXRlQWN0aW9uLCBVcGRhdGVDdXJyZW50TW9kdWxlQWN0aW9uLCBVcGRhdGVBcHBDb25uZWN0aW9uQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5cbmltcG9ydCB7IEV1aUdyb3dsU2VydmljZSB9IGZyb20gJy4uLy4uL2dyb3dsL2V1aS1ncm93bC5zZXJ2aWNlJztcbmltcG9ydCB7IFNIT1dfQ09OTkVDVElPTl9TVEFUVVNfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29yZUFwcEVmZmVjdHMge1xuICAgIGdldEFwcENvbm5lY3Rpb25JbmZvcm1hdGlvbjogT2JzZXJ2YWJsZTxBY3Rpb24+ID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgICAgIG1lcmdlKGZyb21FdmVudCh3aW5kb3csICdvbmxpbmUnKS5waXBlKG1hcFRvKHRydWUpKSwgZnJvbUV2ZW50KHdpbmRvdywgJ29mZmxpbmUnKS5waXBlKG1hcFRvKGZhbHNlKSkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNvbm5lY3RlZCkgPT4gbmV3IFVwZGF0ZUFwcENvbm5lY3Rpb25BY3Rpb24oY29ubmVjdGVkKSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIGFjdGl2YXRlZFJvdXRlOiBPYnNlcnZhYmxlPEFjdGlvbj4gPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICAgICAgdGhpcy5hY3Rpb25zLnBpcGUoXG4gICAgICAgICAgICBvZlR5cGUoQ29yZUFwcEFjdGlvblR5cGVzLkFDVElWQVRFRF9ST1VURSksXG4gICAgICAgICAgICBtYXAoKGFjdGlvbjogQWN0aXZhdGVkUm91dGVBY3Rpb24pID0+IGFjdGlvbi5wYXlsb2FkKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKChyb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhlIG1vZHVsZSBuYW1lLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gcm91dGUuc25hcHNob3QuZGF0YVsnbW9kdWxlJ10gfHwgJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgVXBkYXRlQ3VycmVudE1vZHVsZUFjdGlvbihtb2R1bGUpXTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICB1cGRhdGVBcHBDb25uZWN0aW9uID0gY3JlYXRlRWZmZWN0KFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnBpcGUoXG4gICAgICAgICAgICAgICAgb2ZUeXBlKENvcmVBcHBBY3Rpb25UeXBlcy5VUERBVEVfQVBQX0NPTk5FQ1RJT04pLFxuICAgICAgICAgICAgICAgIG1hcCgoYWN0aW9uOiBVcGRhdGVBcHBDb25uZWN0aW9uQWN0aW9uKSA9PiBhY3Rpb24ucGF5bG9hZCksXG4gICAgICAgICAgICAgICAgdGFwKChjb25uZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogZm9yIGVVSSAxNCwgZHJvcCBib29sZWFuIHN1cHBvcnQgYW5kIHJlZmFjdG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGZlYXR1cmUgaXMgZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZlYXR1cmVFbmFibGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzICE9PSAnYm9vbGVhbicgPyB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzPy5lbmFibGVkIDogdGhpcy5zaG93Q29ubmVjdGlvblN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgLy8gZXh0cmFjdCBsaWZlc3BhbiBpZiBhbnlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZXNwYW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuc2hvd0Nvbm5lY3Rpb25TdGF0dXMgIT09ICdib29sZWFuJyA/IHRoaXMuc2hvd0Nvbm5lY3Rpb25TdGF0dXM/Lm1lc3NhZ2VCb3g/LmxpZmVzcGFuIHx8IDAgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGJlIGluZm9ybWVkIGFib3V0IHRoZSBjb25uZWN0aW9uIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGZWF0dXJlRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ2V1aS5DT05ORUNURUQnKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLmdyb3dsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnTUVTU0FHRScsIGRldGFpbDogdHJhbnNsYXRpb24sIGxpZmU6IGxpZmVzcGFuIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlc3BhbiA8IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnZXVpLk5PVENPTk5FQ1RFRCcpLnN1YnNjcmliZSgodHJhbnNsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuZ3Jvd2woXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNldmVyaXR5OiAnZGFuZ2VyJywgc3VtbWFyeTogJ0VSUk9SJywgZGV0YWlsOiB0cmFuc2xhdGlvbiwgbGlmZTogbGlmZXNwYW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVzcGFuIDwgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICB7IGRpc3BhdGNoOiBmYWxzZSB9LFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGFjdGlvbnM6IEFjdGlvbnMsXG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSBvbiBlVUkgMTRcbiAgICAgICAgQEluamVjdChTSE9XX0NPTk5FQ1RJT05fU1RBVFVTX1RPS0VOKSBwcm90ZWN0ZWQgc2hvd0Nvbm5lY3Rpb25TdGF0dXM6IGJvb2xlYW4gfCBDb25uZWN0aW9uU3RhdHVzLFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFzU2VydmljZTogRXVpR3Jvd2xTZXJ2aWNlLFxuICAgICkge31cbn1cbiJdfQ==
63
+ }] }, { type: i2.TranslateService }, { type: i3.EuiGrowlService }, { type: undefined, decorators: [{
64
+ type: Inject,
65
+ args: [PLATFORM_ID]
66
+ }] }] });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JlL2VmZmVjdHMvYXBwLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2hFLE9BQU8sRUFBVyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGtCQUFrQixFQUF3Qix5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3hJLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUdwRCxNQUFNLE9BQU8sY0FBYztJQWtFdkIsWUFDYyxPQUFnQjtJQUMxQix5QkFBeUI7SUFDdUIsb0JBQWdELEVBQ3RGLGdCQUFrQyxFQUNsQyxTQUEwQixFQUNMLFVBQW1CO1FBTHhDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFc0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE0QjtRQUN0RixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQ0wsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQXZFdEQsZ0NBQTJCLEdBQXVCLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDNUQsSUFBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztn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RUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUM3RSxRQUFRLEdBQUcsQ0FBQyxFQUNaLEtBQUssQ0FDUixDQUFDO29CQUNOLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsRUFDTCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDdEIsQ0FBQztJQVNDLENBQUM7OEdBekVLLGNBQWMseUNBcUVYLDRCQUE0Qiw0RUFHNUIsV0FBVztrSEF4RWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBc0VGLE1BQU07MkJBQUMsNEJBQTRCOzswQkFHbkMsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlLCBjcmVhdGVFZmZlY3QgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgbWVyZ2UsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb3JlQXBwQWN0aW9uVHlwZXMsIEFjdGl2YXRlZFJvdXRlQWN0aW9uLCBVcGRhdGVDdXJyZW50TW9kdWxlQWN0aW9uLCBVcGRhdGVBcHBDb25uZWN0aW9uQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5cbmltcG9ydCB7IEV1aUdyb3dsU2VydmljZSB9IGZyb20gJy4uLy4uL2dyb3dsL2V1aS1ncm93bC5zZXJ2aWNlJztcbmltcG9ydCB7IFNIT1dfQ09OTkVDVElPTl9TVEFUVVNfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29yZUFwcEVmZmVjdHMge1xuICAgIGdldEFwcENvbm5lY3Rpb25JbmZvcm1hdGlvbjogT2JzZXJ2YWJsZTxBY3Rpb24+ID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdvbmxpbmUnKS5waXBlKG1hcFRvKHRydWUpKSxcbiAgICAgICAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ29mZmxpbmUnKS5waXBlKG1hcFRvKGZhbHNlKSksXG4gICAgICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGNvbm5lY3RlZCkgPT4gbmV3IFVwZGF0ZUFwcENvbm5lY3Rpb25BY3Rpb24oY29ubmVjdGVkKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobmV3IFVwZGF0ZUFwcENvbm5lY3Rpb25BY3Rpb24oZmFsc2UpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICk7XG5cbiAgICBhY3RpdmF0ZWRSb3V0ZTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgICAgIHRoaXMuYWN0aW9ucy5waXBlKFxuICAgICAgICAgICAgb2ZUeXBlKENvcmVBcHBBY3Rpb25UeXBlcy5BQ1RJVkFURURfUk9VVEUpLFxuICAgICAgICAgICAgbWFwKChhY3Rpb246IEFjdGl2YXRlZFJvdXRlQWN0aW9uKSA9PiBhY3Rpb24ucGF5bG9hZCksXG4gICAgICAgICAgICBtZXJnZU1hcCgocm91dGUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBleHRyYWN0IHRoZSBtb2R1bGUgbmFtZSwgaWYgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IHJvdXRlLnNuYXBzaG90LmRhdGFbJ21vZHVsZSddIHx8ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFVwZGF0ZUN1cnJlbnRNb2R1bGVBY3Rpb24obW9kdWxlKV07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgdXBkYXRlQXBwQ29ubmVjdGlvbiA9IGNyZWF0ZUVmZmVjdChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5waXBlKFxuICAgICAgICAgICAgICAgIG9mVHlwZShDb3JlQXBwQWN0aW9uVHlwZXMuVVBEQVRFX0FQUF9DT05ORUNUSU9OKSxcbiAgICAgICAgICAgICAgICBtYXAoKGFjdGlvbjogVXBkYXRlQXBwQ29ubmVjdGlvbkFjdGlvbikgPT4gYWN0aW9uLnBheWxvYWQpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29ubmVjdGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZvciBlVUkgMTQsIGRyb3AgYm9vbGVhbiBzdXBwb3J0IGFuZCByZWZhY3RvclxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBmZWF0dXJlIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGZWF0dXJlRW5hYmxlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaG93Q29ubmVjdGlvblN0YXR1cyAhPT0gJ2Jvb2xlYW4nID8gdGhpcy5zaG93Q29ubmVjdGlvblN0YXR1cz8uZW5hYmxlZCA6IHRoaXMuc2hvd0Nvbm5lY3Rpb25TdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgbGlmZXNwYW4gaWYgYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVzcGFuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzICE9PSAnYm9vbGVhbicgPyB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzPy5tZXNzYWdlQm94Py5saWZlc3BhbiB8fCAwIDogMDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdXNlciBuZWVkcyB0byBiZSBpbmZvcm1lZCBhYm91dCB0aGUgY29ubmVjdGlvbiBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmVhdHVyZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdldWkuQ09OTkVDVEVEJykuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFzU2VydmljZS5ncm93bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ01FU1NBR0UnLCBkZXRhaWw6IHRyYW5zbGF0aW9uLCBsaWZlOiBsaWZlc3BhbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZXNwYW4gPCAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ2V1aS5OT1RDT05ORUNURUQnKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLmdyb3dsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzZXZlcml0eTogJ2RhbmdlcicsIHN1bW1hcnk6ICdFUlJPUicsIGRldGFpbDogdHJhbnNsYXRpb24sIGxpZmU6IGxpZmVzcGFuIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlc3BhbiA8IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgeyBkaXNwYXRjaDogZmFsc2UgfSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhY3Rpb25zOiBBY3Rpb25zLFxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgb24gZVVJIDE0XG4gICAgICAgIEBJbmplY3QoU0hPV19DT05ORUNUSU9OX1NUQVRVU19UT0tFTikgcHJvdGVjdGVkIHNob3dDb25uZWN0aW9uU3RhdHVzOiBib29sZWFuIHwgQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhc1NlcnZpY2U6IEV1aUdyb3dsU2VydmljZSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQ6IHVua25vd24sXG4gICAgKSB7fVxufVxuIl19
@@ -1,21 +1,31 @@
1
+ import { inject, PLATFORM_ID } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
1
3
  import { CoreAppActionTypes } from '../actions/app.actions';
2
4
  import * as extendProxy from 'extend';
3
5
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
4
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
7
  const extend = extendProxy.default || extendProxy;
6
- /**
7
- * Utility meta-reducer to load the state from the local storage
8
- * @param reducer the action reducer
9
- */
10
- export function localStorageSync(reducer) {
11
- return cb(reducer, localStorage);
8
+ export function localStorageSync(reducer, platformId) {
9
+ if (platformId) {
10
+ return (reducer) => {
11
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
12
+ };
13
+ }
14
+ else {
15
+ const platformId = inject(PLATFORM_ID, { optional: true });
16
+ return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
17
+ }
12
18
  }
13
- /**
14
- * Utility meta-reducer to load the state from the session storage
15
- * @param reducer the action reducer
16
- */
17
- export function sessionStorageSync(reducer) {
18
- return cb(reducer, sessionStorage);
19
+ export function sessionStorageSync(reducer, platformId) {
20
+ if (platformId) {
21
+ return (reducer) => {
22
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
23
+ };
24
+ }
25
+ else {
26
+ const platformId = inject(PLATFORM_ID, { optional: true });
27
+ return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
28
+ }
19
29
  }
20
30
  // Keys that are allowed to be synced with NgRx state from BrowserStorage
21
31
  const disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];
@@ -42,6 +52,9 @@ const filterAppState = (app) => {
42
52
  * @param storage Type of storage to load the state from
43
53
  */
44
54
  export const loadState = (storage = localStorage) => {
55
+ if (!storage) {
56
+ return undefined;
57
+ }
45
58
  try {
46
59
  // by default falls back to localStorage
47
60
  const serializedState = storage.getItem('state');
@@ -64,28 +77,29 @@ const cb = (reducer, storage) => (state, action) => {
64
77
  // We load the state from a storage and compare the version and userId with the provided ones.
65
78
  // If they are the same, we merge the local state into the initial state.
66
79
  // If there is a mismatch, we don't merge the local state, but update only the initial state.
67
- // load the state from the localStorage
68
- const localState = loadState(storage);
69
- // extract the details about user and app version from the action payload
70
- const payload = action.payload;
71
- const payloadVersion = payload?.version;
72
- if (localState) {
73
- // TODO: Why all these checks here? What is the purpose of this code?
74
- // extract the details about user and app version from the storage state
75
- const localVersion = localState?.app?.version;
76
- // const localUserId = localState.user && localState.user.userId;
77
- const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
78
- // const isUserIdOK = (localUserId === payloadUserId);
79
- // update the entire state with deep merge of states, if the version and user are the same
80
- if (isVersionOK) {
81
- state = extend(true, {}, state, localState);
80
+ if (storage) {
81
+ // load the state from the localStorage
82
+ const localState = loadState(storage);
83
+ // extract the details about user and app version from the action payload
84
+ const payloadVersion = action.payload?.version;
85
+ if (localState) {
86
+ // TODO: Why all these checks here? What is the purpose of this code?
87
+ // extract the details about user and app version from the storage state
88
+ const localVersion = localState?.app?.version;
89
+ // const localUserId = localState.user && localState.user.userId;
90
+ const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
91
+ // const isUserIdOK = (localUserId === payloadUserId);
92
+ // update the entire state with deep merge of states, if the version and user are the same
93
+ if (isVersionOK) {
94
+ state = extend(true, {}, state, localState);
95
+ }
96
+ }
97
+ // update the app version, if defined
98
+ if (payloadVersion) {
99
+ state = { ...state, app: { ...state?.app, version: payloadVersion } };
82
100
  }
83
- }
84
- // update the app version, if defined
85
- if (payloadVersion) {
86
- state = { ...state, app: { ...state?.app, version: payloadVersion } };
87
101
  }
88
102
  }
89
103
  return reducer(state, action);
90
104
  };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQUV6RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCO0lBQzNFLE9BQU8sRUFBRSxDQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QjtJQUM3RSxPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSxNQUFNLGNBQWMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRWpHOzs7R0FHRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBYSxFQUFZLEVBQUU7SUFDL0MsaUVBQWlFO0lBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNaLG1EQUFtRDtTQUNsRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxzREFBc0Q7U0FDckQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ2IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFzQixVQUFtQixZQUFZLEVBQUssRUFBRTtJQUNqRixJQUFJLENBQUM7UUFDRCx3Q0FBd0M7UUFDeEMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsOEJBQThCO1FBQzlCLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFdEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDWCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxFQUFFLEdBQ0osQ0FBc0IsT0FBeUIsRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FDckUsQ0FBQyxLQUFRLEVBQUUsTUFBYyxFQUFLLEVBQUU7SUFDNUIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hELHlEQUF5RDtRQUN6RCw4RkFBOEY7UUFDOUYseUVBQXlFO1FBQ3pFLDZGQUE2RjtRQUU3Rix1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQU0sU0FBUyxDQUFJLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLHlFQUF5RTtRQUN6RSxNQUFNLE9BQU8sR0FBSSxNQUEwQixDQUFDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBRXhDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixxRUFBcUU7WUFDckUsd0VBQXdFO1lBQ3hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDO1lBQzlDLGlFQUFpRTtZQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO1lBQ3hGLHNEQUFzRDtZQUV0RCwwRkFBMEY7WUFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQzFFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBsb2NhbFN0b3JhZ2UpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBzZXNzaW9uU3RvcmFnZSk7XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlID0gbG9jYWxTdG9yYWdlKTogUyA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYnkgZGVmYXVsdCBmYWxscyBiYWNrIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBzdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJyk7XG5cbiAgICAgICAgaWYgKHNlcmlhbGl6ZWRTdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc2VyaWFsaXplIHN0YXRlXG4gICAgICAgIGxldCBzdGF0ZTogUyA9IEpTT04ucGFyc2Uoc2VyaWFsaXplZFN0YXRlKTtcblxuICAgICAgICAvLyBmaWx0ZXIgQXBwU3RhdGUgYW5kIHJlcGxhY2VcbiAgICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCBhcHA6IGZpbHRlckFwcFN0YXRlKHN0YXRlPy5hcHApIH07XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbmNvbnN0IGNiID1cbiAgICA8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPiwgc3RvcmFnZTogU3RvcmFnZSkgPT5cbiAgICAoc3RhdGU6IFMsIGFjdGlvbjogQWN0aW9uKTogUyA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQ29yZUFwcEFjdGlvblR5cGVzLklOSVRfU1RPUkUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgYWN0aW9uIG11c3QgYmUgZGlzcGF0Y2hlZCBmcm9tIGFuIGFwcCBpbml0aWFsaXplclxuICAgICAgICAgICAgLy8gV2UgbG9hZCB0aGUgc3RhdGUgZnJvbSBhIHN0b3JhZ2UgYW5kIGNvbXBhcmUgdGhlIHZlcnNpb24gYW5kIHVzZXJJZCB3aXRoIHRoZSBwcm92aWRlZCBvbmVzLlxuICAgICAgICAgICAgLy8gSWYgdGhleSBhcmUgdGhlIHNhbWUsIHdlIG1lcmdlIHRoZSBsb2NhbCBzdGF0ZSBpbnRvIHRoZSBpbml0aWFsIHN0YXRlLlxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaXNtYXRjaCwgd2UgZG9uJ3QgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlLCBidXQgdXBkYXRlIG9ubHkgdGhlIGluaXRpYWwgc3RhdGUuXG5cbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZTogUyA9IGxvYWRTdGF0ZTxTPihzdG9yYWdlKTtcblxuICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IChhY3Rpb24gYXMgSW5pdFN0b3JlQWN0aW9uKS5wYXlsb2FkO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZFZlcnNpb24gPSBwYXlsb2FkPy52ZXJzaW9uO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoeSBhbGwgdGhlc2UgY2hlY2tzIGhlcmU/IFdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlP1xuICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhlIGRldGFpbHMgYWJvdXQgdXNlciBhbmQgYXBwIHZlcnNpb24gZnJvbSB0aGUgc3RvcmFnZSBzdGF0ZVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBsb2NhbFVzZXJJZCA9IGxvY2FsU3RhdGUudXNlciAmJiBsb2NhbFN0YXRlLnVzZXIudXNlcklkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNWZXJzaW9uT0sgPSAhbG9jYWxWZXJzaW9uIHx8ICFwYXlsb2FkVmVyc2lvbiB8fCBsb2NhbFZlcnNpb24gPT09IHBheWxvYWRWZXJzaW9uO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBlbnRpcmUgc3RhdGUgd2l0aCBkZWVwIG1lcmdlIG9mIHN0YXRlcywgaWYgdGhlIHZlcnNpb24gYW5kIHVzZXIgYXJlIHRoZSBzYW1lXG4gICAgICAgICAgICAgICAgaWYgKGlzVmVyc2lvbk9LKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICBpZiAocGF5bG9hZFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGFwcDogeyAuLi5zdGF0ZT8uYXBwLCB2ZXJzaW9uOiBwYXlsb2FkVmVyc2lvbiB9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQVl6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCLEVBQUUsVUFBb0I7SUFDakcsSUFBRyxVQUFVLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBc0IsT0FBeUIsRUFBbUMsRUFBRTtZQUN2RixPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxFQUFFLENBQUksT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7QUFDTCxDQUFDO0FBWUQsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QixFQUFFLFVBQW9C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QU0sY0FBYyxHQUFJLE1BQTBCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUVwRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLHFFQUFxRTtnQkFDckUsd0VBQXdFO2dCQUN4RSxNQUFNLFlBQVksR0FBRyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztnQkFDOUMsaUVBQWlFO2dCQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO2dCQUN4RixzREFBc0Q7Z0JBRXRELDBGQUEwRjtnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUVELHFDQUFxQztZQUNyQyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHBsYXRmb3JtSWQ6IHVua25vd24pOiAoKHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4pID0+IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMpO1xuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlU3luYzxTIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFM+LCBwbGF0Zm9ybUlkPzogdW5rbm93bik6IEZ1bmN0aW9uIHtcbiAgICBpZihwbGF0Zm9ybUlkKSB7XG4gICAgICAgIHJldHVybiA8VCBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxUPik6IChzdGF0ZTogVCwgYWN0aW9uOiBBY3Rpb24pID0+IFQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNiPFQ+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lELCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gY2I8Uz4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBsb2NhbFN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBtZXRhLXJlZHVjZXIgdG8gbG9hZCB0aGUgc3RhdGUgZnJvbSB0aGUgc2Vzc2lvbiBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocGxhdGZvcm1JZDogdW5rbm93bik6ICgocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPikgPT4gKHN0YXRlOiBTLCBhY3Rpb246IEFjdGlvbikgPT4gUyk7XG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gc2Vzc2lvblN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHBsYXRmb3JtSWQ/OiB1bmtub3duKTogRnVuY3Rpb24ge1xuICAgIGlmKHBsYXRmb3JtSWQpIHtcbiAgICAgICAgcmV0dXJuIDxUIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFQ+KTogKHN0YXRlOiBULCBhY3Rpb246IEFjdGlvbikgPT4gVCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2I8VD4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBzZXNzaW9uU3RvcmFnZSA6IG51bGwpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIGNiPFM+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGxvY2FsU3RvcmFnZSk6IFMgPT4ge1xuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgZmFsbHMgYmFjayB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlID0gc3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpO1xuXG4gICAgICAgIGlmIChzZXJpYWxpemVkU3RhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXNlcmlhbGl6ZSBzdGF0ZVxuICAgICAgICBsZXQgc3RhdGU6IFMgPSBKU09OLnBhcnNlKHNlcmlhbGl6ZWRTdGF0ZSk7XG5cbiAgICAgICAgLy8gZmlsdGVyIEFwcFN0YXRlIGFuZCByZXBsYWNlXG4gICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiBmaWx0ZXJBcHBTdGF0ZShzdGF0ZT8uYXBwKSB9O1xuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59O1xuXG5jb25zdCBjYiA9XG4gICAgPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsKSA9PlxuICAgIChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pOiBTID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb3JlQXBwQWN0aW9uVHlwZXMuSU5JVF9TVE9SRSkge1xuICAgICAgICAgICAgLy8gVGhpcyBhY3Rpb24gbXVzdCBiZSBkaXNwYXRjaGVkIGZyb20gYW4gYXBwIGluaXRpYWxpemVyXG4gICAgICAgICAgICAvLyBXZSBsb2FkIHRoZSBzdGF0ZSBmcm9tIGEgc3RvcmFnZSBhbmQgY29tcGFyZSB0aGUgdmVyc2lvbiBhbmQgdXNlcklkIHdpdGggdGhlIHByb3ZpZGVkIG9uZXMuXG4gICAgICAgICAgICAvLyBJZiB0aGV5IGFyZSB0aGUgc2FtZSwgd2UgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlIGludG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pc21hdGNoLCB3ZSBkb24ndCBtZXJnZSB0aGUgbG9jYWwgc3RhdGUsIGJ1dCB1cGRhdGUgb25seSB0aGUgaW5pdGlhbCBzdGF0ZS5cblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFN0YXRlOiBTID0gbG9hZFN0YXRlPFM+KHN0b3JhZ2UpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWRWZXJzaW9uID0gKGFjdGlvbiBhcyBJbml0U3RvcmVBY3Rpb24pLnBheWxvYWQ/LnZlcnNpb247XG5cbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBXaHkgYWxsIHRoZXNlIGNoZWNrcyBoZXJlPyBXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZT9cbiAgICAgICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBzdG9yYWdlIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgbG9jYWxVc2VySWQgPSBsb2NhbFN0YXRlLnVzZXIgJiYgbG9jYWxTdGF0ZS51c2VyLnVzZXJJZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZlcnNpb25PSyA9ICFsb2NhbFZlcnNpb24gfHwgIXBheWxvYWRWZXJzaW9uIHx8IGxvY2FsVmVyc2lvbiA9PT0gcGF5bG9hZFZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgZW50aXJlIHN0YXRlIHdpdGggZGVlcCBtZXJnZSBvZiBzdGF0ZXMsIGlmIHRoZSB2ZXJzaW9uIGFuZCB1c2VyIGFyZSB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWZXJzaW9uT0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWRWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiB7IC4uLnN0YXRlPy5hcHAsIHZlcnNpb246IHBheWxvYWRWZXJzaW9uIH0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19