nuxeo-development-framework 5.3.3 → 5.3.5

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 (129) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +2694 -292
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +5 -2
  4. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +5 -2
  5. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  6. package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +35 -0
  7. package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +43 -0
  8. package/esm2015/lib/components/ndf-config-editor/components/index.js +4 -0
  9. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +27 -0
  10. package/esm2015/lib/components/ndf-config-editor/config.token.js +3 -0
  11. package/esm2015/lib/components/ndf-config-editor/constants/index.js +4 -0
  12. package/esm2015/lib/components/ndf-config-editor/constants/mode.js +5 -0
  13. package/esm2015/lib/components/ndf-config-editor/constants/query.js +5 -0
  14. package/esm2015/lib/components/ndf-config-editor/constants/type.js +5 -0
  15. package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +28 -0
  16. package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +73 -0
  17. package/esm2015/lib/components/ndf-config-editor/containers/index.js +5 -0
  18. package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +195 -0
  19. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +133 -0
  20. package/esm2015/lib/components/ndf-config-editor/index.js +2 -0
  21. package/esm2015/lib/components/ndf-config-editor/models/config.js +2 -0
  22. package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +2 -0
  23. package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +2 -0
  24. package/esm2015/lib/components/ndf-config-editor/models/index.js +5 -0
  25. package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +2 -0
  26. package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +118 -0
  27. package/esm2015/lib/components/ndf-config-editor/pipes/index.js +3 -0
  28. package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +17 -0
  29. package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +16 -0
  30. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +104 -0
  31. package/esm2015/lib/components/ndf-config-editor/public/index.js +2 -0
  32. package/esm2015/lib/components/ndf-config-editor/public-api.js +7 -0
  33. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +26 -0
  34. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +52 -0
  35. package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +1321 -0
  36. package/esm2015/lib/components/ndf-config-editor/services/index.js +4 -0
  37. package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +51 -0
  38. package/esm2015/lib/components/ndf-config-editor/utility/index.js +2 -0
  39. package/esm2015/lib/components/ndf-config-editor/utility/json.js +10 -0
  40. package/esm2015/lib/components/reports/index.js +3 -0
  41. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +19 -12
  42. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +14 -5
  43. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +15 -1
  44. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +9 -1
  45. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
  46. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +20 -14
  47. package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -2
  48. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  49. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +15 -7
  50. package/esm2015/lib/core/services/extension/component-register.service.js +4 -1
  51. package/esm2015/lib/core/services/translation/translation.service.js +15 -4
  52. package/esm2015/lib/core/services/user/user-preferences.service.js +3 -2
  53. package/esm2015/lib/core/tokens/index.js +2 -0
  54. package/esm2015/lib/core/tokens/project.token.js +3 -0
  55. package/esm2015/lib/directive/permissions/evaluators.service.js +20 -18
  56. package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +41 -0
  57. package/esm2015/lib/shared/directives/element-height.directive.js +80 -0
  58. package/esm2015/lib/shared/directives/fluid-height.directive.js +115 -0
  59. package/esm2015/lib/shared/directives/index.js +4 -0
  60. package/esm2015/lib/shared/index.js +6 -0
  61. package/esm2015/lib/shared/libraryShared.module.js +35 -10
  62. package/esm2015/lib/shared/models/index.js +2 -1
  63. package/esm2015/lib/shared/models/ndf-request.model.js +2 -0
  64. package/esm2015/public-api.js +4 -1
  65. package/fesm2015/nuxeo-development-framework.js +2549 -194
  66. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  67. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +2 -1
  68. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +2 -1
  69. package/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.d.ts +14 -0
  70. package/lib/components/ndf-config-editor/components/editor-mode-switch.component.d.ts +17 -0
  71. package/lib/components/ndf-config-editor/components/index.d.ts +3 -0
  72. package/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.d.ts +11 -0
  73. package/lib/components/ndf-config-editor/config.token.d.ts +9 -0
  74. package/lib/components/ndf-config-editor/constants/index.d.ts +3 -0
  75. package/lib/components/ndf-config-editor/constants/mode.d.ts +4 -0
  76. package/lib/components/ndf-config-editor/constants/query.d.ts +4 -0
  77. package/lib/components/ndf-config-editor/constants/type.d.ts +4 -0
  78. package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts +15 -0
  79. package/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.d.ts +24 -0
  80. package/lib/components/ndf-config-editor/containers/index.d.ts +4 -0
  81. package/lib/components/ndf-config-editor/containers/monaco-editor.component.d.ts +33 -0
  82. package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts +48 -0
  83. package/lib/components/ndf-config-editor/index.d.ts +1 -0
  84. package/lib/components/ndf-config-editor/models/config.d.ts +24 -0
  85. package/lib/components/ndf-config-editor/models/dialog-data.d.ts +6 -0
  86. package/lib/components/ndf-config-editor/models/editor-model.d.ts +15 -0
  87. package/lib/components/ndf-config-editor/models/index.d.ts +4 -0
  88. package/lib/components/ndf-config-editor/models/type-helper.d.ts +3 -0
  89. package/lib/components/ndf-config-editor/ndf-config-editor.module.d.ts +36 -0
  90. package/lib/components/ndf-config-editor/pipes/index.d.ts +2 -0
  91. package/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.d.ts +7 -0
  92. package/lib/components/ndf-config-editor/pipes/validate-object.pipe.d.ts +7 -0
  93. package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts +31 -0
  94. package/lib/components/ndf-config-editor/public/index.d.ts +1 -0
  95. package/lib/components/ndf-config-editor/public-api.d.ts +6 -0
  96. package/lib/components/ndf-config-editor/services/data-access.service.d.ts +8 -0
  97. package/lib/components/ndf-config-editor/services/data-store.service.d.ts +24 -0
  98. package/lib/components/ndf-config-editor/services/dummy-data.d.ts +992 -0
  99. package/lib/components/ndf-config-editor/services/index.d.ts +3 -0
  100. package/lib/components/ndf-config-editor/services/monaco.loader.service.d.ts +14 -0
  101. package/lib/components/ndf-config-editor/utility/index.d.ts +1 -0
  102. package/lib/components/ndf-config-editor/utility/json.d.ts +1 -0
  103. package/lib/components/reports/index.d.ts +2 -0
  104. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +6 -3
  105. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +4 -2
  106. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +10 -0
  107. package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts +6 -0
  108. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -1
  109. package/lib/components/tables/ndf-table/directives/index.d.ts +0 -1
  110. package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -0
  111. package/lib/components/tables/ndf-table/ndf-table.module.d.ts +4 -2
  112. package/lib/core/services/extension/component-register.service.d.ts +3 -0
  113. package/lib/core/services/translation/translation.service.d.ts +2 -0
  114. package/lib/core/services/user/user-preferences.service.d.ts +4 -0
  115. package/lib/core/tokens/index.d.ts +1 -0
  116. package/lib/core/tokens/project.token.d.ts +2 -0
  117. package/lib/directive/permissions/evaluators.service.d.ts +4 -2
  118. package/lib/shared/directives/copy-to-clipboard.directive.d.ts +15 -0
  119. package/lib/shared/directives/element-height.directive.d.ts +28 -0
  120. package/lib/{components/tables/ndf-table → shared}/directives/fluid-height.directive.d.ts +2 -1
  121. package/lib/shared/directives/index.d.ts +3 -0
  122. package/lib/shared/index.d.ts +5 -0
  123. package/lib/shared/libraryShared.module.d.ts +3 -1
  124. package/lib/shared/models/index.d.ts +1 -0
  125. package/lib/shared/models/ndf-request.model.d.ts +7 -0
  126. package/package.json +4 -2
  127. package/public-api.d.ts +3 -0
  128. package/src/docs/ndf-table.doc.md +1431 -0
  129. package/esm2015/lib/components/tables/ndf-table/directives/fluid-height.directive.js +0 -112
@@ -1,8 +1,10 @@
1
- import { Inject, Injectable, InjectionToken, Optional, } from '@angular/core';
1
+ var _TranslationService_instances, _TranslationService_ClientTranslationFiles_get;
2
+ import { __classPrivateFieldGet } from "tslib";
3
+ import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
2
4
  import { BehaviorSubject, forkJoin, from } from 'rxjs';
3
5
  import { catchError, map } from 'rxjs/operators';
4
6
  import { Lang } from '../../enums/language.enum';
5
- import { UserPreferenceValues, } from '../user/user-preferences.service';
7
+ import { UserPreferenceValues } from '../user/user-preferences.service';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "@ngx-translate/core";
8
10
  import * as i2 from "../localStorag/local-storag.service";
