@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47

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 (170) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
  3. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  4. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
  5. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
  6. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
  7. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
  8. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
  9. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  10. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  11. package/esm2020/lib/config.mjs +4 -4
  12. package/esm2020/lib/helpers.service.mjs +470 -470
  13. package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
  14. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
  15. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
  16. package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
  17. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
  18. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
  19. package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
  20. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
  21. package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
  22. package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
  23. package/esm2020/lib/mattertagData.mjs +165 -165
  24. package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
  25. package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
  26. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
  27. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
  28. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
  29. package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
  30. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
  31. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  32. package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
  33. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  34. package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
  35. package/esm2020/lib/services/content.service.mjs +135 -135
  36. package/esm2020/lib/services/filter.service.mjs +599 -599
  37. package/esm2020/lib/services/intervention.service.mjs +236 -236
  38. package/esm2020/lib/services/locale.service.mjs +45 -45
  39. package/esm2020/lib/services/matterport-import.service.mjs +340 -340
  40. package/esm2020/lib/services/matterport.service.mjs +1587 -1587
  41. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  42. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  43. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  44. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  45. package/esm2020/lib/services/models/domain.service.mjs +78 -78
  46. package/esm2020/lib/services/models/equipment.service.mjs +683 -683
  47. package/esm2020/lib/services/models/event.service.mjs +128 -128
  48. package/esm2020/lib/services/models/feature.service.mjs +380 -380
  49. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  50. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  51. package/esm2020/lib/services/models/measurement.service.mjs +199 -199
  52. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  53. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  54. package/esm2020/lib/services/models/node.service.mjs +31 -31
  55. package/esm2020/lib/services/models/object3D.service.mjs +364 -364
  56. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  57. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  58. package/esm2020/lib/services/models/plan.service.mjs +799 -799
  59. package/esm2020/lib/services/models/poi.service.mjs +103 -103
  60. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  61. package/esm2020/lib/services/models/property.service.mjs +44 -44
  62. package/esm2020/lib/services/models/space.service.mjs +204 -204
  63. package/esm2020/lib/services/models/template.service.mjs +41 -41
  64. package/esm2020/lib/services/models/ticket.service.mjs +526 -526
  65. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  66. package/esm2020/lib/services/models/zone.service.mjs +225 -225
  67. package/esm2020/lib/services/navigator.service.mjs +212 -212
  68. package/esm2020/lib/services/s3.service.mjs +137 -137
  69. package/esm2020/lib/services/search.service.mjs +124 -124
  70. package/esm2020/lib/services/support.service.mjs +42 -42
  71. package/esm2020/lib/services/tag.service.mjs +111 -111
  72. package/esm2020/lib/services/user.service.mjs +501 -501
  73. package/esm2020/lib/services/validators.service.mjs +50 -50
  74. package/esm2020/lib/services/viewer.service.mjs +389 -389
  75. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  76. package/esm2020/lib/services/zoneChange.service.mjs +30 -30
  77. package/esm2020/lib/types.service.mjs +311 -311
  78. package/esm2020/lib/validators/email.directive.mjs +7 -7
  79. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  80. package/esm2020/lib/validators/number.directive.mjs +12 -12
  81. package/esm2020/lib/validators/text.directive.mjs +12 -12
  82. package/esm2020/public-api.mjs +72 -72
  83. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  84. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
  85. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  86. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
  87. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  88. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  89. package/lib/components/loader/loader.component.d.ts +10 -10
  90. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  91. package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
  92. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
  93. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
  94. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  95. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  96. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  97. package/lib/config.d.ts +22 -22
  98. package/lib/helpers.service.d.ts +79 -79
  99. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
  100. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
  101. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
  102. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
  103. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
  104. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
  105. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
  106. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
  107. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
  108. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
  109. package/lib/mattertagData.d.ts +70 -70
  110. package/lib/ngx-smarterplan-core.module.d.ts +29 -29
  111. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  112. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  113. package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
  114. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  115. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  116. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  117. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  118. package/lib/services/amplify-cache.service.d.ts +37 -37
  119. package/lib/services/base-tab.service.d.ts +10 -10
  120. package/lib/services/baseVisibility.service.d.ts +9 -9
  121. package/lib/services/content.service.d.ts +28 -28
  122. package/lib/services/filter.service.d.ts +60 -60
  123. package/lib/services/intervention.service.d.ts +25 -25
  124. package/lib/services/locale.service.d.ts +23 -23
  125. package/lib/services/matterport-import.service.d.ts +53 -53
  126. package/lib/services/matterport.service.d.ts +336 -336
  127. package/lib/services/models/affectation.service.d.ts +14 -14
  128. package/lib/services/models/base-object.service.d.ts +20 -20
  129. package/lib/services/models/capture.service.d.ts +13 -13
  130. package/lib/services/models/comment.service.d.ts +26 -26
  131. package/lib/services/models/domain.service.d.ts +19 -19
  132. package/lib/services/models/equipment.service.d.ts +93 -93
  133. package/lib/services/models/event.service.d.ts +43 -43
  134. package/lib/services/models/feature.service.d.ts +75 -75
  135. package/lib/services/models/hashtag.service.d.ts +13 -13
  136. package/lib/services/models/layer.service.d.ts +11 -11
  137. package/lib/services/models/measurement.service.d.ts +51 -51
  138. package/lib/services/models/mission.service.d.ts +39 -39
  139. package/lib/services/models/navigation.service.d.ts +29 -29
  140. package/lib/services/models/node.service.d.ts +12 -12
  141. package/lib/services/models/object3D.service.d.ts +57 -57
  142. package/lib/services/models/operation.service.d.ts +15 -15
  143. package/lib/services/models/organisation.service.d.ts +19 -19
  144. package/lib/services/models/plan.service.d.ts +133 -133
  145. package/lib/services/models/poi.service.d.ts +25 -25
  146. package/lib/services/models/profile.service.d.ts +16 -16
  147. package/lib/services/models/property.service.d.ts +13 -13
  148. package/lib/services/models/space.service.d.ts +46 -46
  149. package/lib/services/models/template.service.d.ts +15 -15
  150. package/lib/services/models/ticket.service.d.ts +93 -93
  151. package/lib/services/models/visit.service.d.ts +24 -24
  152. package/lib/services/models/zone.service.d.ts +50 -50
  153. package/lib/services/navigator.service.d.ts +61 -61
  154. package/lib/services/s3.service.d.ts +14 -14
  155. package/lib/services/search.service.d.ts +20 -20
  156. package/lib/services/support.service.d.ts +17 -17
  157. package/lib/services/tag.service.d.ts +29 -29
  158. package/lib/services/user.service.d.ts +118 -118
  159. package/lib/services/validators.service.d.ts +18 -18
  160. package/lib/services/viewer.service.d.ts +110 -110
  161. package/lib/services/zone-drawer.service.d.ts +7 -7
  162. package/lib/services/zoneChange.service.d.ts +17 -17
  163. package/lib/types.service.d.ts +842 -842
  164. package/lib/validators/email.directive.d.ts +2 -2
  165. package/lib/validators/no-empty.directive.d.ts +2 -2
  166. package/lib/validators/number.directive.d.ts +2 -2
  167. package/lib/validators/text.directive.d.ts +2 -2
  168. package/package.json +2 -2
  169. package/public-api.d.ts +64 -64
  170. package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
