awf-test-lib 0.1.8 → 0.1.10

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 (218) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +10 -30
  4. package/src/lib/core/core-routing.module.ts +10 -0
  5. package/src/lib/core/core.module.ts +35 -0
  6. package/src/lib/core/menu/menu.component.css +18 -0
  7. package/src/lib/core/menu/menu.component.html +8 -0
  8. package/src/lib/core/menu/menu.component.spec.ts +23 -0
  9. package/src/lib/core/menu/menu.component.ts +28 -0
  10. package/src/lib/core/menu-consomer/menu-consomer.component.html +20 -0
  11. package/src/lib/core/menu-consomer/menu-consomer.component.scss +20 -0
  12. package/src/lib/core/menu-consomer/menu-consomer.component.spec.ts +25 -0
  13. package/src/lib/core/menu-consomer/menu-consomer.component.ts +21 -0
  14. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.html +7 -0
  15. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.scss +17 -0
  16. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.spec.ts +25 -0
  17. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.ts +24 -0
  18. package/src/lib/core/menu-warranty/menu-warranty.component.html +20 -0
  19. package/src/lib/core/menu-warranty/menu-warranty.component.scss +16 -0
  20. package/src/lib/core/menu-warranty/menu-warranty.component.spec.ts +25 -0
  21. package/src/lib/core/menu-warranty/menu-warranty.component.ts +31 -0
  22. package/src/lib/core/not-found/not-found.component.css +31 -0
  23. package/src/lib/core/not-found/not-found.component.html +6 -0
  24. package/src/lib/core/not-found/not-found.component.spec.ts +23 -0
  25. package/src/lib/core/not-found/not-found.component.ts +15 -0
  26. package/src/lib/core/top-bar/top-bar.component.css +116 -0
  27. package/src/lib/core/top-bar/top-bar.component.html +1 -0
  28. package/src/lib/core/top-bar/top-bar.component.spec.ts +23 -0
  29. package/src/lib/core/top-bar/top-bar.component.ts +39 -0
  30. package/{lib/models/account.model.d.ts → src/lib/models/account.model.ts} +6 -3
  31. package/src/lib/models/alternativeDate.model.ts +6 -0
  32. package/src/lib/models/applicationName.ts +6 -0
  33. package/{lib/models/cancelPMMailRequest.model.d.ts → src/lib/models/cancelPMMailRequest.model.ts} +3 -1
  34. package/src/lib/models/customObject.model.ts +4 -0
  35. package/src/lib/models/detailedPmJob.model.ts +25 -0
  36. package/src/lib/models/emailStatus.ts +4 -0
  37. package/src/lib/models/emailType.ts +17 -0
  38. package/src/lib/models/eventStatus.ts +8 -0
  39. package/src/lib/models/field.ts +7 -0
  40. package/src/lib/models/language.ts +4 -0
  41. package/{lib/models/mailRequest.model.d.ts → src/lib/models/mailRequest.model.ts} +3 -1
  42. package/src/lib/models/pMGroupedJob.model.ts +4 -0
  43. package/{lib/models/pmJob.model.d.ts → src/lib/models/pmJob.model.ts} +7 -6
  44. package/src/lib/models/pmJobRequest.model.ts +6 -0
  45. package/{lib/models/pmJobStatus.d.ts → src/lib/models/pmJobStatus.ts} +8 -3
  46. package/src/lib/models/reason.model.ts +7 -0
  47. package/src/lib/models/reasonCode.ts +9 -0
  48. package/src/lib/models/reasonContact.ts +7 -0
  49. package/{lib/models/reportDateMailRequest.model.d.ts → src/lib/models/reportDateMailRequest.model.ts} +3 -1
  50. package/src/lib/models/role.ts +5 -0
  51. package/src/lib/models/service.model.ts +8 -0
  52. package/src/lib/models/serviceName.ts +14 -0
  53. package/{lib/models/socialLoginRequest.model.d.ts → src/lib/models/socialLoginRequest.model.ts} +1 -1
  54. package/src/lib/models/socialMadia.ts +4 -0
  55. package/src/lib/models/stingBoolean.ts +7 -0
  56. package/src/lib/models/system.ts +15 -0
  57. package/{lib/models/theme.model.d.ts → src/lib/models/theme.model.ts} +18 -11
  58. package/src/lib/models/tokenStatus.ts +6 -0
  59. package/src/lib/models/warranty.ts +18 -0
  60. package/src/lib/pipes/pipes/pipes.module.ts +14 -0
  61. package/src/lib/pipes/subrtring-w.pipe.spec.ts +8 -0
  62. package/src/lib/pipes/subrtring-w.pipe.ts +16 -0
  63. package/src/lib/pipes/substring.pipe.spec.ts +8 -0
  64. package/src/lib/pipes/substring.pipe.ts +15 -0
  65. package/src/lib/shared/choose-another-date/choose-another-date.component.html +9 -0
  66. package/src/lib/shared/choose-another-date/choose-another-date.component.scss +4 -0
  67. package/src/lib/shared/choose-another-date/choose-another-date.component.spec.ts +25 -0
  68. package/src/lib/shared/choose-another-date/choose-another-date.component.ts +126 -0
  69. package/src/lib/shared/confirm-dialog/confirm-dialog.component.html +27 -0
  70. package/src/lib/shared/confirm-dialog/confirm-dialog.component.scss +0 -0
  71. package/src/lib/shared/confirm-dialog/confirm-dialog.component.spec.ts +25 -0
  72. package/src/lib/shared/confirm-dialog/confirm-dialog.component.ts +35 -0
  73. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.css +0 -0
  74. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.html +19 -0
  75. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.spec.ts +23 -0
  76. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.ts +36 -0
  77. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.html +25 -0
  78. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.scss +23 -0
  79. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.spec.ts +25 -0
  80. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.ts +28 -0
  81. package/src/lib/shared/contact/contact.component.css +144 -0
  82. package/src/lib/shared/contact/contact.component.html +136 -0
  83. package/src/lib/shared/contact/contact.component.spec.ts +23 -0
  84. package/src/lib/shared/contact/contact.component.ts +176 -0
  85. package/src/lib/shared/contact-support/contact-support.component.html +130 -0
  86. package/src/lib/shared/contact-support/contact-support.component.scss +10 -0
  87. package/src/lib/shared/contact-support/contact-support.component.spec.ts +25 -0
  88. package/src/lib/shared/contact-support/contact-support.component.ts +182 -0
  89. package/src/lib/shared/dashboard/dashboard.component.html +81 -0
  90. package/src/lib/shared/dashboard/dashboard.component.scss +5 -0
  91. package/src/lib/shared/dashboard/dashboard.component.spec.ts +23 -0
  92. package/src/lib/shared/dashboard/dashboard.component.ts +21 -0
  93. package/src/lib/shared/maintenance-list/maintenance-list.component.html +105 -0
  94. package/src/lib/shared/maintenance-list/maintenance-list.component.scss +26 -0
  95. package/src/lib/shared/maintenance-list/maintenance-list.component.spec.ts +25 -0
  96. package/src/lib/shared/maintenance-list/maintenance-list.component.ts +398 -0
  97. package/src/lib/shared/shared-routing.module.ts +10 -0
  98. package/src/lib/shared/shared.module.ts +84 -0
  99. package/src/lib/shared/show-links/show-links.component.html +49 -0
  100. package/src/lib/shared/show-links/show-links.component.scss +0 -0
  101. package/src/lib/shared/show-links/show-links.component.spec.ts +25 -0
  102. package/src/lib/shared/show-links/show-links.component.ts +80 -0
  103. package/src/lib/shared/system-list/system-list.component.css +0 -0
  104. package/src/lib/shared/system-list/system-list.component.html +40 -0
  105. package/src/lib/shared/system-list/system-list.component.spec.ts +23 -0
  106. package/src/lib/shared/system-list/system-list.component.ts +26 -0
  107. package/{public-api.d.ts → src/public-api.ts} +16 -1
  108. package/src/test.ts +27 -0
  109. package/tsconfig.lib.dev.json +10 -0
  110. package/tsconfig.lib.json +15 -0
  111. package/tsconfig.lib.pp.json +10 -0
  112. package/tsconfig.lib.prod.json +10 -0
  113. package/tsconfig.spec.json +17 -0
  114. package/esm2020/awf-test-lib.mjs +0 -5
  115. package/esm2020/lib/core/core-routing.module.mjs +0 -18
  116. package/esm2020/lib/core/core.module.mjs +0 -51
  117. package/esm2020/lib/core/menu/menu.component.mjs +0 -40
  118. package/esm2020/lib/core/menu-consomer/menu-consomer.component.mjs +0 -27
  119. package/esm2020/lib/core/menu-ge-portal/menu-ge-portal.component.mjs +0 -31
  120. package/esm2020/lib/core/menu-warranty/menu-warranty.component.mjs +0 -35
  121. package/esm2020/lib/core/not-found/not-found.component.mjs +0 -19
  122. package/esm2020/lib/core/top-bar/top-bar.component.mjs +0 -41
  123. package/esm2020/lib/models/account.model.mjs +0 -3
  124. package/esm2020/lib/models/alternativeDate.model.mjs +0 -3
  125. package/esm2020/lib/models/applicationName.mjs +0 -7
  126. package/esm2020/lib/models/cancelPMMailRequest.model.mjs +0 -4
  127. package/esm2020/lib/models/customObject.model.mjs +0 -3
  128. package/esm2020/lib/models/detailedPmJob.model.mjs +0 -3
  129. package/esm2020/lib/models/emailStatus.mjs +0 -6
  130. package/esm2020/lib/models/emailType.mjs +0 -15
  131. package/esm2020/lib/models/eventStatus.mjs +0 -9
  132. package/esm2020/lib/models/field.mjs +0 -9
  133. package/esm2020/lib/models/language.mjs +0 -6
  134. package/esm2020/lib/models/mailRequest.model.mjs +0 -3
  135. package/esm2020/lib/models/pMGroupedJob.model.mjs +0 -3
  136. package/esm2020/lib/models/pmJob.model.mjs +0 -3
  137. package/esm2020/lib/models/pmJobRequest.model.mjs +0 -3
  138. package/esm2020/lib/models/pmJobStatus.mjs +0 -17
  139. package/esm2020/lib/models/reason.model.mjs +0 -3
  140. package/esm2020/lib/models/reasonCode.mjs +0 -9
  141. package/esm2020/lib/models/reasonContact.mjs +0 -8
  142. package/esm2020/lib/models/reportDateMailRequest.model.mjs +0 -4
  143. package/esm2020/lib/models/role.mjs +0 -7
  144. package/esm2020/lib/models/service.model.mjs +0 -3
  145. package/esm2020/lib/models/serviceName.mjs +0 -12
  146. package/esm2020/lib/models/socialLoginRequest.model.mjs +0 -3
  147. package/esm2020/lib/models/socialMadia.mjs +0 -5
  148. package/esm2020/lib/models/stingBoolean.mjs +0 -6
  149. package/esm2020/lib/models/system.mjs +0 -3
  150. package/esm2020/lib/models/theme.model.mjs +0 -2
  151. package/esm2020/lib/models/tokenStatus.mjs +0 -7
  152. package/esm2020/lib/models/warranty.mjs +0 -3
  153. package/esm2020/lib/pipes/pipes/pipes.module.mjs +0 -21
  154. package/esm2020/lib/pipes/subrtring-w.pipe.mjs +0 -20
  155. package/esm2020/lib/pipes/substring.pipe.mjs +0 -16
  156. package/esm2020/lib/shared/choose-another-date/choose-another-date.component.mjs +0 -110
  157. package/esm2020/lib/shared/confirm-dialog/confirm-dialog.component.mjs +0 -44
  158. package/esm2020/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.mjs +0 -42
  159. package/esm2020/lib/shared/confirmed-date-information/confirmed-date-information.component.mjs +0 -38
  160. package/esm2020/lib/shared/contact/contact.component.mjs +0 -141
  161. package/esm2020/lib/shared/contact-support/contact-support.component.mjs +0 -164
  162. package/esm2020/lib/shared/dashboard/dashboard.component.mjs +0 -34
  163. package/esm2020/lib/shared/maintenance-list/maintenance-list.component.mjs +0 -347
  164. package/esm2020/lib/shared/shared-routing.module.mjs +0 -18
  165. package/esm2020/lib/shared/shared.module.mjs +0 -144
  166. package/esm2020/lib/shared/show-links/show-links.component.mjs +0 -81
  167. package/esm2020/lib/shared/system-list/system-list.component.mjs +0 -32
  168. package/esm2020/public-api.mjs +0 -48
  169. package/fesm2015/awf-test-lib.mjs +0 -1544
  170. package/fesm2015/awf-test-lib.mjs.map +0 -1
  171. package/fesm2020/awf-test-lib.mjs +0 -1540
  172. package/fesm2020/awf-test-lib.mjs.map +0 -1
  173. package/index.d.ts +0 -5
  174. package/lib/core/core-routing.module.d.ts +0 -7
  175. package/lib/core/core.module.d.ts +0 -15
  176. package/lib/core/menu/menu.component.d.ts +0 -17
  177. package/lib/core/menu-consomer/menu-consomer.component.d.ts +0 -12
  178. package/lib/core/menu-ge-portal/menu-ge-portal.component.d.ts +0 -13
  179. package/lib/core/menu-warranty/menu-warranty.component.d.ts +0 -15
  180. package/lib/core/not-found/not-found.component.d.ts +0 -10
  181. package/lib/core/top-bar/top-bar.component.d.ts +0 -13
  182. package/lib/models/alternativeDate.model.d.ts +0 -6
  183. package/lib/models/applicationName.d.ts +0 -5
  184. package/lib/models/customObject.model.d.ts +0 -3
  185. package/lib/models/detailedPmJob.model.d.ts +0 -23
  186. package/lib/models/emailStatus.d.ts +0 -4
  187. package/lib/models/emailType.d.ts +0 -13
  188. package/lib/models/eventStatus.d.ts +0 -7
  189. package/lib/models/field.d.ts +0 -7
  190. package/lib/models/language.d.ts +0 -4
  191. package/lib/models/pMGroupedJob.model.d.ts +0 -3
  192. package/lib/models/pmJobRequest.model.d.ts +0 -5
  193. package/lib/models/reason.model.d.ts +0 -4
  194. package/lib/models/reasonCode.d.ts +0 -7
  195. package/lib/models/reasonContact.d.ts +0 -6
  196. package/lib/models/role.d.ts +0 -5
  197. package/lib/models/service.model.d.ts +0 -8
  198. package/lib/models/serviceName.d.ts +0 -10
  199. package/lib/models/socialMadia.d.ts +0 -3
  200. package/lib/models/stingBoolean.d.ts +0 -4
  201. package/lib/models/system.d.ts +0 -14
  202. package/lib/models/tokenStatus.d.ts +0 -5
  203. package/lib/models/warranty.d.ts +0 -17
  204. package/lib/pipes/pipes/pipes.module.d.ts +0 -9
  205. package/lib/pipes/subrtring-w.pipe.d.ts +0 -7
  206. package/lib/pipes/substring.pipe.d.ts +0 -7
  207. package/lib/shared/choose-another-date/choose-another-date.component.d.ts +0 -33
  208. package/lib/shared/confirm-dialog/confirm-dialog.component.d.ts +0 -20
  209. package/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.d.ts +0 -19
  210. package/lib/shared/confirmed-date-information/confirmed-date-information.component.d.ts +0 -16
  211. package/lib/shared/contact/contact.component.d.ts +0 -38
  212. package/lib/shared/contact-support/contact-support.component.d.ts +0 -49
  213. package/lib/shared/dashboard/dashboard.component.d.ts +0 -17
  214. package/lib/shared/maintenance-list/maintenance-list.component.d.ts +0 -79
  215. package/lib/shared/shared-routing.module.d.ts +0 -7
  216. package/lib/shared/shared.module.d.ts +0 -40
  217. package/lib/shared/show-links/show-links.component.d.ts +0 -23
  218. package/lib/shared/system-list/system-list.component.d.ts +0 -15