@@ -15,9 +17,11 @@ export class TranslationService {
15
17
  this.translate = translate;
16
18
  this.rendererFactory = rendererFactory;
17
19
  this.localStorage = localStorage;
20
+ this.userPreferencesService = userPreferencesService;
18
21
  this.appConfig = appConfig;
19
22
  this.nuxeoService = nuxeoService;
20
23
  this.environment = environment;
24
+ _TranslationService_instances.add(this);
21
25
  this.isArabic = new BehaviorSubject(false);
22
26
  this.isArabic$ = this.isArabic.asObservable();
23
27
  this.translationApiName = this.appConfig.myConfiguration['translationApi'] ? this.appConfig.myConfiguration['translationApi'] : null;
@@ -63,13 +67,16 @@ export class TranslationService {
63
67
  * @param fallback Language code to fall back to if the first one was unavailable
64
68
  */
65
69
  loadTranslation(lang, fallback) {
70
+ let clientTranslation;
66
71
  if (lang === Lang.Arabic) {
67
72
  this.renderer.addClass(document.body, 'rtl');
68
73
  this.isArabic.next(true);
74
+ clientTranslation = __classPrivateFieldGet(this, _TranslationService_instances, "a", _TranslationService_ClientTranslationFiles_get).arFile;
69
75
  }
70
76
  else {
71
77
  this.renderer.removeClass(document.body, 'rtl');
72
78
  this.isArabic.next(false);
79
+ clientTranslation = __classPrivateFieldGet(this, _TranslationService_instances, "a", _TranslationService_ClientTranslationFiles_get).enFile;
73
80
  }
74
81
  const arabicFile$ = this.getOrCreateTranslationFile('ar');
75
82
  const englishFile$ = this.getOrCreateTranslationFile('en');
@@ -77,6 +84,7 @@ export class TranslationService {
77
84
  arabicFile$,
78
85
  englishFile$,
79
86
  this.translate.getTranslation(lang),
87
+ clientTranslation
80
88
  ]).subscribe((res) => {
81
89
  this.arabicFile = res[0];
82
90
  this.englishFile = res[1];
@@ -84,7 +92,7 @@ export class TranslationService {
84
92
  let ArorEnFile = lang === 'en'
85
93
  ? JSON.parse(res[1].properties['note:note'])
86
94
  : JSON.parse(res[0].properties['note:note']);
87
- this.translate.setTranslation(this.translate.currentLang, Object.assign({}, ArorEnFile), true);
95
+ this.translate.setTranslation(this.translate.currentLang, Object.assign(Object.assign({}, (res[3] || {})), ArorEnFile), true);
88
96
  this.onTranslationChanged(lang);
89
97
  }, () => {
90
98
  if (fallback && fallback !== lang) {
@@ -157,6 +165,9 @@ export class TranslationService {
157
165
  }));
158
166
  }
159
167
  }
168
+ _TranslationService_instances = new WeakSet(), _TranslationService_ClientTranslationFiles_get = function _TranslationService_ClientTranslationFiles_get() {
169
+ return this.userPreferencesService.clientCustomTranslateFiles;
170
+ };
160
171
  TranslationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TranslationService, deps: [{ token: i1.TranslateService }, { token: i0.RendererFactory2 }, { token: i2.LocalStoragService }, { token: i3.UserPreferencesService }, { token: i4.AppConfigService }, { token: i5.NuxeoService }, { token: 'environment' }, { token: TRANSLATION_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
161
172
  TranslationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TranslationService, providedIn: 'root' });
162
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TranslationService, decorators: [{
@@ -173,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
173
184
  type: Inject,
174
185
  args: [TRANSLATION_PROVIDER]
175
186
  }] }]; } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdqRCxPQUFPLEVBRUwsb0JBQW9CLEdBQ3JCLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFHMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ3BELDRDQUE0QyxDQUM3QyxDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFrQjtJQVc3QixZQUNTLFNBQTJCLEVBQzFCLGVBQWlDLEVBQ2pDLFlBQWdDLEVBQ3hDLHNCQUE4QyxFQUN0QyxTQUE0QixFQUM1QixZQUEwQixFQUNILFdBQVcsRUFDQSxTQUFnQztRQVBuRSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBRWhDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ0gsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFWNUMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGNBQVMs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akIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUNELHFCQUFxQixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDMUIsVUFBVSxFQUFFO2FBQ1osT0FBTyxDQUFDO1lBQ1AsVUFBVSxFQUFFLEdBQUc7U0FDaEIsQ0FBQzthQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQ3ZCLENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7Z0hBNUxVLGtCQUFrQixzTkFrQm5CLGFBQWEsYUFDRCxvQkFBb0I7b0hBbkIvQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFtQkksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEluamVjdCxcclxuICBJbmplY3RhYmxlLFxyXG4gIEluamVjdGlvblRva2VuLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFJlbmRlcmVyMixcclxuICBSZW5kZXJlckZhY3RvcnkyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYW5nIH0gZnJvbSAnLi4vLi4vZW51bXMvbGFuZ3VhZ2UuZW51bSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnU2VydmljZSB9IGZyb20gJy4uL2xvY2FsU3RvcmFnL2xvY2FsLXN0b3JhZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgVXNlclByZWZlcmVuY2VzU2VydmljZSxcclxuICBVc2VyUHJlZmVyZW5jZVZhbHVlcyxcclxufSBmcm9tICcuLi91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0ZS1sb2FkZXIuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVFJBTlNMQVRJT05fUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXHJcbiAgJ0luamVjdGlvbiB0b2tlbiBmb3IgdHJhbnNsYXRpb24gcHJvdmlkZXJzLidcclxuKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsYXRpb25Qcm92aWRlciB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHNvdXJjZTogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25TZXJ2aWNlIHtcclxuICBwdWJsaWMgYXJhYmljRmlsZTtcclxuICBwdWJsaWMgZW5nbGlzaEZpbGU7XHJcbiAgZGVmYXVsdExhbmc6IHN0cmluZztcclxuICB1c2VyTGFuZzogc3RyaW5nO1xyXG4gIGN1c3RvbUxvYWRlcjogVHJhbnNsYXRlTG9hZGVyU2VydmljZTtcclxuICBsYW5nOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gIGlzQXJhYmljID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNBcmFiaWMkID0gdGhpcy5pc0FyYWJpYy5hc09ic2VydmFibGUoKTtcclxuICB0cmFuc2xhdGlvbkFwaU5hbWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICBwcml2YXRlIGxvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdTZXJ2aWNlLFxyXG4gICAgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnIDogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTEFUSU9OX1BST1ZJREVSKSBwcm92aWRlcnM6IFRyYW5zbGF0aW9uUHJvdmlkZXJbXVxyXG4gICkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbkFwaU5hbWUgPSB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ3RyYW5zbGF0aW9uQXBpJ10gPyB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ3RyYW5zbGF0aW9uQXBpJ10gOiBudWxsO1xyXG4gICAgdGhpcy5jdXN0b21Mb2FkZXIgPSA8VHJhbnNsYXRlTG9hZGVyU2VydmljZT50aGlzLnRyYW5zbGF0ZS5jdXJyZW50TG9hZGVyO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRMYW5nID0gJ2VuJztcclxuICAgIHRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyh0aGlzLmRlZmF1bHRMYW5nKTtcclxuICAgIHRoaXMuY3VzdG9tTG9hZGVyLnNldERlZmF1bHRMYW5nKHRoaXMuZGVmYXVsdExhbmcpO1xyXG5cclxuICAgIGlmIChwcm92aWRlcnMgJiYgcHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBwcm92aWRlcnMpIHtcclxuICAgICAgICB0aGlzLmFkZFRyYW5zbGF0aW9uRm9sZGVyKHByb3ZpZGVyLm5hbWUsIHByb3ZpZGVyLnNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2VcclxuICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZSkgPT4ge1xyXG4gICAgICAgIGlmIChsb2NhbGUpIHtcclxuICAgICAgICAgIHRoaXMudXNlckxhbmcgPSBsb2NhbGUuc3BsaXQoJy0nKVswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQpe1xyXG4gICAgICAgICAgaWYgKHRoaXMudXNlckxhbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24odGhpcy51c2VyTGFuZywgdGhpcy5kZWZhdWx0TGFuZyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbih0aGlzLmRlZmF1bHRMYW5nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ldyBmb2xkZXIgb2YgdHJhbnNsYXRpb24gc291cmNlIGZpbGVzLlxyXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgZm9yIHRoZSB0cmFuc2xhdGlvbiBwcm92aWRlclxyXG4gICAqIEBwYXJhbSBwYXRoIFBhdGggdG8gdGhlIGZvbGRlclxyXG4gICAqL1xyXG4gIGFkZFRyYW5zbGF0aW9uRm9sZGVyKG5hbWU6IHN0cmluZyA9ICcnLCBwYXRoOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKCF0aGlzLmN1c3RvbUxvYWRlci5wcm92aWRlclJlZ2lzdGVyZWQobmFtZSkpIHtcclxuICAgICAgdGhpcy5jdXN0b21Mb2FkZXIucmVnaXN0ZXJQcm92aWRlcihuYW1lLCBwYXRoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGEgdHJhbnNsYXRpb24gZmlsZS5cclxuICAgKiBAcGFyYW0gbGFuZyBMYW5ndWFnZSBjb2RlIGZvciB0aGUgbGFuZ3VhZ2UgdG8gbG9hZFxyXG4gICAqIEBwYXJhbSBmYWxsYmFjayBMYW5ndWFnZSBjb2RlIHRvIGZhbGwgYmFjayB0byBpZiB0aGUgZmlyc3Qgb25lIHdhcyB1bmF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIGxvYWRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKSB7XHJcbiAgICBpZiAobGFuZyA9PT0gTGFuZy5BcmFiaWMpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncnRsJyk7XHJcbiAgICAgIHRoaXMuaXNBcmFiaWMubmV4dCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3J0bCcpO1xyXG4gICAgICB0aGlzLmlzQXJhYmljLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXJhYmljRmlsZSQgPSB0aGlzLmdldE9yQ3JlYXRlVHJhbnNsYXRpb25GaWxlKCdhcicpO1xyXG4gICAgY29uc3QgZW5nbGlzaEZpbGUkID0gdGhpcy5nZXRPckNyZWF0ZVRyYW5zbGF0aW9uRmlsZSgnZW4nKTtcclxuXHJcbiAgICBmb3JrSm9pbihbXHJcbiAgICAgIGFyYWJpY0ZpbGUkLFxyXG4gICAgICBlbmdsaXNoRmlsZSQsXHJcbiAgICAgIHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGxhbmcpLFxyXG4gICAgXSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFyYWJpY0ZpbGUgPSByZXNbMF07XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoRmlsZSA9IHJlc1sxXTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XHJcbiAgICAgICAgbGV0IEFyb3JFbkZpbGUgPVxyXG4gICAgICAgICAgbGFuZyA9PT0gJ2VuJ1xyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UocmVzWzFdLnByb3BlcnRpZXNbJ25vdGU6bm90ZSddKVxyXG4gICAgICAgICAgICA6IEpTT04ucGFyc2UocmVzWzBdLnByb3BlcnRpZXNbJ25vdGU6bm90ZSddKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nLFxyXG4gICAgICAgICAgeyAuLi5Bcm9yRW5GaWxlIH0sXHJcbiAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5vblRyYW5zbGF0aW9uQ2hhbmdlZChsYW5nKTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmIChmYWxsYmFjayAmJiBmYWxsYmFjayAhPT0gbGFuZykge1xyXG4gICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oZmFsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIGEgbm90aWZpY2F0aW9uIGNhbGxiYWNrIHdoZW4gdGhlIHRyYW5zbGF0aW9uIGxhbmd1YWdlIGNoYW5nZXMuXHJcbiAgICogQHBhcmFtIGxhbmcgVGhlIG5ldyBsYW5ndWFnZSBjb2RlXHJcbiAgICovXHJcbiAgb25UcmFuc2xhdGlvbkNoYW5nZWQobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vblRyYW5zbGF0aW9uQ2hhbmdlLm5leHQoe1xyXG4gICAgICBsYW5nOiBsYW5nLFxyXG4gICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3VzdG9tTG9hZGVyLmdldEZ1bGxUcmFuc2xhdGlvbkpTT04obGFuZyksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhcmdldCBsYW5ndWFnZSBmb3IgdHJhbnNsYXRpb25zLlxyXG4gICAqIEBwYXJhbSBsYW5nIENvZGUgbmFtZSBmb3IgdGhlIGxhbmd1YWdlXHJcbiAgICogQHJldHVybnMgVHJhbnNsYXRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGxhbmd1YWdlXHJcbiAgICovXHJcbiAgdXNlKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmN1c3RvbUxvYWRlci5pbml0KGxhbmcpO1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHRyYW5zbGF0aW9uIGZvciB0aGUgc3VwcGxpZWQga2V5LlxyXG4gICAqIEBwYXJhbSBrZXkgS2V5IHRvIHRyYW5zbGF0ZVxyXG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtcyBTdHJpbmcocykgdG8gYmUgaW50ZXJwb2xhdGVkIGludG8gdGhlIG1haW4gbWVzc2FnZVxyXG4gICAqIEByZXR1cm5zIFRyYW5zbGF0ZWQgdGV4dFxyXG4gICAqL1xyXG4gIGdldChcclxuICAgIGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPixcclxuICAgIGludGVycG9sYXRlUGFyYW1zPzogT2JqZWN0XHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoa2V5LCBpbnRlcnBvbGF0ZVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXJlY3RseSByZXR1cm5zIHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGtleS5cclxuICAgKiBAcGFyYW0ga2V5IEtleSB0byB0cmFuc2xhdGVcclxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXMgU3RyaW5nKHMpIHRvIGJlIGludGVycG9sYXRlZCBpbnRvIHRoZSBtYWluIG1lc3NhZ2VcclxuICAgKiBAcmV0dXJucyBUcmFuc2xhdGVkIHRleHRcclxuICAgKi9cclxuICBpbnN0YW50KFxyXG4gICAga2V5OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+LFxyXG4gICAgaW50ZXJwb2xhdGVQYXJhbXM/OiBPYmplY3RcclxuICApOiBzdHJpbmcgfCBhbnkge1xyXG4gICAgcmV0dXJuIGtleSA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBpbnRlcnBvbGF0ZVBhcmFtcykgOiAnJztcclxuICB9XHJcblxyXG4gIGdldE9yQ3JlYXRlVHJhbnNsYXRpb25GaWxlKGxhbmcpIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oIHRoaXMudHJhbnNsYXRpb25BcGlOYW1lID8gdGhpcy50cmFuc2xhdGlvbkFwaU5hbWUgOiAnQUNfVUFfVHJhbnNsYXRpb25fR2V0T3JDcmVhdGUnLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5wYXJhbXMoeyBsYW5ndWFnZTogbGFuZyB9KVxyXG4gICAgICAgIC5leGVjdXRlKHtcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgcHJvcGVydGllczogJyonLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHVwZGF0ZVRyYW5zbGF0aW9uRmlsZShkb2MsIHBhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAucmVwb3NpdG9yeSgpXHJcbiAgICAgICAgLmhlYWRlcnMoe1xyXG4gICAgICAgICAgcHJvcGVydGllczogJyonLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnVwZGF0ZShkb2MsIHBhcmFtcylcclxuICAgICkucGlwZShcclxuICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdqRCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFHaEcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ3BELDRDQUE0QyxDQUM3QyxDQUFDO0FBVUYsTUFBTSxPQUFPLGtCQUFrQjtJQVc3QixZQUNTLFNBQTJCLEVBQzFCLGVBQWlDLEVBQ2pDLFlBQWdDLEVBQ2hDLHNCQUE4QyxFQUM5QyxTQUEyQixFQUMzQixZQUEwQixFQUNILFdBQVcsRUFDQSxTQUFnQztRQVBuRSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDSCxnQkFBVyxHQUFYLFdBQVcsQ0FBQTs7UUFWNUMsYUFBUSxHQUFHLElBQUks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aW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGFuZyB9IGZyb20gJy4uLy4uL2VudW1zL2xhbmd1YWdlLmVudW0nO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2NhbFN0b3JhZy9sb2NhbC1zdG9yYWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZVZhbHVlcyB9IGZyb20gJy4uL3VzZXIvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBUUkFOU0xBVElPTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcclxuICAnSW5qZWN0aW9uIHRva2VuIGZvciB0cmFuc2xhdGlvbiBwcm92aWRlcnMuJ1xyXG4pO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvblByb3ZpZGVyIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgc291cmNlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblNlcnZpY2Uge1xyXG4gIHB1YmxpYyBhcmFiaWNGaWxlO1xyXG4gIHB1YmxpYyBlbmdsaXNoRmlsZTtcclxuICBkZWZhdWx0TGFuZzogc3RyaW5nO1xyXG4gIHVzZXJMYW5nOiBzdHJpbmc7XHJcbiAgY3VzdG9tTG9hZGVyOiBUcmFuc2xhdGVMb2FkZXJTZXJ2aWNlO1xyXG4gIGxhbmc6IHN0cmluZztcclxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcbiAgaXNBcmFiaWMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBpc0FyYWJpYyQgPSB0aGlzLmlzQXJhYmljLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHRyYW5zbGF0aW9uQXBpTmFtZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTEFUSU9OX1BST1ZJREVSKSBwcm92aWRlcnM6IFRyYW5zbGF0aW9uUHJvdmlkZXJbXVxyXG4gICkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbkFwaU5hbWUgPSB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ3RyYW5zbGF0aW9uQXBpJ10gPyB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ3RyYW5zbGF0aW9uQXBpJ10gOiBudWxsO1xyXG4gICAgdGhpcy5jdXN0b21Mb2FkZXIgPSA8VHJhbnNsYXRlTG9hZGVyU2VydmljZT50aGlzLnRyYW5zbGF0ZS5jdXJyZW50TG9hZGVyO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRMYW5nID0gJ2VuJztcclxuICAgIHRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyh0aGlzLmRlZmF1bHRMYW5nKTtcclxuICAgIHRoaXMuY3VzdG9tTG9hZGVyLnNldERlZmF1bHRMYW5nKHRoaXMuZGVmYXVsdExhbmcpO1xyXG5cclxuICAgIGlmIChwcm92aWRlcnMgJiYgcHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBwcm92aWRlcnMpIHtcclxuICAgICAgICB0aGlzLmFkZFRyYW5zbGF0aW9uRm9sZGVyKHByb3ZpZGVyLm5hbWUsIHByb3ZpZGVyLnNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2VcclxuICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZSkgPT4ge1xyXG4gICAgICAgIGlmIChsb2NhbGUpIHtcclxuICAgICAgICAgIHRoaXMudXNlckxhbmcgPSBsb2NhbGUuc3BsaXQoJy0nKVswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyTGFuZykge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbih0aGlzLnVzZXJMYW5nLCB0aGlzLmRlZmF1bHRMYW5nKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKHRoaXMuZGVmYXVsdExhbmcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgbmV3IGZvbGRlciBvZiB0cmFuc2xhdGlvbiBzb3VyY2UgZmlsZXMuXHJcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBmb3IgdGhlIHRyYW5zbGF0aW9uIHByb3ZpZGVyXHJcbiAgICogQHBhcmFtIHBhdGggUGF0aCB0byB0aGUgZm9sZGVyXHJcbiAgICovXHJcbiAgYWRkVHJhbnNsYXRpb25Gb2xkZXIobmFtZTogc3RyaW5nID0gJycsIHBhdGg6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VzdG9tTG9hZGVyLnByb3ZpZGVyUmVnaXN0ZXJlZChuYW1lKSkge1xyXG4gICAgICB0aGlzLmN1c3RvbUxvYWRlci5yZWdpc3RlclByb3ZpZGVyKG5hbWUsIHBhdGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0ICNDbGllbnRUcmFuc2xhdGlvbkZpbGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5jbGllbnRDdXN0b21UcmFuc2xhdGVGaWxlcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgYSB0cmFuc2xhdGlvbiBmaWxlLlxyXG4gICAqIEBwYXJhbSBsYW5nIExhbmd1YWdlIGNvZGUgZm9yIHRoZSBsYW5ndWFnZSB0byBsb2FkXHJcbiAgICogQHBhcmFtIGZhbGxiYWNrIExhbmd1YWdlIGNvZGUgdG8gZmFsbCBiYWNrIHRvIGlmIHRoZSBmaXJzdCBvbmUgd2FzIHVuYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgbG9hZFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpIHtcclxuICAgIGxldCBjbGllbnRUcmFuc2xhdGlvbjogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcclxuICAgIGlmIChsYW5nID09PSBMYW5nLkFyYWJpYykge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdydGwnKTtcclxuICAgICAgdGhpcy5pc0FyYWJpYy5uZXh0KHRydWUpO1xyXG4gICAgICBjbGllbnRUcmFuc2xhdGlvbiA9IHRoaXMuI0NsaWVudFRyYW5zbGF0aW9uRmlsZXMuYXJGaWxlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdydGwnKTtcclxuICAgICAgdGhpcy5pc0FyYWJpYy5uZXh0KGZhbHNlKTtcclxuICAgICAgY2xpZW50VHJhbnNsYXRpb24gPSB0aGlzLiNDbGllbnRUcmFuc2xhdGlvbkZpbGVzLmVuRmlsZVxyXG4gICAgfVxyXG4gICAgY29uc3QgYXJhYmljRmlsZSQgPSB0aGlzLmdldE9yQ3JlYXRlVHJhbnNsYXRpb25GaWxlKCdhcicpO1xyXG4gICAgY29uc3QgZW5nbGlzaEZpbGUkID0gdGhpcy5nZXRPckNyZWF0ZVRyYW5zbGF0aW9uRmlsZSgnZW4nKTtcclxuXHJcbiAgICBmb3JrSm9pbihbXHJcbiAgICAgIGFyYWJpY0ZpbGUkLFxyXG4gICAgICBlbmdsaXNoRmlsZSQsXHJcbiAgICAgIHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGxhbmcpLFxyXG4gICAgICBjbGllbnRUcmFuc2xhdGlvblxyXG4gICAgXSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFyYWJpY0ZpbGUgPSByZXNbMF07XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoRmlsZSA9IHJlc1sxXTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XHJcbiAgICAgICAgbGV0IEFyb3JFbkZpbGUgPVxyXG4gICAgICAgICAgbGFuZyA9PT0gJ2VuJ1xyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UocmVzWzFdLnByb3BlcnRpZXNbJ25vdGU6bm90ZSddKVxyXG4gICAgICAgICAgICA6IEpTT04ucGFyc2UocmVzWzBdLnByb3BlcnRpZXNbJ25vdGU6bm90ZSddKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nLFxyXG4gICAgICAgICAgeyAuLi4ocmVzWzNdIHx8IHt9KSwgLi4uQXJvckVuRmlsZSB9LFxyXG4gICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkNoYW5nZWQobGFuZyk7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAoZmFsbGJhY2sgJiYgZmFsbGJhY2sgIT09IGxhbmcpIHtcclxuICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGZhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBhIG5vdGlmaWNhdGlvbiBjYWxsYmFjayB3aGVuIHRoZSB0cmFuc2xhdGlvbiBsYW5ndWFnZSBjaGFuZ2VzLlxyXG4gICAqIEBwYXJhbSBsYW5nIFRoZSBuZXcgbGFuZ3VhZ2UgY29kZVxyXG4gICAqL1xyXG4gIG9uVHJhbnNsYXRpb25DaGFuZ2VkKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUub25UcmFuc2xhdGlvbkNoYW5nZS5uZXh0KHtcclxuICAgICAgbGFuZzogbGFuZyxcclxuICAgICAgdHJhbnNsYXRpb25zOiB0aGlzLmN1c3RvbUxvYWRlci5nZXRGdWxsVHJhbnNsYXRpb25KU09OKGxhbmcpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YXJnZXQgbGFuZ3VhZ2UgZm9yIHRyYW5zbGF0aW9ucy5cclxuICAgKiBAcGFyYW0gbGFuZyBDb2RlIG5hbWUgZm9yIHRoZSBsYW5ndWFnZVxyXG4gICAqIEByZXR1cm5zIFRyYW5zbGF0aW9ucyBhdmFpbGFibGUgZm9yIHRoZSBsYW5ndWFnZVxyXG4gICAqL1xyXG4gIHVzZShsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jdXN0b21Mb2FkZXIuaW5pdChsYW5nKTtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGtleS5cclxuICAgKiBAcGFyYW0ga2V5IEtleSB0byB0cmFuc2xhdGVcclxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXMgU3RyaW5nKHMpIHRvIGJlIGludGVycG9sYXRlZCBpbnRvIHRoZSBtYWluIG1lc3NhZ2VcclxuICAgKiBAcmV0dXJucyBUcmFuc2xhdGVkIHRleHRcclxuICAgKi9cclxuICBnZXQoXHJcbiAgICBrZXk6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXHJcbiAgICBpbnRlcnBvbGF0ZVBhcmFtcz86IE9iamVjdFxyXG4gICk6IE9ic2VydmFibGU8c3RyaW5nIHwgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KGtleSwgaW50ZXJwb2xhdGVQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlyZWN0bHkgcmV0dXJucyB0aGUgdHJhbnNsYXRpb24gZm9yIHRoZSBzdXBwbGllZCBrZXkuXHJcbiAgICogQHBhcmFtIGtleSBLZXkgdG8gdHJhbnNsYXRlXHJcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIFN0cmluZyhzKSB0byBiZSBpbnRlcnBvbGF0ZWQgaW50byB0aGUgbWFpbiBtZXNzYWdlXHJcbiAgICogQHJldHVybnMgVHJhbnNsYXRlZCB0ZXh0XHJcbiAgICovXHJcbiAgaW5zdGFudChcclxuICAgIGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPixcclxuICAgIGludGVycG9sYXRlUGFyYW1zPzogT2JqZWN0XHJcbiAgKTogc3RyaW5nIHwgYW55IHtcclxuICAgIHJldHVybiBrZXkgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSwgaW50ZXJwb2xhdGVQYXJhbXMpIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRPckNyZWF0ZVRyYW5zbGF0aW9uRmlsZShsYW5nKSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKHRoaXMudHJhbnNsYXRpb25BcGlOYW1lID8gdGhpcy50cmFuc2xhdGlvbkFwaU5hbWUgOiAnQUNfVUFfVHJhbnNsYXRpb25fR2V0T3JDcmVhdGUnLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5wYXJhbXMoeyBsYW5ndWFnZTogbGFuZyB9KVxyXG4gICAgICAgIC5leGVjdXRlKHtcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgcHJvcGVydGllczogJyonLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHVwZGF0ZVRyYW5zbGF0aW9uRmlsZShkb2MsIHBhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAucmVwb3NpdG9yeSgpXHJcbiAgICAgICAgLmhlYWRlcnMoe1xyXG4gICAgICAgICAgcHJvcGVydGllczogJyonLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnVwZGF0ZShkb2MsIHBhcmFtcylcclxuICAgICkucGlwZShcclxuICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  var _UserPreferencesService_instances, _UserPreferencesService_encrypt, _UserPreferencesService_decrypt, _UserPreferencesService_encryptKey_get, _UserPreferencesService_enableEncryption_get;
