@alfresco/adf-core 8.1.0-16346981764 → 8.1.0-16472253724

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 (62) hide show
  1. package/bundles/assets/adf-core/i18n/pl.json +1 -1
  2. package/esm2022/lib/app-config/app-config.module.mjs +1 -1
  3. package/esm2022/lib/app-config/provide-app-config.mjs +44 -0
  4. package/esm2022/lib/app-config/public-api.mjs +2 -1
  5. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +14 -1
  6. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +2 -2
  7. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +1 -1
  8. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +16 -14
  9. package/esm2022/lib/auth/services/authentication.service.mjs +17 -17
  10. package/esm2022/lib/auth/services/base-authentication.service.mjs +1 -5
  11. package/esm2022/lib/core.module.mjs +146 -164
  12. package/esm2022/lib/form/components/form-renderer.component.mjs +3 -3
  13. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +3 -3
  14. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +1 -1
  15. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +8 -2
  16. package/esm2022/lib/form/form-base.module.mjs +3 -18
  17. package/esm2022/lib/landing-page/index.mjs +18 -0
  18. package/esm2022/lib/landing-page/provider.mjs +30 -0
  19. package/esm2022/lib/landing-page/public-api.mjs +18 -0
  20. package/esm2022/lib/testing/core.testing.module.mjs +2 -1
  21. package/esm2022/lib/testing/noop-translate.module.mjs +22 -8
  22. package/esm2022/lib/testing/unit-testing-utils.mjs +4 -1
  23. package/esm2022/lib/translation/provide-i18n.mjs +48 -0
  24. package/esm2022/lib/translation/public-api.mjs +2 -1
  25. package/esm2022/lib/translation/translate-loader.service.mjs +7 -2
  26. package/esm2022/lib/viewer/components/viewer.component.mjs +8 -8
  27. package/esm2022/public-api.mjs +2 -1
  28. package/esm2022/shell/index.mjs +2 -1
  29. package/esm2022/shell/lib/shell.module.mjs +8 -12
  30. package/esm2022/shell/lib/shell.routes.mjs +26 -1
  31. package/fesm2022/adf-core.mjs +323 -162
  32. package/fesm2022/adf-core.mjs.map +1 -1
  33. package/fesm2022/alfresco-adf-core-shell.mjs +32 -11
  34. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  35. package/lib/app-config/app-config.module.d.ts +1 -0
  36. package/lib/app-config/provide-app-config.d.ts +23 -0
  37. package/lib/app-config/public-api.d.ts +1 -0
  38. package/lib/auth/basic-auth/basic-alfresco-auth.service.d.ts +13 -0
  39. package/lib/auth/interfaces/authentication-service.interface.d.ts +9 -4
  40. package/lib/auth/oidc/oidc-authentication.service.d.ts +15 -5
  41. package/lib/auth/services/authentication.service.d.ts +12 -2
  42. package/lib/auth/services/base-authentication.service.d.ts +5 -1
  43. package/lib/core.module.d.ts +124 -128
  44. package/lib/form/components/form-renderer.component.scss +4 -5
  45. package/lib/form/components/widgets/amount/amount.widget.scss +0 -8
  46. package/lib/form/components/widgets/text/text-mask.component.d.ts +1 -0
  47. package/lib/form/form-base.module.d.ts +1 -0
  48. package/lib/landing-page/index.d.ts +17 -0
  49. package/lib/landing-page/provider.d.ts +24 -0
  50. package/lib/landing-page/public-api.d.ts +17 -0
  51. package/lib/testing/core.testing.module.d.ts +1 -0
  52. package/lib/testing/noop-translate.module.d.ts +1 -2
  53. package/lib/testing/unit-testing-utils.d.ts +1 -0
  54. package/lib/translation/provide-i18n.d.ts +39 -0
  55. package/lib/translation/public-api.d.ts +1 -0
  56. package/lib/viewer/components/viewer.component.d.ts +3 -3
  57. package/package.json +3 -3
  58. package/public-api.d.ts +1 -0
  59. package/shell/README.md +10 -6
  60. package/shell/index.d.ts +1 -0
  61. package/shell/lib/shell.module.d.ts +4 -7
  62. package/shell/lib/shell.routes.d.ts +13 -1
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export * from './provider';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvbGFuZGluZy1wYWdlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXInO1xuIl19
@@ -21,6 +21,7 @@ import { NoopTranslateModule } from './noop-translate.module';
21
21
  import { NoopAuthModule } from './noop-auth.module';
22
22
  import * as i0 from "@angular/core";
23
23
  import * as i1 from "../core.module";
24
+ /** @deprecated this module is deprecated and will be removed in the future */
24
25
  export class CoreTestingModule {
25
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CoreTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
27
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: CoreTestingModule, imports: [NoopAnimationsModule, i1.CoreModule, NoopTranslateModule, NoopAuthModule] }); }
@@ -32,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32
33
  imports: [NoopAnimationsModule, CoreModule.forRoot(), NoopTranslateModule, NoopAuthModule]
33
34
  }]
34
35
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdGVzdGluZy9jb3JlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBS3BELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLFlBRmhCLG9CQUFvQixpQkFBd0IsbUJBQW1CLEVBQUUsY0FBYztnSEFFaEYsaUJBQWlCLFlBRmhCLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxjQUFjOzs0RkFFaEYsaUJBQWlCO2tCQUg3QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLENBQUM7aUJBQzdGIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9vcEFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJy4uL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IE5vb3BUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuL25vb3AtdHJhbnNsYXRlLm1vZHVsZSc7XG5pbXBvcnQgeyBOb29wQXV0aE1vZHVsZSB9IGZyb20gJy4vbm9vcC1hdXRoLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW05vb3BBbmltYXRpb25zTW9kdWxlLCBDb3JlTW9kdWxlLmZvclJvb3QoKSwgTm9vcFRyYW5zbGF0ZU1vZHVsZSwgTm9vcEF1dGhNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIENvcmVUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdGVzdGluZy9jb3JlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRXBELDhFQUE4RTtBQUk5RSxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixZQUZoQixvQkFBb0IsaUJBQXdCLG1CQUFtQixFQUFFLGNBQWM7Z0hBRWhGLGlCQUFpQixZQUZoQixvQkFBb0IsRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsY0FBYzs7NEZBRWhGLGlCQUFpQjtrQkFIN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxDQUFDO2lCQUM3RiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vb3BBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuLi9jb3JlLm1vZHVsZSc7XG5pbXBvcnQgeyBOb29wVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi9ub29wLXRyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgTm9vcEF1dGhNb2R1bGUgfSBmcm9tICcuL25vb3AtYXV0aC5tb2R1bGUnO1xuXG4vKiogQGRlcHJlY2F0ZWQgdGhpcyBtb2R1bGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUgKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW05vb3BBbmltYXRpb25zTW9kdWxlLCBDb3JlTW9kdWxlLmZvclJvb3QoKSwgTm9vcFRyYW5zbGF0ZU1vZHVsZSwgTm9vcEF1dGhNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIENvcmVUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
@@ -16,11 +16,10 @@
16
16
  */
17
17
  import { EventEmitter, Injectable, NgModule } from '@angular/core';
18
18
  import { HttpClientTestingModule } from '@angular/common/http/testing';
19
- import { TranslateModule } from '@ngx-translate/core';
19
+ import { provideTranslateService, TranslateLoader } from '@ngx-translate/core';
20
20
  import { TranslationService } from '../translation/translation.service';
21
21
  import { of } from 'rxjs';
22
22
  import * as i0 from "@angular/core";
23
- import * as i1 from "@ngx-translate/core";
24
23
  export class NoopTranslationService {
25
24
  constructor() {
26
25
  this.defaultLang = 'en';
@@ -47,15 +46,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
47
46
  }] });
48
47
  export class NoopTranslateModule {
49
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
50
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, imports: [HttpClientTestingModule, i1.TranslateModule], exports: [TranslateModule] }); }
51
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, providers: [{ provide: TranslationService, useClass: NoopTranslationService }], imports: [HttpClientTestingModule, TranslateModule.forRoot(), TranslateModule] }); }
49
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, imports: [HttpClientTestingModule] }); }
50
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, providers: [
51
+ { provide: TranslationService, useClass: NoopTranslationService },
52
+ provideTranslateService({
53
+ loader: {
54
+ provide: TranslateLoader,
55
+ useClass: NoopTranslationService
56
+ }
57
+ })
58
+ ], imports: [HttpClientTestingModule] }); }
52
59
  }