@@ -1,135 +1,135 @@
1
- /* eslint-disable class-methods-use-this */
2
- import { Injectable } from "@angular/core";
3
- import { Subject } from "rxjs";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
- import * as i2 from "@angular/router";
7
- import * as i3 from "./models/comment.service";
8
- export class ContentService {
9
- constructor(modalService, router, commentService) {
10
- this.modalService = modalService;
11
- this.router = router;
12
- this.commentService = commentService;
13
- this.closeModal = new Subject();
14
- this.nextSlide = new Subject();
15
- }
16
- presentVideoModal(video, videoComponent, modalDialogClass) {
17
- this.modalReference = this.modalService.open(videoComponent, {
18
- modalDialogClass: modalDialogClass,
19
- });
20
- this.modalReference.componentInstance.video = video;
21
- this.modalReference.dismissed.subscribe(() => {
22
- this.emitCloseModal();
23
- });
24
- this.modalReference.closed.subscribe(() => {
25
- this.emitCloseModal();
26
- });
27
- }
28
- async presentAudioModal(audioCommentID, audioComponent, modalDialogClass) {
29
- const audioComment = await this.commentService.getComment(audioCommentID);
30
- const audioMediaContent = {
31
- path: audioComment.annexe,
32
- title: audioComment.title,
33
- description: audioComment.description,
34
- };
35
- this.modalReference = this.modalService.open(audioComponent, {
36
- modalDialogClass: modalDialogClass,
37
- });
38
- this.modalReference.componentInstance.audio = audioMediaContent;
39
- this.modalReference.dismissed.subscribe(() => {
40
- this.emitCloseModal();
41
- });
42
- this.modalReference.closed.subscribe(() => {
43
- this.emitCloseModal();
44
- });
45
- }
46
- presentImageCarouselModal(featureID, carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = '0') {
47
- this.modalReference = this.modalService.open(carouselComponent, {
48
- modalDialogClass: modalDialogClass,
49
- });
50
- this.modalReference.componentInstance.featureID = featureID;
51
- this.modalReference.componentInstance.fromTag = fromTag;
52
- this.modalReference.componentInstance.selectedImageIndex = selectedImageIndex;
53
- this.modalReference.dismissed.subscribe(() => {
54
- this.emitCloseModal();
55
- });
56
- this.modalReference.closed.subscribe(() => {
57
- this.emitCloseModal();
58
- });
59
- this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
60
- this.nextSlide.next(slide.current);
61
- });
62
- }
63
- presentPdfModal(url, pdfComponent, modalDialogClass) {
64
- this.modalReference = this.modalService.open(pdfComponent, {
65
- modalDialogClass: modalDialogClass,
66
- });
67
- this.modalReference.componentInstance.url = url;
68
- this.modalReference.dismissed.subscribe(() => {
69
- this.emitCloseModal();
70
- });
71
- this.modalReference.closed.subscribe(() => {
72
- this.emitCloseModal();
73
- });
74
- }
75
- presentMuseumImageCarouselModal(carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = "0", images = null, commentImageID = null) {
76
- this.modalReference = this.modalService.open(carouselComponent, {
77
- modalDialogClass,
78
- });
79
- this.modalReference.componentInstance.fromTag = fromTag;
80
- this.modalReference.componentInstance.selectedImageIndex =
81
- selectedImageIndex;
82
- this.modalReference.componentInstance.images = images;
83
- this.modalReference.componentInstance.commentID = commentImageID;
84
- this.modalReference.dismissed.subscribe(() => {
85
- this.emitCloseModal();
86
- });
87
- this.modalReference.closed.subscribe(() => {
88
- this.emitCloseModal();
89
- });
90
- this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
91
- this.nextSlide.next(slide.current);
92
- });
93
- }
94
- toogleAudioElement(url) {
95
- if (!this.currentAudio || this.currentAudio.src !== url) {
96
- this.currentAudio = new Audio(url);
97
- }
98
- if (this.currentAudio.duration > 0 && !this.currentAudio.paused) {
99
- // it is playing, we stop it
100
- this.currentAudio.pause();
101
- }
102
- else {
103
- this.currentAudio.play();
104
- }
105
- }
106
- showFullscreenCarouselForFeature(featureID, fromTag = false) {
107
- const url = this.router.serializeUrl(this.router.createUrlTree([`/fullscreen/${featureID}`], {
108
- queryParams: { fromTag },
109
- }));
110
- window.open(url, "_blank");
111
- }
112
- emitCloseModal() {
113
- this.modalReference = null;
114
- this.closeModal.next(true);
115
- }
116
- forceCloseCurrentModal() {
117
- if (this.modalReference) {
118
- this.modalReference.dismiss("forced");
119
- }
120
- }
121
- moveToSlide(slide) {
122
- if (this.modalReference) {
123
- this.modalReference.componentInstance.navigateToSlide(slide);
124
- }
125
- }
126
- }
127
- ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
128
- ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, providedIn: "root" });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, decorators: [{
130
- type: Injectable,
131
- args: [{
132
- providedIn: "root",
133
- }]
134
- }], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.CommentService }]; } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7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QUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7MkdBakpRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTWVkaWFDb250ZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xuICAgIG1vZGFsUmVmZXJlbmNlO1xuXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xuXG4gICAgY2xvc2VNb2RhbCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBuZXh0U2xpZGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XG5cbiAgICBwcmVzZW50VmlkZW9Nb2RhbCh2aWRlbzogTWVkaWFDb250ZW50LCB2aWRlb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYXVkaW9Db21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50KGF1ZGlvQ29tbWVudElEKTtcbiAgICAgICAgY29uc3QgYXVkaW9NZWRpYUNvbnRlbnQgPSB7XG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxuICAgICAgICAgICAgdGl0bGU6IGF1ZGlvQ29tbWVudC50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdWRpb0NvbW1lbnQuZGVzY3JpcHRpb24sXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihhdWRpb0NvbXBvbmVudCwge1xuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuYXVkaW8gPSBhdWRpb01lZGlhQ29udGVudDtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJlc2VudEltYWdlQ2Fyb3VzZWxNb2RhbChmZWF0dXJlSUQ6IHN0cmluZywgY2Fyb3VzZWxDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCBcbiAgICAgICAgZnJvbVRhZyA9IHRydWUsIHNlbGVjdGVkSW1hZ2VJbmRleD0nMCcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICBjYXJvdXNlbENvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuZnJvbVRhZyA9IGZyb21UYWc7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRJbWFnZUluZGV4ID0gc2VsZWN0ZWRJbWFnZUluZGV4O1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByZXNlbnRQZGZNb2RhbCh1cmw6IHN0cmluZywgcGRmQ29tcG9uZW50OiBhbnksIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZywpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4ocGRmQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcmVzZW50TXVzZXVtSW1hZ2VDYXJvdXNlbE1vZGFsKFxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxuICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLFxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcbiAgICAgICAgaW1hZ2VzOiBhbnlbXSA9IG51bGwsXG4gICAgICAgIGNvbW1lbnRJbWFnZUlEOiBzdHJpbmcgPSBudWxsLFxuICAgICkge1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihjYXJvdXNlbENvbXBvbmVudCwge1xuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuZnJvbVRhZyA9IGZyb21UYWc7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRJbWFnZUluZGV4ID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5pbWFnZXMgPSBpbWFnZXM7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UuY29tbWVudElEID0gY29tbWVudEltYWdlSUQ7XG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0U2xpZGUubmV4dChzbGlkZS5jdXJyZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdG9vZ2xlQXVkaW9FbGVtZW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50QXVkaW8gfHwgdGhpcy5jdXJyZW50QXVkaW8uc3JjICE9PSB1cmwpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEF1ZGlvLmR1cmF0aW9uID4gMCAmJiAhdGhpcy5jdXJyZW50QXVkaW8ucGF1c2VkKSB7XG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdWRpby5wYXVzZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0Z1bGxzY3JlZW5DYXJvdXNlbEZvckZlYXR1cmUoZmVhdHVyZUlEOiBzdHJpbmcsIGZyb21UYWcgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwoXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBmcm9tVGFnIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcbiAgICB9XG5cbiAgICBlbWl0Q2xvc2VNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3MoXCJmb3JjZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLm5hdmlnYXRlVG9TbGlkZShzbGlkZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
1
+ /* eslint-disable class-methods-use-this */
2
+ import { Injectable } from "@angular/core";
3
+ import { Subject } from "rxjs";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "./models/comment.service";
8
+ export class ContentService {
9
+ constructor(modalService, router, commentService) {
10
+ this.modalService = modalService;
11
+ this.router = router;
12
+ this.commentService = commentService;
13
+ this.closeModal = new Subject();
14
+ this.nextSlide = new Subject();
15
+ }
16
+ presentVideoModal(video, videoComponent, modalDialogClass) {
17
+ this.modalReference = this.modalService.open(videoComponent, {
18
+ modalDialogClass: modalDialogClass,
19
+ });
20
+ this.modalReference.componentInstance.video = video;
21
+ this.modalReference.dismissed.subscribe(() => {
22
+ this.emitCloseModal();
23
+ });
24
+ this.modalReference.closed.subscribe(() => {
25
+ this.emitCloseModal();
26
+ });
27
+ }
28
+ async presentAudioModal(audioCommentID, audioComponent, modalDialogClass) {
29
+ const audioComment = await this.commentService.getComment(audioCommentID);
30
+ const audioMediaContent = {
31
+ path: audioComment.annexe,
32
+ title: audioComment.title,
33
+ description: audioComment.description,
34
+ };
35
+ this.modalReference = this.modalService.open(audioComponent, {
36
+ modalDialogClass: modalDialogClass,
37
+ });
38
+ this.modalReference.componentInstance.audio = audioMediaContent;
39
+ this.modalReference.dismissed.subscribe(() => {
40
+ this.emitCloseModal();
41
+ });
42
+ this.modalReference.closed.subscribe(() => {
43
+ this.emitCloseModal();
44
+ });
45
+ }
46
+ presentImageCarouselModal(featureID, carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = '0') {
47
+ this.modalReference = this.modalService.open(carouselComponent, {
48
+ modalDialogClass: modalDialogClass,
49
+ });
50
+ this.modalReference.componentInstance.featureID = featureID;
51
+ this.modalReference.componentInstance.fromTag = fromTag;
52
+ this.modalReference.componentInstance.selectedImageIndex = selectedImageIndex;
53
+ this.modalReference.dismissed.subscribe(() => {
54
+ this.emitCloseModal();
55
+ });
56
+ this.modalReference.closed.subscribe(() => {
57
+ this.emitCloseModal();
58
+ });
59
+ this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
60
+ this.nextSlide.next(slide.current);
61
+ });
62
+ }
63
+ presentPdfModal(url, pdfComponent, modalDialogClass) {
64
+ this.modalReference = this.modalService.open(pdfComponent, {
65
+ modalDialogClass: modalDialogClass,
66
+ });
67
+ this.modalReference.componentInstance.url = url;
68
+ this.modalReference.dismissed.subscribe(() => {
69
+ this.emitCloseModal();
70
+ });
71
+ this.modalReference.closed.subscribe(() => {
72
+ this.emitCloseModal();
73
+ });
74
+ }
75
+ presentMuseumImageCarouselModal(carouselComponent, modalDialogClass, fromTag = true, selectedImageIndex = "0", images = null, commentImageID = null) {
76
+ this.modalReference = this.modalService.open(carouselComponent, {
77
+ modalDialogClass,
78
+ });
79
+ this.modalReference.componentInstance.fromTag = fromTag;
80
+ this.modalReference.componentInstance.selectedImageIndex =
81
+ selectedImageIndex;
82
+ this.modalReference.componentInstance.images = images;
83
+ this.modalReference.componentInstance.commentID = commentImageID;
84
+ this.modalReference.dismissed.subscribe(() => {
85
+ this.emitCloseModal();
86
+ });
87
+ this.modalReference.closed.subscribe(() => {
88
+ this.emitCloseModal();
89
+ });
90
+ this.modalReference.componentInstance.slideChanged.subscribe((slide) => {
91
+ this.nextSlide.next(slide.current);
92
+ });
93
+ }
94
+ toogleAudioElement(url) {
95
+ if (!this.currentAudio || this.currentAudio.src !== url) {
96
+ this.currentAudio = new Audio(url);
97
+ }
98
+ if (this.currentAudio.duration > 0 && !this.currentAudio.paused) {
99
+ // it is playing, we stop it
100
+ this.currentAudio.pause();
101
+ }
102
+ else {
103
+ this.currentAudio.play();
104
+ }
105
+ }
106
+ showFullscreenCarouselForFeature(featureID, fromTag = false) {
107
+ const url = this.router.serializeUrl(this.router.createUrlTree([`/fullscreen/${featureID}`], {
108
+ queryParams: { fromTag },
109
+ }));
110
+ window.open(url, "_blank");
111
+ }
112
+ emitCloseModal() {
113
+ this.modalReference = null;
114
+ this.closeModal.next(true);
115
+ }
116
+ forceCloseCurrentModal() {
117
+ if (this.modalReference) {
118
+ this.modalReference.dismiss("forced");
119
+ }
120
+ }
121
+ moveToSlide(slide) {
122
+ if (this.modalReference) {
123
+ this.modalReference.componentInstance.navigateToSlide(slide);
124
+ }
125
+ }
126
+ }
127
+ ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, providedIn: "root" });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, decorators: [{
130
+ type: Injectable,
131
+ args: [{
132
+ providedIn: "root",
133
+ }]
134
+ }], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.CommentService }]; } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGNBQXNCLEVBQUUsY0FBbUIsRUFBRSxnQkFBd0I7UUFDekYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRSxNQUFNLGlCQUFpQixHQUFHO1lBQ3RCLElBQUksRUFBRSxZQUFZLENBQUMsTUFBTTtZQUN6QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7WUFDekIsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1NBQ3hCLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekQsZ0JBQWdCLEVBQUUsZ0JBQWdCO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxpQkFBc0IsRUFBRSxnQkFBd0IsRUFDekYsT0FBTyxHQUFHLElBQUksRUFBRSxrQkFBa0IsR0FBQyxHQUFHO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hDLGlCQUFpQixFQUNqQjtZQUNJLGdCQUFnQixFQUFFLGdCQUFnQjtTQUNyQyxDQUNKLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDOUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDeEQsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVyxFQUFFLFlBQWlCLEVBQUUsZ0JBQXdCO1FBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZELGdCQUFnQixFQUFFLGdCQUFnQjtTQUNyQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwrQkFBK0IsQ0FDM0IsaUJBQXNCLEVBQ3RCLGdCQUF3QixFQUN4QixPQUFPLEdBQUcsSUFBSSxFQUNkLGtCQUFrQixHQUFHLEdBQUcsRUFDeEIsU0FBZ0IsSUFBSSxFQUNwQixpQkFBeUIsSUFBSTtRQUU3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzVELGdCQUFnQjtTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0I7WUFDcEQsa0JBQWtCLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUN4RCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzdELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGdDQUFnQyxDQUFDLFNBQWlCLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDL0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ3BELFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRTtTQUMzQixDQUFDLENBQ0wsQ0FBQztRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7MkdBakpRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1lZGlhQ29udGVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9mZWF0dXJlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xyXG4gICAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xyXG5cclxuICAgIGNsb3NlTW9kYWwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIG5leHRTbGlkZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XHJcblxyXG4gICAgcHJlc2VudFZpZGVvTW9kYWwodmlkZW86IE1lZGlhQ29udGVudCwgdmlkZW9Db21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcclxuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnQoYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvTWVkaWFDb250ZW50ID0ge1xyXG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICB0aXRsZTogYXVkaW9Db21tZW50LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW9Db21tZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGF1ZGlvQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5hdWRpbyA9IGF1ZGlvTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcmVzZW50SW1hZ2VDYXJvdXNlbE1vZGFsKGZlYXR1cmVJRDogc3RyaW5nLCBjYXJvdXNlbENvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsIFxyXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLCBzZWxlY3RlZEltYWdlSW5kZXg9JzAnKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXHJcbiAgICAgICAgICAgIGNhcm91c2VsQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9IHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRTbGlkZS5uZXh0KHNsaWRlLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudFBkZk1vZGFsKHVybDogc3RyaW5nLCBwZGZDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHBkZkNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UudXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudE11c2V1bUltYWdlQ2Fyb3VzZWxNb2RhbChcclxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxyXG4gICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZyxcclxuICAgICAgICBmcm9tVGFnID0gdHJ1ZSxcclxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcclxuICAgICAgICBpbWFnZXM6IGFueVtdID0gbnVsbCxcclxuICAgICAgICBjb21tZW50SW1hZ2VJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNhcm91c2VsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmltYWdlcyA9IGltYWdlcztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmNvbW1lbnRJRCA9IGNvbW1lbnRJbWFnZUlEO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAoc2xpZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0b29nbGVBdWRpb0VsZW1lbnQodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEF1ZGlvIHx8IHRoaXMuY3VycmVudEF1ZGlvLnNyYyAhPT0gdXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBdWRpby5kdXJhdGlvbiA+IDAgJiYgIXRoaXMuY3VycmVudEF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RnVsbHNjcmVlbkNhcm91c2VsRm9yRmVhdHVyZShmZWF0dXJlSUQ6IHN0cmluZywgZnJvbVRhZyA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGZyb21UYWcgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXRDbG9zZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzKFwiZm9yY2VkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5uYXZpZ2F0ZVRvU2xpZGUoc2xpZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=