@bnsights/bbsf-utilities 1.0.41 → 1.0.43

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 (124) hide show
  1. package/README.md +5 -1
  2. package/{esm2020 → esm2022}/bnsights-bbsf-utilities.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/bbsf-utilities.module.mjs +59 -59
  4. package/esm2022/lib/shared/authentication/auth.service.mjs +211 -0
  5. package/{esm2020 → esm2022}/lib/shared/authentication/index.mjs +1 -1
  6. package/{esm2020 → esm2022}/lib/shared/config/environment.mjs +11 -11
  7. package/{esm2020 → esm2022}/lib/shared/config/word/constants.mjs +104 -104
  8. package/{esm2020 → esm2022}/lib/shared/config/word/docx-document.mjs +347 -347
  9. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/index.mjs +3 -3
  10. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/render-document-file.mjs +153 -153
  11. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/xml-builder.mjs +1835 -1835
  12. package/{esm2020 → esm2022}/lib/shared/config/word/html-to-docx.mjs +186 -186
  13. package/{esm2020 → esm2022}/lib/shared/config/word/index.mjs +49 -49
  14. package/{esm2020 → esm2022}/lib/shared/config/word/namespaces.mjs +36 -36
  15. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/content-types.mjs +2 -2
  16. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/core.mjs +6 -6
  17. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document-rels.mjs +3 -3
  18. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document.template.mjs +17 -17
  19. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/font-table.mjs +3 -3
  20. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/generic-rels.mjs +2 -2
  21. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/index.mjs +12 -12
  22. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/numbering.mjs +3 -3
  23. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/rels.mjs +3 -3
  24. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/settings.mjs +3 -3
  25. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/styles.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/theme.mjs +3 -3
  27. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/web-settings.mjs +3 -3
  28. package/{esm2020 → esm2022}/lib/shared/config/word/utils/color-conversion.mjs +59 -59
  29. package/{esm2020 → esm2022}/lib/shared/config/word/utils/list.mjs +50 -50
  30. package/{esm2020 → esm2022}/lib/shared/config/word/utils/unit-conversion.mjs +29 -29
  31. package/{esm2020 → esm2022}/lib/shared/config/word/utils/url.mjs +6 -6
  32. package/{esm2020 → esm2022}/lib/shared/config/word/utils/vnode.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/documentTemplate.mjs +12 -12
  34. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/index.mjs +3 -3
  35. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtPartTemplate.mjs +3 -3
  37. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/utils.mjs +25 -25
  38. package/{esm2020 → esm2022}/lib/shared/enums/authentication-modes-enums.mjs +7 -7
  39. package/{esm2020 → esm2022}/lib/shared/index.mjs +3 -3
  40. package/{esm2020 → esm2022}/lib/shared/models/UserModel.mjs +2 -2
  41. package/{esm2020 → esm2022}/lib/shared/models/area-model.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/shared/models/error-model.mjs +2 -2
  43. package/{esm2020 → esm2022}/lib/shared/models/index.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/shared/models/request-options-model.mjs +10 -10
  45. package/{esm2020 → esm2022}/lib/shared/models/word-document-model.mjs +7 -7
  46. package/{esm2020 → esm2022}/lib/shared/services/appearance-configuration.service.mjs +35 -35
  47. package/esm2022/lib/shared/services/configuration.service.mjs +24 -0
  48. package/{esm2020 → esm2022}/lib/shared/services/control-validation.service.mjs +173 -173
  49. package/esm2022/lib/shared/services/environment.service.mjs +75 -0
  50. package/{esm2020 → esm2022}/lib/shared/services/index.mjs +11 -11
  51. package/{esm2020 → esm2022}/lib/shared/services/master-layout.service.mjs +72 -72
  52. package/{esm2020 → esm2022}/lib/shared/services/request-handler.service.mjs +199 -199
  53. package/{esm2020 → esm2022}/lib/shared/services/styles-bundle.service.mjs +55 -55
  54. package/{esm2020 → esm2022}/lib/shared/services/translate.service.mjs +14 -14
  55. package/{esm2020 → esm2022}/lib/shared/services/translation-resolver.service.mjs +6 -6
  56. package/{esm2020 → esm2022}/lib/shared/services/utility.service.mjs +87 -87
  57. package/{esm2020 → esm2022}/lib/shared/services/word-document.service.mjs +38 -38
  58. package/{esm2020 → esm2022}/public-api.mjs +29 -29
  59. package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs +3836 -3836
  60. package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs.map +1 -1
  61. package/index.d.ts +5 -5
  62. package/lib/bbsf-utilities.module.d.ts +10 -10
  63. package/lib/shared/authentication/auth.service.d.ts +52 -52
  64. package/lib/shared/authentication/index.d.ts +1 -1
  65. package/lib/shared/config/environment.d.ts +1 -1
  66. package/lib/shared/config/word/constants.d.ts +124 -124
  67. package/lib/shared/config/word/docx-document.d.ts +73 -73
  68. package/lib/shared/config/word/helpers/index.d.ts +1 -1
  69. package/lib/shared/config/word/helpers/render-document-file.d.ts +2 -2
  70. package/lib/shared/config/word/helpers/xml-builder.d.ts +16 -16
  71. package/lib/shared/config/word/html-to-docx.d.ts +1 -1
  72. package/lib/shared/config/word/index.d.ts +1 -1
  73. package/lib/shared/config/word/namespaces.d.ts +36 -36
  74. package/lib/shared/config/word/schemas/content-types.d.ts +1 -1
  75. package/lib/shared/config/word/schemas/core.d.ts +1 -1
  76. package/lib/shared/config/word/schemas/document-rels.d.ts +1 -1
  77. package/lib/shared/config/word/schemas/document.template.d.ts +4 -4
  78. package/lib/shared/config/word/schemas/font-table.d.ts +1 -1
  79. package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -1
  80. package/lib/shared/config/word/schemas/index.d.ts +12 -12
  81. package/lib/shared/config/word/schemas/numbering.d.ts +1 -1
  82. package/lib/shared/config/word/schemas/rels.d.ts +1 -1
  83. package/lib/shared/config/word/schemas/settings.d.ts +1 -1
  84. package/lib/shared/config/word/schemas/styles.d.ts +1 -1
  85. package/lib/shared/config/word/schemas/theme.d.ts +1 -1
  86. package/lib/shared/config/word/schemas/web-settings.d.ts +1 -1
  87. package/lib/shared/config/word/utils/color-conversion.d.ts +7 -7
  88. package/lib/shared/config/word/utils/list.d.ts +6 -6
  89. package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -29
  90. package/lib/shared/config/word/utils/url.d.ts +1 -1
  91. package/lib/shared/config/word/utils/vnode.d.ts +1 -1
  92. package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -12
  93. package/lib/shared/config/word/word-work/templates/index.d.ts +3 -3
  94. package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -1
  95. package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -1
  96. package/lib/shared/config/word/word-work/utils.d.ts +1 -1
  97. package/lib/shared/enums/authentication-modes-enums.d.ts +6 -6
  98. package/lib/shared/index.d.ts +3 -3
  99. package/lib/shared/models/UserModel.d.ts +6 -6
  100. package/lib/shared/models/area-model.d.ts +4 -4
  101. package/lib/shared/models/error-model.d.ts +5 -5
  102. package/lib/shared/models/index.d.ts +4 -4
  103. package/lib/shared/models/request-options-model.d.ts +11 -11
  104. package/lib/shared/models/word-document-model.d.ts +16 -16
  105. package/lib/shared/services/appearance-configuration.service.d.ts +14 -14
  106. package/lib/shared/services/configuration.service.d.ts +10 -10
  107. package/lib/shared/services/control-validation.service.d.ts +23 -23
  108. package/lib/shared/services/environment.service.d.ts +25 -25
  109. package/lib/shared/services/index.d.ts +11 -11
  110. package/lib/shared/services/master-layout.service.d.ts +24 -24
  111. package/lib/shared/services/request-handler.service.d.ts +33 -33
  112. package/lib/shared/services/styles-bundle.service.d.ts +12 -12
  113. package/lib/shared/services/translate.service.d.ts +6 -6
  114. package/lib/shared/services/translation-resolver.service.d.ts +2 -2
  115. package/lib/shared/services/utility.service.d.ts +23 -23
  116. package/lib/shared/services/word-document.service.d.ts +8 -8
  117. package/package.json +28 -29
  118. package/public-api.d.ts +17 -17
  119. package/bnsights-bbsf-utilities-1.0.41.tgz +0 -0
  120. package/esm2020/lib/shared/authentication/auth.service.mjs +0 -211
  121. package/esm2020/lib/shared/services/configuration.service.mjs +0 -24
  122. package/esm2020/lib/shared/services/environment.service.mjs +0 -75
  123. package/fesm2015/bnsights-bbsf-utilities.mjs +0 -4555
  124. package/fesm2015/bnsights-bbsf-utilities.mjs.map +0 -1