53
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, decorators: [{
54
61
  type: NgModule,
55
62
  args: [{
56
- imports: [HttpClientTestingModule, TranslateModule.forRoot()],
57
- providers: [{ provide: TranslationService, useClass: NoopTranslationService }],
58
- exports: [TranslateModule]
63
+ imports: [HttpClientTestingModule],
64
+ providers: [
65
+ { provide: TranslationService, useClass: NoopTranslationService },
66
+ provideTranslateService({
67
+ loader: {
68
+ provide: TranslateLoader,
69
+ useClass: NoopTranslationService
70
+ }
71
+ })
72
+ ]
59
73
  }]
60
74
  }] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC10cmFuc2xhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL25vb3AtdHJhbnNsYXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd0QyxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRUksZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFJM0IsY0FBUyxHQUFRO1lBQ2IsWUFBWSxFQUFFLElBQUksWUFBWSxFQUFtQjtTQUNwRCxDQUFDO0tBY0w7SUFaRyxvQkFBb0IsS0FBSSxDQUFDO0lBQ3pCLG9CQUFvQixLQUFJLENBQUM7SUFDekIsR0FBRyxLQUFTLENBQUM7SUFDYixlQUFlLEtBQUksQ0FBQztJQUVwQixHQUFHLENBQUMsR0FBMkI7UUFDM0IsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUEyQjtRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7K0dBcEJRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBNkJsQyxNQUFNLE9BQU8sbUJBQW1COytHQUFuQixtQkFBbUI7Z0hBQW5CLG1CQUFtQixZQUpsQix1QkFBdUIsaUNBRXZCLGVBQWU7Z0hBRWhCLG1CQUFtQixhQUhqQixDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLFlBRHBFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFFbEQsZUFBZTs7NEZBRWhCLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO29CQUM5RSxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwL3Rlc3RpbmcnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uL21vY2snO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOb29wVHJhbnNsYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgICBkZWZhdWx0TGFuZzogc3RyaW5nID0gJ2VuJztcbiAgICB1c2VyTGFuZzogc3RyaW5nO1xuICAgIGN1c3RvbUxvYWRlcjogYW55O1xuXG4gICAgdHJhbnNsYXRlOiBhbnkgPSB7XG4gICAgICAgIG9uTGFuZ0NoYW5nZTogbmV3IEV2ZW50RW1pdHRlcjxMYW5nQ2hhbmdlRXZlbnQ+KClcbiAgICB9O1xuXG4gICAgYWRkVHJhbnNsYXRpb25Gb2xkZXIoKSB7fVxuICAgIG9uVHJhbnNsYXRpb25DaGFuZ2VkKCkge31cbiAgICB1c2UoKTogYW55IHt9XG4gICAgbG9hZFRyYW5zbGF0aW9uKCkge31cblxuICAgIGdldChrZXk6IHN0cmluZyB8IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IGFueT4ge1xuICAgICAgICByZXR1cm4gb2Yoa2V5KTtcbiAgICB9XG5cbiAgICBpbnN0YW50KGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IHN0cmluZyB8IGFueSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoKV0sXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUcmFuc2xhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOb29wVHJhbnNsYXRpb25TZXJ2aWNlIH1dLFxuICAgIGV4cG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE5vb3BUcmFuc2xhdGVNb2R1bGUge31cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC10cmFuc2xhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL25vb3AtdHJhbnNsYXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RDLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFSSxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUkzQixjQUFTLEdBQVE7WUFDYixZQUFZLEVBQUUsSUFBSSxZQUFZLEVBQW1CO1NBQ3BELENBQUM7S0FjTDtJQVpHLG9CQUFvQixLQUFJLENBQUM7SUFDekIsb0JBQW9CLEtBQUksQ0FBQztJQUN6QixHQUFHLEtBQVMsQ0FBQztJQUNiLGVBQWUsS0FBSSxDQUFDO0lBRXBCLEdBQUcsQ0FBQyxHQUEyQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQTJCO1FBQy9CLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzsrR0FwQlEsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FEVCxNQUFNOzs0RkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFvQ2xDLE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLFlBWGxCLHVCQUF1QjtnSEFXeEIsbUJBQW1CLGFBVmpCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pFLHVCQUF1QixDQUFDO2dCQUNwQixNQUFNLEVBQUU7b0JBQ0osT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DO2FBQ0osQ0FBQztTQUNMLFlBVFMsdUJBQXVCOzs0RkFXeEIsbUJBQW1CO2tCQVovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO3dCQUNqRSx1QkFBdUIsQ0FBQzs0QkFDcEIsTUFBTSxFQUFFO2dDQUNKLE9BQU8sRUFBRSxlQUFlO2dDQUN4QixRQUFRLEVBQUUsc0JBQXNCOzZCQUNuQzt5QkFDSixDQUFDO3FCQUNMO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwL3Rlc3RpbmcnO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9tb2NrJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTm9vcFRyYW5zbGF0aW9uU2VydmljZSBpbXBsZW1lbnRzIFRyYW5zbGF0aW9uU2VydmljZSB7XG4gICAgZGVmYXVsdExhbmc6IHN0cmluZyA9ICdlbic7XG4gICAgdXNlckxhbmc6IHN0cmluZztcbiAgICBjdXN0b21Mb2FkZXI6IGFueTtcblxuICAgIHRyYW5zbGF0ZTogYW55ID0ge1xuICAgICAgICBvbkxhbmdDaGFuZ2U6IG5ldyBFdmVudEVtaXR0ZXI8TGFuZ0NoYW5nZUV2ZW50PigpXG4gICAgfTtcblxuICAgIGFkZFRyYW5zbGF0aW9uRm9sZGVyKCkge31cbiAgICBvblRyYW5zbGF0aW9uQ2hhbmdlZCgpIHt9XG4gICAgdXNlKCk6IGFueSB7fVxuICAgIGxvYWRUcmFuc2xhdGlvbigpIHt9XG5cbiAgICBnZXQoa2V5OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIG9mKGtleSk7XG4gICAgfVxuXG4gICAgaW5zdGFudChrZXk6IHN0cmluZyB8IEFycmF5PHN0cmluZz4pOiBzdHJpbmcgfCBhbnkge1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSHR0cENsaWVudFRlc3RpbmdNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFRyYW5zbGF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5vb3BUcmFuc2xhdGlvblNlcnZpY2UgfSxcbiAgICAgICAgcHJvdmlkZVRyYW5zbGF0ZVNlcnZpY2Uoe1xuICAgICAgICAgICAgbG9hZGVyOiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBOb29wVHJhbnNsYXRpb25TZXJ2aWNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOb29wVHJhbnNsYXRlTW9kdWxlIHt9XG4iXX0=