@@ -1,347 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { ConfirmationService, MessageService } from 'primeng/api';
3
- import { EmailType } from '../../models/emailType';
4
- import { EventStatus } from '../../models/eventStatus';
5
- import { PmJobStatus } from '../../models/pmJobStatus';
6
- import { ReasonContact } from '../../models/reasonContact';
7
- import { StingBoolean } from '../../models/stingBoolean';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
10
- import * as i2 from "primeng/table";
11
- import * as i3 from "primeng/api";
12
- import * as i4 from "primeng/inputtext";
13
- import * as i5 from "primeng/toast";
14
- import * as i6 from "primeng/tooltip";
15
- import * as i7 from "primeng/overlaypanel";
16
- import * as i8 from "primeng/button";
17
- import * as i9 from "../choose-another-date/choose-another-date.component";
18
- import * as i10 from "../confirm-dialog/confirm-dialog.component";
19
- import * as i11 from "../confirmed-date-information/confirmed-date-information.component";
20
- import * as i12 from "../contact-support/contact-support.component";
21
- import * as i13 from "../show-links/show-links.component";
22
- import * as i14 from "../confirm-dialog-contact/confirm-dialog-contact.component";
23
- export class MaintenanceListComponent {
24
- constructor() {
25
- this.maintenanceList = [];
26
- this.maintenanceListNotDisplayed = [];
27
- this.pmJobList = [];
28
- this.displayConfirmedDateInfo = false;
29
- this.emitForUpdate = new EventEmitter();
30
- this.emitForAlternativeDates = new EventEmitter();
31
- this.sendContactMeEmail = new EventEmitter();
32
- this.sendForm = new EventEmitter();
33
- this.detailedPmJobLinkedList = [];
34
- this.alternativeDatesSelected = [];
35
- this.displaycontactSupport = false;
36
- this.displayConfirmDialog = false;
37
- this.displayConfirmDialogContact = false;
38
- this.displayShowLinks = false;
39
- this.displayAnotherDate = false;
40
- this.isWithLinks = false;
41
- this.isProposedDate = true;
42
- this.reasonContact = "";
43
- this.first = 0;
44
- }
45
- ngOnDestroy() {
46
- if (this.updatePmSubscription) {
47
- this.updatePmSubscription.unsubscribe();
48
- }
49
- if (this.alternativeDatesSubscription) {
50
- this.alternativeDatesSubscription.unsubscribe();
51
- }
52
- }
53
- applyFilterGlobal($event, stringVal) {
54
- this.dt?.filterGlobal($event.target.value, stringVal);
55
- }
56
- selectElement(element) {
57
- this.alternativeDatesList = null;
58
- this.emailTypes = [];
59
- if (element) {
60
- this.pmSelectedStatus = element.status;
61
- }
62
- if (element.pmJob.groupList) {
63
- this.isWithLinks = element.pmJob.groupList?.length > 0 ? true : false;
64
- }
65
- this.selectedWorkorderId = element.pmJob.workorderNumber;
66
- this.maintenanceSelected = element;
67
- this.maintenanceSelected.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
68
- if (!this.isAlreadyScheduled) {
69
- this.getAlternativeDates(element.pmJob);
70
- }
71
- this.startDateTime = this.maintenanceSelected.pmJob.startDateTime;
72
- this.endDateTime = this.maintenanceSelected.pmJob.endDateTime;
73
- this.getLinkedPmJob();
74
- }
75
- getAlternativeDates(pmJob) {
76
- this.emitForAlternativeDates.emit(pmJob);
77
- }
78
- getLinkedPmJob() {
79
- this.detailedPmJobLinkedList = [];
80
- if (this.maintenanceSelected.pmJob.groupList) {
81
- this.maintenanceSelected.pmJob.groupList.forEach((linked) => {
82
- this.maintenanceList.forEach((item) => {
83
- if (linked.workorderId === item.pmJob.workorderId) {
84
- this.detailedPmJobLinkedList.push(item);
85
- }
86
- });
87
- });
88
- }
89
- // if the linked PM in the other maintenance list not selected
90
- if (this.maintenanceSelected.pmJob.groupList && (this.maintenanceSelected.pmJob.groupList.length !== this.detailedPmJobLinkedList.length)) {
91
- this.maintenanceSelected.pmJob.groupList.forEach((linked) => {
92
- this.maintenanceListNotDisplayed.forEach((item) => {
93
- item.toUpdate = false;
94
- if (linked.workorderId === item.pmJob.workorderId) {
95
- this.detailedPmJobLinkedList.push(item);
96
- }
97
- });
98
- });
99
- }
100
- }
101
- confirmDialog() {
102
- this.isProposedDate = true;
103
- this.op.hide();
104
- this.displayConfirmDialog = true;
105
- }
106
- closeConfirmDialog(confirm) {
107
- this.displayConfirmDialog = false;
108
- this.maintenanceSelected.futureStatus = PmJobStatus.ACCEPTED;
109
- if (confirm) {
110
- if (!this.isProposedDate) {
111
- this.updateAlternativeDate();
112
- }
113
- else {
114
- this.updateProposedDate();
115
- }
116
- this.emailTypes.push(EmailType.Accepted_CSC);
117
- this.emailTypes.push(EmailType.Accepted_Clients);
118
- this.updatePmJob();
119
- }
120
- }
121
- closeConfirmDialogContact(confirm) {
122
- this.displayConfirmDialogContact = false;
123
- if (confirm) {
124
- this.emailTypes = [];
125
- if (this.reasonContact === ReasonContact.ContactFormPm) {
126
- this.emailTypes.push(EmailType.ContactMe_Clients);
127
- this.emailTypes.push(EmailType.ContactMe_CSC);
128
- }
129
- else if (this.reasonContact === ReasonContact.CancelFormPm) {
130
- this.maintenanceSelected.pmJob.customObject = {};
131
- this.maintenanceSelected.pmJob.customObject.customerWaiting = StingBoolean.YES;
132
- this.maintenanceSelected.futureStatus = PmJobStatus.WAITING;
133
- this.emailTypes.push(EmailType.CancelPM_CSC);
134
- this.emailTypes.push(EmailType.CancelPM_Clients);
135
- }
136
- else {
137
- this.maintenanceSelected.pmJob.customObject = {};
138
- this.maintenanceSelected.pmJob.customObject.customerWaiting = StingBoolean.YES;
139
- this.maintenanceSelected.futureStatus = PmJobStatus.WAITING;
140
- this.emailTypes.push(EmailType.SendNewDates_CSC);
141
- this.emailTypes.push(EmailType.SendNewDates_Clients);
142
- }
143
- this.updateLinkedPMFormContact();
144
- this.closeContactSupport(true);
145
- }
146
- }
147
- updateLinkedPMFormContact() {
148
- this.pmJobList = [];
149
- this.pmJobList.push(this.maintenanceSelected);
150
- if (this.detailedPmJobLinkedList.length > 0) {
151
- this.detailedPmJobLinkedList.forEach((item) => {
152
- item.futureStatus = item.status;
153
- item.selectedDate = item.pmJob.startDateTime;
154
- item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
155
- if (this.reasonContact === ReasonContact.MoreDatesFormPm || this.reasonContact === ReasonContact.CancelFormPm) {
156
- item.reason = this.maintenanceSelected.reason;
157
- item.reasonContact = this.maintenanceSelected.reasonContact;
158
- item.pmJob.customObject = {};
159
- item.pmJob.customObject.customerWaiting = StingBoolean.YES;
160
- item.futureStatus = PmJobStatus.WAITING;
161
- }
162
- this.pmJobList.push(item);
163
- });
164
- }
165
- this.callApiToUpdate();
166
- }
167
- closeContactSupport(event) {
168
- this.displaycontactSupport = false;
169
- this.showDate = false;
170
- this.reasonContact = "";
171
- }
172
- proposeAnotherDate() {
173
- this.isProposedDate = false;
174
- this.op.hide();
175
- this.displayAnotherDate = true;
176
- }
177
- contactSupport(fromOtherDate) {
178
- this.op.hide();
179
- this.reasonContact = fromOtherDate ? ReasonContact.MoreDatesFormPm : ReasonContact.ContactFormPm;
180
- this.displaycontactSupport = true;
181
- }
182
- showLinks(element) {
183
- if (element) {
184
- this.selectElement(element);
185
- }
186
- this.op.hide();
187
- this.displayShowLinks = true;
188
- }
189
- closeShowLinks() {
190
- this.displayShowLinks = false;
191
- }
192
- closeConfirmedDateInfo() {
193
- this.displayConfirmedDateInfo = false;
194
- }
195
- acceptDate(alternativeDates) {
196
- this.displayConfirmDialog = true;
197
- this.alternativeDatesSelected = alternativeDates;
198
- this.findDatesSelected();
199
- }
200
- findDatesSelected() {
201
- this.alternativeDatesSelected.forEach((alternativeDate) => {
202
- if (alternativeDate.selected === "Yes") {
203
- this.startDateTime = alternativeDate.startDateTime;
204
- this.endDateTime = alternativeDate.endDateTime;
205
- this.maintenanceSelected.selectedDate = alternativeDate.startDateTime;
206
- return;
207
- }
208
- });
209
- }
210
- closeAnotherDate(event) {
211
- this.displayAnotherDate = false;
212
- if (event === false) {
213
- this.alreadyScheduledMsg = false;
214
- this.op.hide();
215
- this.contactSupport(true);
216
- }
217
- }
218
- updatePmJob() {
219
- this.pmJobList = [];
220
- this.pmJobList.push(this.maintenanceSelected);
221
- if (this.detailedPmJobLinkedList.length > 0) {
222
- this.detailedPmJobLinkedList.forEach((pMJob) => {
223
- this.pmJobList.push(pMJob);
224
- });
225
- }
226
- this.callApiToUpdate();
227
- }
228
- editPm() {
229
- this.alreadyScheduledMsg = true;
230
- this.op.hide();
231
- this.reasonContact = ReasonContact.CancelFormPm;
232
- this.prepareForPopup();
233
- this.displaycontactSupport = true;
234
- }
235
- prepareForPopup() {
236
- if (this.maintenanceSelected.pmJob.customerAccepted === "Yes") {
237
- this.startDateTime = this.maintenanceSelected.pmJob.startDateTime;
238
- this.endDateTime = this.maintenanceSelected.pmJob.endDateTime;
239
- }
240
- else {
241
- this.alternativeDatesSelected = this.maintenanceSelected.pmJob.alternativeDates;
242
- this.findDatesSelected();
243
- }
244
- }
245
- updateProposedDate() {
246
- this.maintenanceSelected.pmJob.customerAccepted = StingBoolean.YES;
247
- this.maintenanceSelected.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
248
- this.detailedPmJobLinkedList.forEach((item) => {
249
- item.pmJob.customerAccepted = StingBoolean.YES;
250
- item.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
251
- item.futureStatus = PmJobStatus.ACCEPTED;
252
- item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
253
- });
254
- }
255
- updateAlternativeDate() {
256
- this.findDatesSelected();
257
- this.maintenanceSelected.pmJob.alternativeDates = this.alternativeDatesSelected;
258
- this.detailedPmJobLinkedList.forEach((item) => {
259
- item.pmJob.alternativeDates = this.alternativeDatesSelected;
260
- item.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
261
- item.futureStatus = PmJobStatus.ACCEPTED;
262
- item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
263
- });
264
- this.displayAnotherDate = false;
265
- }
266
- sendContactMeForm(contactMeRequest) {
267
- this.moreDates = false;
268
- if (contactMeRequest.reasonContact === ReasonContact.MoreDatesFormPm) {
269
- this.moreDates = true;
270
- }
271
- this.displayConfirmDialogContact = true;
272
- this.maintenanceSelected = contactMeRequest;
273
- }
274
- callApiToUpdate() {
275
- let PmJobListForUpdate = {};
276
- PmJobListForUpdate.pmJobList = this.pmJobList;
277
- PmJobListForUpdate.emailTypes = this.emailTypes;
278
- this.emitForUpdate.emit(PmJobListForUpdate);
279
- }
280
- transformStatus(status) {
281
- switch (status) {
282
- case PmJobStatus.NEW: return this.status.new;
283
- case PmJobStatus.ACCEPTED: return this.status.accepted;
284
- case PmJobStatus.CLOSED: return this.status.closed;
285
- case PmJobStatus.Late: return this.status.late;
286
- case PmJobStatus.OPEN: return this.status.open;
287
- case PmJobStatus.WAITING: return this.status.waiting;
288
- case PmJobStatus.DONE: return this.status.done;
289
- case PmJobStatus.VALIDATED: return this.status.validated;
290
- default: return "Erreur";
291
- }
292
- }
293
- getStatusTooltip(status) {
294
- switch (status) {
295
- case PmJobStatus.ACCEPTED: return this.status.acceptedTooltip;
296
- case PmJobStatus.NEW: return this.status.newTooltip;
297
- case PmJobStatus.CLOSED: return this.status.closedTooltip;
298
- case PmJobStatus.Late: return this.status.lateTooltip;
299
- case PmJobStatus.OPEN: return this.status.openTooltip;
300
- case PmJobStatus.WAITING: return this.status.waitingTooltip;
301
- case PmJobStatus.DONE: return this.status.doneTooltip;
302
- case PmJobStatus.VALIDATED: return this.status.validatedTooltip;
303
- default: return "Erreur";
304
- }
305
- }
306
- }
307
- MaintenanceListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MaintenanceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
- MaintenanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: MaintenanceListComponent, selector: "awf-maintenance-list", inputs: { translate: "translate", reasons: "reasons", globaltranslate: "globaltranslate", maintenanceList: "maintenanceList", maintenanceListNotDisplayed: "maintenanceListNotDisplayed", pmJobList: "pmJobList", isAlreadyScheduled: "isAlreadyScheduled", displayConfirmedDateInfo: "displayConfirmedDateInfo", alternativeDatesList: "alternativeDatesList", status: "status" }, outputs: { emitForUpdate: "emitForUpdate", emitForAlternativeDates: "emitForAlternativeDates", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "op", first: true, predicate: ["op"], descendants: true }], ngImport: i0, template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\" [first]=\"first\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"room\">{{translate.maintenanceList.room}}\r\n <p-sortIcon field=\"room\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }} </td>\r\n <td>{{product.room }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'Planned Maintenance'\">{{translate.maintenanceList.typePlanned}}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'QARA'\">{{translate.maintenanceList.typeQARA}}</td>\r\n <td>\r\n <span [class]=\"'product-status status-' + product.status\"\r\n [pTooltip]=\"getStatusTooltip(product.status)\">\r\n {{transformStatus(product.status)}}\r\n </span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList === null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [moreDates]=\"moreDates\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfos]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ChooseAnotherDateComponent, selector: "app-choose-another-date", inputs: ["displayAnotherDate", "globaltranslate", "translate", "alternativeDatesList"], outputs: ["closeAnotherDate", "acceptDate"] }, { kind: "component", type: i10.ConfirmDialogComponent, selector: "app-confirm-dialog", inputs: ["displayConfirmDialog", "startDateTime", "endDateTime", "globaltranslate", "translate", "isProposedDate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialog"] }, { kind: "component", type: i11.ConfirmedDateInformationComponent, selector: "app-confirmed-date-information", inputs: ["displayConfirmedDateInfos", "startDateTime", "endDateTime", "globaltranslate", "translate", "moreDates"], outputs: ["closeConfirmedDateInfo"] }, { kind: "component", type: i12.ContactSupportComponent, selector: "app-contact-support", inputs: ["displaycontactSupport", "globaltranslate", "translate", "showDate", "detailedPmJob", "reasonContact", "reasons"], outputs: ["sendDetailedPm", "sendForm", "closeContactSupport"] }, { kind: "component", type: i13.ShowLinksComponent, selector: "app-show-links", inputs: ["displayShowLinks", "detailedPmJobLinkedList", "selectedWorkorderId", "globaltranslate", "translate", "status"], outputs: ["closeShowLinks"] }, { kind: "component", type: i14.ConfirmDialogContactComponent, selector: "app-confirm-dialog-contact", inputs: ["displayConfirmDialogContact", "startDateTime", "endDateTime", "globaltranslate", "translate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialogContact"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MaintenanceListComponent, decorators: [{
310
- type: Component,
311
- args: [{ selector: 'awf-maintenance-list', providers: [MessageService, ConfirmationService], template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" [paginator]=\"true\" [globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\" [first]=\"first\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"room\">{{translate.maintenanceList.room}}\r\n <p-sortIcon field=\"room\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }} </td>\r\n <td>{{product.room }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'Planned Maintenance'\">{{translate.maintenanceList.typePlanned}}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'QARA'\">{{translate.maintenanceList.typeQARA}}</td>\r\n <td>\r\n <span [class]=\"'product-status status-' + product.status\"\r\n [pTooltip]=\"getStatusTooltip(product.status)\">\r\n {{transformStatus(product.status)}}\r\n </span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList === null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [moreDates]=\"moreDates\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfos]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"] }]
312
- }], ctorParameters: function () { return []; }, propDecorators: { dt: [{
313
- type: ViewChild,
314
- args: ['dt']
315
- }], op: [{
316
- type: ViewChild,
317
- args: ['op']
318
- }], translate: [{
319
- type: Input
320
- }], reasons: [{
321
- type: Input
322
- }], globaltranslate: [{
323
- type: Input
324
- }], maintenanceList: [{
325
- type: Input
326
- }], maintenanceListNotDisplayed: [{
327
- type: Input
328
- }], pmJobList: [{
329
- type: Input
330
- }], isAlreadyScheduled: [{
331
- type: Input
332
- }], displayConfirmedDateInfo: [{
333
- type: Input
334
- }], alternativeDatesList: [{
335
- type: Input
336
- }], emitForUpdate: [{
337
- type: Output
338
- }], emitForAlternativeDates: [{
339
- type: Output
340
- }], sendContactMeEmail: [{
341
- type: Output
342
- }], status: [{
343
- type: Input
344
- }], sendForm: [{
345
- type: Output
346
- }] } });
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEwQ2pDO1FBcENTLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1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Q0FBQyxjQUFjLENBQUM7WUFDN0QsS0FBSyxXQUFXLENBQUMsSUFBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN2RCxLQUFLLFdBQVcsQ0FBQyxTQUFVLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDakUsT0FBUSxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7U0FDN0I7SUFDTCxDQUFDOztzSEEvV1Esd0JBQXdCOzBHQUF4Qix3QkFBd0Isb2tCQUZ0QixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQywrTEMxQnBELDJ6UkF5R0E7NEZEN0VhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSxzQkFBc0IsYUFHckIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7MEVBRy9CLEVBQUU7c0JBQWxCLFNBQVM7dUJBQUMsSUFBSTtnQkFDRSxFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ04sU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEFsdGVybmF0aXZlRGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbHRlcm5hdGl2ZURhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFbWFpbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1haWxUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFBNR3JvdXBlZEpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wTUdyb3VwZWRKb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcbmltcG9ydCB7IFN0aW5nQm9vbGVhbiB9IGZyb20gJy4uLy4uL21vZGVscy9zdGluZ0Jvb2xlYW4nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhd2YtbWFpbnRlbmFuY2UtbGlzdCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWludGVuYW5jZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgnZHQnKSBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdvcCcpIG9wOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIHJlYXNvbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZTogYW55O1xyXG4gICAgQElucHV0KCkgbWFpbnRlbmFuY2VMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdE5vdERpc3BsYXllZDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBwbUpvYkxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgaXNBbHJlYWR5U2NoZWR1bGVkITogQm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlDb25maXJtZWREYXRlSW5mbz1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGFsdGVybmF0aXZlRGF0ZXNMaXN0ITogYW55IDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICBcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBtb3JlRGF0ZXMhOmJvb2xlYW47XHJcbiAgICBkZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgdXBkYXRlUG1TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgc2hvd0RhdGUhOiBib29sZWFuO1xyXG4gICAgbWFpbnRlbmFuY2VTZWxlY3RlZCE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBzdGFydERhdGVUaW1lITogYW55O1xyXG4gICAgZW5kRGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFdvcmtvcmRlcklkITogYW55O1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlITogQWx0ZXJuYXRpdmVEYXRlIDtcclxuICAgIGFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZDogQWx0ZXJuYXRpdmVEYXRlW10gPSBbXTtcclxuICAgIGRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNXaXRoTGlua3MgPSBmYWxzZTtcclxuICAgIGlzUHJvcG9zZWREYXRlID0gdHJ1ZTtcclxuICAgIHBtU2VsZWN0ZWRTdGF0dXMhOnN0cmluZyA7XHJcbiAgICBlbWFpbFR5cGVzITpzdHJpbmdbXTsgXHJcbiAgICBhbHJlYWR5U2NoZWR1bGVkTXNnICE6Ym9vbGVhbjtcclxuICAgIHJlYXNvbkNvbnRhY3Q9XCJcIjtcclxuICAgIGNvbnRhY3RNZVJlcXVlc3QhOkRldGFpbGVkUG1Kb2IgO1xyXG4gICAgZmlyc3QgPSAwO1xyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgIH1cclxuICAgIGFwcGx5RmlsdGVyR2xvYmFsKCRldmVudDogYW55LCBzdHJpbmdWYWw6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZHQ/LmZpbHRlckdsb2JhbChcclxuICAgICAgICAgICAgKCRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXHJcbiAgICAgICAgICAgIHN0cmluZ1ZhbFxyXG4gICAgICAgICk7XHJcbiAgICB9ICAgXHJcbiAgICBzZWxlY3RFbGVtZW50KGVsZW1lbnQ6IERldGFpbGVkUG1Kb2IpIHtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNMaXN0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMgPVtdO1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnBtU2VsZWN0ZWRTdGF0dXMgPSBlbGVtZW50LnN0YXR1cyA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgaWYoZWxlbWVudC5wbUpvYi5ncm91cExpc3QpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmlzV2l0aExpbmtzID0gZWxlbWVudC5wbUpvYi5ncm91cExpc3Q/Lmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya29yZGVySWQgPSBlbGVtZW50LnBtSm9iLndvcmtvcmRlck51bWJlcjtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQgPSBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0FscmVhZHlTY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbHRlcm5hdGl2ZURhdGVzKGVsZW1lbnQucG1Kb2IpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB0aGlzLmdldExpbmtlZFBtSm9iKCk7XHJcbiAgICB9XHJcbiAgICBnZXRBbHRlcm5hdGl2ZURhdGVzKHBtSm9iIDogUG1Kb2IgKSAge1xyXG4gICAgICAgIHRoaXMuZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMuZW1pdChwbUpvYik7XHJcbiAgICB9XHJcbiAgICBnZXRMaW5rZWRQbUpvYigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA9W107XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB0aGUgbGlua2VkIFBNIGluIHRoZSBvdGhlciBtYWludGVuYW5jZSBsaXN0IG5vdCBzZWxlY3RlZFxyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QgJiYgKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QubGVuZ3RoICE9PSB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0Tm90RGlzcGxheWVkLmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnRvVXBkYXRlID0gZmFsc2UgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBjb25maXJtRGlhbG9nKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgIH0gIFxyXG4gICAgY2xvc2VDb25maXJtRGlhbG9nKGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzUHJvcG9zZWREYXRlKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZURhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9wb3NlZERhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ1NDKSA7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DbGllbnRzKSA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0ID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ29udGFjdEZvcm1QbSApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ29udGFjdE1lX0NsaWVudHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNvbnRhY3RNZV9DU0MpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID1TdGluZ0Jvb2xlYW4uWUVTIDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5DYW5jZWxQTV9DU0MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNhbmNlbFBNX0NsaWVudHMpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPVN0aW5nQm9vbGVhbi5ZRVM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLlNlbmROZXdEYXRlc19DU0MpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtlZFBNRm9ybUNvbnRhY3QoKTtcclxuXHJcbiAgICAgICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnQodHJ1ZSkgO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICB1cGRhdGVMaW5rZWRQTUZvcm1Db250YWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdCA9W107XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaCh0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQpO1xyXG4gICAgICAgIGlmKHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoID4wKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9ICBpdGVtLnN0YXR1cyA7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkRGF0ZSA9IGl0ZW0ucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtICB8fHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlYXNvbiA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5yZWFzb247XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWFzb25Db250YWN0ID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnJlYXNvbkNvbnRhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9U3RpbmdCb29sZWFuLllFUyA7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuICAgIH1cclxuICAgIGNsb3NlQ29udGFjdFN1cHBvcnQoZXZlbnQgOmFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9XCJcIjtcclxuXHJcbiAgICB9XHJcbiAgICBwcm9wb3NlQW5vdGhlckRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5pc1Byb3Bvc2VkRGF0ZSA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjb250YWN0U3VwcG9ydChmcm9tT3RoZXJEYXRlIDogYm9vbGVhbikge1xyXG4gICAgIFxyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSBmcm9tT3RoZXJEYXRlID8gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0gOiAgUmVhc29uQ29udGFjdC5Db250YWN0Rm9ybVBtIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7ICBcclxuICAgIH1cclxuICAgIHNob3dMaW5rcyhlbGVtZW50PzphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IHRydWUgO1xyXG4gICAgfVxyXG4gICAgY2xvc2VTaG93TGlua3MoKXtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSBmYWxzZSA7XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbmZpcm1lZERhdGVJbmZvKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhY2NlcHREYXRlKGFsdGVybmF0aXZlRGF0ZXM6IEFsdGVybmF0aXZlRGF0ZVtdKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSBhbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgIH1cclxuICAgIGZpbmREYXRlc1NlbGVjdGVkKCl7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQuZm9yRWFjaCgoYWx0ZXJuYXRpdmVEYXRlOiBBbHRlcm5hdGl2ZURhdGUpID0+IHtcclxuICAgICAgICAgICAgaWYoYWx0ZXJuYXRpdmVEYXRlLnNlbGVjdGVkPT09XCJZZXNcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLmVuZERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnNlbGVjdGVkRGF0ZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjbG9zZUFub3RoZXJEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGV2ZW50PT09ZmFsc2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RTdXBwb3J0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHVwZGF0ZVBtSm9iKCkge1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYodGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKHBNSm9iOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChwTUpvYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuXHJcbiAgICB9XHJcbiAgICBlZGl0UG0oKXtcclxuICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSAgIFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIDtcclxuICAgICAgICB0aGlzLnByZXBhcmVGb3JQb3B1cCgpIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcmVwYXJlRm9yUG9wdXAoKXtcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9PT1cIlllc1wiKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdXBkYXRlUHJvcG9zZWREYXRlKCl7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSBTdGluZ0Jvb2xlYW4uWUVTO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSBTdGluZ0Jvb2xlYW4uWUVTO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVBbHRlcm5hdGl2ZURhdGUoKXtcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHNlbmRDb250YWN0TWVGb3JtKGNvbnRhY3RNZVJlcXVlc3Q6YW55KXtcclxuICAgICAgICB0aGlzLm1vcmVEYXRlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmKCBjb250YWN0TWVSZXF1ZXN0LnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZURhdGVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCA9IGNvbnRhY3RNZVJlcXVlc3QgO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGxBcGlUb1VwZGF0ZSgpe1xyXG4gICAgICAgIGxldCBQbUpvYkxpc3RGb3JVcGRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgUG1Kb2JMaXN0Rm9yVXBkYXRlLnBtSm9iTGlzdCA9IHRoaXMucG1Kb2JMaXN0O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5lbWFpbFR5cGVzID0gdGhpcy5lbWFpbFR5cGVzO1xyXG4gICAgICAgIHRoaXMuZW1pdEZvclVwZGF0ZS5lbWl0KFBtSm9iTGlzdEZvclVwZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNmb3JtU3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk5FVyA6IHJldHVybiB0aGlzLnN0YXR1cy5uZXc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQUNDRVBURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuYWNjZXB0ZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5MYXRlIDogcmV0dXJuIHRoaXMuc3RhdHVzLmxhdGU7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLldBSVRJTkcgOiByZXR1cm4gdGhpcy5zdGF0dXMud2FpdGluZztcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmU7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZDtcclxuICAgICAgICAgICAgZGVmYXVsdCA6IHJldHVybiBcIkVycmV1clwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNUb29sdGlwKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3VG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5DTE9TRUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuY2xvc2VkVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5MYXRlIDogcmV0dXJuIHRoaXMuc3RhdHVzLmxhdGVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlblRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJsZSAjZHQgW3ZhbHVlXT1cIm1haW50ZW5hbmNlTGlzdFwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzdGFja1wiIFtyb3dzXT1cIjEwXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwxMCwyNSw1MF1cIiBbcGFnaW5hdG9yXT1cInRydWVcIiBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cIlsnc3lzdGVtSWQnLCdwbUpvYi5jYXNlSWQnLCdzeXN0ZW1OYW1lJywncG1Kb2Iud29ya29yZGVyTnVtYmVyJywncG1Kb2Iuc3RhcnREYXRlVGltZScsJ3BtSm9iLmVuZERhdGVUaW1lJywncG1Kb2IuY2FzZV90eXBlJywncG1Kb2IuY2FzZV9jYXRlZ29yeScsJ3N0YXR1cyddXCJcclxuICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCIgZGF0YUtleT1cImlkXCIgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlLmNvdW50UGFnZXNcIiBbZmlyc3RdPVwiZmlyc3RcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIChpbnB1dCk9XCJhcHBseUZpbHRlckdsb2JhbCgkZXZlbnQsICdjb250YWlucycpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsdHJhbnNsYXRlLnNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8IS0tIDx0aCBwU29ydGFibGVDb2x1bW49XCJjYXNlSWRcIj5DYXNlIElkIDxwLXNvcnRJY29uIGZpZWxkPVwiY2FzZUlkXCI+PC9wLXNvcnRJY29uPiAtLT5cclxuICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN5c3RlbU5hbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3lzdGVtfX1cclxuICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3lzdGVtTmFtZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJyb29tXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnJvb219fVxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicm9vbVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1JZFwiPlN5c3RlbSBJZFxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3lzdGVtSWRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cIndvcmtvcmRlck51bWJlclwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC53b3JrT3JkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIndvcmtvcmRlck51bWJlclwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXJ0RGF0ZVRpbWVcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhcnREYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhcnREYXRlVGltZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZV90eXBlXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VfdHlwZVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGF0dXNcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc3RhdHVzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN0YXR1c1wiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhdHVzXCIgPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5OYnJMaW5rc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RhdHVzXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IEFjdGlvbjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1wcm9kdWN0IGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj4gICBcclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1OYW1lIH19IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3Qucm9vbSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3Quc3lzdGVtSWQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLndvcmtvcmRlck51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3QucG1Kb2Iuc3RhcnREYXRlVGltZSB8IGRhdGU6ICdkZCBNTU0geXl5eSAnIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5jYXNlVHlwZSA9PT0gJ1BsYW5uZWQgTWFpbnRlbmFuY2UnXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnR5cGVQbGFubmVkfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJwcm9kdWN0LnBtSm9iLmNhc2VUeXBlID09PSAnUUFSQSdcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QudHlwZVFBUkF9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIncHJvZHVjdC1zdGF0dXMgc3RhdHVzLScgKyBwcm9kdWN0LnN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0U3RhdHVzVG9vbHRpcChwcm9kdWN0LnN0YXR1cylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dHJhbnNmb3JtU3RhdHVzKHByb2R1Y3Quc3RhdHVzKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ICE9PSBudWxsIFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0ID09PSBudWxsXCIgKGNsaWNrKT1cInNob3dMaW5rcyhwcm9kdWN0KVwiPiA8c3BhbiBjbGFzcz1cImNpcmNsZWxpbmtlZFwiPnt7cHJvZHVjdC5wbUpvYi5ncm91cExpc3QubGVuZ3RoIH19PC9zcGFuPiA8aSBjbGFzcz1cInBpIHBpLWxpbmtcIiBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbVwiPjwvaT4gPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGxhYmVsPVwiXCIgaWNvbj1cInBpIHBpLWNhbGVuZGFyXCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkXCIgI2FjdHVhbFRhcmdldCAoY2xpY2spPVwic2VsZWN0RWxlbWVudChwcm9kdWN0KVwiIChjbGljayk9XCJvcC50b2dnbGUoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCIoKHByb2R1Y3Quc3RhdHVzID09PSdsYXRlJyAgfHwgcHJvZHVjdC5zdGF0dXMgPT09J2FjY2VwdGVkJykgJiYgIWlzQWxyZWFkeVNjaGVkdWxlZCkgfHwgcHJvZHVjdC5zdGF0dXMgPT09J3dhaXRpbmcnXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic3VtbWFyeVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWQtZmxleCBwLWFpLWNlbnRlciBwLWpjLWJldHdlZW5cIj5cclxuICAgICAgICAgICAge3tnbG9iYWx0cmFuc2xhdGUuY291bnR9fSB7e21haW50ZW5hbmNlTGlzdCA/IG1haW50ZW5hbmNlTGlzdC5sZW5ndGggOiAwIH19IHt7Z2xvYmFsdHJhbnNsYXRlLmVsZW1lbnRzfX0uXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcblxyXG48cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+XHJcbjxwLW92ZXJsYXlQYW5lbCAjb3AgW2Rpc21pc3NhYmxlXT1cInRydWVcIiBbc2hvd0Nsb3NlSWNvbl09XCJmYWxzZVwiIFtzaG93VHJhbnNpdGlvbk9wdGlvbnNdPVwiJzBtcydcIiBbaGlkZVRyYW5zaXRpb25PcHRpb25zXT1cIicwbXMnXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkXCIgaWNvbj1cInBpIHBpLXRodW1icy11cFwiIChjbGljayk9XCJjb25maXJtRGlhbG9nKClcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5jb25maXJtRGF0ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWRcIj5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkICYmIChhbHRlcm5hdGl2ZURhdGVzTGlzdCAhPT0gbnVsbCkgXCIgaWNvbj1cInBpIHBpLWNhbGVuZGFyLXBsdXNcIiAoY2xpY2spPVwicHJvcG9zZUFub3RoZXJEYXRlKClcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5jaG9vc2VBbm90aGVyRGF0ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cIiFpc0FscmVhZHlTY2hlZHVsZWQgJiYgKGFsdGVybmF0aXZlRGF0ZXNMaXN0IT09bnVsbCkgXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1waG9uZVwiIChjbGljayk9XCJjb250YWN0U3VwcG9ydChmYWxzZSlcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5jb250YWN0U3VwcG9yXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiaXNXaXRoTGlua3NcIj5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgaWNvbj1cInBpIHBpLWxpbmtcIiAqbmdJZj1cImlzV2l0aExpbmtzXCIgKGNsaWNrKT1cInNob3dMaW5rcygpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Quc2hvd0xpbmtzXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGhyICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIj5cclxuICAgICAgICA8YnV0dG9uIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgKm5nSWY9XCJpc0FscmVhZHlTY2hlZHVsZWQgJiYgcG1TZWxlY3RlZFN0YXR1cyA9PT0ndmFsaWRhdGVkJ1wiIGljb249XCJwaSBwaS1wZW5jaWxcIiAoY2xpY2spPVwiZWRpdFBtKClcIiBbbGFiZWxdPVwidHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5jYW5jZWxcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC1vdmVybGF5UGFuZWw+XHJcblxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0IFwiID5cclxuICAgIDxhcHAtY29udGFjdC1zdXBwb3J0IFtyZWFzb25Db250YWN0XT1cInJlYXNvbkNvbnRhY3RcIiAoY2xvc2VDb250YWN0U3VwcG9ydCk9XCJjbG9zZUNvbnRhY3RTdXBwb3J0KCRldmVudClcIiAoc2VuZERldGFpbGVkUG0pPVwic2VuZENvbnRhY3RNZUZvcm0oJGV2ZW50KVwiIFtkZXRhaWxlZFBtSm9iXSA9XCJtYWludGVuYW5jZVNlbGVjdGVkXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiAgW3JlYXNvbnNdPVwicmVhc29uc1wiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbnRhY3RTdXBwb3J0XCIgW2Rpc3BsYXljb250YWN0U3VwcG9ydF09XCJkaXNwbGF5Y29udGFjdFN1cHBvcnRcIiBbc2hvd0RhdGVdPVwic2hvd0RhdGVcIiA+PC9hcHAtY29udGFjdC1zdXBwb3J0PlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlDb25maXJtRGlhbG9nXCI+XHJcbiAgICA8YXBwLWNvbmZpcm0tZGlhbG9nICBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgIFtpc1Byb3Bvc2VkRGF0ZV09XCJpc1Byb3Bvc2VkRGF0ZVwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURpYWxvZ1wiXHJcbiAgICAgICAgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybURpYWxvZ109XCJkaXNwbGF5Q29uZmlybURpYWxvZ1wiIChjbG9zZUNvbmZpcm1EaWFsb2cpPVwiY2xvc2VDb25maXJtRGlhbG9nKCRldmVudClcIj5cclxuICAgIDwvYXBwLWNvbmZpcm0tZGlhbG9nPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdFwiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZy1jb250YWN0ICBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIiAgICBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dDb250YWN0XCJcclxuICAgICAgICBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdF09XCJkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RcIiAoY2xvc2VDb25maXJtRGlhbG9nQ29udGFjdCk9XCJjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KCRldmVudClcIj5cclxuICAgIDwvYXBwLWNvbmZpcm0tZGlhbG9nLWNvbnRhY3QgPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlDb25maXJtZWREYXRlSW5mb1wiPlxyXG4gICAgPGFwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbiBbbW9yZURhdGVzXT1cIm1vcmVEYXRlc1wiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGUuY29uZmlybURhdGVJbmZvcm1hdGlvblwiIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvc109XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIiAoY2xvc2VDb25maXJtZWREYXRlSW5mbyk9XCJjbG9zZUNvbmZpcm1lZERhdGVJbmZvKClcIj48L2FwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5QW5vdGhlckRhdGUgJiYgYWx0ZXJuYXRpdmVEYXRlc0xpc3RcIj5cclxuICAgIDxhcHAtY2hvb3NlLWFub3RoZXItZGF0ZSBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNob29zZUFub3RoZXJEYXRlXCIgW2FsdGVybmF0aXZlRGF0ZXNMaXN0XT1cImFsdGVybmF0aXZlRGF0ZXNMaXN0XCIgW2Rpc3BsYXlBbm90aGVyRGF0ZV09XCJkaXNwbGF5QW5vdGhlckRhdGVcIiAoY2xvc2VBbm90aGVyRGF0ZSk9XCJjbG9zZUFub3RoZXJEYXRlKCRldmVudClcIiAoYWNjZXB0RGF0ZSk9XCJhY2NlcHREYXRlKCRldmVudClcIj5cclxuICAgIDwvYXBwLWNob29zZS1hbm90aGVyLWRhdGU+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheVNob3dMaW5rcyAmJiBzZWxlY3RlZFdvcmtvcmRlcklkXCI+XHJcbiAgICA8YXBwLXNob3ctbGlua3MgW3N0YXR1c109XCJzdGF0dXNcIiBbc2VsZWN0ZWRXb3Jrb3JkZXJJZF09XCJzZWxlY3RlZFdvcmtvcmRlcklkXCIgW3RyYW5zbGF0ZV09XCJ0cmFuc2xhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFtkaXNwbGF5U2hvd0xpbmtzXT1cImRpc3BsYXlTaG93TGlua3NcIiAoY2xvc2VTaG93TGlua3MpPVwiY2xvc2VTaG93TGlua3MoKVwiIFtkZXRhaWxlZFBtSm9iTGlua2VkTGlzdF09XCJkZXRhaWxlZFBtSm9iTGlua2VkTGlzdFwiPjwvYXBwLXNob3ctbGlua3M+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { RouterModule } from '@angular/router';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
5
- const routes = [];
6
- export class SharedRoutingModule {
7
- }
8
- SharedRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- SharedRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
10
- SharedRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- imports: [RouterModule.forChild(routes)],
15
- exports: [RouterModule]
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXdmLXRlc3QtbGliL3NyYy9saWIvc2hhcmVkL3NoYXJlZC1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXZELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQztBQU0xQixNQUFNLE9BQU8sbUJBQW1COztpSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsd0NBRnBCLFlBQVk7a0hBRVgsbUJBQW1CLFlBSHBCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7NEZBRVgsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRSb3V0aW5nTW9kdWxlIHsgfVxyXG4iXX0=