2
2
  import { __awaiter, __classPrivateFieldGet } from "tslib";
3
3
  import { Injectable } from '@angular/core';
4
- import { BehaviorSubject } from 'rxjs';
4
+ import { BehaviorSubject, of } from 'rxjs';
5
5
  import { distinctUntilChanged, map } from 'rxjs/operators';
6
6
  import CryptoJS from 'crypto-js';
7
7
  import { EnvManager } from '../../env';
@@ -24,6 +24,7 @@ export class UserPreferencesService {
24
24
  expandedSidenav: true
25
25
  };
26
26
  this.userPreferenceStatus = this.defaults;
27
+ this.clientCustomTranslateFiles = { arFile: of({}), enFile: of({}) };
27
28
  this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
28
29
  this.onChange = this.onChangeSubject.asObservable();
29
30
  }
@@ -168,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
168
169
  providedIn: 'root'
169
170
  }]
170
171
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.LocalStoragService }]; } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDO0FBRTVCLE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDL0IseUNBQWlCLENBQUE7SUFDakIsaUVBQXlDLENBQUE7QUFDMUMsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFLRCxNQUFNLE9BQU8sc0JBQXNCO0lBVWxDLFlBQW1CLFNBQTJCLEVBQVUsT0FBMkI7UUFBaEUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFvQjs7UUFUbkYsYUFBUSxHQUFHO1lBQ1YsTUFBTSxFQUFFLElBQUk7WUFDWixlQUFlLEVBQUUsSUFBSTtTQUNyQixDQUFDO1FBRU0seUJBQW9CLEdBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUtqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRU8sd0JBQXdCO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFYSxnQkFBZ0I7O1lBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFFdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQzthQUNoRjtpQkFBTTtnQkFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUV0RCxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDO2FBQzVGO1FBQ0YsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDN0Qsb0JBQW9CLEVBQUUsQ0FDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxRQUFnQixFQUFFLFlBQXFCLEVBQUUsV0FBcUI7UUFDakUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDMUMsT0FBTyxZQUFZLENBQUM7U0FDcEI7UUFDRCxPQUFPLHVCQUFBLElBQUksMEVBQVMsTUFBYixJQUFJLEVBQVUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsUUFBZ0IsRUFBRSxLQUFVLEVBQUUsV0FBcUI7UUFDdEQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNkLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHVCQUFBLElBQUksMEVBQVMsTUFBYixJQUFJLEVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLFFBQWdCLEVBQUUsS0FBVTtRQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2QsT0FBTztTQUNQO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxRQUFnQixFQUFFLFdBQXFCO1FBQzlDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLFFBQWdCO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRWEsZ0JBQWdCLENBQUMsR0FBVzs7WUFDekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RSxPQUFPLFdBQVcsQ0FBQztRQUNwQixDQUFDO0tBQUE7OzhIQUVRLE9BQWU7SUFDdkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLHVCQUFBLElBQUksdUZBQWtCO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFFeEQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsdUJBQUEsSUFBSSxpRkFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbkUsQ0FBQyw2RUFDUSxVQUFrQjtJQUMxQixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsdUJBQUEsSUFBSSx1RkFBa0I7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUU5RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsdUJBQUEsSUFBSSxpRkFBWSxDQUFDLENBQUM7SUFDakUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQztJQUVBLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDO0FBQ3pELENBQUM7SUFFQSxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQztBQUNsRSxDQUFDO29IQW5LVyxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzRGQUVOLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdTZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWxTdG9yYWcvbG9jYWwtc3RvcmFnLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCB7IEVudk1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbnYnO1xyXG5jb25zdCBFTkNSWVBUX0tFWSA9ICdfbmRmXyc7XHJcblxyXG5leHBvcnQgZW51bSBVc2VyUHJlZmVyZW5jZVZhbHVlcyB7XHJcblx0TG9jYWxlID0gJ2xvY2FsZScsXHJcblx0RXhwYW5kZWRTaWRlTmF2U3RhdHVzID0gJ2V4cGFuZGVkU2lkZW5hdidcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclByZWZlcmVuY2VzU2VydmljZSB7XHJcblx0ZGVmYXVsdHMgPSB7XHJcblx0XHRsb2NhbGU6ICdlbicsXHJcblx0XHRleHBhbmRlZFNpZGVuYXY6IHRydWVcclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHVzZXJQcmVmZXJlbmNlU3RhdHVzOiBhbnkgPSB0aGlzLmRlZmF1bHRzO1xyXG5cdHByaXZhdGUgb25DaGFuZ2VTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuXHRvbkNoYW5nZTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHN0b3JhZ2U6IExvY2FsU3RvcmFnU2VydmljZSkge1xyXG5cdFx0dGhpcy5vbkNoYW5nZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXMpO1xyXG5cdFx0dGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0VXNlclByZWZlcmVuY2VTdGF0dXMoKSB7XHJcblx0XHR0aGlzLmluaXRVc2VyTGFuZ3VhZ2UoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgaW5pdFVzZXJMYW5ndWFnZSgpIHtcclxuXHRcdGlmICh0aGlzLmxvY2FsZSkge1xyXG5cdFx0XHRjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZSB8fCB0aGlzLmdldERlZmF1bHRMb2NhbGUoKTtcclxuXHJcblx0XHRcdHRoaXMuc2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSwgbG9jYWxlKTtcclxuXHRcdFx0dGhpcy5zZXQoJ3RleHRPcmllbnRhdGlvbicsIChhd2FpdCB0aGlzLmdldExhbmd1YWdlQnlLZXkobG9jYWxlKSkuZGlyIHx8ICdsdHInKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlIHx8IHRoaXMuZ2V0RGVmYXVsdExvY2FsZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5zZXRXaXRob3V0U3RvcmUoVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlLCBsb2NhbGUpO1xyXG5cdFx0XHR0aGlzLnNldFdpdGhvdXRTdG9yZSgndGV4dE9yaWVudGF0aW9uJywgKGF3YWl0IHRoaXMuZ2V0TGFuZ3VhZ2VCeUtleShsb2NhbGUpKS5kaXIgfHwgJ2x0cicpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB1cCBhIGNhbGxiYWNrIHRvIG5vdGlmeSB3aGVuIGEgcHJvcGVydHkgaGFzIGNoYW5nZWQuXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byB3YXRjaFxyXG5cdCAqIEByZXR1cm5zIE5vdGlmaWNhdGlvbiBjYWxsYmFja1xyXG5cdCAqL1xyXG5cdHNlbGVjdChwcm9wZXJ0eTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLm9uQ2hhbmdlLnBpcGUoXHJcblx0XHRcdG1hcCgodXNlclByZWZlcmVuY2VTdGF0dXMpID0+IHVzZXJQcmVmZXJlbmNlU3RhdHVzW3Byb3BlcnR5XSksXHJcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGEgcHJlZmVyZW5jZSBwcm9wZXJ0eS5cclxuXHQgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIERlZmF1bHQgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmRcclxuXHQgKiBAcmV0dXJucyBQcmVmZXJlbmNlIHByb3BlcnR5XHJcblx0ICovXHJcblx0Z2V0KHByb3BlcnR5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZywgd2l0aG91dFVzZXI/OiBib29sZWFuKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGtleSA9IHdpdGhvdXRVc2VyID8gcHJvcGVydHkgOiB0aGlzLmdldFByb3BlcnR5S2V5KHByb3BlcnR5KTtcclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XHJcblx0XHRcdHJldHVybiBkZWZhdWx0VmFsdWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy4jZGVjcnlwdCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGEgcHJlZmVyZW5jZSBwcm9wZXJ0eS5cclxuXHQgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIGZvciB0aGUgcHJvcGVydHlcclxuXHQgKi9cclxuXHRzZXQocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSwgd2l0aG91dFVzZXI/OiBib29sZWFuKSB7XHJcblx0XHRpZiAoIXByb3BlcnR5KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc3RvcmFnZS5zZXRJdGVtKHdpdGhvdXRVc2VyID8gcHJvcGVydHkgOiB0aGlzLmdldFByb3BlcnR5S2V5KHByb3BlcnR5KSwgdGhpcy4jZW5jcnlwdCh2YWx1ZSkpO1xyXG5cdFx0dGhpcy51c2VyUHJlZmVyZW5jZVN0YXR1c1twcm9wZXJ0eV0gPSB2YWx1ZTtcclxuXHRcdHRoaXMub25DaGFuZ2VTdWJqZWN0Lm5leHQodGhpcy51c2VyUHJlZmVyZW5jZVN0YXR1cyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGEgcHJlZmVyZW5jZSBwcm9wZXJ0eS5cclxuXHQgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIGZvciB0aGUgcHJvcGVydHlcclxuXHQgKi9cclxuXHRzZXRXaXRob3V0U3RvcmUocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG5cdFx0aWYgKCFwcm9wZXJ0eSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnVzZXJQcmVmZXJlbmNlU3RhdHVzW3Byb3BlcnR5XSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5vbkNoYW5nZVN1YmplY3QubmV4dCh0aGlzLnVzZXJQcmVmZXJlbmNlU3RhdHVzKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIGFuIGl0ZW0gaXMgcHJlc2VudCBpbiB0aGUgc3RvcmFnZVxyXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBOYW1lIG9mIHRoZSBwcm9wZXJ0eVxyXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgcHJlc2VudCwgZmFsc2Ugb3RoZXJ3aXNlXHJcblx0ICovXHJcblx0aGFzSXRlbShwcm9wZXJ0eTogc3RyaW5nLCB3aXRob3V0VXNlcj86IGJvb2xlYW4pOiBib29sZWFuIHtcclxuXHRcdGlmICghcHJvcGVydHkpIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuc3RvcmFnZS5oYXNJdGVtKHdpdGhvdXRVc2VyID8gcHJvcGVydHkgOiB0aGlzLmdldFByb3BlcnR5S2V5KHByb3BlcnR5KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBhY3RpdmUgc3RvcmFnZSBwcmVmaXggZm9yIHByZWZlcmVuY2VzLlxyXG5cdCAqIEByZXR1cm5zIFN0b3JhZ2UgcHJlZml4XHJcblx0ICovXHJcblx0Z2V0U3RvcmFnZVByZWZpeCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdVU0VSX1BST0ZJTEUnKSB8fCAnR1VFU1QnO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB0aGUgYWN0aXZlIHN0b3JhZ2UgcHJlZml4IGZvciBwcmVmZXJlbmNlcy5cclxuXHQgKiBAcGFyYW0gdmFsdWUgTmFtZSBvZiB0aGUgcHJlZml4XHJcblx0ICovXHJcblx0c2V0U3RvcmFnZVByZWZpeCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnN0b3JhZ2Uuc2V0SXRlbSgnVVNFUl9QUk9GSUxFJywgdmFsdWUgfHwgJ0dVRVNUJyk7XHJcblx0XHR0aGlzLmluaXRVc2VyUHJlZmVyZW5jZVN0YXR1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgZnVsbCBwcm9wZXJ0eSBrZXkgd2l0aCBwcmVmaXguXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSBuYW1lXHJcblx0ICogQHJldHVybnMgUHJvcGVydHkga2V5XHJcblx0ICovXHJcblx0Z2V0UHJvcGVydHlLZXkocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gYCR7dGhpcy5nZXRTdG9yYWdlUHJlZml4KCl9X18ke3Byb3BlcnR5fWA7XHJcblx0fVxyXG5cclxuXHQvKiogQ3VycmVudCBsb2NhbGUgc2V0dGluZy4gKi9cclxuXHRnZXQgbG9jYWxlKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlKTtcclxuXHR9XHJcblxyXG5cdHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xyXG5cdFx0dGhpcy5zZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlLCB2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBkZWZhdWx0IGxvY2FsZS5cclxuXHQgKiBAcmV0dXJucyBEZWZhdWx0IGxvY2FsZSBsYW5ndWFnZSBjb2RlXHJcblx0ICovXHJcblx0cHVibGljIGdldERlZmF1bHRMb2NhbGUoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyQ3VsdHVyZUxhbmcoKSB8fCAnZW4nO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBnZXRMYW5ndWFnZUJ5S2V5KGtleTogc3RyaW5nKSB7XHJcblx0XHRjb25zdCB0cmFuc2xhdGlvbiA9IGF3YWl0IHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGtleSkudG9Qcm9taXNlKCk7XHJcblx0XHRyZXR1cm4gdHJhbnNsYXRpb247XHJcblx0fVxyXG5cclxuXHQjZW5jcnlwdChtZXNzYWdlOiBzdHJpbmcpIHtcclxuXHRcdGlmICghbWVzc2FnZSB8fCAhdGhpcy4jZW5hYmxlRW5jcnlwdGlvbikgcmV0dXJuIG1lc3NhZ2U7XHJcblxyXG5cdFx0cmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KG1lc3NhZ2UsIHRoaXMuI2VuY3J5cHRLZXkpLnRvU3RyaW5nKCk7XHJcblx0fVxyXG5cdCNkZWNyeXB0KGNpcGhlcnRleHQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCFjaXBoZXJ0ZXh0IHx8ICF0aGlzLiNlbmFibGVFbmNyeXB0aW9uKSByZXR1cm4gY2lwaGVydGV4dDtcclxuXHJcblx0XHRjb25zdCBieXRlcyA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNpcGhlcnRleHQsIHRoaXMuI2VuY3J5cHRLZXkpO1xyXG5cdFx0cmV0dXJuIGJ5dGVzLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuXHR9XHJcblx0Z2V0ICNlbmNyeXB0S2V5KCkge1xyXG5cdFx0cmV0dXJuIEVudk1hbmFnZXIuZW52aXJvbm1lbnQuZW5jcnlwdEtleSB8fCBFTkNSWVBUX0tFWTtcclxuXHR9XHJcblx0Z2V0ICNlbmFibGVFbmNyeXB0aW9uKCkge1xyXG5cdFx0cmV0dXJuIEVudk1hbmFnZXIuZW52aXJvbm1lbnQuZW5hYmxlRW5jcnlwdGlvbiA9PSAnWUVTJyB8fCBmYWxzZTtcclxuXHR9XHJcbn1cclxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUU1QixNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQy9CLHlDQUFpQixDQUFBO0lBQ2pCLGlFQUF5QyxDQUFBO0FBQzFDLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBS0QsTUFBTSxPQUFPLHNCQUFzQjtJQVVsQyxZQUFtQixTQUEyQixFQUFVLE9BQTJCO1FBQWhFLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7O1FBVG5GLGFBQVEsR0FBRztZQUNWLE1BQU0sRUFBRSxJQUFJO1lBQ1osZUFBZSxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUVNLHlCQUFvQixHQUFRLElBQUksQ0FBQyxRQUFRLENBQUM7UUFHbEQsK0JBQTBCLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztR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dCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnU2VydmljZSB9IGZyb20gJy4uL2xvY2FsU3RvcmFnL2xvY2FsLXN0b3JhZy5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5pbXBvcnQgeyBFbnZNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZW52JztcclxuY29uc3QgRU5DUllQVF9LRVkgPSAnX25kZl8nO1xyXG5cclxuZXhwb3J0IGVudW0gVXNlclByZWZlcmVuY2VWYWx1ZXMge1xyXG5cdExvY2FsZSA9ICdsb2NhbGUnLFxyXG5cdEV4cGFuZGVkU2lkZU5hdlN0YXR1cyA9ICdleHBhbmRlZFNpZGVuYXYnXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2Uge1xyXG5cdGRlZmF1bHRzID0ge1xyXG5cdFx0bG9jYWxlOiAnZW4nLFxyXG5cdFx0ZXhwYW5kZWRTaWRlbmF2OiB0cnVlXHJcblx0fTtcclxuXHJcblx0cHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVN0YXR1czogYW55ID0gdGhpcy5kZWZhdWx0cztcclxuXHRwcml2YXRlIG9uQ2hhbmdlU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcblx0b25DaGFuZ2U6IE9ic2VydmFibGU8YW55PjtcclxuXHRjbGllbnRDdXN0b21UcmFuc2xhdGVGaWxlcyA9IHsgYXJGaWxlOiBvZih7fSksIGVuRmlsZTogb2Yoe30pIH07XHJcblx0Y29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlOiBMb2NhbFN0b3JhZ1NlcnZpY2UpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnVzZXJQcmVmZXJlbmNlU3RhdHVzKTtcclxuXHRcdHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdFVzZXJQcmVmZXJlbmNlU3RhdHVzKCkge1xyXG5cdFx0dGhpcy5pbml0VXNlckxhbmd1YWdlKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGluaXRVc2VyTGFuZ3VhZ2UoKSB7XHJcblx0XHRpZiAodGhpcy5sb2NhbGUpIHtcclxuXHRcdFx0Y29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGUgfHwgdGhpcy5nZXREZWZhdWx0TG9jYWxlKCk7XHJcblxyXG5cdFx0XHR0aGlzLnNldChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUsIGxvY2FsZSk7XHJcblx0XHRcdHRoaXMuc2V0KCd0ZXh0T3JpZW50YXRpb24nLCAoYXdhaXQgdGhpcy5nZXRMYW5ndWFnZUJ5S2V5KGxvY2FsZSkpLmRpciB8fCAnbHRyJyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZSB8fCB0aGlzLmdldERlZmF1bHRMb2NhbGUoKTtcclxuXHJcblx0XHRcdHRoaXMuc2V0V2l0aG91dFN0b3JlKFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSwgbG9jYWxlKTtcclxuXHRcdFx0dGhpcy5zZXRXaXRob3V0U3RvcmUoJ3RleHRPcmllbnRhdGlvbicsIChhd2FpdCB0aGlzLmdldExhbmd1YWdlQnlLZXkobG9jYWxlKSkuZGlyIHx8ICdsdHInKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdXAgYSBjYWxsYmFjayB0byBub3RpZnkgd2hlbiBhIHByb3BlcnR5IGhhcyBjaGFuZ2VkLlxyXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gd2F0Y2hcclxuXHQgKiBAcmV0dXJucyBOb3RpZmljYXRpb24gY2FsbGJhY2tcclxuXHQgKi9cclxuXHRzZWxlY3QocHJvcGVydHk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5vbkNoYW5nZS5waXBlKFxyXG5cdFx0XHRtYXAoKHVzZXJQcmVmZXJlbmNlU3RhdHVzKSA9PiB1c2VyUHJlZmVyZW5jZVN0YXR1c1twcm9wZXJ0eV0pLFxyXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhIHByZWZlcmVuY2UgcHJvcGVydHkuXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBEZWZhdWx0IHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGZvdW5kXHJcblx0ICogQHJldHVybnMgUHJlZmVyZW5jZSBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdGdldChwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcsIHdpdGhvdXRVc2VyPzogYm9vbGVhbik6IHN0cmluZyB7XHJcblx0XHRjb25zdCBrZXkgPSB3aXRob3V0VXNlciA/IHByb3BlcnR5IDogdGhpcy5nZXRQcm9wZXJ0eUtleShwcm9wZXJ0eSk7XHJcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcblx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuI2RlY3J5cHQodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBhIHByZWZlcmVuY2UgcHJvcGVydHkuXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XHJcblx0ICovXHJcblx0c2V0KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHdpdGhvdXRVc2VyPzogYm9vbGVhbikge1xyXG5cdFx0aWYgKCFwcm9wZXJ0eSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh3aXRob3V0VXNlciA/IHByb3BlcnR5IDogdGhpcy5nZXRQcm9wZXJ0eUtleShwcm9wZXJ0eSksIHRoaXMuI2VuY3J5cHQodmFsdWUpKTtcclxuXHRcdHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXNbcHJvcGVydHldID0gdmFsdWU7XHJcblx0XHR0aGlzLm9uQ2hhbmdlU3ViamVjdC5uZXh0KHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXMpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBhIHByZWZlcmVuY2UgcHJvcGVydHkuXHJcblx0ICogQHBhcmFtIHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XHJcblx0ICovXHJcblx0c2V0V2l0aG91dFN0b3JlKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuXHRcdGlmICghcHJvcGVydHkpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy51c2VyUHJlZmVyZW5jZVN0YXR1c1twcm9wZXJ0eV0gPSB2YWx1ZTtcclxuXHRcdHRoaXMub25DaGFuZ2VTdWJqZWN0Lm5leHQodGhpcy51c2VyUHJlZmVyZW5jZVN0YXR1cyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiBhbiBpdGVtIGlzIHByZXNlbnQgaW4gdGhlIHN0b3JhZ2VcclxuXHQgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIGlzIHByZXNlbnQsIGZhbHNlIG90aGVyd2lzZVxyXG5cdCAqL1xyXG5cdGhhc0l0ZW0ocHJvcGVydHk6IHN0cmluZywgd2l0aG91dFVzZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXByb3BlcnR5KSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnN0b3JhZ2UuaGFzSXRlbSh3aXRob3V0VXNlciA/IHByb3BlcnR5IDogdGhpcy5nZXRQcm9wZXJ0eUtleShwcm9wZXJ0eSkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgYWN0aXZlIHN0b3JhZ2UgcHJlZml4IGZvciBwcmVmZXJlbmNlcy5cclxuXHQgKiBAcmV0dXJucyBTdG9yYWdlIHByZWZpeFxyXG5cdCAqL1xyXG5cdGdldFN0b3JhZ2VQcmVmaXgoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnVVNFUl9QUk9GSUxFJykgfHwgJ0dVRVNUJztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIGFjdGl2ZSBzdG9yYWdlIHByZWZpeCBmb3IgcHJlZmVyZW5jZXMuXHJcblx0ICogQHBhcmFtIHZhbHVlIE5hbWUgb2YgdGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdHNldFN0b3JhZ2VQcmVmaXgodmFsdWU6IHN0cmluZykge1xyXG5cdFx0dGhpcy5zdG9yYWdlLnNldEl0ZW0oJ1VTRVJfUFJPRklMRScsIHZhbHVlIHx8ICdHVUVTVCcpO1xyXG5cdFx0dGhpcy5pbml0VXNlclByZWZlcmVuY2VTdGF0dXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGZ1bGwgcHJvcGVydHkga2V5IHdpdGggcHJlZml4LlxyXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgbmFtZVxyXG5cdCAqIEByZXR1cm5zIFByb3BlcnR5IGtleVxyXG5cdCAqL1xyXG5cdGdldFByb3BlcnR5S2V5KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGAke3RoaXMuZ2V0U3RvcmFnZVByZWZpeCgpfV9fJHtwcm9wZXJ0eX1gO1xyXG5cdH1cclxuXHJcblx0LyoqIEN1cnJlbnQgbG9jYWxlIHNldHRpbmcuICovXHJcblx0Z2V0IGxvY2FsZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSk7XHJcblx0fVxyXG5cclxuXHRzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuc2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSwgdmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUuXHJcblx0ICogQHJldHVybnMgRGVmYXVsdCBsb2NhbGUgbGFuZ3VhZ2UgY29kZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXREZWZhdWx0TG9jYWxlKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckN1bHR1cmVMYW5nKCkgfHwgJ2VuJztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZ2V0TGFuZ3VhZ2VCeUtleShrZXk6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRpb24gPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZS5nZXRUcmFuc2xhdGlvbihrZXkpLnRvUHJvbWlzZSgpO1xyXG5cdFx0cmV0dXJuIHRyYW5zbGF0aW9uO1xyXG5cdH1cclxuXHJcblx0I2VuY3J5cHQobWVzc2FnZTogc3RyaW5nKSB7XHJcblx0XHRpZiAoIW1lc3NhZ2UgfHwgIXRoaXMuI2VuYWJsZUVuY3J5cHRpb24pIHJldHVybiBtZXNzYWdlO1xyXG5cclxuXHRcdHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdChtZXNzYWdlLCB0aGlzLiNlbmNyeXB0S2V5KS50b1N0cmluZygpO1xyXG5cdH1cclxuXHQjZGVjcnlwdChjaXBoZXJ0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdGlmICghY2lwaGVydGV4dCB8fCAhdGhpcy4jZW5hYmxlRW5jcnlwdGlvbikgcmV0dXJuIGNpcGhlcnRleHQ7XHJcblxyXG5cdFx0Y29uc3QgYnl0ZXMgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChjaXBoZXJ0ZXh0LCB0aGlzLiNlbmNyeXB0S2V5KTtcclxuXHRcdHJldHVybiBieXRlcy50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcblx0fVxyXG5cdGdldCAjZW5jcnlwdEtleSgpIHtcclxuXHRcdHJldHVybiBFbnZNYW5hZ2VyLmVudmlyb25tZW50LmVuY3J5cHRLZXkgfHwgRU5DUllQVF9LRVk7XHJcblx0fVxyXG5cdGdldCAjZW5hYmxlRW5jcnlwdGlvbigpIHtcclxuXHRcdHJldHVybiBFbnZNYW5hZ2VyLmVudmlyb25tZW50LmVuYWJsZUVuY3J5cHRpb24gPT0gJ1lFUycgfHwgZmFsc2U7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './project.token';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb3JlL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0LnRva2VuJztcclxuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const PROJECT_BASE_HREF = new InjectionToken('PROJECT_BASE_HREF');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvcmUvdG9rZW5zL3Byb2plY3QudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9KRUNUX0JBU0VfSFJFRiA9IG5ldyBJbmplY3Rpb25Ub2tlbignUFJPSkVDVF9CQVNFX0hSRUYnKTtcclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Injectable } from "@angular/core";
3
- import { first } from "rxjs/operators";
2
+ import { Injectable } from '@angular/core';
3
+ import { first } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../core/services/nuxeo/nuxeo.service";
6
6
  import * as i2 from "../../configuration/app-config.service";