@@ -61,6 +61,9 @@ export class UnitTestingUtils {
61
61
  getByDirective(directive) {
62
62
  return this.debugElement.query(By.directive(directive));
63
63
  }
64
+ getAllByDirective(directive) {
65
+ return this.debugElement.queryAll(By.directive(directive));
66
+ }
64
67
  /** Perform actions */
65
68
  clickByCSS(selector) {
66
69
  const element = this.getByCSS(selector);
@@ -361,4 +364,4 @@ export class UnitTestingUtils {
361
364
  return progress.host();
362
365
  }
363
366
  }
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC10ZXN0aW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL3VuaXQtdGVzdGluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFJSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQW9CLFlBQTJCLEVBQVUsTUFBc0I7UUFBM0QsaUJBQVksR0FBWixZQUFZLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFn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O1FBQzlELE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsa0NBQWtDO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDdkQsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlDQUFpQztJQUVqQyxLQUFLLENBQUMsaUJBQWlCO1FBQ25CLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0NBQWtDO0lBRWxDLEtBQUssQ0FBQyx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxxQ0FBcUM7SUFFckMsS0FBSyxDQUFDLHFCQUFxQjtRQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDckUsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBIYXJuZXNzTG9hZGVyLCBUZXN0RWxlbWVudCwgVGVzdEtleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IERlYnVnRWxlbWVudCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hdFNlbGVjdEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRPcHRpb25IYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IE1hdENoaXBHcmlkSGFybmVzcywgTWF0Q2hpcEhhcm5lc3MsIE1hdENoaXBMaXN0Ym94SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0QnV0dG9uSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEljb25IYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi90ZXN0aW5nJztcbmltcG9ydCB7IE1hdENoZWNrYm94SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0RXJyb3JIYXJuZXNzLCBNYXRGb3JtRmllbGRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC90ZXN0aW5nJztcbmltcG9ydCB7IE1hdElucHV0SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZS90ZXN0aW5nJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXBIYXJuZXNzLCBNYXRUYWJIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicy90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFRvb2xiYXJIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhci90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFySGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhci90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFySGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhci90ZXN0aW5nJztcblxuZXhwb3J0IGNsYXNzIFVuaXRUZXN0aW5nVXRpbHMge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVidWdFbGVtZW50PzogRGVidWdFbGVtZW50LCBwcml2YXRlIGxvYWRlcj86IEhhcm5lc3NMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0VsZW1lbnQgPSBkZWJ1Z0VsZW1lbnQ7XG4gICAgICAgIHRoaXMubG9hZGVyID0gbG9hZGVyO1xuICAgIH1cblxuICAgIHNldERlYnVnRWxlbWVudChkZWJ1Z0VsZW1lbnQ6IERlYnVnRWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlYnVnRWxlbWVudCA9IGRlYnVnRWxlbWVudDtcbiAgICB9XG5cbiAgICBzZXRMb2FkZXIobG9hZGVyOiBIYXJuZXNzTG9hZGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gbG9hZGVyO1xuICAgIH1cblxuICAgIGdldEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWJ1Z0VsZW1lbnQucXVlcnkoQnkuY3NzKHNlbGVjdG9yKSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IERlYnVnRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmNzcyhzZWxlY3RvcikpO1xuICAgIH1cblxuICAgIGdldElubmVyVGV4dEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhzZWxlY3RvcikubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgfVxuXG4gICAgZ2V0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IERlYnVnRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5Q1NTKGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWApO1xuICAgIH1cblxuICAgIGdldEJ5RGF0YUF1dG9tYXRpb25DbGFzcyhkYXRhQXV0b21hdGlvbkNsYXNzOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhgW2RhdGEtYXV0b21hdGlvbi1jbGFzcz1cIiR7ZGF0YUF1dG9tYXRpb25DbGFzc31cIl1gKTtcbiAgICB9XG5cbiAgICBnZXRJbm5lclRleHRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0O1xuICAgIH1cblxuICAgIGdldEJ5RGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+KTogRGVidWdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmRpcmVjdGl2ZShkaXJlY3RpdmUpKTtcbiAgICB9XG5cbiAgICAvKiogUGVyZm9ybSBhY3Rpb25zICovXG5cbiAgICBjbGlja0J5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ2NsaWNrJywgbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICAgIH1cblxuICAgIGNsaWNrQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgZG91YmxlQ2xpY2tCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdkYmxjbGljaycsIG5ldyBNb3VzZUV2ZW50KCdkYmxjbGljaycpKTtcbiAgICB9XG5cbiAgICBibHVyQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignYmx1cicsIG5ldyBGb2N1c0V2ZW50KCdibHVyJykpO1xuICAgIH1cblxuICAgIGhvdmVyT3ZlckJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ21vdXNlZW50ZXInLCBuZXcgTW91c2VFdmVudCgnbW91c2VlbnRlcicpKTtcbiAgICB9XG5cbiAgICBob3Zlck92ZXJCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdtb3VzZWVudGVyJywgbmV3IE1vdXNlRXZlbnQoJ21vdXNlZW50ZXInKSk7XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZUJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ21vdXNlbGVhdmUnLCBuZXcgTW91c2VFdmVudCgnbW91c2VsZWF2ZScpKTtcbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignbW91c2VsZWF2ZScsIG5ldyBNb3VzZUV2ZW50KCdtb3VzZWxlYXZlJykpO1xuICAgIH1cblxuICAgIGtleUJvYXJkRXZlbnRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nLCBldmVudDogJ2tleXVwJyB8ICdrZXlkb3duJywgY29kZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KGV2ZW50LCB7IGNvZGUsIGtleSB9KSk7XG4gICAgfVxuXG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH1cblxuICAgIC8qKiBJbnB1dCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGdldElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKT8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBmaWxsSW5wdXRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xuICAgIH1cblxuICAgIGZpbGxJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldElucHV0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgfVxuXG4gICAgLyoqIE1hdEJ1dHRvbiByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdEJ1dHRvbigpOiBQcm9taXNlPE1hdEJ1dHRvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0QnV0dG9uSGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0QnV0dG9uQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0QnV0dG9uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0QnV0dG9uQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0QnV0dG9uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdEJ1dHRvbkV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0QnV0dG9uSGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdEJ1dHRvbkV4aXN0c1dpdGhEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uKCk7XG4gICAgICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0QnV0dG9uQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLmdldE1hdEJ1dHRvbkJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRCdXR0b25CeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZW5kS2V5c1RvTWF0QnV0dG9uKGtleXM6IChzdHJpbmcgfCBUZXN0S2V5KVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uKCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCBidXR0b24uaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LnNlbmRLZXlzKC4uLmtleXMpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGVja2JveCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdENoZWNrYm94KCk6IFByb21pc2U8TWF0Q2hlY2tib3hIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdENoZWNrYm94SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0Q2hlY2tib3hCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGVja2JveEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Q2hlY2tib3hIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0Q2hlY2tib3hIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3ggPSBhd2FpdCB0aGlzLmdldE1hdENoZWNrYm94KCk7XG4gICAgICAgIHJldHVybiBjaGVja2JveC5ob3N0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWxsTWF0Q2hlY2tib3hlcygpOiBQcm9taXNlPE1hdENoZWNrYm94SGFybmVzc1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRBbGxIYXJuZXNzZXMoTWF0Q2hlY2tib3hIYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0Q2hlY2tib3hJc0NoZWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGVja2JveCgpO1xuICAgICAgICByZXR1cm4gY2hlY2tib3guaXNDaGVja2VkKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdENoZWNrYm94ZXNIYXZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hlcyA9IGF3YWl0IHRoaXMuZ2V0QWxsTWF0Q2hlY2tib3hlcygpO1xuICAgICAgICByZXR1cm4gY2hlY2tib3hlcy5ldmVyeShhc3luYyAoY2hlY2tib3gpID0+IChhd2FpdCBjaGVja2JveC5ob3N0KCkpLmhhc0NsYXNzKGNsYXNzTmFtZSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGhvdmVyT3Zlck1hdENoZWNrYm94KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGVja2JveEhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5ob3ZlcigpO1xuICAgIH1cblxuICAgIC8qKiBNYXRJY29uIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbk9yTnVsbCgpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzT3JOdWxsKE1hdEljb25IYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJY29uV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0SWNvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJY29uV2l0aEFuY2VzdG9yQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0SWNvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbldpdGhBbmNlc3RvckJ5Q1NTQW5kTmFtZShzZWxlY3Rvcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEljb25IYXJuZXNzLndpdGgoeyBhbmNlc3Rvcjogc2VsZWN0b3IsIG5hbWUgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJY29uRXhpc3RzV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJY29uSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJY29uRXhpc3RzV2l0aEFuY2VzdG9yQnlDU1NBbmROYW1lKHNlbGVjdG9yOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJY29uSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IHNlbGVjdG9yLCBuYW1lIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbGlja01hdEljb25XaXRoQW5jZXN0b3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBhd2FpdCB0aGlzLmdldE1hdEljb25XaXRoQW5jZXN0b3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCBpY29uLmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKiBNYXRTZWxlY3QgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRTZWxlY3RPcHRpb25zKGlzT3BlbmVkID0gZmFsc2UpOiBQcm9taXNlPE1hdE9wdGlvbkhhcm5lc3NbXT4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICBpZiAoIWlzT3BlbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzZWxlY3Qub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3QuZ2V0T3B0aW9ucygpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdFNlbGVjdEhvc3QoKTogUHJvbWlzZTxUZXN0RWxlbWVudD4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gc2VsZWN0Lmhvc3QoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0U2VsZWN0RXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRTZWxlY3RIYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuTWF0U2VsZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICBhd2FpdCBzZWxlY3Qub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGlwcyByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdENoaXBCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGlwSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRDaGlwSGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRDaGlwRXhpc3RzV2l0aERhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdENoaXBIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRDaGlwKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjaGlwID0gYXdhaXQgdGhpcy5nZXRNYXRDaGlwQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgY2hpcC5ob3N0KCk7XG4gICAgICAgIGF3YWl0IGhvc3QuY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRDaGlwcygpOiBQcm9taXNlPE1hdENoaXBIYXJuZXNzW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEFsbEhhcm5lc3NlcyhNYXRDaGlwSGFybmVzcyk7XG4gICAgfVxuXG4gICAgLyoqIE1hdENoaXBMaXN0Ym94IHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0Q2hpcExpc3Rib3hCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGlwTGlzdGJveEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Q2hpcExpc3Rib3hIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRDaGlwTGlzdGJveChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2hpcExpc3QgPSBhd2FpdCB0aGlzLmdldE1hdENoaXBMaXN0Ym94QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgY2hpcExpc3QuaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdENoaXBHcmlkIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgY2hlY2tJZk1hdENoaXBHcmlkRXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRDaGlwR3JpZEhhcm5lc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYXRGcm9tRmllbGQgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRGb3JtRmllbGQoKTogUHJvbWlzZTxNYXRGb3JtRmllbGRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEZvcm1GaWVsZEhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEZvcm1GaWVsZEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPE1hdEZvcm1GaWVsZEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Rm9ybUZpZWxkSGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIC8qKiBNYXRJbnB1dCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdElucHV0KCk6IFByb21pc2U8TWF0SW5wdXRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdElucHV0SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxNYXRJbnB1dEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRJbnB1dEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeVBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPE1hdElucHV0SGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHBsYWNlaG9sZGVyIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dEhvc3QoKTogUHJvbWlzZTxUZXN0RWxlbWVudD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgcmV0dXJuIGlucHV0Lmhvc3QoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SW5wdXRFeGlzdHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdElucHV0SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdElucHV0RXhpc3RzV2l0aENTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJbnB1dEV4aXN0c1dpdGhEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SW5wdXRFeGlzdHNXaXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHBsYWNlaG9sZGVyIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbGlja01hdElucHV0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IGlucHV0Lmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5jbGljaygpO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbGxNYXRJbnB1dCh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmlsbE1hdElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGF3YWl0IGlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmaWxsTWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgYXdhaXQgaW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICBhd2FpdCAoYXdhaXQgaW5wdXQuaG9zdCgpKS5kaXNwYXRjaEV2ZW50KCdpbnB1dCcpO1xuICAgIH1cblxuICAgIGFzeW5jIGZvY3VzTWF0SW5wdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBhd2FpdCBpbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIGFzeW5jIGJsdXJNYXRJbnB1dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLmdldE1hdElucHV0KCk7XG4gICAgICAgIGF3YWl0IGlucHV0LmJsdXIoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dFZhbHVlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICByZXR1cm4gaW5wdXQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dFZhbHVlQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgcmV0dXJuIGlucHV0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VuZEtleXNUb01hdElucHV0KGtleXM6IChzdHJpbmcgfCBUZXN0S2V5KVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgaW5wdXQuaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LnNlbmRLZXlzKC4uLmtleXMpO1xuICAgIH1cblxuICAgIC8qKiBNYXRBdXRvQ29tcGxldGUgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyB0eXBlQW5kR2V0T3B0aW9uc0Zvck1hdEF1dG9Db21wbGV0ZShmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4sIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPE1hdE9wdGlvbkhhcm5lc3NbXT4ge1xuICAgICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEF1dG9jb21wbGV0ZUhhcm5lc3MpO1xuICAgICAgICBhd2FpdCBhdXRvY29tcGxldGUuZW50ZXJUZXh0KHZhbHVlKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgcmV0dXJuIGF1dG9jb21wbGV0ZS5nZXRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdEVycm9yIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0RXJyb3JCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxNYXRFcnJvckhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0RXJyb3JIYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0RXJyb3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRFcnJvckhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0RXJyb3JIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIE1hdFRhYkdyb3VwIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0U2VsZWN0ZWRUYWJGcm9tTWF0VGFiR3JvdXAoKTogUHJvbWlzZTxNYXRUYWJIYXJuZXNzPiB7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFRhYkdyb3VwSGFybmVzcyk7XG4gICAgICAgIHJldHVybiB0YWJzLmdldFNlbGVjdGVkVGFiKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0U2VsZWN0ZWRUYWJMYWJlbEZyb21NYXRUYWJHcm91cCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCB0aGlzLmdldFNlbGVjdGVkVGFiRnJvbU1hdFRhYkdyb3VwKCk7XG4gICAgICAgIHJldHVybiB0YWIuZ2V0TGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogTWF0VG9vbGJhciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdFRvb2xiYXJIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3QgdG9vbGJhciA9IGF3YWl0IHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0VG9vbGJhckhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gdG9vbGJhci5ob3N0KCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdFNuYWNrYmFyIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgY2hlY2tJZk1hdFNuYWNrYmFyRXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRTbmFja0Jhckhhcm5lc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYXRQcm9ncmVzc0JhciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdFByb2dyZXNzQmFySG9zdCgpOiBQcm9taXNlPFRlc3RFbGVtZW50PiB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRQcm9ncmVzc0Jhckhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3MuaG9zdCgpO1xuICAgIH1cbn1cbiJdfQ==
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC10ZXN0aW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL3VuaXQtdGVzdGluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFJSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQW9CLFlBQTJCLEVBQVUsTUFBc0I7UUFBM0QsaUJBQVksR0FBWixZQUFZLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFn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cEgsQ0FBQztJQUVELGtDQUFrQztJQUVsQyxLQUFLLENBQUMsNkJBQTZCO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGtDQUFrQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQ0FBaUM7SUFFakMsS0FBSyxDQUFDLGlCQUFpQjtRQUNuQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEUsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtDQUFrQztJQUVsQyxLQUFLLENBQUMsd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQscUNBQXFDO0lBRXJDLEtBQUssQ0FBQyxxQkFBcUI7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSGFybmVzc0xvYWRlciwgVGVzdEVsZW1lbnQsIFRlc3RLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBEZWJ1Z0VsZW1lbnQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNYXRTZWxlY3RIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0L3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0T3B0aW9uSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRDaGlwR3JpZEhhcm5lc3MsIE1hdENoaXBIYXJuZXNzLCBNYXRDaGlwTGlzdGJveEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcy90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEJ1dHRvbkhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24vdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRJY29uSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24vdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveC90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEVycm9ySGFybmVzcywgTWF0Rm9ybUZpZWxkSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRJbnB1dEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dC90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUvdGVzdGluZyc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFRhYkdyb3VwSGFybmVzcywgTWF0VGFiSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRUb29sYmFySGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXIvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRTbmFja0Jhckhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXIvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhckhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXIvdGVzdGluZyc7XG5cbmV4cG9ydCBjbGFzcyBVbml0VGVzdGluZ1V0aWxzIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlYnVnRWxlbWVudD86IERlYnVnRWxlbWVudCwgcHJpdmF0ZSBsb2FkZXI/OiBIYXJuZXNzTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuZGVidWdFbGVtZW50ID0gZGVidWdFbGVtZW50O1xuICAgICAgICB0aGlzLmxvYWRlciA9IGxvYWRlcjtcbiAgICB9XG5cbiAgICBzZXREZWJ1Z0VsZW1lbnQoZGVidWdFbGVtZW50OiBEZWJ1Z0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0VsZW1lbnQgPSBkZWJ1Z0VsZW1lbnQ7XG4gICAgfVxuXG4gICAgc2V0TG9hZGVyKGxvYWRlcjogSGFybmVzc0xvYWRlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRlciA9IGxvYWRlcjtcbiAgICB9XG5cbiAgICBnZXRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogRGVidWdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhzZWxlY3RvcikpO1xuICAgIH1cblxuICAgIGdldEFsbEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlYnVnRWxlbWVudC5xdWVyeUFsbChCeS5jc3Moc2VsZWN0b3IpKTtcbiAgICB9XG5cbiAgICBnZXRJbm5lclRleHRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0O1xuICAgIH1cblxuICAgIGdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gKTtcbiAgICB9XG5cbiAgICBnZXRCeURhdGFBdXRvbWF0aW9uQ2xhc3MoZGF0YUF1dG9tYXRpb25DbGFzczogc3RyaW5nKTogRGVidWdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlDU1MoYFtkYXRhLWF1dG9tYXRpb24tY2xhc3M9XCIke2RhdGFBdXRvbWF0aW9uQ2xhc3N9XCJdYCk7XG4gICAgfVxuXG4gICAgZ2V0SW5uZXJUZXh0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dDtcbiAgICB9XG5cbiAgICBnZXRCeURpcmVjdGl2ZShkaXJlY3RpdmU6IFR5cGU8YW55Pik6IERlYnVnRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlYnVnRWxlbWVudC5xdWVyeShCeS5kaXJlY3RpdmUoZGlyZWN0aXZlKSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsQnlEaXJlY3RpdmUoZGlyZWN0aXZlOiBUeXBlPGFueT4pOiBEZWJ1Z0VsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlYnVnRWxlbWVudC5xdWVyeUFsbChCeS5kaXJlY3RpdmUoZGlyZWN0aXZlKSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcmZvcm0gYWN0aW9ucyAqL1xuXG4gICAgY2xpY2tCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdjbGljaycsIG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKTtcbiAgICB9XG5cbiAgICBjbGlja0J5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCkubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIGRvdWJsZUNsaWNrQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignZGJsY2xpY2snLCBuZXcgTW91c2VFdmVudCgnZGJsY2xpY2snKSk7XG4gICAgfVxuXG4gICAgYmx1ckJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ2JsdXInLCBuZXcgRm9jdXNFdmVudCgnYmx1cicpKTtcbiAgICB9XG5cbiAgICBob3Zlck92ZXJCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdtb3VzZWVudGVyJywgbmV3IE1vdXNlRXZlbnQoJ21vdXNlZW50ZXInKSk7XG4gICAgfVxuXG4gICAgaG92ZXJPdmVyQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignbW91c2VlbnRlcicsIG5ldyBNb3VzZUV2ZW50KCdtb3VzZWVudGVyJykpO1xuICAgIH1cblxuICAgIG1vdXNlTGVhdmVCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdtb3VzZWxlYXZlJywgbmV3IE1vdXNlRXZlbnQoJ21vdXNlbGVhdmUnKSk7XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZUJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ21vdXNlbGVhdmUnLCBuZXcgTW91c2VFdmVudCgnbW91c2VsZWF2ZScpKTtcbiAgICB9XG5cbiAgICBrZXlCb2FyZEV2ZW50QnlDU1Moc2VsZWN0b3I6IHN0cmluZywgZXZlbnQ6ICdrZXl1cCcgfCAna2V5ZG93bicsIGNvZGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudChldmVudCwgeyBjb2RlLCBrZXkgfSkpO1xuICAgIH1cblxuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nLCBldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKiogSW5wdXQgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBnZXRJbnB1dEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldElucHV0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZmlsbElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0SW5wdXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTtcbiAgICB9XG5cbiAgICBmaWxsSW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xuICAgIH1cblxuICAgIC8qKiBNYXRCdXR0b24gcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRCdXR0b24oKTogUHJvbWlzZTxNYXRCdXR0b25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEJ1dHRvbkhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEJ1dHRvbkJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPE1hdEJ1dHRvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0QnV0dG9uSGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEJ1dHRvbkJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1hdEJ1dHRvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0QnV0dG9uSGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRCdXR0b25FeGlzdHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdEJ1dHRvbkhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRCdXR0b25FeGlzdHNXaXRoRGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0QnV0dG9uSGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0QnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLmdldE1hdEJ1dHRvbigpO1xuICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbGlja01hdEJ1dHRvbkJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gYXdhaXQgdGhpcy5nZXRNYXRCdXR0b25CeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0QnV0dG9uQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLmdldE1hdEJ1dHRvbkJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VuZEtleXNUb01hdEJ1dHRvbihrZXlzOiAoc3RyaW5nIHwgVGVzdEtleSlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLmdldE1hdEJ1dHRvbigpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgYnV0dG9uLmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5zZW5kS2V5cyguLi5rZXlzKTtcbiAgICB9XG5cbiAgICAvKiogTWF0Q2hlY2tib3ggcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRDaGVja2JveCgpOiBQcm9taXNlPE1hdENoZWNrYm94SGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRDaGVja2JveEhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdENoZWNrYm94QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0Q2hlY2tib3hIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdENoZWNrYm94SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdENoZWNrYm94SG9zdCgpOiBQcm9taXNlPFRlc3RFbGVtZW50PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGVja2JveCgpO1xuICAgICAgICByZXR1cm4gY2hlY2tib3guaG9zdCgpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEFsbE1hdENoZWNrYm94ZXMoKTogUHJvbWlzZTxNYXRDaGVja2JveEhhcm5lc3NbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0QWxsSGFybmVzc2VzKE1hdENoZWNrYm94SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdENoZWNrYm94SXNDaGVja2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBjaGVja2JveCA9IGF3YWl0IHRoaXMuZ2V0TWF0Q2hlY2tib3goKTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94LmlzQ2hlY2tlZCgpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRDaGVja2JveGVzSGF2ZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94ZXMgPSBhd2FpdCB0aGlzLmdldEFsbE1hdENoZWNrYm94ZXMoKTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94ZXMuZXZlcnkoYXN5bmMgKGNoZWNrYm94KSA9PiAoYXdhaXQgY2hlY2tib3guaG9zdCgpKS5oYXNDbGFzcyhjbGFzc05hbWUpKTtcbiAgICB9XG5cbiAgICBhc3luYyBob3Zlck92ZXJNYXRDaGVja2JveCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IHRoaXMuZ2V0TWF0Q2hlY2tib3hIb3N0KCk7XG4gICAgICAgIGF3YWl0IGhvc3QuaG92ZXIoKTtcbiAgICB9XG5cbiAgICAvKiogTWF0SWNvbiByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdEljb25Pck51bGwoKTogUHJvbWlzZTxNYXRJY29uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzc09yTnVsbChNYXRJY29uSGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbldpdGhBbmNlc3RvckJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEljb25IYXJuZXNzLndpdGgoeyBhbmNlc3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbldpdGhBbmNlc3RvckJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEljb25IYXJuZXNzLndpdGgoeyBhbmNlc3Rvcjogc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEljb25XaXRoQW5jZXN0b3JCeUNTU0FuZE5hbWUoc2VsZWN0b3I6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxNYXRJY29uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRJY29uSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IHNlbGVjdG9yLCBuYW1lIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SWNvbkV4aXN0c1dpdGhBbmNlc3RvckJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SWNvbkV4aXN0c1dpdGhBbmNlc3RvckJ5Q1NTQW5kTmFtZShzZWxlY3Rvcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBzZWxlY3RvciwgbmFtZSB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRJY29uV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpY29uID0gYXdhaXQgdGhpcy5nZXRNYXRJY29uV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgaWNvbi5ob3N0KCk7XG4gICAgICAgIGF3YWl0IGhvc3QuY2xpY2soKTtcbiAgICB9XG5cbiAgICAvKiogTWF0U2VsZWN0IHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0U2VsZWN0T3B0aW9ucyhpc09wZW5lZCA9IGZhbHNlKTogUHJvbWlzZTxNYXRPcHRpb25IYXJuZXNzW10+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRTZWxlY3RIYXJuZXNzKTtcbiAgICAgICAgaWYgKCFpc09wZW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc2VsZWN0Lm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0LmdldE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRTZWxlY3RIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRTZWxlY3RIYXJuZXNzKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdC5ob3N0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdFNlbGVjdEV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0U2VsZWN0SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgb3Blbk1hdFNlbGVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRTZWxlY3RIYXJuZXNzKTtcbiAgICAgICAgYXdhaXQgc2VsZWN0Lm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogTWF0Q2hpcHMgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRDaGlwQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0Q2hpcEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Q2hpcEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0Q2hpcEV4aXN0c1dpdGhEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRDaGlwSGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0Q2hpcChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2hpcCA9IGF3YWl0IHRoaXMuZ2V0TWF0Q2hpcEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IGNoaXAuaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0Q2hpcHMoKTogUHJvbWlzZTxNYXRDaGlwSGFybmVzc1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRBbGxIYXJuZXNzZXMoTWF0Q2hpcEhhcm5lc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGlwTGlzdGJveCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdENoaXBMaXN0Ym94QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0Q2hpcExpc3Rib3hIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdENoaXBMaXN0Ym94SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0Q2hpcExpc3Rib3goZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoaXBMaXN0ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGlwTGlzdGJveEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IGNoaXBMaXN0Lmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGlwR3JpZCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRDaGlwR3JpZEV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0Q2hpcEdyaWRIYXJuZXNzKTtcbiAgICB9XG5cbiAgICAvKiogTWF0RnJvbUZpZWxkIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0Rm9ybUZpZWxkKCk6IFByb21pc2U8TWF0Rm9ybUZpZWxkSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRGb3JtRmllbGRIYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRGb3JtRmllbGRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxNYXRGb3JtRmllbGRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEZvcm1GaWVsZEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yIH0pKTtcbiAgICB9XG5cbiAgICAvKiogTWF0SW5wdXQgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dCgpOiBQcm9taXNlPE1hdElucHV0SGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRJbnB1dEhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0SW5wdXRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdElucHV0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0SW5wdXRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdElucHV0QnlQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKTogUHJvbWlzZTxNYXRJbnB1dEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBwbGFjZWhvbGRlciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLmdldE1hdElucHV0KCk7XG4gICAgICAgIHJldHVybiBpbnB1dC5ob3N0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdElucHV0RXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJbnB1dEV4aXN0c1dpdGhDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SW5wdXRFeGlzdHNXaXRoRGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdElucHV0RXhpc3RzV2l0aFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBwbGFjZWhvbGRlciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRJbnB1dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLmdldE1hdElucHV0KCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCBpbnB1dC5ob3N0KCk7XG4gICAgICAgIGF3YWl0IGhvc3QuY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBmaWxsTWF0SW5wdXQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgYXdhaXQgaW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbGxNYXRJbnB1dEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLmdldE1hdElucHV0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmlsbE1hdElucHV0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGF3YWl0IGlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgYXdhaXQgKGF3YWl0IGlucHV0Lmhvc3QoKSkuZGlzcGF0Y2hFdmVudCgnaW5wdXQnKTtcbiAgICB9XG5cbiAgICBhc3luYyBmb2N1c01hdElucHV0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgYXdhaXQgaW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBibHVyTWF0SW5wdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBhd2FpdCBpbnB1dC5ibHVyKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgcmV0dXJuIGlucHV0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRWYWx1ZUJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIHJldHVybiBpbnB1dC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHNlbmRLZXlzVG9NYXRJbnB1dChrZXlzOiAoc3RyaW5nIHwgVGVzdEtleSlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IGlucHV0Lmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5zZW5kS2V5cyguLi5rZXlzKTtcbiAgICB9XG5cbiAgICAvKiogTWF0QXV0b0NvbXBsZXRlIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgdHlwZUFuZEdldE9wdGlvbnNGb3JNYXRBdXRvQ29tcGxldGUoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+LCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxNYXRPcHRpb25IYXJuZXNzW10+IHtcbiAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRBdXRvY29tcGxldGVIYXJuZXNzKTtcbiAgICAgICAgYXdhaXQgYXV0b2NvbXBsZXRlLmVudGVyVGV4dCh2YWx1ZSk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHJldHVybiBhdXRvY29tcGxldGUuZ2V0T3B0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKiBNYXRFcnJvciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdEVycm9yQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0RXJyb3JIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEVycm9ySGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEVycm9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0RXJyb3JIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEVycm9ySGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIC8qKiBNYXRUYWJHcm91cCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldFNlbGVjdGVkVGFiRnJvbU1hdFRhYkdyb3VwKCk6IFByb21pc2U8TWF0VGFiSGFybmVzcz4ge1xuICAgICAgICBjb25zdCB0YWJzID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRUYWJHcm91cEhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gdGFicy5nZXRTZWxlY3RlZFRhYigpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldFNlbGVjdGVkVGFiTGFiZWxGcm9tTWF0VGFiR3JvdXAoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgdGhpcy5nZXRTZWxlY3RlZFRhYkZyb21NYXRUYWJHcm91cCgpO1xuICAgICAgICByZXR1cm4gdGFiLmdldExhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdFRvb2xiYXIgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRUb29sYmFySG9zdCgpOiBQcm9taXNlPFRlc3RFbGVtZW50PiB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXIgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFRvb2xiYXJIYXJuZXNzKTtcbiAgICAgICAgcmV0dXJuIHRvb2xiYXIuaG9zdCgpO1xuICAgIH1cblxuICAgIC8qKiBNYXRTbmFja2JhciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRTbmFja2JhckV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0U25hY2tCYXJIYXJuZXNzKTtcbiAgICB9XG5cbiAgICAvKiogTWF0UHJvZ3Jlc3NCYXIgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRQcm9ncmVzc0Jhckhvc3QoKTogUHJvbWlzZTxUZXN0RWxlbWVudD4ge1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGF3YWl0IHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0UHJvZ3Jlc3NCYXJIYXJuZXNzKTtcbiAgICAgICAgcmV0dXJuIHByb2dyZXNzLmhvc3QoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { provideTranslateService, TranslateLoader } from '@ngx-translate/core';
18
+ import { TranslateLoaderService } from './translate-loader.service';
19
+ import { HttpClient } from '@angular/common/http';
20
+ import { provideTranslations } from './translation.service';
21
+ /**
22
+ * Provides the i18n service.
23
+ * This function is used to provide the i18n service in the application.
24
+ * It is recommended to use this function in the top-level `AppModule` to ensure that the i18n service is available throughout the application.
25
+ *
26
+ * @param config - Configuration for the i18n service.
27
+ * @param config.assets - An array of assets to be used for i18n, where each asset is a tuple containing an identifier and a path.
28
+ * @returns An array of providers for the i18n service.
29
+ */
30
+ export function provideI18N(config) {
31
+ const result = [
32
+ provideTranslateService({
33
+ loader: {
34
+ provide: TranslateLoader,
35
+ useExisting: TranslateLoaderService,
36
+ deps: [HttpClient]
37
+ },
38
+ defaultLanguage: config?.defaultLanguage || 'en'
39
+ })
40
+ ];
41
+ if (config?.assets) {
42
+ config.assets.forEach(([id, path]) => {
43
+ result.push(provideTranslations(id, path));
44
+ });
45
+ }
46
+ return result;
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90cmFuc2xhdGlvbi9wcm92aWRlLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBR0gsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWU1RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBMEI7SUFDbEQsTUFBTSxNQUFNLEdBQXdDO1FBQ2hELHVCQUF1QixDQUFDO1lBQ3BCLE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsV0FBVyxFQUFFLHNCQUFzQjtnQkFDbkMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ3JCO1lBQ0QsZUFBZSxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksSUFBSTtTQUNuRCxDQUFDO0tBQ0wsQ0FBQztJQUVGLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBwcm92aWRlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlSTE4TkNvbmZpZyB7XG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgbGFuZ3VhZ2UgdG8gdXNlIGZvciB0cmFuc2xhdGlvbnMuXG4gICAgICogSWYgbm90IHByb3ZpZGVkLCBpdCBkZWZhdWx0cyB0byAnZW4nLlxuICAgICAqL1xuICAgIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBhc3NldHMgdG8gYmUgdXNlZCBmb3IgaTE4biwgd2hlcmUgZWFjaCBhc3NldCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaWRlbnRpZmllciBhbmQgYSBwYXRoLlxuICAgICAqIEV4YW1wbGU6IFtbJ2VuJywgJy9hc3NldHMvaTE4bi9lbi5qc29uJ10sIFsnZnInLCAnL2Fzc2V0cy9pMThuL2ZyLmpzb24nXV1cbiAgICAgKi9cbiAgICBhc3NldHM/OiBbc3RyaW5nLCBzdHJpbmddW107XG59XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIGkxOG4gc2VydmljZS5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcm92aWRlIHRoZSBpMThuIHNlcnZpY2UgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24gaW4gdGhlIHRvcC1sZXZlbCBgQXBwTW9kdWxlYCB0byBlbnN1cmUgdGhhdCB0aGUgaTE4biBzZXJ2aWNlIGlzIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGkxOG4gc2VydmljZS5cbiAqIEBwYXJhbSBjb25maWcuYXNzZXRzIC0gQW4gYXJyYXkgb2YgYXNzZXRzIHRvIGJlIHVzZWQgZm9yIGkxOG4sIHdoZXJlIGVhY2ggYXNzZXQgaXMgYSB0dXBsZSBjb250YWluaW5nIGFuIGlkZW50aWZpZXIgYW5kIGEgcGF0aC5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHByb3ZpZGVycyBmb3IgdGhlIGkxOG4gc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJMThOKGNvbmZpZz86IFByb3ZpZGVJMThOQ29uZmlnKTogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10ge1xuICAgIGNvbnN0IHJlc3VsdDogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXG4gICAgICAgIHByb3ZpZGVUcmFuc2xhdGVTZXJ2aWNlKHtcbiAgICAgICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgICAgICAgICB1c2VFeGlzdGluZzogVHJhbnNsYXRlTG9hZGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBkZXBzOiBbSHR0cENsaWVudF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IGNvbmZpZz8uZGVmYXVsdExhbmd1YWdlIHx8ICdlbidcbiAgICAgICAgfSlcbiAgICBdO1xuXG4gICAgaWYgKGNvbmZpZz8uYXNzZXRzKSB7XG4gICAgICAgIGNvbmZpZy5hc3NldHMuZm9yRWFjaCgoW2lkLCBwYXRoXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocHJvdmlkZVRyYW5zbGF0aW9ucyhpZCwgcGF0aCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -16,4 +16,5 @@
16
16
  */
17
17
  export * from './translation.service';
18
18
  export * from './translate-loader.service';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdHJhbnNsYXRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0ZS1sb2FkZXIuc2VydmljZSc7XG4iXX0=
19
+ export * from './provide-i18n';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdHJhbnNsYXRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZS1pMThuJztcbiJdfQ==
@@ -27,7 +27,12 @@ export class TranslateLoaderService {
27
27
  this.http = http;
28
28
  this.prefix = 'i18n';
29
29
  this.suffix = '.json';
30
- this.providers = [];
30
+ this.providers = [
31
+ new ComponentTranslationModel({
32
+ name: 'adf-core',
33
+ path: 'assets/adf-core'
34
+ })
35
+ ];
31
36
  this.queue = [];
32
37
  this.defaultLang = 'en';
33
38
  }
@@ -145,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
145
150
  providedIn: 'root'
146
151
  }]