package/README.md CHANGED
@@ -5,7 +5,11 @@ BBSF Utilities package is part of BBSF 3 packages. It has all the common service
5
5
  For more info please visit [BBSF Controls documenation](https://bbsfadmin.bnsights.com/controls) or [BBSF documentation](https://bnsightsprojects.visualstudio.com/BBSF%203/_wiki/wikis/BBSF-3.wiki/65/BBSF-Documentation)
6
6
 
7
7
  # Change Log
8
- ## 1.0.41 / 29-11-2023
8
+ ## 1.0.43 / 3-12-2023
9
+ ===================
10
+ * Upgraded Angular version (17) and upgraded related libraries.
11
+
12
+ ## 1.0.41 / 3-12-2023
9
13
  ===================
10
14
  * Update Environment Service && Fix all Merge Issues
11
15
 
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvYm5zaWdodHMtYmJzZi11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,59 +1,59 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { RouterModule } from '@angular/router';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { BlockUIModule } from 'ng-block-ui';
6
- import { ToastrModule } from 'ngx-toastr';
7
- import { CookieService } from 'ngx-cookie-service';
8
- import { UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService, ControlValidationService, MasterLayoutService, ConfigurationService, AuthService } from './shared';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "ng-block-ui";
11
- import * as i2 from "ngx-toastr";
12
- export class BBSFUtilitiesModule {
13
- }
14
- BBSFUtilitiesModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BBSFUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- BBSFUtilitiesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: BBSFUtilitiesModule, imports: [CommonModule,
16
- RouterModule, i1.BlockUIModule, i2.ToastrModule] });
17
- BBSFUtilitiesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BBSFUtilitiesModule, providers: [
18
- UtilityService,
19
- EnvironmentService,
20
- AuthService,
21
- RequestHandlerService,
22
- StylesBundleService,
23
- TranslateService,
24
- BBSFTranslateService,
25
- ControlValidationService,
26
- MasterLayoutService,
27
- ConfigurationService,
28
- CookieService
29
- ], imports: [CommonModule,
30
- RouterModule,
31
- BlockUIModule.forRoot(),
32
- ToastrModule.forRoot()] });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BBSFUtilitiesModule, decorators: [{
34
- type: NgModule,
35
- args: [{
36
- declarations: [],
37
- imports: [
38
- CommonModule,
39
- RouterModule,
40
- BlockUIModule.forRoot(),
41
- ToastrModule.forRoot(),
42
- ],
43
- exports: [],
44
- providers: [
45
- UtilityService,
46
- EnvironmentService,
47
- AuthService,
48
- RequestHandlerService,
49
- StylesBundleService,
50
- TranslateService,
51
- BBSFTranslateService,
52
- ControlValidationService,
53
- MasterLayoutService,
54
- ConfigurationService,
55
- CookieService
56
- ]
57
- }]
58
- }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFDcEcsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUNqRixNQUFNLFVBQVUsQ0FBQzs7OztBQTJCbEIsTUFBTSxPQUFPLG1CQUFtQjs7aUhBQW5CLG1CQUFtQjtrSEFBbkIsbUJBQW1CLFlBckI1QixZQUFZO1FBQ1osWUFBWTtrSEFvQkgsbUJBQW1CLGFBZG5CO1FBQ1QsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixXQUFXO1FBQ1gscUJBQXFCO1FBQ3JCLG1CQUFtQjtRQUNuQixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLGFBQWE7S0FDZCxZQW5CQyxZQUFZO1FBQ1osWUFBWTtRQUNaLGFBQWEsQ0FBQyxPQUFPLEVBQUU7UUFDdkIsWUFBWSxDQUFDLE9BQU8sRUFBRTs0RkFrQmIsbUJBQW1CO2tCQXpCL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGFBQWEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLFlBQVksQ0FBQyxPQUFPLEVBQUU7cUJBRXZCO29CQUNELE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUlNb2R1bGUgfSBmcm9tICduZy1ibG9jay11aSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBVdGlsaXR5U2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFN0eWxlc0J1bmRsZVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgTWFzdGVyTGF5b3V0U2VydmljZSwgQ29uZmlndXJhdGlvblNlcnZpY2UsIEF1dGhTZXJ2aWNlXHJcbn0gZnJvbSAnLi9zaGFyZWQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3QoKSxcclxuXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBTdHlsZXNCdW5kbGVTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgTWFzdGVyTGF5b3V0U2VydmljZSxcclxuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgQ29va2llU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZVdGlsaXRpZXNNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { RouterModule } from '@angular/router';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import { BlockUIModule } from 'ng-block-ui';
6
+ import { ToastrModule } from 'ngx-toastr';
7
+ import { CookieService } from 'ngx-cookie-service';
8
+ import { UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService, ControlValidationService, MasterLayoutService, ConfigurationService, AuthService } from './shared';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "ng-block-ui";
11
+ import * as i2 from "ngx-toastr";
12
+ export class BBSFUtilitiesModule {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: BBSFUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: BBSFUtilitiesModule, imports: [CommonModule,
15
+ RouterModule, i1.BlockUIModule, i2.ToastrModule] }); }
16
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: BBSFUtilitiesModule, providers: [
17
+ UtilityService,
18
+ EnvironmentService,
19
+ AuthService,
20
+ RequestHandlerService,
21
+ StylesBundleService,
22
+ TranslateService,
23
+ BBSFTranslateService,
24
+ ControlValidationService,
25
+ MasterLayoutService,
26
+ ConfigurationService,
27
+ CookieService
28
+ ], imports: [CommonModule,
29
+ RouterModule,
30
+ BlockUIModule.forRoot(),
31
+ ToastrModule.forRoot()] }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: BBSFUtilitiesModule, decorators: [{
34
+ type: NgModule,
35
+ args: [{
36
+ declarations: [],
37
+ imports: [
38
+ CommonModule,
39
+ RouterModule,
40
+ BlockUIModule.forRoot(),
41
+ ToastrModule.forRoot(),
42
+ ],
43
+ exports: [],
44
+ providers: [
45
+ UtilityService,
46
+ EnvironmentService,
47
+ AuthService,
48
+ RequestHandlerService,
49
+ StylesBundleService,
50
+ TranslateService,
51
+ BBSFTranslateService,
52
+ ControlValidationService,
53
+ MasterLayoutService,
54
+ ConfigurationService,
55
+ CookieService
56
+ ]
57
+ }]
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFDcEcsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUNqRixNQUFNLFVBQVUsQ0FBQzs7OztBQTJCbEIsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFyQjVCLFlBQVk7WUFDWixZQUFZOytHQW9CSCxtQkFBbUIsYUFkbkI7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsYUFBYTtTQUNkLFlBbkJDLFlBQVk7WUFDWixZQUFZO1lBQ1osYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUN2QixZQUFZLENBQUMsT0FBTyxFQUFFOzsyRkFrQmIsbUJBQW1CO2tCQXpCL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGFBQWEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLFlBQVksQ0FBQyxPQUFPLEVBQUU7cUJBRXZCO29CQUNELE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJsb2NrVUlNb2R1bGUgfSBmcm9tICduZy1ibG9jay11aSc7XHJcbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBVdGlsaXR5U2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFN0eWxlc0J1bmRsZVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgTWFzdGVyTGF5b3V0U2VydmljZSwgQ29uZmlndXJhdGlvblNlcnZpY2UsIEF1dGhTZXJ2aWNlXHJcbn0gZnJvbSAnLi9zaGFyZWQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3QoKSxcclxuXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBTdHlsZXNCdW5kbGVTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgTWFzdGVyTGF5b3V0U2VydmljZSxcclxuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgQ29va2llU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZVdGlsaXRpZXNNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,211 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { JwtHelperService } from '@auth0/angular-jwt';
5
+ import { User } from '../models/UserModel';
6
+ import { AuthenticationModes } from '../enums/authentication-modes-enums';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ import * as i2 from "../services";
10
+ import * as i3 from "@angular/router";
11
+ import * as i4 from "ngx-cookie-service";
12
+ import * as i5 from "../services/utility.service";
13
+ const TOKEN_KEY = 'access_token';
14
+ export class AuthService {
15
+ static { this.user = null; }
16
+ static { this.UserClaims = null; }
17
+ //refresh
18
+ static { this.timers = []; }
19
+ static { this.seconds = 0; }
20
+ constructor(injector, http, environmentService, translateService, router, cookieService, utilityService) {
21
+ this.injector = injector;
22
+ this.http = http;
23
+ this.environmentService = environmentService;
24
+ this.translateService = translateService;
25
+ this.router = router;
26
+ this.cookieService = cookieService;
27
+ this.utilityService = utilityService;
28
+ this.redirectUrl = '';
29
+ this.jwtHelper = new JwtHelperService();
30
+ this.isAuthenticatedSubject = new BehaviorSubject(this.hasToken());
31
+ this.isAuthenticate$ = this.isAuthenticatedSubject.asObservable();
32
+ this.user = this.getUserManager();
33
+ }
34
+ hasToken() {
35
+ const token = this.cookieService.get(TOKEN_KEY);
36
+ return token && !this.jwtHelper.isTokenExpired(token);
37
+ }
38
+ getUserManager() {
39
+ const token = this.cookieService.get(TOKEN_KEY);
40
+ if (token)
41
+ this.handleAccessTokenWithoutLanguage(token);
42
+ return AuthService.user;
43
+ }
44
+ getUser() {
45
+ this.user = AuthService.user;
46
+ }
47
+ storUser(User) {
48
+ AuthService.user = this.user = this.user;
49
+ }
50
+ getCurrentUser() {
51
+ return AuthService.user;
52
+ }
53
+ async isAuthenticated() {
54
+ return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);
55
+ }
56
+ isUserInRole(allowedPermission) {
57
+ let selectedPermissionSetID = Number.parseInt(this.user.profile['selectedpermissionsetid']);
58
+ return allowedPermission.includes(selectedPermissionSetID);
59
+ }
60
+ authorizationHeaderValue() {
61
+ return AuthService.user
62
+ ? `${AuthService.user.token_type} ${AuthService.user.access_token}`
63
+ : '';
64
+ }
65
+ name() {
66
+ return AuthService.user != null ? AuthService.user.profile.given_name : '';
67
+ }
68
+ setUrl(url) {
69
+ localStorage.setItem('redirectUrl', url);
70
+ }
71
+ getUrl() {
72
+ return localStorage.getItem('redirectUrl') ?? "/";
73
+ }
74
+ signOut() {
75
+ AuthService.timers.map(t => clearInterval(t));
76
+ AuthService.timers = [];
77
+ if (!this.isAuthenticated()) {
78
+ this.cookieService.delete(TOKEN_KEY);
79
+ this.router.navigate(['/Admin/account/login']);
80
+ }
81
+ this.logout().subscribe(res => {
82
+ this.cookieService.delete(TOKEN_KEY);
83
+ if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)
84
+ this.logoutFromUAEPass();
85
+ else
86
+ this.router.navigate(['/Admin/account/login']);
87
+ });
88
+ }
89
+ logout() {
90
+ const httpOptions = {
91
+ headers: new HttpHeaders({
92
+ 'Content-Type': 'application/json',
93
+ }),
94
+ };
95
+ let ApiUrl = '/Account/';
96
+ return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);
97
+ }
98
+ clearUserSessionClaims() {
99
+ const httpOptions = {
100
+ headers: new HttpHeaders({
101
+ 'Content-Type': 'application/json',
102
+ }),
103
+ };
104
+ let ApiUrl = '/api/Home/';
105
+ return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
106
+ }
107
+ async handleAccessToken(response) {
108
+ const token = response;
109
+ AuthService.user = new User();
110
+ AuthService.user.token_type = "Bearer";
111
+ AuthService.user.access_token = token;
112
+ AuthService.user.profile = this.jwtHelper.decodeToken(token);
113
+ AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
114
+ AuthService.timers.map(t => clearInterval(t));
115
+ AuthService.timers = [];
116
+ this.setTokenSeconds();
117
+ AuthService.timers.push(this.checkRefreshToken());
118
+ this.user = AuthService.user;
119
+ await this.updateLanguage();
120
+ this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');
121
+ this.isAuthenticatedSubject.next(true);
122
+ }
123
+ handleAccessTokenWithoutLanguage(response) {
124
+ const token = response;
125
+ AuthService.user = new User();
126
+ AuthService.user.token_type = "Bearer";
127
+ AuthService.user.access_token = token;
128
+ AuthService.user.profile = this.jwtHelper.decodeToken(token);
129
+ AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);
130
+ this.setTokenSeconds();
131
+ this.user = AuthService.user;
132
+ this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');
133
+ this.isAuthenticatedSubject.next(true);
134
+ }
135
+ async updateLanguage() {
136
+ if (!localStorage.getItem('language') ||
137
+ localStorage.getItem('language') == this.user.profile.locale)
138
+ localStorage.setItem('language', this.user.profile.locale);
139
+ if (this.translateService.currentLang != localStorage.getItem('language')) {
140
+ this.translateService.resetLang(this.translateService.currentLang);
141
+ await this.translateService
142
+ .reloadLang(localStorage.getItem('language'))
143
+ .subscribe((res) => {
144
+ console.log(res);
145
+ });
146
+ }
147
+ }
148
+ checkRefreshToken() {
149
+ let date = new Date();
150
+ return setInterval(() => {
151
+ if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated())
152
+ this.refresh();
153
+ AuthService.seconds--;
154
+ }, 1000);
155
+ }
156
+ setTokenSeconds() {
157
+ let date = new Date();
158
+ AuthService.seconds = (AuthService.user.expires_at - date) / 1000;
159
+ }
160
+ refresh() {
161
+ const httpOptions = {
162
+ headers: new HttpHeaders({
163
+ 'Content-Type': 'application/json',
164
+ 'Authorization': this.authorizationHeaderValue(),
165
+ }),
166
+ };
167
+ let ApiUrl = '/api/Home/';
168
+ this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res) => {
169
+ this.cookieService.delete(TOKEN_KEY);
170
+ this.handleAccessTokenWithoutLanguage(res.val);
171
+ });
172
+ }
173
+ loginWithUAEPass() {
174
+ const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;
175
+ const queryParams = {
176
+ response_type: 'code',
177
+ client_id: `${this.environmentService.getUAEPassClientID()}`,
178
+ redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,
179
+ scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',
180
+ state: 'pd3PgezRwk596u2yfRwqOgru',
181
+ acr_values: 'urn:safelayer:tws:policies:authentication:level:low'
182
+ };
183
+ const queryParamsString = Object.entries(queryParams)
184
+ .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
185
+ .join('&');
186
+ const loginUrl = `${authEndpoint}?${queryParamsString}`;
187
+ window.location.href = loginUrl;
188
+ return;
189
+ }
190
+ logoutFromUAEPass() {
191
+ const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;
192
+ const queryParams = {
193
+ redirect_uri: `${this.environmentService.getBaseUrl()}`,
194
+ };
195
+ const queryParamsString = Object.entries(queryParams)
196
+ .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
197
+ .join('&');
198
+ const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;
199
+ window.location.href = logoutUrl;
200
+ return;
201
+ }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthService, deps: [{ token: i0.Injector }, { token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i2.BBSFTranslateService }, { token: i3.Router }, { token: i4.CookieService }, { token: i5.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
203
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthService, providedIn: 'root' }); }
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthService, decorators: [{
206
+ type: Injectable,
207
+ args: [{
208
+ providedIn: 'root',
209
+ }]
210
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i2.BBSFTranslateService }, { type: i3.Router }, { type: i4.CookieService }, { type: i5.UtilityService }] });
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBQzFFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQztBQUtqQyxNQUFNLE9BQU8sV0FBVzthQUVmLFNBQUksR0FBZ0IsSUFBSSxBQUFwQixDQUFxQjthQUV6QixlQUFVLEdBQVEsSUFBSSxBQUFaLENBQWE7SUFJOUIsU0FBUzthQUNGLFdBQU0sR0FBRyxFQUFFLEFBQUwsQ0FBTTthQUNaLFlBQU8sR0FBRyxDQUFDLEFBQUosQ0FBSztJQUVuQixZQUFvQixRQUFrQixFQUFVLElBQWdCLEVBQVUsa0JBQXNDLEVBQVUsZ0JBQXNDLEVBQVUsTUFBYyxFQUFVLGFBQTRCLEVBQVUsY0FBOEI7UUFBbFAsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxD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TSxjQUFjLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFBO1FBQzVILE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRTtTQUN4RCxDQUFBO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixNQUFNLFNBQVMsR0FBRyxHQUFHLGNBQWMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUNqQyxPQUFPO0lBQ1QsQ0FBQzs4R0FoTlUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vbW9kZWxzL1VzZXJNb2RlbCc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uTW9kZXMgfSBmcm9tICcuLi9lbnVtcy9hdXRoZW50aWNhdGlvbi1tb2Rlcy1lbnVtcyc7XHJcbmNvbnN0IFRPS0VOX0tFWSA9ICdhY2Nlc3NfdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICBwdWJsaWMgcmVkaXJlY3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIHN0YXRpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgdXNlcjogVXNlciB8IG51bGw7XHJcbiAgc3RhdGljIFVzZXJDbGFpbXM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBqd3RIZWxwZXI6IEp3dEhlbHBlclNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gIHByaXZhdGUgaXNBdXRoZW50aWNhdGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5oYXNUb2tlbigpKTtcclxuICBpc0F1dGhlbnRpY2F0ZSQgPSB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy9yZWZyZXNoXHJcbiAgc3RhdGljIHRpbWVycyA9IFtdO1xyXG4gIHN0YXRpYyBzZWNvbmRzID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG4gICAgdGhpcy51c2VyID0gdGhpcy5nZXRVc2VyTWFuYWdlcigpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1Rva2VuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFRPS0VOX0tFWSk7XHJcbiAgICByZXR1cm4gdG9rZW4gJiYgIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJNYW5hZ2VyKCkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFRPS0VOX0tFWSk7XHJcbiAgICBpZiAodG9rZW4pXHJcbiAgICAgIHRoaXMuaGFuZGxlQWNjZXNzVG9rZW5XaXRob3V0TGFuZ3VhZ2UodG9rZW4pXHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlcjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0VXNlcigpIHtcclxuICAgIHRoaXMudXNlciA9IEF1dGhTZXJ2aWNlLnVzZXI7XHJcbiAgfVxyXG4gIHN0b3JVc2VyKFVzZXI6IGFueSkge1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IHRoaXMudXNlciA9IHRoaXMudXNlcjtcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbnRVc2VyKCkge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXJcclxuICB9XHJcblxyXG4gIGFzeW5jIGlzQXV0aGVudGljYXRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBBdXRoU2VydmljZS51c2VyICE9IG51bGwgJiYgIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKEF1dGhTZXJ2aWNlLnVzZXIuYWNjZXNzX3Rva2VuKTtcclxuICB9XHJcbiAgaXNVc2VySW5Sb2xlKGFsbG93ZWRQZXJtaXNzaW9uOiBudW1iZXJbXSkge1xyXG4gICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldElEOiBudW1iZXIgPSBOdW1iZXIucGFyc2VJbnQoXHJcbiAgICAgIHRoaXMudXNlci5wcm9maWxlWydzZWxlY3RlZHBlcm1pc3Npb25zZXRpZCddXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsbG93ZWRQZXJtaXNzaW9uLmluY2x1ZGVzKHNlbGVjdGVkUGVybWlzc2lvblNldElEKTtcclxuICB9XHJcblxyXG4gIGF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXJcclxuICAgICAgPyBgJHtBdXRoU2VydmljZS51c2VyLnRva2VuX3R5cGV9ICR7QXV0aFNlcnZpY2UudXNlci5hY2Nlc3NfdG9rZW59YFxyXG4gICAgICA6ICcnO1xyXG4gIH1cclxuXHJcbiAgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEF1dGhTZXJ2aWNlLnVzZXIgIT0gbnVsbCA/IEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZS5naXZlbl9uYW1lIDogJyc7XHJcbiAgfVxyXG4gIHNldFVybCh1cmwpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWRpcmVjdFVybCcsIHVybCk7XHJcbiAgfVxyXG4gIGdldFVybCgpIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVkaXJlY3RVcmwnKSA/PyBcIi9cIjtcclxuICB9XHJcblxyXG4gIHNpZ25PdXQoKSB7XHJcbiAgICBBdXRoU2VydmljZS50aW1lcnMubWFwKHQgPT4gY2xlYXJJbnRlcnZhbCh0KSk7XHJcbiAgICBBdXRoU2VydmljZS50aW1lcnMgPSBbXTtcclxuICAgIGlmICghdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSkge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKFRPS0VOX0tFWSk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL2FjY291bnQvbG9naW4nXSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvZ291dCgpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKFRPS0VOX0tFWSk7XHJcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCQlNGQXV0aGVudGljYXRpb25Nb2RlKCkgPT0gQXV0aGVudGljYXRpb25Nb2Rlcy5VQUVQYXNzKVxyXG4gICAgICAgIHRoaXMubG9nb3V0RnJvbVVBRVBhc3MoKVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vYWNjb3VudC9sb2dpbiddKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgICBsZXQgQXBpVXJsID0gJy9BY2NvdW50Lyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIEFwaVVybCArICdMb2dvdXQnLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xlYXJVc2VyU2Vzc2lvbkNsYWltcygpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyBBcGlVcmwgKyAnQ2xlYXJDdXJyZW50VXNlclNlc3Npb24nLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgaGFuZGxlQWNjZXNzVG9rZW4ocmVzcG9uc2U6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSByZXNwb25zZTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSBuZXcgVXNlcigpO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci50b2tlbl90eXBlID0gXCJCZWFyZXJcIlxyXG4gICAgQXV0aFNlcnZpY2UudXNlci5hY2Nlc3NfdG9rZW4gPSB0b2tlbjtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZSA9IHRoaXMuand0SGVscGVyLmRlY29kZVRva2VuKHRva2VuKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIuZXhwaXJlc19hdCA9IHRoaXMuand0SGVscGVyLmdldFRva2VuRXhwaXJhdGlvbkRhdGUodG9rZW4pO1xyXG4gICAgQXV0aFNlcnZpY2UudGltZXJzLm1hcCh0ID0+IGNsZWFySW50ZXJ2YWwodCkpO1xyXG4gICAgQXV0aFNlcnZpY2UudGltZXJzID0gW107XHJcbiAgICB0aGlzLnNldFRva2VuU2Vjb25kcygpXHJcbiAgICBBdXRoU2VydmljZS50aW1lcnMucHVzaCh0aGlzLmNoZWNrUmVmcmVzaFRva2VuKCkpO1xyXG4gICAgdGhpcy51c2VyID0gQXV0aFNlcnZpY2UudXNlclxyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVMYW5ndWFnZSgpXHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFRPS0VOX0tFWSwgdG9rZW4sIG51bGwsIG51bGwsIG51bGwsIHRydWUsICdTdHJpY3QnKTtcclxuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWNjZXNzVG9rZW5XaXRob3V0TGFuZ3VhZ2UocmVzcG9uc2U6IGFueSkge1xyXG4gICAgY29uc3QgdG9rZW4gPSByZXNwb25zZTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSBuZXcgVXNlcigpO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlci50b2tlbl90eXBlID0gXCJCZWFyZXJcIlxyXG4gICAgQXV0aFNlcnZpY2UudXNlci5hY2Nlc3NfdG9rZW4gPSB0b2tlbjtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIucHJvZmlsZSA9IHRoaXMuand0SGVscGVyLmRlY29kZVRva2VuKHRva2VuKTtcclxuICAgIEF1dGhTZXJ2aWNlLnVzZXIuZXhwaXJlc19hdCA9IHRoaXMuand0SGVscGVyLmdldFRva2VuRXhwaXJhdGlvbkRhdGUodG9rZW4pO1xyXG4gICAgdGhpcy5zZXRUb2tlblNlY29uZHMoKVxyXG4gICAgdGhpcy51c2VyID0gQXV0aFNlcnZpY2UudXNlclxyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChUT0tFTl9LRVksIHRva2VuLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCAnU3RyaWN0Jyk7XHJcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgYXN5bmMgdXBkYXRlTGFuZ3VhZ2UoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSB8fFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSB0aGlzLnVzZXIucHJvZmlsZS5sb2NhbGVcclxuICAgIClcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgdGhpcy51c2VyLnByb2ZpbGUubG9jYWxlKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nICE9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKSB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5yZXNldExhbmcodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKTtcclxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXHJcbiAgICAgICAgLnJlbG9hZExhbmcobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZWZyZXNoVG9rZW4oKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCkgYXMgYW55O1xyXG4gICAgcmV0dXJuIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKE1hdGguZmxvb3IoQXV0aFNlcnZpY2Uuc2Vjb25kcykgPCAxMjAgJiYgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSlcclxuICAgICAgICB0aGlzLnJlZnJlc2goKVxyXG4gICAgICBBdXRoU2VydmljZS5zZWNvbmRzLS07XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbiAgc2V0VG9rZW5TZWNvbmRzKCkge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpIGFzIGFueTtcclxuICAgIEF1dGhTZXJ2aWNlLnNlY29uZHMgPSAoQXV0aFNlcnZpY2UudXNlci5leHBpcmVzX2F0IC0gZGF0ZSkgLyAxMDAwXHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICdBdXRob3JpemF0aW9uJzogdGhpcy5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKSxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgbGV0IEFwaVVybCA9ICcvYXBpL0hvbWUvJztcclxuICAgIHRoaXMuaHR0cC5nZXQodGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyBBcGlVcmwgKyAnUmVmcmVzaEFjY2Vzc1Rva2VuJywgaHR0cE9wdGlvbnMpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZShUT0tFTl9LRVkpO1xyXG4gICAgICB0aGlzLmhhbmRsZUFjY2Vzc1Rva2VuV2l0aG91dExhbmd1YWdlKHJlcy52YWwpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbG9naW5XaXRoVUFFUGFzcygpIHtcclxuICAgIGNvbnN0IGF1dGhFbmRwb2ludCA9IGAke3RoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFVBRVBhc3NCYXNlVXJsKCl9JHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRVQUVQYXNzQXV0aG9yaXphdGlvbkVuZFBvaW50KCl9YDtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICByZXNwb25zZV90eXBlOiAnY29kZScsXHJcbiAgICAgIGNsaWVudF9pZDogYCR7dGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0VUFFUGFzc0NsaWVudElEKCl9YCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiBgJHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCl9JHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRVQUVQYXNzUmVkaXJlY3RVcmwoKX1gLFxyXG4gICAgICBzY29wZTogJ3Vybjp1YWU6ZGlnaXRhbGlkOnByb2ZpbGU6Z2VuZXJhbCB1cm46dWFlOmRpZ2l0YWxpZDpwcm9maWxlOmdlbmVyYWw6cHJvZmlsZVR5cGUgdXJuOnVhZTpkaWdpdGFsaWQ6cHJvZmlsZTpnZW5lcmFsOnVuaWZpZWRJZCcsXHJcbiAgICAgIHN0YXRlOiAncGQzUGdlelJ3azU5NnUyeWZSd3FPZ3J1JyxcclxuICAgICAgYWNyX3ZhbHVlczogJ3VybjpzYWZlbGF5ZXI6dHdzOnBvbGljaWVzOmF1dGhlbnRpY2F0aW9uOmxldmVsOmxvdydcclxuICAgIH1cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zU3RyaW5nID0gT2JqZWN0LmVudHJpZXMocXVlcnlQYXJhbXMpXHJcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YClcclxuICAgICAgLmpvaW4oJyYnKTtcclxuICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7YXV0aEVuZHBvaW50fT8ke3F1ZXJ5UGFyYW1zU3RyaW5nfWA7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0RnJvbVVBRVBhc3MoKSB7XHJcbiAgICBjb25zdCBsb2dvdXRFbmRwb2ludCA9IGAke3RoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFVBRVBhc3NCYXNlVXJsKCl9JHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRVQUVQYXNzTG9nb3V0RW5kUG9pbnQoKX1gXHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgcmVkaXJlY3RfdXJpOiBgJHt0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCl9YCxcclxuICAgIH1cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zU3RyaW5nID0gT2JqZWN0LmVudHJpZXMocXVlcnlQYXJhbXMpXHJcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YClcclxuICAgICAgLmpvaW4oJyYnKTtcclxuXHJcbiAgICBjb25zdCBsb2dvdXRVcmwgPSBgJHtsb2dvdXRFbmRwb2ludH0/JHtxdWVyeVBhcmFtc1N0cmluZ31gO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dvdXRVcmw7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './auth.service';
1
+ export * from './auth.service';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9hdXRoZW50aWNhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG4iXX0=
@@ -1,12 +1,12 @@
1
- // This file can be replaced during build by using the `fileReplacements` array.
2
- // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3
- // The list of file replacements can be found in `angular.json`.
4
- export const environment = Object.assign({}, window.Environment);
5
- /*
6
- * In development mode, to ignore zone related error stack frames such as
7
- * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
8
- * import the following file, but please comment it out in production mode
9
- * because it will have performance impact when throw error
10
- */
11
- // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
1
+ // This file can be replaced during build by using the `fileReplacements` array.
2
+ // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3
+ // The list of file replacements can be found in `angular.json`.
4
+ export const environment = Object.assign({}, window.Environment);
5
+ /*
6
+ * In development mode, to ignore zone related error stack frames such as
7
+ * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
8
+ * import the following file, but please comment it out in production mode
9
+ * because it will have performance impact when throw error
10
+ */
11
+ // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
12
12
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLDJFQUEyRTtBQUMzRSxnRUFBZ0U7QUFFaEUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFDeEMsRUFDSSxNQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFHakM7Ozs7O0dBS0c7QUFDSCxtRUFBbUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxyXG4vLyBgbmcgYnVpbGQgLS0tcHJvZGAgcmVwbGFjZXMgYGVudmlyb25tZW50LnRzYCB3aXRoIGBlbnZpcm9ubWVudC5wcm9kLnRzYC5cclxuLy8gVGhlIGxpc3Qgb2YgZmlsZSByZXBsYWNlbWVudHMgY2FuIGJlIGZvdW5kIGluIGBhbmd1bGFyLmpzb25gLlxyXG5cclxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50ID0gT2JqZWN0LmFzc2lnbih7XHJcbn0sXHJcbiAgICAod2luZG93IGFzIGFueSkuRW52aXJvbm1lbnQpO1xyXG5cclxuXHJcbi8qXHJcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcclxuICogYHpvbmUucnVuYCwgYHpvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrYCBmb3IgZWFzaWVyIGRlYnVnZ2luZywgeW91IGNhblxyXG4gKiBpbXBvcnQgdGhlIGZvbGxvd2luZyBmaWxlLCBidXQgcGxlYXNlIGNvbW1lbnQgaXQgb3V0IGluIHByb2R1Y3Rpb24gbW9kZVxyXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxyXG4gKi9cclxuLy8gaW1wb3J0ICd6b25lLmpzL2Rpc3Qvem9uZS1lcnJvcic7ICAvLyBJbmNsdWRlZCB3aXRoIEFuZ3VsYXIgQ0xJLlxyXG4iXX0=