@@ -9,6 +9,7 @@ export class EvaluatorsService {
9
9
  this.nuxeoService = nuxeoService;
10
10
  this.appConfigService = appConfigService;
11
11
  this.context = { entity: null, getEvaluator: null, user: null };
12
+ this.userEvaluators = {};
12
13
  this.asyncEvery = (arr, predicate) => __awaiter(this, void 0, void 0, function* () {
13
14
  for (let e of arr) {
14
15
  if (!(yield predicate(e))) {
@@ -34,7 +35,7 @@ export class EvaluatorsService {
34
35
  return yield this.asyncEvery(args, (arg) => __awaiter(this, void 0, void 0, function* () {
35
36
  const evaluator = yield context.getEvaluator(arg.value);
36
37
  if (!evaluator) {
37
- console.warn("evaluator not found: " + arg.value);
38
+ console.warn('evaluator not found: ' + arg.value);
38
39
  return false;
39
40
  }
40
41
  return yield evaluator(context, arg.parameters || []);
@@ -47,7 +48,7 @@ export class EvaluatorsService {
47
48
  return yield this.asyncSome(args, (arg) => __awaiter(this, void 0, void 0, function* () {
48
49
  const evaluator = yield context.getEvaluator(arg.value);
49
50
  if (!evaluator) {
50
- console.warn("evaluator not found: " + arg.value);
51
+ console.warn('evaluator not found: ' + arg.value);
51
52
  return false;
52
53
  }
53
54
  const res = yield evaluator(context, arg.parameters || []);
@@ -69,14 +70,14 @@ export class EvaluatorsService {
69
70
  if ((_b = (_a = context.entity.properties.owner) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.username) {
70
71
  owner = (_d = (_c = context.entity.properties.owner) === null || _c === void 0 ? void 0 : _c.properties) === null || _d === void 0 ? void 0 : _d.username;
71
72
  }
72
- else if ((_f = (_e = context.entity.properties["corr:owner"]) === null || _e === void 0 ? void 0 : _e.properties) === null || _f === void 0 ? void 0 : _f.username) {
73
- owner = (_h = (_g = context.entity.properties["corr:owner"]) === null || _g === void 0 ? void 0 : _g.properties) === null || _h === void 0 ? void 0 : _h.username;
73
+ else if ((_f = (_e = context.entity.properties['corr:owner']) === null || _e === void 0 ? void 0 : _e.properties) === null || _f === void 0 ? void 0 : _f.username) {
74
+ owner = (_h = (_g = context.entity.properties['corr:owner']) === null || _g === void 0 ? void 0 : _g.properties) === null || _h === void 0 ? void 0 : _h.username;
74
75
  }
75
76
  else if (context.entity.properties.owner) {
76
77
  owner = context.entity.properties.owner;
77
78
  }
78
- else if (context.entity.properties["corr:owner"]) {
79
- owner = context.entity.properties["corr:owner"];
79
+ else if (context.entity.properties['corr:owner']) {
80
+ owner = context.entity.properties['corr:owner'];
80
81
  }
81
82
  if (owner === context.user.properties.username) {
82
83
  return true;
@@ -86,16 +87,13 @@ export class EvaluatorsService {
86
87
  }
87
88
  }),
88
89
  isUserInrole: (context, args) => __awaiter(this, void 0, void 0, function* () {
89
- const result = yield this.nuxeoService
90
- .isUserInRole(args, "")
91
- .pipe(first())
92
- .toPromise();
90
+ const result = yield this.nuxeoService.isUserInRole(args, '').pipe(first()).toPromise();
93
91
  return result;
94
- }),
92
+ })
95
93
  };
96
94
  this.getEvaluator = (key) => __awaiter(this, void 0, void 0, function* () {
97
95
  const eva = this.evaluators;
98
- if (key && key.startsWith("!")) {
96
+ if (key && key.startsWith('!')) {
99
97
  const fn = eva[key.substring(1)];
100
98
  return (context, args) => __awaiter(this, void 0, void 0, function* () {
101
99
  const result = yield fn(context, ...args);
@@ -111,17 +109,21 @@ export class EvaluatorsService {
111
109
  });
112
110
  }
113
111
  setEvaluators(evaluators) {
112
+ this.userEvaluators = evaluators;
114
113
  this.evaluators = Object.assign(Object.assign({}, this.evaluators), evaluators);
115
114
  }
116
115
  getEvaluators() {
117
116
  return this.evaluators;
118
117
  }
118
+ getUserEvaluators() {
119
+ return this.userEvaluators;
120
+ }
119
121
  // ----------------------------------------------------
120
122
  evaluateRule(ruleId, context) {
121
123
  return __awaiter(this, void 0, void 0, function* () {
122
124
  const ruleRef = this.getRuleById(ruleId);
123
125
  context = context || this.context;
124
- context["getEvaluator"] = this.getEvaluator;
126
+ context['getEvaluator'] = this.getEvaluator;
125
127
  if (ruleRef) {
126
128
  const evaluator = yield this.getEvaluator(ruleRef.type);
127
129
  if (evaluator) {
@@ -144,9 +146,9 @@ export class EvaluatorsService {
144
146
  }
145
147
  }
146
148
  EvaluatorsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvaluatorsService, deps: [{ token: i1.NuxeoService }, { token: i2.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
147
- EvaluatorsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvaluatorsService, providedIn: "root" });
149
+ EvaluatorsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvaluatorsService, providedIn: 'root' });
148
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvaluatorsService, decorators: [{
149
151
  type: Injectable,
150
- args: [{ providedIn: "root" }]
152
+ args: [{ providedIn: 'root' }]
151
153
  }], ctorParameters: function () { return [{ type: i1.NuxeoService }, { type: i2.AppConfigService }]; } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvZGlyZWN0aXZlL3Blcm1pc3Npb25zL2V2YWx1YXRvcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHdkMsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQztRQURsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSjVDLFlBQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFZM0QsZUFBVSxHQUFHLENBQU8sR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ3BDLEtBQUssSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNqQixJQUFJLENBQUMsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN6QixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUEsQ0FBQztRQUNGLGNBQVMsR0FBRyxDQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNuQyxLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDakIsSUFBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdEIsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFBLENBQUM7UUFD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RCxXQUFXLENBQUMsRUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDekMsQ0FBQzs7K0dBN0lVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2VcIjtcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yc1NlcnZpY2Uge1xyXG4gIGNvbnRleHQgPSB7IGVudGl0eTogbnVsbCwgZ2V0RXZhbHVhdG9yOiBudWxsLCB1c2VyOiBudWxsIH07XHJcbiAgY29uZGl0aW9ucztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5jb25maWdMb2FkZWQuc3Vic2NyaWJlKChyZWFkeSkgPT4ge1xyXG4gICAgICBpZiAocmVhZHkpIHtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbnMgPSB0aGlzLmdldEFsbFJ1bGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luY0V2ZXJ5ID0gYXN5bmMgKGFyciwgcHJlZGljYXRlKSA9PiB7XHJcbiAgICBmb3IgKGxldCBlIG9mIGFycikge1xyXG4gICAgICBpZiAoIShhd2FpdCBwcmVkaWNhdGUoZSkpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9O1xyXG4gIGFzeW5jU29tZSA9IGFzeW5jIChhcnIsIHByZWRpY2F0ZSkgPT4ge1xyXG4gICAgZm9yIChsZXQgZSBvZiBhcnIpIHtcclxuICAgICAgaWYgKGF3YWl0IHByZWRpY2F0ZShlKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWVtYmVyLW9yZGVyaW5nXHJcbiAgZXZhbHVhdG9ycyA9IHtcclxuICAgIEFORDogYXN5bmMgKGNvbnRleHQsIGFyZ3M6IGFueVtdKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcbiAgICAgIGlmICghYXJncyB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5hc3luY0V2ZXJ5KGFyZ3MsIGFzeW5jIChhcmcpID0+IHtcclxuICAgICAgICBjb25zdCBldmFsdWF0b3IgPSBhd2FpdCBjb250ZXh0LmdldEV2YWx1YXRvcihhcmcudmFsdWUpO1xyXG4gICAgICAgIGlmICghZXZhbHVhdG9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJldmFsdWF0b3Igbm90IGZvdW5kOiBcIiArIGFyZy52YWx1ZSk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhd2FpdCBldmFsdWF0b3IoY29udGV4dCwgYXJnLnBhcmFtZXRlcnMgfHwgW10pO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBPUjogYXN5bmMgKGNvbnRleHQsIGFyZ3M6IGFueVtdKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcbiAgICAgIGlmICghYXJncyB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5hc3luY1NvbWUoYXJncywgYXN5bmMgKGFyZykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2YWx1YXRvciA9IGF3YWl0IGNvbnRleHQuZ2V0RXZhbHVhdG9yKGFyZy52YWx1ZSk7XHJcbiAgICAgICAgaWYgKCFldmFsdWF0b3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcImV2YWx1YXRvciBub3QgZm91bmQ6IFwiICsgYXJnLnZhbHVlKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZXZhbHVhdG9yKGNvbnRleHQsIGFyZy5wYXJhbWV0ZXJzIHx8IFtdKTtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBpc1N0YXR1czogYXN5bmMgKGNvbnRleHQsIGFyZ3MpID0+IHtcclxuICAgICAgaWYgKGFyZ3MuaW5kZXhPZihjb250ZXh0LmVudGl0eS5zdGF0ZSkgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGlzQ3JlYXRvcjogYXN5bmMgKGNvbnRleHQsIGFyZ3MpID0+IHtcclxuICAgICAgLy9jaGVjayBpZiB1c2VyIGxvZ2VkIGluIGlzIHRoZSBjcmVhdG9yIG9mIHRoYXQgY29ycmVzcFxyXG4gICAgICBsZXQgb3duZXI7XHJcbiAgICAgIGlmIChjb250ZXh0LmVudGl0eS5wcm9wZXJ0aWVzLm93bmVyPy5wcm9wZXJ0aWVzPy51c2VybmFtZSkge1xyXG4gICAgICAgIG93bmVyID0gY29udGV4dC5lbnRpdHkucHJvcGVydGllcy5vd25lcj8ucHJvcGVydGllcz8udXNlcm5hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgY29udGV4dC5lbnRpdHkucHJvcGVydGllc1tcImNvcnI6b3duZXJcIl0/LnByb3BlcnRpZXM/LnVzZXJuYW1lXHJcbiAgICAgICkge1xyXG4gICAgICAgIG93bmVyID0gY29udGV4dC5lbnRpdHkucHJvcGVydGllc1tcImNvcnI6b3duZXJcIl0/LnByb3BlcnRpZXM/LnVzZXJuYW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXMub3duZXIpIHtcclxuICAgICAgICBvd25lciA9IGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXMub3duZXI7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5lbnRpdHkucHJvcGVydGllc1tcImNvcnI6b3duZXJcIl0pIHtcclxuICAgICAgICBvd25lciA9IGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXNbXCJjb3JyOm93bmVyXCJdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3duZXIgPT09IGNvbnRleHQudXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgaXNVc2VySW5yb2xlOiBhc3luYyAoY29udGV4dCwgYXJncykgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm51eGVvU2VydmljZVxyXG4gICAgICAgIC5pc1VzZXJJblJvbGUoYXJncywgXCJcIilcclxuICAgICAgICAucGlwZShmaXJzdCgpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgZ2V0RXZhbHVhdG9yID0gYXN5bmMgKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBldmEgPSB0aGlzLmV2YWx1YXRvcnM7XHJcbiAgICBpZiAoa2V5ICYmIGtleS5zdGFydHNXaXRoKFwiIVwiKSkge1xyXG4gICAgICBjb25zdCBmbiA9IGV2YVtrZXkuc3Vic3RyaW5nKDEpXTtcclxuICAgICAgcmV0dXJuIGFzeW5jIChjb250ZXh0LCBhcmdzKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oY29udGV4dCwgLi4uYXJncyk7XHJcbiAgICAgICAgcmV0dXJuICFyZXN1bHQ7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXZhW2tleV07XHJcbiAgfTtcclxuXHJcbiAgc2V0RXZhbHVhdG9ycyhldmFsdWF0b3JzKSB7XHJcbiAgICB0aGlzLmV2YWx1YXRvcnMgPSB7IC4uLnRoaXMuZXZhbHVhdG9ycywgLi4uZXZhbHVhdG9ycyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZhbHVhdG9ycygpIHtcclxuICAgIHJldHVybiB0aGlzLmV2YWx1YXRvcnM7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIGFzeW5jIGV2YWx1YXRlUnVsZShydWxlSWQsIGNvbnRleHQ/KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBydWxlUmVmID0gdGhpcy5nZXRSdWxlQnlJZChydWxlSWQpO1xyXG4gICAgY29udGV4dCA9IGNvbnRleHQgfHwgdGhpcy5jb250ZXh0O1xyXG4gICAgY29udGV4dFtcImdldEV2YWx1YXRvclwiXSA9IHRoaXMuZ2V0RXZhbHVhdG9yO1xyXG5cclxuICAgIGlmIChydWxlUmVmKSB7XHJcbiAgICAgIGNvbnN0IGV2YWx1YXRvciA9IGF3YWl0IHRoaXMuZ2V0RXZhbHVhdG9yKHJ1bGVSZWYudHlwZSk7XHJcbiAgICAgIGlmIChldmFsdWF0b3IpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgZXZhbHVhdG9yKGNvbnRleHQsIHJ1bGVSZWYucGFyYW1ldGVycyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2YWx1YXRvciA9IGF3YWl0IHRoaXMuZ2V0RXZhbHVhdG9yKHJ1bGVJZCk7XHJcbiAgICAgIGlmIChldmFsdWF0b3IpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgZXZhbHVhdG9yKGNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSdWxlQnlJZChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW2lkXSA/IHsgLi4udGhpcy5jb25kaXRpb25zW2lkXSB9IDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEFsbFJ1bGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnU2VydmljZS5jb25kaXRvbnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvZGlyZWN0aXZlL3Blcm1pc3Npb25zL2V2YWx1YXRvcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHdkMsTUFBTSxPQUFPLGlCQUFpQjtJQUk3QixZQUNTLFlBQTBCLEVBQzFCLGdCQUFrQztRQURsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTDNDLFlBQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDM0QsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBWXpDLGVBQVUsR0FBRyxDQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNyQyxLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUIsT0FBTyxLQUFLLENBQUM7aUJBQ2I7YUFDRDtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQyxDQUFBLENBQUM7UUFDRixjQUFTLEdBQUcsQ0FBTyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDcEMsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO2lCQUNaO2FBQ0Q7WUFDRCxPQUFPLEtBQUss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Q0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxTQUFTLEVBQUU7b0JBQ2QsT0FBTyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDaEM7YUFDRDtRQUNGLENBQUM7S0FBQTtJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVztRQUNWLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN4QyxDQUFDOzsrR0E5SVcsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEV2YWx1YXRvcnNTZXJ2aWNlIHtcclxuXHRjb250ZXh0ID0geyBlbnRpdHk6IG51bGwsIGdldEV2YWx1YXRvcjogbnVsbCwgdXNlcjogbnVsbCB9O1xyXG5cdHVzZXJFdmFsdWF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblx0Y29uZGl0aW9ucztcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuYXBwQ29uZmlnU2VydmljZS5jb25maWdMb2FkZWQuc3Vic2NyaWJlKChyZWFkeSkgPT4ge1xyXG5cdFx0XHRpZiAocmVhZHkpIHtcclxuXHRcdFx0XHR0aGlzLmNvbmRpdGlvbnMgPSB0aGlzLmdldEFsbFJ1bGVzKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRhc3luY0V2ZXJ5ID0gYXN5bmMgKGFyciwgcHJlZGljYXRlKSA9PiB7XHJcblx0XHRmb3IgKGxldCBlIG9mIGFycikge1xyXG5cdFx0XHRpZiAoIShhd2FpdCBwcmVkaWNhdGUoZSkpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9O1xyXG5cdGFzeW5jU29tZSA9IGFzeW5jIChhcnIsIHByZWRpY2F0ZSkgPT4ge1xyXG5cdFx0Zm9yIChsZXQgZSBvZiBhcnIpIHtcclxuXHRcdFx0aWYgKGF3YWl0IHByZWRpY2F0ZShlKSkge1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fTtcclxuXHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWVtYmVyLW9yZGVyaW5nXHJcblx0ZXZhbHVhdG9ycyA9IHtcclxuXHRcdEFORDogYXN5bmMgKGNvbnRleHQsIGFyZ3M6IGFueVtdKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcblx0XHRcdGlmICghYXJncyB8fCBhcmdzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gYXdhaXQgdGhpcy5hc3luY0V2ZXJ5KGFyZ3MsIGFzeW5jIChhcmcpID0+IHtcclxuXHRcdFx0XHRjb25zdCBldmFsdWF0b3IgPSBhd2FpdCBjb250ZXh0LmdldEV2YWx1YXRvcihhcmcudmFsdWUpO1xyXG5cdFx0XHRcdGlmICghZXZhbHVhdG9yKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oJ2V2YWx1YXRvciBub3QgZm91bmQ6ICcgKyBhcmcudmFsdWUpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gYXdhaXQgZXZhbHVhdG9yKGNvbnRleHQsIGFyZy5wYXJhbWV0ZXJzIHx8IFtdKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cdFx0T1I6IGFzeW5jIChjb250ZXh0LCBhcmdzOiBhbnlbXSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG5cdFx0XHRpZiAoIWFyZ3MgfHwgYXJncy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGF3YWl0IHRoaXMuYXN5bmNTb21lKGFyZ3MsIGFzeW5jIChhcmcpID0+IHtcclxuXHRcdFx0XHRjb25zdCBldmFsdWF0b3IgPSBhd2FpdCBjb250ZXh0LmdldEV2YWx1YXRvcihhcmcudmFsdWUpO1xyXG5cdFx0XHRcdGlmICghZXZhbHVhdG9yKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oJ2V2YWx1YXRvciBub3QgZm91bmQ6ICcgKyBhcmcudmFsdWUpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCBldmFsdWF0b3IoY29udGV4dCwgYXJnLnBhcmFtZXRlcnMgfHwgW10pO1xyXG5cdFx0XHRcdHJldHVybiByZXM7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSxcclxuXHRcdGlzU3RhdHVzOiBhc3luYyAoY29udGV4dCwgYXJncykgPT4ge1xyXG5cdFx0XHRpZiAoYXJncy5pbmRleE9mKGNvbnRleHQuZW50aXR5LnN0YXRlKSA+IC0xKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0aXNDcmVhdG9yOiBhc3luYyAoY29udGV4dCwgYXJncykgPT4ge1xyXG5cdFx0XHQvL2NoZWNrIGlmIHVzZXIgbG9nZWQgaW4gaXMgdGhlIGNyZWF0b3Igb2YgdGhhdCBjb3JyZXNwXHJcblx0XHRcdGxldCBvd25lcjtcclxuXHRcdFx0aWYgKGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXMub3duZXI/LnByb3BlcnRpZXM/LnVzZXJuYW1lKSB7XHJcblx0XHRcdFx0b3duZXIgPSBjb250ZXh0LmVudGl0eS5wcm9wZXJ0aWVzLm93bmVyPy5wcm9wZXJ0aWVzPy51c2VybmFtZTtcclxuXHRcdFx0fSBlbHNlIGlmIChjb250ZXh0LmVudGl0eS5wcm9wZXJ0aWVzWydjb3JyOm93bmVyJ10/LnByb3BlcnRpZXM/LnVzZXJuYW1lKSB7XHJcblx0XHRcdFx0b3duZXIgPSBjb250ZXh0LmVudGl0eS5wcm9wZXJ0aWVzWydjb3JyOm93bmVyJ10/LnByb3BlcnRpZXM/LnVzZXJuYW1lO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXMub3duZXIpIHtcclxuXHRcdFx0XHRvd25lciA9IGNvbnRleHQuZW50aXR5LnByb3BlcnRpZXMub3duZXI7XHJcblx0XHRcdH0gZWxzZSBpZiAoY29udGV4dC5lbnRpdHkucHJvcGVydGllc1snY29ycjpvd25lciddKSB7XHJcblx0XHRcdFx0b3duZXIgPSBjb250ZXh0LmVudGl0eS5wcm9wZXJ0aWVzWydjb3JyOm93bmVyJ107XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChvd25lciA9PT0gY29udGV4dC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRpc1VzZXJJbnJvbGU6IGFzeW5jIChjb250ZXh0LCBhcmdzKSA9PiB7XHJcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubnV4ZW9TZXJ2aWNlLmlzVXNlckluUm9sZShhcmdzLCAnJykucGlwZShmaXJzdCgpKS50b1Byb21pc2UoKTtcclxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRnZXRFdmFsdWF0b3IgPSBhc3luYyAoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdGNvbnN0IGV2YSA9IHRoaXMuZXZhbHVhdG9ycztcclxuXHRcdGlmIChrZXkgJiYga2V5LnN0YXJ0c1dpdGgoJyEnKSkge1xyXG5cdFx0XHRjb25zdCBmbiA9IGV2YVtrZXkuc3Vic3RyaW5nKDEpXTtcclxuXHRcdFx0cmV0dXJuIGFzeW5jIChjb250ZXh0LCBhcmdzKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oY29udGV4dCwgLi4uYXJncyk7XHJcblx0XHRcdFx0cmV0dXJuICFyZXN1bHQ7XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZXZhW2tleV07XHJcblx0fTtcclxuXHJcblx0c2V0RXZhbHVhdG9ycyhldmFsdWF0b3JzKSB7XHJcblx0XHR0aGlzLnVzZXJFdmFsdWF0b3JzID0gZXZhbHVhdG9ycztcclxuXHRcdHRoaXMuZXZhbHVhdG9ycyA9IHsgLi4udGhpcy5ldmFsdWF0b3JzLCAuLi5ldmFsdWF0b3JzIH07XHJcblx0fVxyXG5cclxuXHRnZXRFdmFsdWF0b3JzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZXZhbHVhdG9ycztcclxuXHR9XHJcblxyXG5cdGdldFVzZXJFdmFsdWF0b3JzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMudXNlckV2YWx1YXRvcnM7XHJcblx0fVxyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdGFzeW5jIGV2YWx1YXRlUnVsZShydWxlSWQsIGNvbnRleHQ/KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblx0XHRjb25zdCBydWxlUmVmID0gdGhpcy5nZXRSdWxlQnlJZChydWxlSWQpO1xyXG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgdGhpcy5jb250ZXh0O1xyXG5cdFx0Y29udGV4dFsnZ2V0RXZhbHVhdG9yJ10gPSB0aGlzLmdldEV2YWx1YXRvcjtcclxuXHJcblx0XHRpZiAocnVsZVJlZikge1xyXG5cdFx0XHRjb25zdCBldmFsdWF0b3IgPSBhd2FpdCB0aGlzLmdldEV2YWx1YXRvcihydWxlUmVmLnR5cGUpO1xyXG5cdFx0XHRpZiAoZXZhbHVhdG9yKSB7XHJcblx0XHRcdFx0cmV0dXJuIGF3YWl0IGV2YWx1YXRvcihjb250ZXh0LCBydWxlUmVmLnBhcmFtZXRlcnMpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCBldmFsdWF0b3IgPSBhd2FpdCB0aGlzLmdldEV2YWx1YXRvcihydWxlSWQpO1xyXG5cdFx0XHRpZiAoZXZhbHVhdG9yKSB7XHJcblx0XHRcdFx0cmV0dXJuIGF3YWl0IGV2YWx1YXRvcihjb250ZXh0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0UnVsZUJ5SWQoaWQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29uZGl0aW9uc1tpZF0gPyB7IC4uLnRoaXMuY29uZGl0aW9uc1tpZF0gfSA6IG51bGw7XHJcblx0fVxyXG5cclxuXHRnZXRBbGxSdWxlcygpIHtcclxuXHRcdHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuY29uZGl0b25zO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { Directive, Input, HostListener, NgModule } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/cdk/clipboard";
4
+ export class CopyToClipboardDirective {
5
+ constructor(clipboard) {
6
+ this.clipboard = clipboard;
7
+ }
8
+ onClick() {
9
+ if (this.textToCopy) {
10
+ this.clipboard.copy(this.textToCopy);
11
+ }
12
+ }
13
+ }
14
+ CopyToClipboardDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardDirective, deps: [{ token: i1.Clipboard }], target: i0.ɵɵFactoryTarget.Directive });
15
+ CopyToClipboardDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: CopyToClipboardDirective, selector: "[appCopyToClipboard]", inputs: { textToCopy: ["appCopyToClipboard", "textToCopy"] }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ selector: '[appCopyToClipboard]'
20
+ }]
21
+ }], ctorParameters: function () { return [{ type: i1.Clipboard }]; }, propDecorators: { textToCopy: [{
22
+ type: Input,
23
+ args: ['appCopyToClipboard']
24
+ }], onClick: [{
25
+ type: HostListener,
26
+ args: ['click']
27
+ }] } });
28
+ export class CopyToClipboardModule {
29
+ }
30
+ CopyToClipboardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
+ CopyToClipboardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardModule, declarations: [CopyToClipboardDirective], exports: [CopyToClipboardDirective] });
32
+ CopyToClipboardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardModule, imports: [[]] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CopyToClipboardModule, decorators: [{
34
+ type: NgModule,
35
+ args: [{
36
+ declarations: [CopyToClipboardDirective],
37
+ imports: [],
38
+ exports: [CopyToClipboardDirective]
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS10by1jbGlwYm9hcmQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvY29weS10by1jbGlwYm9hcmQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU16RSxNQUFNLE9BQU8sd0JBQXdCO0lBR3BDLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFBRyxDQUFDO0lBRzVDLE9BQU87UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0YsQ0FBQzs7c0hBVlcsd0JBQXdCOzBHQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO2lCQUNoQztnR0FFNkIsVUFBVTtzQkFBdEMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBSzNCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPOztBQWF0QixNQUFNLE9BQU8scUJBQXFCOzttSEFBckIscUJBQXFCO29IQUFyQixxQkFBcUIsaUJBbEJyQix3QkFBd0IsYUFBeEIsd0JBQXdCO29IQWtCeEIscUJBQXFCLFlBSHhCLEVBQUU7NEZBR0MscUJBQXFCO2tCQUxqQyxRQUFRO21CQUFDO29CQUNULFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBIb3N0TGlzdGVuZXIsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcblx0c2VsZWN0b3I6ICdbYXBwQ29weVRvQ2xpcGJvYXJkXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcHlUb0NsaXBib2FyZERpcmVjdGl2ZSB7XHJcblx0QElucHV0KCdhcHBDb3B5VG9DbGlwYm9hcmQnKSB0ZXh0VG9Db3B5ITogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkKSB7fVxyXG5cclxuXHRASG9zdExpc3RlbmVyKCdjbGljaycpXHJcblx0b25DbGljaygpIHtcclxuXHRcdGlmICh0aGlzLnRleHRUb0NvcHkpIHtcclxuXHRcdFx0dGhpcy5jbGlwYm9hcmQuY29weSh0aGlzLnRleHRUb0NvcHkpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRkZWNsYXJhdGlvbnM6IFtDb3B5VG9DbGlwYm9hcmREaXJlY3RpdmVdLFxyXG5cdGltcG9ydHM6IFtdLFxyXG5cdGV4cG9ydHM6IFtDb3B5VG9DbGlwYm9hcmREaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3B5VG9DbGlwYm9hcmRNb2R1bGUge31cclxuIl19
@@ -0,0 +1,80 @@
1
+ import { Directive, Input, NgModule } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ export class ElementHeightDirective {
5
+ constructor(renderer, elementRef, ngZone) {
6
+ this.renderer = renderer;
7
+ this.elementRef = elementRef;
8
+ this.ngZone = ngZone;
9
+ this.cssVar = '--ele-total-height';
10
+ this.calculate = true;
11
+ this._inlineStyle = false;
12
+ this._domElement = this.elementRef.nativeElement;
13
+ this._resizeListener = () => this.onResize();
14
+ this.ngZone.runOutsideAngular(() => {
15
+ window.addEventListener('resize', this._resizeListener);
16
+ });
17
+ }
18
+ get inlineStyle() {
19
+ return this._inlineStyle;
20
+ }
21
+ set inlineStyle(value) {
22
+ this._inlineStyle = coerceBooleanProperty(value);
23
+ }
24
+ ngAfterViewInit() {
25
+ this.setHeight();
26
+ }
27
+ onResize() {
28
+ requestAnimationFrame(() => this.setHeight());
29
+ }
30
+ setHeight() {
31
+ if (!this.calculate) {
32
+ return;
33
+ }
34
+ const el = this._domElement;
35
+ const style = getComputedStyle(el);
36
+ const marginTop = parseFloat(style.marginTop) || 0;
37
+ const marginBottom = parseFloat(style.marginBottom) || 0;
38
+ const totalHeight = el.offsetHeight + marginTop + marginBottom;
39
+ const parent = el.parentElement;
40
+ if (!parent)
41
+ return;
42
+ if (this.inlineStyle) {
43
+ this.renderer.setStyle(parent, this.cssVar, `${totalHeight}px`);
44
+ }
45
+ else {
46
+ this.renderer.setAttribute(parent, 'style', `${this.cssVar}: ${totalHeight}px`);
47
+ }
48
+ }
49
+ ngOnDestroy() {
50
+ window.removeEventListener('resize', this._resizeListener);
51
+ }
52
+ }
53
+ ElementHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
54
+ ElementHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: ElementHeightDirective, selector: "[appItemHeight]", inputs: { cssVar: "cssVar", calculate: "calculate", inlineStyle: "inlineStyle" }, exportAs: ["appItemHeight"], ngImport: i0 });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightDirective, decorators: [{
56
+ type: Directive,
57
+ args: [{
58
+ selector: '[appItemHeight]',
59
+ exportAs: 'appItemHeight'
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { cssVar: [{
62
+ type: Input
63
+ }], calculate: [{
64
+ type: Input
65
+ }], inlineStyle: [{
66
+ type: Input
67
+ }] } });
68
+ export class ElementHeightModule {
69
+ }
70
+ ElementHeightModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
71
+ ElementHeightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightModule, declarations: [ElementHeightDirective], exports: [ElementHeightDirective] });
72
+ ElementHeightModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightModule });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeightModule, decorators: [{
74
+ type: NgModule,
75
+ args: [{
76
+ declarations: [ElementHeightDirective],
77
+ exports: [ElementHeightDirective]
78
+ }]
79
+ }] });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1oZWlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvZWxlbWVudC1oZWlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLHNCQUFzQjtJQWdCbEMsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixNQUFjO1FBRmQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFsQmQsV0FBTSxHQUFHLG9CQUFvQixDQUFDO1FBQzlCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFpQjVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRWhFLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQXZCRCxJQUNJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBbUJELGVBQWU7UUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVPLFFBQVE7UUFDZixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sU0FBUztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNwQixPQUFPO1NBQ1A7UUFFRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUUvRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUVwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDO1NBQ2hGO0lBQ0YsQ0FBQztJQUlELFdBQVc7UUFDVixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1RCxDQUFDOztvSEFoRVcsc0JBQXNCO3dHQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsZUFBZTtpQkFDekI7OElBRVMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUYsV0FBVztzQkFEZCxLQUFLOztBQWtFUCxNQUFNLE9BQU8sbUJBQW1COztpSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsaUJBdkVuQixzQkFBc0IsYUFBdEIsc0JBQXNCO2tIQXVFdEIsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE5nTW9kdWxlLCBOZ1pvbmUsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiAnW2FwcEl0ZW1IZWlnaHRdJyxcclxuXHRleHBvcnRBczogJ2FwcEl0ZW1IZWlnaHQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbGVtZW50SGVpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRASW5wdXQoKSBjc3NWYXIgPSAnLS1lbGUtdG90YWwtaGVpZ2h0JztcclxuXHRASW5wdXQoKSBjYWxjdWxhdGUgPSB0cnVlO1xyXG5cclxuXHRwcml2YXRlIF9pbmxpbmVTdHlsZSA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGlubGluZVN0eWxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2lubGluZVN0eWxlO1xyXG5cdH1cclxuXHRzZXQgaW5saW5lU3R5bGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuX2lubGluZVN0eWxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2RvbUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG5cdHByaXZhdGUgX3Jlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuXHRcdHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuXHRcdHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuXHQpIHtcclxuXHRcdHRoaXMuX2RvbUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcblx0XHR0aGlzLl9yZXNpemVMaXN0ZW5lciA9ICgpID0+IHRoaXMub25SZXNpemUoKTtcclxuXHJcblx0XHR0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcblx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9yZXNpemVMaXN0ZW5lcik7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2V0SGVpZ2h0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9uUmVzaXplKCk6IHZvaWQge1xyXG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuc2V0SGVpZ2h0KCkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRIZWlnaHQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY2FsY3VsYXRlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBlbCA9IHRoaXMuX2RvbUVsZW1lbnQ7XHJcblx0XHRjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xyXG5cclxuXHRcdGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luVG9wKSB8fCAwO1xyXG5cdFx0Y29uc3QgbWFyZ2luQm90dG9tID0gcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Cb3R0b20pIHx8IDA7XHJcblx0XHRjb25zdCB0b3RhbEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCArIG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbTtcclxuXHJcblx0XHRjb25zdCBwYXJlbnQgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcclxuXHJcblx0XHRpZiAodGhpcy5pbmxpbmVTdHlsZSkge1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBhcmVudCwgdGhpcy5jc3NWYXIsIGAke3RvdGFsSGVpZ2h0fXB4YCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShwYXJlbnQsICdzdHlsZScsIGAke3RoaXMuY3NzVmFyfTogJHt0b3RhbEhlaWdodH1weGApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lubGluZVN0eWxlOiBCb29sZWFuSW5wdXQ7XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyKTtcclxuXHR9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZGVjbGFyYXRpb25zOiBbRWxlbWVudEhlaWdodERpcmVjdGl2ZV0sXHJcblx0ZXhwb3J0czogW0VsZW1lbnRIZWlnaHREaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbGVtZW50SGVpZ2h0TW9kdWxlIHt9XHJcbiJdfQ==