147
152
  }], ctorParameters: () => [{ type: i1.HttpClient }] });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90cmFuc2xhdGlvbi90cmFuc2xhdGUtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt4RCxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFONUIsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixXQUFNLEdBQVcsT0FBTyxDQUFDO1FBQ3pCLGNBQVMsR0FBZ0MsRUFBRSxDQUFDO1FBQzVDLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7SUFFSSxDQUFDO0lBRXhDLGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsU0FBb0MsRUFBRSxXQUFvQjtRQUN0RixNQUFNLGNBQWMsR0FBRyxXQUFXLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFFL0csT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRWpDLElBQUksTUFBTSxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUV2RixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLGtCQUFrQixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBWTtRQUM1QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV0QyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVk7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVk7UUFDL0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxTQUFTO2FBQ1QsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFUCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDdkIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHO1lBQ1YsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDakQsVUFBVSxDQUFDLElBQUksQ0FDWCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakIsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQ0wsQ0FDSjtTQUNKLENBQUM7UUFFRixPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUNyQixHQUFHLEVBQUU7b0JBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxRCxJQUFJLGVBQWUsRUFBRSxDQUFDO3dCQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO29CQUNELElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2QsUUFBUSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN4QixDQUFDO2dCQUNMLENBQUMsRUFDRCxHQUFHLEVBQUU7b0JBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLENBQ0osQ0FBQztZQUNOLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFELElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQy9CLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBeklRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07OzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHJhbnNsYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTG9hZGVyU2VydmljZSBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XG4gICAgcHJpdmF0ZSBwcmVmaXg6IHN0cmluZyA9ICdpMThuJztcbiAgICBwcml2YXRlIHN1ZmZpeDogc3RyaW5nID0gJy5qc29uJztcbiAgICBwcml2YXRlIHByb3ZpZGVyczogQ29tcG9uZW50VHJhbnNsYXRpb25Nb2RlbFtdID0gW107XG4gICAgcHJpdmF0ZSBxdWV1ZTogc3RyaW5nW11bXSA9IFtdO1xuICAgIHByaXZhdGUgZGVmYXVsdExhbmc6IHN0cmluZyA9ICdlbic7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICBzZXREZWZhdWx0TGFuZyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdExhbmcgPSB2YWx1ZSB8fCAnZW4nO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyUHJvdmlkZXIobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVnaXN0ZXJlZCA9IHRoaXMucHJvdmlkZXJzLmZpbmQoKHByb3ZpZGVyKSA9PiBwcm92aWRlci5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQpIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyZWQucGF0aCA9IHBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb3ZpZGVycy5wdXNoKG5ldyBDb21wb25lbnRUcmFuc2xhdGlvbk1vZGVsKHsgbmFtZSwgcGF0aCB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm92aWRlclJlZ2lzdGVyZWQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucHJvdmlkZXJzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gbmFtZSk7XG4gICAgfVxuXG4gICAgZmV0Y2hMYW5ndWFnZUZpbGUobGFuZzogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudFRyYW5zbGF0aW9uTW9kZWwsIGZhbGxiYWNrVXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uVXJsID0gZmFsbGJhY2tVcmwgfHwgYCR7Y29tcG9uZW50LnBhdGh9LyR7dGhpcy5wcmVmaXh9LyR7bGFuZ30ke3RoaXMuc3VmZml4fT92PSR7RGF0ZS5ub3coKX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRyYW5zbGF0aW9uVXJsKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5qc29uW2xhbmddID0gcmVzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZXRyeSgzKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZmFsbGJhY2tVcmwgJiYgbGFuZy5pbmNsdWRlcygnLScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtsYW5nSWRdID0gbGFuZy5zcGxpdCgnLScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYW5nSWQgJiYgbGFuZ0lkICE9PSB0aGlzLmRlZmF1bHRMYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBgJHtjb21wb25lbnQucGF0aH0vJHt0aGlzLnByZWZpeH0vJHtsYW5nSWR9JHt0aGlzLnN1ZmZpeH0/dj0ke0RhdGUubm93KCl9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hMYW5ndWFnZUZpbGUobGFuZywgY29tcG9uZW50LCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGBGYWlsZWQgdG8gbG9hZCAke3RyYW5zbGF0aW9uVXJsfWApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRUb0ZldGNoKGxhbmc6IHN0cmluZyk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4ge1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlQmF0Y2ggPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnF1ZXVlW2xhbmddKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXVlW2xhbmddID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm92aWRlcnMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNDb21wb25lbnRJblF1ZXVlKGxhbmcsIGNvbXBvbmVudC5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVldWVbbGFuZ10ucHVzaChjb21wb25lbnQubmFtZSk7XG5cbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlQmF0Y2gucHVzaCh0aGlzLmZldGNoTGFuZ3VhZ2VGaWxlKGxhbmcsIGNvbXBvbmVudCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZUJhdGNoO1xuICAgIH1cblxuICAgIGluaXQobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXVlW2xhbmddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucXVldWVbbGFuZ10gPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ29tcG9uZW50SW5RdWV1ZShsYW5nOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gISEodGhpcy5xdWV1ZVtsYW5nXSB8fCBbXSkuZmluZCgoeCkgPT4geCA9PT0gbmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0RnVsbFRyYW5zbGF0aW9uSlNPTihsYW5nOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBsZXQgcmVzdWx0ID0ge307XG5cbiAgICAgICAgdGhpcy5wcm92aWRlcnNcbiAgICAgICAgICAgIC5zbGljZSgwKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYS5uYW1lID09PSAnYXBwJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGIubmFtZSA9PT0gJ2FwcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZm9yRWFjaCgobW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobW9kZWwuanNvbj8uW2xhbmddKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE9iamVjdFV0aWxzLm1lcmdlKHJlc3VsdCwgbW9kZWwuanNvbltsYW5nXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBsZXQgaGFzRmFpbHVyZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSBbXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbXBvbmVudFRvRmV0Y2gobGFuZykubWFwKChvYnNlcnZhYmxlKSA9PlxuICAgICAgICAgICAgICAgIG9ic2VydmFibGUucGlwZShcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZhaWx1cmVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChiYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9ya0pvaW4oYmF0Y2gpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVsbFRyYW5zbGF0aW9uID0gdGhpcy5nZXRGdWxsVHJhbnNsYXRpb25KU09OKGxhbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxUcmFuc2xhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZnVsbFRyYW5zbGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWlsdXJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBzb21lIHJlc291cmNlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmFpbGVkIHRvIGxvYWQgc29tZSByZXNvdXJjZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxUcmFuc2xhdGlvbiA9IHRoaXMuZ2V0RnVsbFRyYW5zbGF0aW9uSlNPTihsYW5nKTtcbiAgICAgICAgICAgICAgICBpZiAoZnVsbFRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZnVsbFRyYW5zbGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90cmFuc2xhdGlvbi90cmFuc2xhdGUtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt4RCxNQUFNLE9BQU8sc0JBQXNCO0lBWS9CLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFYNUIsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixXQUFNLEdBQVcsT0FBTyxDQUFDO1FBQ3pCLGNBQVMsR0FBZ0M7WUFDN0MsSUFBSSx5QkFBeUIsQ0FBQztnQkFDMUIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxpQkFBaUI7YUFDMUIsQ0FBQztTQUNMLENBQUM7UUFDTSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO0lBRUksQ0FBQztJQUV4QyxjQUFjLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFB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QUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUNKLENBQUM7WUFDTixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUMvQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTlJUSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZuQixNQUFNOzs0RkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudFRyYW5zbGF0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZUxvYWRlclNlcnZpY2UgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xuICAgIHByaXZhdGUgcHJlZml4OiBzdHJpbmcgPSAnaTE4bic7XG4gICAgcHJpdmF0ZSBzdWZmaXg6IHN0cmluZyA9ICcuanNvbic7XG4gICAgcHJpdmF0ZSBwcm92aWRlcnM6IENvbXBvbmVudFRyYW5zbGF0aW9uTW9kZWxbXSA9IFtcbiAgICAgICAgbmV3IENvbXBvbmVudFRyYW5zbGF0aW9uTW9kZWwoe1xuICAgICAgICAgICAgbmFtZTogJ2FkZi1jb3JlJyxcbiAgICAgICAgICAgIHBhdGg6ICdhc3NldHMvYWRmLWNvcmUnXG4gICAgICAgIH0pXG4gICAgXTtcbiAgICBwcml2YXRlIHF1ZXVlOiBzdHJpbmdbXVtdID0gW107XG4gICAgcHJpdmF0ZSBkZWZhdWx0TGFuZzogc3RyaW5nID0gJ2VuJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIHNldERlZmF1bHRMYW5nKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0TGFuZyA9IHZhbHVlIHx8ICdlbic7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQcm92aWRlcihuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZWdpc3RlcmVkID0gdGhpcy5wcm92aWRlcnMuZmluZCgocHJvdmlkZXIpID0+IHByb3ZpZGVyLm5hbWUgPT09IG5hbWUpO1xuICAgICAgICBpZiAocmVnaXN0ZXJlZCkge1xuICAgICAgICAgICAgcmVnaXN0ZXJlZC5wYXRoID0gcGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzLnB1c2gobmV3IENvbXBvbmVudFRyYW5zbGF0aW9uTW9kZWwoeyBuYW1lLCBwYXRoIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3ZpZGVyUmVnaXN0ZXJlZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wcm92aWRlcnMuZmluZCgoeCkgPT4geC5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICBmZXRjaExhbmd1YWdlRmlsZShsYW5nOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHJhbnNsYXRpb25Nb2RlbCwgZmFsbGJhY2tVcmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25VcmwgPSBmYWxsYmFja1VybCB8fCBgJHtjb21wb25lbnQucGF0aH0vJHt0aGlzLnByZWZpeH0vJHtsYW5nfSR7dGhpcy5zdWZmaXh9P3Y9JHtEYXRlLm5vdygpfWA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodHJhbnNsYXRpb25VcmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50Lmpzb25bbGFuZ10gPSByZXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJldHJ5KDMpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFmYWxsYmFja1VybCAmJiBsYW5nLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2xhbmdJZF0gPSBsYW5nLnNwbGl0KCctJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmdJZCAmJiBsYW5nSWQgIT09IHRoaXMuZGVmYXVsdExhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke2NvbXBvbmVudC5wYXRofS8ke3RoaXMucHJlZml4fS8ke2xhbmdJZH0ke3RoaXMuc3VmZml4fT92PSR7RGF0ZS5ub3coKX1gO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaExhbmd1YWdlRmlsZShsYW5nLCBjb21wb25lbnQsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoYEZhaWxlZCB0byBsb2FkICR7dHJhbnNsYXRpb25Vcmx9YCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudFRvRmV0Y2gobGFuZzogc3RyaW5nKTogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVCYXRjaCA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMucXVldWVbbGFuZ10pIHtcbiAgICAgICAgICAgIHRoaXMucXVldWVbbGFuZ10gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3ZpZGVycy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0NvbXBvbmVudEluUXVldWUobGFuZywgY29tcG9uZW50Lm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZVtsYW5nXS5wdXNoKGNvbXBvbmVudC5uYW1lKTtcblxuICAgICAgICAgICAgICAgIG9ic2VydmFibGVCYXRjaC5wdXNoKHRoaXMuZmV0Y2hMYW5ndWFnZUZpbGUobGFuZywgY29tcG9uZW50KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlQmF0Y2g7XG4gICAgfVxuXG4gICAgaW5pdChsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMucXVldWVbbGFuZ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5xdWV1ZVtsYW5nXSA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNDb21wb25lbnRJblF1ZXVlKGxhbmc6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLnF1ZXVlW2xhbmddIHx8IFtdKS5maW5kKCh4KSA9PiB4ID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRGdWxsVHJhbnNsYXRpb25KU09OKGxhbmc6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcblxuICAgICAgICB0aGlzLnByb3ZpZGVyc1xuICAgICAgICAgICAgLnNsaWNlKDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhLm5hbWUgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYi5uYW1lID09PSAnYXBwJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChtb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlbC5qc29uPy5bbGFuZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gT2JqZWN0VXRpbHMubWVyZ2UocmVzdWx0LCBtb2RlbC5qc29uW2xhbmddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCBoYXNGYWlsdXJlcyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBiYXRjaCA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29tcG9uZW50VG9GZXRjaChsYW5nKS5tYXAoKG9ic2VydmFibGUpID0+XG4gICAgICAgICAgICAgICAgb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRmFpbHVyZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgaWYgKGJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3JrSm9pbihiYXRjaCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsVHJhbnNsYXRpb24gPSB0aGlzLmdldEZ1bGxUcmFuc2xhdGlvbkpTT04obGFuZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVsbFRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChmdWxsVHJhbnNsYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhaWx1cmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHNvbWUgcmVzb3VyY2VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBzb21lIHJlc291cmNlcycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVsbFRyYW5zbGF0aW9uID0gdGhpcy5nZXRGdWxsVHJhbnNsYXRpb25KU09OKGxhbmcpO1xuICAgICAgICAgICAgICAgIGlmIChmdWxsVHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChmdWxsVHJhbnNsYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19