@hmcts/ccpay-web-component 4.0.0-beta57 → 4.0.0-beta601

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 (208) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +6749 -2538
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +33 -26
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +832 -135
  7. package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +315 -310
  8. package/esm2015/lib/components/card-details/card-details.component.js +22 -57
  9. package/esm2015/lib/components/case-transactions/case-transactions.component.js +942 -349
  10. package/esm2015/lib/components/error-banner/error-banner.component.js +5 -17
  11. package/esm2015/lib/components/fee-summary/fee-summary.component.js +262 -273
  12. package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +137 -156
  13. package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +178 -177
  14. package/esm2015/lib/components/page-not-found.component.js +3 -4
  15. package/esm2015/lib/components/payment-list/payment-list.component.js +22 -80
  16. package/esm2015/lib/components/payment-view/payment-view.component.js +333 -127
  17. package/esm2015/lib/components/pba-details/pba-details.component.js +5 -39
  18. package/esm2015/lib/components/process-refund/process-refund.component.js +381 -0
  19. package/esm2015/lib/components/processed-payments/processed-payments.component.js +13 -41
  20. package/esm2015/lib/components/refund-list/refund-list.component.js +140 -0
  21. package/esm2015/lib/components/refund-status/refund-status.component.js +507 -0
  22. package/esm2015/lib/components/refunds/refunds.component.js +23 -0
  23. package/esm2015/lib/components/reports/reports.component.js +90 -106
  24. package/esm2015/lib/components/status-history/status-history.component.js +28 -35
  25. package/esm2015/lib/components/table/table.component.js +172 -0
  26. package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +167 -90
  27. package/esm2015/lib/interfaces/AddRemissionRequest.js +6 -7
  28. package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +21 -0
  29. package/esm2015/lib/interfaces/AllocatePaymentRequest.js +11 -9
  30. package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
  31. package/esm2015/lib/interfaces/IBSPayments.js +38 -35
  32. package/esm2015/lib/interfaces/ICardDetails.js +14 -13
  33. package/esm2015/lib/interfaces/IFee.js +44 -29
  34. package/esm2015/lib/interfaces/IOrderReferenceFee.js +25 -0
  35. package/esm2015/lib/interfaces/IPatchRefundAction.js +15 -0
  36. package/esm2015/lib/interfaces/IPayment.js +56 -55
  37. package/esm2015/lib/interfaces/IPaymentGroup.js +12 -11
  38. package/esm2015/lib/interfaces/IPaymentStatus.js +2 -3
  39. package/esm2015/lib/interfaces/IPaymentView.js +17 -0
  40. package/esm2015/lib/interfaces/IPayments.js +6 -5
  41. package/esm2015/lib/interfaces/IRefundAction.js +15 -0
  42. package/esm2015/lib/interfaces/IRefundList.js +29 -0
  43. package/esm2015/lib/interfaces/IRefundReasons.js +17 -0
  44. package/esm2015/lib/interfaces/IRefundRejectReason.js +15 -0
  45. package/esm2015/lib/interfaces/IRefundStatus.js +23 -0
  46. package/esm2015/lib/interfaces/IRefundStatusHistory.js +15 -0
  47. package/esm2015/lib/interfaces/IRemission.js +18 -17
  48. package/esm2015/lib/interfaces/IResubmitRefundRequest.js +21 -0
  49. package/esm2015/lib/interfaces/IStatusHistories.js +12 -11
  50. package/esm2015/lib/interfaces/IStatusHistory.js +14 -13
  51. package/esm2015/lib/interfaces/IssueRefundRequest.js +25 -0
  52. package/esm2015/lib/interfaces/PayhubAntennaRequest.js +28 -0
  53. package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +7 -12
  54. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +17 -0
  55. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +21 -0
  56. package/esm2015/lib/interfaces/RefundsRequest.js +21 -0
  57. package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
  58. package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
  59. package/esm2015/lib/payment-lib.component.js +109 -18
  60. package/esm2015/lib/payment-lib.module.js +31 -6
  61. package/esm2015/lib/payment-lib.service.js +18 -4
  62. package/esm2015/lib/pipes/capitalize.pipe.js +24 -0
  63. package/esm2015/lib/pipes/ccd-hyphens.pipe.js +3 -4
  64. package/esm2015/lib/pipes/key-value.pipe.js +3 -4
  65. package/esm2015/lib/pipes/sanitize-html.pipe.js +7 -5
  66. package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +52 -14
  67. package/esm2015/lib/services/card-details/card-details.service.js +19 -8
  68. package/esm2015/lib/services/case-transactions/case-transactions.service.js +19 -8
  69. package/esm2015/lib/services/orderslist.service.js +211 -0
  70. package/esm2015/lib/services/payment-list/payment-list.service.js +19 -8
  71. package/esm2015/lib/services/payment-view/payment-view.service.js +102 -14
  72. package/esm2015/lib/services/refunds/refunds.service.js +196 -0
  73. package/esm2015/lib/services/shared/error-handler.service.js +24 -4
  74. package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +17 -8
  75. package/esm2015/lib/services/shared/logger/console-logger.service.js +7 -5
  76. package/esm2015/lib/services/shared/logger/logger.service.js +7 -5
  77. package/esm2015/lib/services/status-history/status-history.service.js +19 -8
  78. package/esm2015/lib/services/xl-file/xl-file.service.js +56 -51
  79. package/esm2015/public_api.js +1 -2
  80. package/esm5/hmcts-ccpay-web-component.js +33 -26
  81. package/esm5/lib/components/add-remission/add-remission.component.js +900 -44
  82. package/esm5/lib/components/allocate-payments/allocate-payments.component.js +328 -107
  83. package/esm5/lib/components/card-details/card-details.component.js +22 -9
  84. package/esm5/lib/components/case-transactions/case-transactions.component.js +1021 -109
  85. package/esm5/lib/components/error-banner/error-banner.component.js +3 -4
  86. package/esm5/lib/components/fee-summary/fee-summary.component.js +281 -101
  87. package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +136 -45
  88. package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +179 -65
  89. package/esm5/lib/components/page-not-found.component.js +3 -4
  90. package/esm5/lib/components/payment-list/payment-list.component.js +21 -8
  91. package/esm5/lib/components/payment-view/payment-view.component.js +393 -17
  92. package/esm5/lib/components/pba-details/pba-details.component.js +5 -6
  93. package/esm5/lib/components/process-refund/process-refund.component.js +457 -0
  94. package/esm5/lib/components/processed-payments/processed-payments.component.js +12 -7
  95. package/esm5/lib/components/refund-list/refund-list.component.js +143 -0
  96. package/esm5/lib/components/refund-status/refund-status.component.js +566 -0
  97. package/esm5/lib/components/refunds/refunds.component.js +29 -0
  98. package/esm5/lib/components/reports/reports.component.js +91 -25
  99. package/esm5/lib/components/status-history/status-history.component.js +27 -9
  100. package/esm5/lib/components/table/table.component.js +204 -0
  101. package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +177 -26
  102. package/esm5/lib/interfaces/AddRemissionRequest.js +5 -6
  103. package/esm5/lib/interfaces/AddRetroRemissionRequest.js +19 -0
  104. package/esm5/lib/interfaces/AllocatePaymentRequest.js +9 -8
  105. package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
  106. package/esm5/lib/interfaces/IBSPayments.js +38 -35
  107. package/esm5/lib/interfaces/ICardDetails.js +14 -13
  108. package/esm5/lib/interfaces/IFee.js +44 -29
  109. package/esm5/lib/interfaces/IOrderReferenceFee.js +25 -0
  110. package/esm5/lib/interfaces/IPatchRefundAction.js +15 -0
  111. package/esm5/lib/interfaces/IPayment.js +56 -55
  112. package/esm5/lib/interfaces/IPaymentGroup.js +12 -11
  113. package/esm5/lib/interfaces/IPaymentStatus.js +2 -3
  114. package/esm5/lib/interfaces/IPaymentView.js +17 -0
  115. package/esm5/lib/interfaces/IPayments.js +6 -5
  116. package/esm5/lib/interfaces/IRefundAction.js +15 -0
  117. package/esm5/lib/interfaces/IRefundList.js +29 -0
  118. package/esm5/lib/interfaces/IRefundReasons.js +17 -0
  119. package/esm5/lib/interfaces/IRefundRejectReason.js +15 -0
  120. package/esm5/lib/interfaces/IRefundStatus.js +23 -0
  121. package/esm5/lib/interfaces/IRefundStatusHistory.js +15 -0
  122. package/esm5/lib/interfaces/IRemission.js +18 -17
  123. package/esm5/lib/interfaces/IResubmitRefundRequest.js +19 -0
  124. package/esm5/lib/interfaces/IStatusHistories.js +12 -11
  125. package/esm5/lib/interfaces/IStatusHistory.js +14 -13
  126. package/esm5/lib/interfaces/IssueRefundRequest.js +22 -0
  127. package/esm5/lib/interfaces/PayhubAntennaRequest.js +25 -0
  128. package/esm5/lib/interfaces/PaymentToPayhubRequest.js +6 -10
  129. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +16 -0
  130. package/esm5/lib/interfaces/PostRefundRetroRemission.js +19 -0
  131. package/esm5/lib/interfaces/RefundsRequest.js +19 -0
  132. package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
  133. package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
  134. package/esm5/lib/payment-lib.component.js +81 -12
  135. package/esm5/lib/payment-lib.module.js +31 -6
  136. package/esm5/lib/payment-lib.service.js +25 -4
  137. package/esm5/lib/pipes/capitalize.pipe.js +32 -0
  138. package/esm5/lib/pipes/ccd-hyphens.pipe.js +3 -4
  139. package/esm5/lib/pipes/key-value.pipe.js +3 -4
  140. package/esm5/lib/pipes/sanitize-html.pipe.js +7 -5
  141. package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +61 -14
  142. package/esm5/lib/services/card-details/card-details.service.js +19 -8
  143. package/esm5/lib/services/case-transactions/case-transactions.service.js +19 -8
  144. package/esm5/lib/services/orderslist.service.js +276 -0
  145. package/esm5/lib/services/payment-list/payment-list.service.js +19 -8
  146. package/esm5/lib/services/payment-view/payment-view.service.js +142 -16
  147. package/esm5/lib/services/refunds/refunds.service.js +236 -0
  148. package/esm5/lib/services/shared/error-handler.service.js +24 -4
  149. package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +17 -8
  150. package/esm5/lib/services/shared/logger/console-logger.service.js +7 -5
  151. package/esm5/lib/services/shared/logger/logger.service.js +7 -5
  152. package/esm5/lib/services/status-history/status-history.service.js +19 -8
  153. package/esm5/lib/services/xl-file/xl-file.service.js +62 -51
  154. package/esm5/public_api.js +1 -2
  155. package/fesm2015/hmcts-ccpay-web-component.js +4606 -2199
  156. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  157. package/fesm5/hmcts-ccpay-web-component.js +6937 -2573
  158. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  159. package/hmcts-ccpay-web-component.d.ts +31 -23
  160. package/hmcts-ccpay-web-component.metadata.json +1 -1
  161. package/lib/components/add-remission/add-remission.component.d.ts +77 -3
  162. package/lib/components/allocate-payments/allocate-payments.component.d.ts +26 -9
  163. package/lib/components/case-transactions/case-transactions.component.d.ts +69 -5
  164. package/lib/components/fee-summary/fee-summary.component.d.ts +16 -4
  165. package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +2 -0
  166. package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +4 -0
  167. package/lib/components/payment-view/payment-view.component.d.ts +39 -1
  168. package/lib/components/process-refund/process-refund.component.d.ts +53 -0
  169. package/lib/components/refund-list/refund-list.component.d.ts +23 -0
  170. package/lib/components/refund-status/refund-status.component.d.ts +68 -0
  171. package/lib/components/refunds/refunds.component.d.ts +5 -0
  172. package/lib/components/reports/reports.component.d.ts +4 -1
  173. package/lib/components/status-history/status-history.component.d.ts +1 -0
  174. package/lib/components/table/table.component.d.ts +35 -0
  175. package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +24 -4
  176. package/lib/interfaces/AddRemissionRequest.d.ts +2 -2
  177. package/lib/interfaces/AddRetroRemissionRequest.d.ts +5 -0
  178. package/lib/interfaces/AllocatePaymentRequest.d.ts +16 -3
  179. package/lib/interfaces/IBSPayments.d.ts +1 -0
  180. package/lib/interfaces/IFee.d.ts +7 -0
  181. package/lib/interfaces/IOrderReferenceFee.d.ts +9 -0
  182. package/lib/interfaces/IPatchRefundAction.d.ts +4 -0
  183. package/lib/interfaces/IPaymentView.d.ts +5 -0
  184. package/lib/interfaces/IRefundAction.d.ts +4 -0
  185. package/lib/interfaces/IRefundList.d.ts +14 -0
  186. package/lib/interfaces/IRefundReasons.d.ts +5 -0
  187. package/lib/interfaces/IRefundRejectReason.d.ts +4 -0
  188. package/lib/interfaces/IRefundStatus.d.ts +8 -0
  189. package/lib/interfaces/IRefundStatusHistory.d.ts +5 -0
  190. package/lib/interfaces/IResubmitRefundRequest.d.ts +5 -0
  191. package/lib/interfaces/IssueRefundRequest.d.ts +6 -0
  192. package/lib/interfaces/PayhubAntennaRequest.d.ts +7 -0
  193. package/lib/interfaces/PaymentToPayhubRequest.d.ts +2 -3
  194. package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +4 -0
  195. package/lib/interfaces/PostRefundRetroRemission.d.ts +5 -0
  196. package/lib/interfaces/RefundsRequest.d.ts +5 -0
  197. package/lib/payment-lib.component.d.ts +27 -3
  198. package/lib/payment-lib.service.d.ts +3 -0
  199. package/lib/pipes/capitalize.pipe.d.ts +5 -0
  200. package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +2 -0
  201. package/lib/services/orderslist.service.d.ts +40 -0
  202. package/lib/services/payment-view/payment-view.service.d.ts +17 -3
  203. package/lib/services/refunds/refunds.service.d.ts +30 -0
  204. package/lib/services/xl-file/xl-file.service.d.ts +6 -6
  205. package/package.json +1 -1
  206. package/esm2015/lib/interfaces/IPaymentList.js +0 -49
  207. package/esm5/lib/interfaces/IPaymentList.js +0 -48
  208. package/lib/interfaces/IPaymentList.d.ts +0 -15
@@ -1,36 +1,38 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
+ import * as tslib_1 from "tslib";
5
6
  import { Component, Input } from '@angular/core';
6
- import { IPaymentList } from '../../interfaces/IPaymentList';
7
- import { CaseTransactionsService } from '../../services/case-transactions/case-transactions.service';
8
7
  import { PaymentViewService } from '../../services/payment-view/payment-view.service';
9
8
  import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
10
9
  import { PaymentLibComponent } from '../../payment-lib.component';
11
10
  import { PaymentToPayhubRequest } from '../../interfaces/PaymentToPayhubRequest';
11
+ import { PayhubAntennaRequest } from '../../interfaces/PayhubAntennaRequest';
12
12
  import { Router } from '@angular/router';
13
13
  import { Location } from '@angular/common';
14
+ import { OrderslistService } from '../../services/orderslist.service';
14
15
  /** @type {?} */
15
16
  var BS_ENABLE_FLAG = 'bulk-scan-enabling-fe';
16
17
  var FeeSummaryComponent = /** @class */ (function () {
17
- function FeeSummaryComponent(router, bulkScaningPaymentService, location, paymentViewService, caseTransactionsService, paymentLibComponent) {
18
+ function FeeSummaryComponent(router, bulkScaningPaymentService, location, paymentViewService, paymentLibComponent, OrderslistService) {
18
19
  this.router = router;
19
20
  this.bulkScaningPaymentService = bulkScaningPaymentService;
20
21
  this.location = location;
21
22
  this.paymentViewService = paymentViewService;
22
- this.caseTransactionsService = caseTransactionsService;
23
23
  this.paymentLibComponent = paymentLibComponent;
24
- this.paymentGroup = [];
24
+ this.OrderslistService = OrderslistService;
25
25
  this.viewStatus = 'main';
26
26
  this.service = "";
27
+ this.platForm = "";
27
28
  this.isBackButtonEnable = true;
28
- this.outStandingAmount = 0.00;
29
29
  this.isFeeAmountZero = false;
30
- this.totalAfterRemission = 0.00;
30
+ this.totalAfterRemission = 0;
31
31
  this.isConfirmationBtnDisabled = false;
32
32
  this.isRemoveBtnDisabled = false;
33
33
  this.isPaymentExist = false;
34
+ this.isRemissionsExist = false;
35
+ this.isRemissionsMatch = false;
34
36
  }
35
37
  ;
36
38
  /**
@@ -42,15 +44,39 @@ var FeeSummaryComponent = /** @class */ (function () {
42
44
  function () {
43
45
  var _this = this;
44
46
  this.viewStatus = 'main';
47
+ this.caseType = this.paymentLibComponent.CASETYPE;
45
48
  this.bsPaymentDcnNumber = this.paymentLibComponent.bspaymentdcn;
46
49
  this.selectedOption = this.paymentLibComponent.SELECTED_OPTION.toLocaleLowerCase();
47
- this.paymentViewService.getBSfeature().subscribe(function (features) {
50
+ this.isStrategicFixEnable = this.paymentLibComponent.ISSFENABLE;
51
+ this.OrderslistService.setCaseType(this.paymentLibComponent.CASETYPE);
52
+ if ((!this.isOldPcipalOff && this.isNewPcipalOff)) {
53
+ this.platForm = '8x8';
54
+ }
55
+ else if ((this.isOldPcipalOff && !this.isNewPcipalOff)) {
56
+ this.platForm = 'Antenna';
57
+ }
58
+ else if ((this.isOldPcipalOff && this.isNewPcipalOff)) {
59
+ this.platForm = '8x8';
60
+ }
61
+ this.paymentViewService.getBSfeature().subscribe((/**
62
+ * @param {?} features
63
+ * @return {?}
64
+ */
65
+ function (features) {
48
66
  /** @type {?} */
49
- var result = JSON.parse(features).filter(function (feature) { return feature.uid === BS_ENABLE_FLAG; });
67
+ var result = JSON.parse(features).filter((/**
68
+ * @param {?} feature
69
+ * @return {?}
70
+ */
71
+ function (feature) { return feature.uid === BS_ENABLE_FLAG; }));
50
72
  _this.paymentLibComponent.ISBSENABLE = result[0] ? result[0].enable : false;
51
- }, function (err) {
73
+ }), (/**
74
+ * @param {?} err
75
+ * @return {?}
76
+ */
77
+ function (err) {
52
78
  _this.paymentLibComponent.ISBSENABLE = false;
53
- });
79
+ }));
54
80
  if (this.bsPaymentDcnNumber) {
55
81
  this.getUnassignedPaymentlist();
56
82
  }
@@ -65,25 +91,70 @@ var FeeSummaryComponent = /** @class */ (function () {
65
91
  function () {
66
92
  var _this = this;
67
93
  if (this.selectedOption === 'dcn') {
68
- this.bulkScaningPaymentService.getBSPaymentsByDCN(this.paymentLibComponent.DCN_NUMBER).subscribe(function (unassignedPayments) {
94
+ this.bulkScaningPaymentService.getBSPaymentsByDCN(this.paymentLibComponent.DCN_NUMBER).subscribe((/**
95
+ * @param {?} unassignedPayments
96
+ * @return {?}
97
+ */
98
+ function (unassignedPayments) {
69
99
  if (unassignedPayments['data'].payments) {
70
100
  _this.service = unassignedPayments['data'].responsible_service_id;
71
101
  }
72
102
  else {
73
103
  _this.upPaymentErrorMessage = 'error';
74
104
  }
75
- }, function (error) { return _this.upPaymentErrorMessage = error; });
105
+ }), (/**
106
+ * @param {?} error
107
+ * @return {?}
108
+ */
109
+ function (error) { return _this.upPaymentErrorMessage = error; }));
76
110
  }
77
111
  else {
78
- this.bulkScaningPaymentService.getBSPaymentsByCCD(this.ccdCaseNumber).subscribe(function (unassignedPayments) {
112
+ this.bulkScaningPaymentService.getBSPaymentsByCCD(this.ccdCaseNumber).subscribe((/**
113
+ * @param {?} unassignedPayments
114
+ * @return {?}
115
+ */
116
+ function (unassignedPayments) {
79
117
  if (unassignedPayments['data'].payments) {
80
118
  _this.service = unassignedPayments['data'].responsible_service_id;
81
119
  }
82
120
  else {
83
121
  _this.upPaymentErrorMessage = 'error';
84
122
  }
85
- }, function (error) { return _this.upPaymentErrorMessage = error; });
123
+ }), (/**
124
+ * @param {?} error
125
+ * @return {?}
126
+ */
127
+ function (error) { return _this.upPaymentErrorMessage = error; }));
128
+ }
129
+ };
130
+ /**
131
+ * @param {?} feeCode
132
+ * @return {?}
133
+ */
134
+ FeeSummaryComponent.prototype.getRemissionByFeeCode = /**
135
+ * @param {?} feeCode
136
+ * @return {?}
137
+ */
138
+ function (feeCode) {
139
+ var e_1, _a;
140
+ if (this.paymentGroup && this.paymentGroup.remissions && this.paymentGroup.remissions.length > 0) {
141
+ try {
142
+ for (var _b = tslib_1.__values(this.paymentGroup.remissions), _c = _b.next(); !_c.done; _c = _b.next()) {
143
+ var remission = _c.value;
144
+ if (remission.fee_code === feeCode) {
145
+ return remission;
146
+ }
147
+ }
148
+ }
149
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
150
+ finally {
151
+ try {
152
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
153
+ }
154
+ finally { if (e_1) throw e_1.error; }
155
+ }
86
156
  }
157
+ return null;
87
158
  };
88
159
  /**
89
160
  * @param {?} fee
@@ -94,10 +165,8 @@ var FeeSummaryComponent = /** @class */ (function () {
94
165
  * @return {?}
95
166
  */
96
167
  function (fee) {
97
- if (this.service) {
98
- this.currentFee = fee;
99
- this.viewStatus = 'add_remission';
100
- }
168
+ this.currentFee = fee;
169
+ this.viewStatus = 'add_remission';
101
170
  };
102
171
  /**
103
172
  * @return {?}
@@ -107,37 +176,50 @@ var FeeSummaryComponent = /** @class */ (function () {
107
176
  */
108
177
  function () {
109
178
  var _this = this;
110
- this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(function (paymentGroups) {
111
- console.log(paymentGroups['payment_groups']);
112
- if (paymentGroups['payment_groups'] && paymentGroups['payment_groups'].length > 0) {
113
- paymentGroups['payment_groups'].forEach(function (paymentGroup) {
114
- if (paymentGroup.fees) {
115
- paymentGroup.fees.forEach(function (fee) {
116
- if (fee.date_created) {
117
- _this.totalAfterRemission = _this.totalAfterRemission + fee.net_amount;
118
- /** @type {?} */
119
- var allocated_amount = fee.allocated_amount ? fee.allocated_amount : 0.00;
120
- _this.outStandingAmount = _this.outStandingAmount + (fee.net_amount - allocated_amount);
121
- if (fee.calculated_amount === 0) {
122
- _this.isFeeAmountZero = true;
123
- }
124
- fee.isFeeAmountZero = _this.isFeeAmountZero;
125
- fee.isPaymentExist = paymentGroup.payments ? paymentGroup.payments.length > 0 : false;
126
- if (paymentGroup.remissions) {
127
- paymentGroup.remissions.forEach(function (remission) {
128
- if (remission.fee_code === fee.fee.code) {
129
- fee.remission = remission;
130
- }
131
- });
132
- }
133
- _this.paymentGroup.push(fee);
134
- }
135
- });
179
+ /** @type {?} */
180
+ var fees = [];
181
+ this.paymentViewService.getPaymentGroupDetails(this.paymentGroupRef).subscribe((/**
182
+ * @param {?} paymentGroup
183
+ * @return {?}
184
+ */
185
+ function (paymentGroup) {
186
+ _this.paymentGroup = paymentGroup;
187
+ _this.isPaymentExist = paymentGroup.payments ? paymentGroup.payments.length > 0 : false;
188
+ _this.isRemissionsExist = paymentGroup.remissions ? paymentGroup.remissions.length > 0 : false;
189
+ if (paymentGroup.fees) {
190
+ paymentGroup.fees.forEach((/**
191
+ * @param {?} fee
192
+ * @return {?}
193
+ */
194
+ function (fee) {
195
+ _this.totalAfterRemission = _this.totalAfterRemission + fee.net_amount;
196
+ if (fee.calculated_amount === 0) {
197
+ _this.isFeeAmountZero = true;
198
+ }
199
+ _this.isRemissionsMatch = false;
200
+ paymentGroup.remissions.forEach((/**
201
+ * @param {?} rem
202
+ * @return {?}
203
+ */
204
+ function (rem) {
205
+ if (rem.fee_code === fee.code) {
206
+ _this.isRemissionsMatch = true;
207
+ fee['remissions'] = rem;
208
+ fees.push(fee);
209
+ }
210
+ }));
211
+ if (!_this.isRemissionsMatch) {
212
+ fees.push(fee);
136
213
  }
137
- });
214
+ }));
215
+ paymentGroup.fees = fees;
138
216
  }
139
- console.log(_this.paymentGroup, _this.totalAfterRemission, _this.outStandingAmount);
140
- }, function (error) { return _this.errorMessage = error; });
217
+ _this.outStandingAmount = _this.bulkScaningPaymentService.calculateOutStandingAmount(paymentGroup);
218
+ }), (/**
219
+ * @param {?} error
220
+ * @return {?}
221
+ */
222
+ function (error) { return _this.errorMessage = error; }));
141
223
  };
142
224
  /**
143
225
  * @param {?} fee
@@ -163,7 +245,11 @@ var FeeSummaryComponent = /** @class */ (function () {
163
245
  function (fee) {
164
246
  var _this = this;
165
247
  this.isRemoveBtnDisabled = true;
166
- this.paymentViewService.deleteFeeFromPaymentGroup(fee).subscribe(function (success) {
248
+ this.paymentViewService.deleteFeeFromPaymentGroup(fee).subscribe((/**
249
+ * @param {?} success
250
+ * @return {?}
251
+ */
252
+ function (success) {
167
253
  if (_this.paymentGroup.fees && _this.paymentGroup.fees.length > 1) {
168
254
  _this.totalAfterRemission = 0;
169
255
  _this.getPaymentGroup();
@@ -171,10 +257,14 @@ var FeeSummaryComponent = /** @class */ (function () {
171
257
  return;
172
258
  }
173
259
  _this.loadCaseTransactionPage();
174
- }, function (error) {
260
+ }), (/**
261
+ * @param {?} error
262
+ * @return {?}
263
+ */
264
+ function (error) {
175
265
  _this.errorMessage = error;
176
266
  _this.isRemoveBtnDisabled = false;
177
- });
267
+ }));
178
268
  };
179
269
  /**
180
270
  * @return {?}
@@ -186,13 +276,37 @@ var FeeSummaryComponent = /** @class */ (function () {
186
276
  var _this = this;
187
277
  this.paymentLibComponent.TAKEPAYMENT = true;
188
278
  this.paymentLibComponent.viewName = 'case-transactions';
189
- this.paymentViewService.getBSfeature().subscribe(function (features) {
279
+ this.paymentViewService.getBSfeature().subscribe((/**
280
+ * @param {?} features
281
+ * @return {?}
282
+ */
283
+ function (features) {
190
284
  /** @type {?} */
191
- var result = JSON.parse(features).filter(function (feature) { return feature.uid === BS_ENABLE_FLAG; });
285
+ var result = JSON.parse(features).filter((/**
286
+ * @param {?} feature
287
+ * @return {?}
288
+ */
289
+ function (feature) { return feature.uid === BS_ENABLE_FLAG; }));
192
290
  _this.paymentLibComponent.ISBSENABLE = result[0] ? result[0].enable : false;
193
- }, function (err) {
291
+ }), (/**
292
+ * @param {?} err
293
+ * @return {?}
294
+ */
295
+ function (err) {
194
296
  _this.paymentLibComponent.ISBSENABLE = false;
195
- });
297
+ }));
298
+ /** @type {?} */
299
+ var partUrl = "selectedOption=" + this.paymentLibComponent.SELECTED_OPTION;
300
+ partUrl += this.bsPaymentDcnNumber ? "&dcn=" + this.bsPaymentDcnNumber : '';
301
+ partUrl += this.paymentLibComponent.ISBSENABLE ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
302
+ partUrl += this.paymentLibComponent.ISTURNOFF ? '&isTurnOff=Enable' : '&isTurnOff=Disable';
303
+ partUrl += this.paymentLibComponent.ISSFENABLE ? '&isStFixEnable=Enable' : '&isStFixEnable=Disable';
304
+ partUrl += "&caseType=" + this.paymentLibComponent.CASETYPE;
305
+ partUrl += this.isNewPcipalOff ? '&isNewPcipalOff=Enable' : '&isNewPcipalOff=Disable';
306
+ partUrl += this.isOldPcipalOff ? '&isOldPcipalOff=Enable' : '&isOldPcipalOff=Disable';
307
+ /** @type {?} */
308
+ var url = "/payment-history/" + this.ccdCaseNumber + "?view=case-transactions&takePayment=true&" + partUrl;
309
+ this.router.navigateByUrl(url);
196
310
  };
197
311
  /**
198
312
  * @return {?}
@@ -216,15 +330,19 @@ var FeeSummaryComponent = /** @class */ (function () {
216
330
  function (event, page) {
217
331
  event.preventDefault();
218
332
  /** @type {?} */
219
- var dcn = this.bsPaymentDcnNumber ? "&dcn=" + this.bsPaymentDcnNumber : '';
220
- /** @type {?} */
221
- var ISBSenable = this.paymentLibComponent.ISBSENABLE ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
333
+ var partUrl = this.bsPaymentDcnNumber ? "&dcn=" + this.bsPaymentDcnNumber : '';
334
+ partUrl += this.paymentLibComponent.ISBSENABLE ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
335
+ partUrl += this.paymentLibComponent.ISTURNOFF ? '&isTurnOff=Enable' : '&isTurnOff=Disable';
336
+ partUrl += this.paymentLibComponent.ISSFENABLE ? '&isStFixEnable=Enable' : '&isStFixEnable=Disable';
337
+ partUrl += "&caseType=" + this.paymentLibComponent.CASETYPE;
338
+ partUrl += this.isNewPcipalOff ? '&isNewPcipalOff=Enable' : '&isNewPcipalOff=Disable';
339
+ partUrl += this.isOldPcipalOff ? '&isOldPcipalOff=Enable' : '&isOldPcipalOff=Disable';
222
340
  if (this.viewStatus === 'feeRemovalConfirmation' || this.viewStatus === 'add_remission') {
223
341
  this.viewStatus = 'main';
224
342
  return;
225
343
  }
226
344
  /** @type {?} */
227
- var url = "/fee-search?ccdCaseNumber=" + this.ccdCaseNumber + "&selectedOption=" + this.paymentLibComponent.SELECTED_OPTION + "&paymentGroupRef=" + this.paymentGroupRef + dcn + ISBSenable;
345
+ var url = "/fee-search?ccdCaseNumber=" + this.ccdCaseNumber + "&selectedOption=" + this.paymentLibComponent.SELECTED_OPTION + "&paymentGroupRef=" + this.paymentGroupRef + partUrl;
228
346
  this.router.navigateByUrl(url);
229
347
  };
230
348
  /**
@@ -237,34 +355,47 @@ var FeeSummaryComponent = /** @class */ (function () {
237
355
  var _this = this;
238
356
  this.isConfirmationBtnDisabled = true;
239
357
  /** @type {?} */
240
- var seriveName = this.service === 'AA07' ? 'DIVORCE' : this.service === 'AA08' ? 'PROBATE' : 'FPL';
241
- /** @type {?} */
242
- var requestBody = new PaymentToPayhubRequest(this.ccdCaseNumber, this.outStandingAmount, this.service, seriveName);
358
+ var requestBody = new PaymentToPayhubRequest(this.ccdCaseNumber, this.outStandingAmount, this.caseType);
243
359
  /** @type {?} */
244
- var res = new IPaymentList([this.outStandingAmount, this.ccdCaseNumber, this.ccdCaseNumber, this.paymentGroup, this.service, seriveName]);
245
- this.paymentViewService.postPaymentListToPayHub(res).subscribe(function (response) {
246
- _this.location.go("payment-history?view=fee-summary");
247
- _this.payhubHtml = response;
248
- _this.viewStatus = 'payhub_view';
249
- _this.isBackButtonEnable = false;
250
- }, function (error) {
251
- _this.errorMessage = error;
252
- _this.isConfirmationBtnDisabled = false;
253
- _this.router.navigateByUrl('/pci-pal-failure');
254
- });
255
- // this.paymentViewService.postPaymentToPayHub(requestBody, this.paymentGroupRef).subscribe(
256
- // response => {
257
- // this.location.go(`payment-history?view=fee-summary`);
258
- // this.payhubHtml = response;
259
- // this.viewStatus = 'payhub_view';
260
- // this.isBackButtonEnable=false;
261
- // },
262
- // (error: any) => {
263
- // this.errorMessage = error;
264
- // this.isConfirmationBtnDisabled = false;
265
- // this.router.navigateByUrl('/pci-pal-failure');
266
- // }
267
- // );
360
+ var antennaReqBody = new PayhubAntennaRequest(this.ccdCaseNumber, this.outStandingAmount, this.caseType);
361
+ if (this.platForm === '8x8') {
362
+ this.paymentViewService.postPaymentToPayHub(requestBody, this.paymentGroupRef).subscribe((/**
363
+ * @param {?} response
364
+ * @return {?}
365
+ */
366
+ function (response) {
367
+ _this.location.go("payment-history?view=fee-summary");
368
+ _this.payhubHtml = response;
369
+ _this.viewStatus = 'payhub_view';
370
+ _this.isBackButtonEnable = false;
371
+ }), (/**
372
+ * @param {?} error
373
+ * @return {?}
374
+ */
375
+ function (error) {
376
+ _this.errorMessage = error;
377
+ _this.isConfirmationBtnDisabled = false;
378
+ _this.router.navigateByUrl('/pci-pal-failure');
379
+ }));
380
+ }
381
+ else if (this.platForm === 'Antenna') {
382
+ this.paymentViewService.postPaymentAntennaToPayHub(antennaReqBody, this.paymentGroupRef).subscribe((/**
383
+ * @param {?} response
384
+ * @return {?}
385
+ */
386
+ function (response) {
387
+ _this.isBackButtonEnable = false;
388
+ window.location.href = '/makePaymentByTelephoneyProvider';
389
+ }), (/**
390
+ * @param {?} error
391
+ * @return {?}
392
+ */
393
+ function (error) {
394
+ _this.errorMessage = error;
395
+ _this.isConfirmationBtnDisabled = false;
396
+ _this.router.navigateByUrl('/pci-pal-failure');
397
+ }));
398
+ }
268
399
  };
269
400
  /**
270
401
  * @param {?} outStandingAmount
@@ -285,12 +416,23 @@ var FeeSummaryComponent = /** @class */ (function () {
285
416
  this.loadCaseTransactionPage();
286
417
  }
287
418
  };
419
+ /**
420
+ * @param {?} amountDue
421
+ * @return {?}
422
+ */
423
+ FeeSummaryComponent.prototype.isCheckAmountdueExist = /**
424
+ * @param {?} amountDue
425
+ * @return {?}
426
+ */
427
+ function (amountDue) {
428
+ return typeof amountDue === 'undefined';
429
+ };
288
430
  FeeSummaryComponent.decorators = [
289
431
  { type: Component, args: [{
290
432
  selector: 'ccpay-fee-summary',
291
- template: "\n<div class=\"govuk-breadcrumbs\" *ngIf=\"isBackButtonEnable\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"redirectToFeeSearchPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n</div>\n\n<div class=\"fee-summary\" *ngIf=\"viewStatus === 'main'\">\n <main class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"heading-xlarge\">Fee Summary</h1>\n </div>\n <div class=\"govuk-grid-column-one-third\" align=\"right\">\n <a (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"button\">Add a new fee</a>\n </div>\n </div>\n\n\n <div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Payment Group details could not be retrieved\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n\n <table class=\"govuk-table\" *ngIf=\"!errorMessage && paymentGroup\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee Code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee description</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Remission code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\"></th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup; let i = index;\">\n <td class=\"govuk-table__cell\">{{ fee.code }}</td>\n <td class=\"govuk-table__cell\">{{ fee.description }}</td>\n <td class=\"govuk-table__cell\">{{ fee.remission?.hwf_reference }}</td>\n <td class=\"govuk-table__cell grey-text\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee amount:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"><a *ngIf=\"!(fee.isPaymentExist && i === 0)\" (click)=\"confirmRemoveFee(fee.id)\">remove fee</a></td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"fee.volume && fee.volume > 0\">\n <td class=\"no-border grey-text subcolumn-1\">Volume:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.volume }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee total:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Remission amount:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.remission?.hwf_amount ? (fee.remission?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}</td>\n <td class=\"no-border subcolumn-3\"> <a (click)=\"addRemission(fee)\" [ngClass]=\"{'remissionDisable': !service}\" *ngIf=\"fee.remission?.hwf_amount === 0 || !fee.remission?.hwf_amount\">Deduct remission</a></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Total after remission:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total payment</td>\n <td class=\"no-border subcolumn-2\">{{ totalAfterRemission - outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total outstanding amount</td>\n <td class=\"no-border subcolumn-2\">{{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"!bsPaymentDcnNumber\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <div class=\"govuk-form-group govuk-form-group--mg\">\n <label class=\"govuk-label custom-govuk-label govuk-fieldset__heading--fz\" for=\"responsibleOffice\">\n <strong>What service is this fee for?</strong>\n </label>\n <select class=\"govuk-select govuk-select--custom\" id=\"responsibleOffice\" [(ngModel)]=\"service\" name=\"responsibleOffice\">\n <option value=\"\" selected='selected'>Please select</option>\n <option value=\"AA07\">Divorce</option>\n <option value=\"ABA3\">Family Public Law</option>\n <option value=\"AA08\">Probate</option>\n </select>\n </div>\n </td>\n </tr>\n </tbody>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border subcolumn-2\"> \n <button *ngIf=\"!bsPaymentDcnNumber\" type=\"submit\" (click)=\"takePayment()\"\n [disabled]=\"totalFee <= 0 || !service || isConfirmationBtnDisabled\"\n [ngClass]='totalFee <= 0 || !service || isConfirmationBtnDisabled? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'>\n Take payment\n </button>\n <button *ngIf=\"bsPaymentDcnNumber\" type=\"button\" (click)=\"goToAllocatePage(outStandingAmount, isFeeAmountZero)\" class=\"button govuk-!-margin-right-1\">\n <span *ngIf=\"outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)\">\n Allocate payment\n </span>\n <span *ngIf=\"outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)\">\n Continue\n </span>\n </button>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n</main>\n</div>\n\n <ng-container *ngIf=\"viewStatus === 'feeRemovalConfirmation'\">\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to delete this fee?\n </strong>\n </div>\n <div class=\"govuk-button-grb\">\n <form novalidate>\n <button type=\"submit\" class=\"button govuk-button--secondary\" (click)=\"cancelRemission()\">\n Cancel\n </button>\n <button type=\"submit\" class=\"button\" \n [disabled]=\"isRemoveBtnDisabled\"\n [ngClass]='isRemoveBtnDisabled ? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'\n (click)=\"removeFee(currentFee)\">\n Remove\n </button>\n </form>\n </div>\n </ng-container>\n\n<ccpay-add-remission *ngIf=\"viewStatus === 'add_remission' && currentFee\" [fee]=\"currentFee\" [service]=\"service\" [ccdCaseNumber]=\"ccdCaseNumber\" [paymentGroupRef]=\"paymentGroupRef\" (cancelRemission)=\"cancelRemission()\"></ccpay-add-remission>\n<div *ngIf=\"viewStatus === 'payhub_view' && payhubHtml\" [innerHTML]=\"payhubHtml | sanitizeHtml\" id=\"payhub-html-id\"></div>\n",
292
- styles: [".fee-summary .grey-text{color:#6b7376;font-weight:500}.fee-summary .govuk-table{margin-bottom:0}.fee-summary .no-border{border:none;border-bottom:none}.fee-summary table td,.fee-summary table th{font-size:15px;font-weight:500;vertical-align:top;max-width:320px}.fee-summary table td .no-padding,.fee-summary table th .no-padding{padding:0}.fee-summary table td .subcolumn-1,.fee-summary table th .subcolumn-1{width:45%}.fee-summary table td .subcolumn-2,.fee-summary table th .subcolumn-2{width:25%;text-align:right}.fee-summary table td .subcolumn-3,.fee-summary table th .subcolumn-3{width:30%;text-align:center}.govuk-button-grb{padding-bottom:20px}.govuk-button-grb .govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:10px}.govuk-form-group--mg{margin-top:10px!important}.govuk-fieldset__heading--fz{font-size:16px}.remissionDisable{color:grey;cursor:default}.heading-xlarge{margin:0 0 14px -20px}.govuk-select--custom{width:50%}"]
293
- },] },
433
+ template: "\n<div class=\"govuk-breadcrumbs\" *ngIf=\"isBackButtonEnable\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"!isTurnOff\">\n <a (click)=\"loadCaseTransactionPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isTurnOff\">\n <a (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n</div>\n<div class=\"fee-summary\" *ngIf=\"viewStatus === 'main'\">\n <main class=\"govuk-main-wrapper\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='FEESUMMARY'>\n <div style=\"display:flex; flex-direction:row; justify-content: space-between; width:960px;\">\n <h1 class=\"heading-large govuk-!-margin-top-3 govuk-!-margin-bottom-4\">Summary </h1>\n <p class=\"govuk-!-margin-top-5\" style=\"align-self: flex-end;\">Case reference:{{ccdCaseNumber | ccdHyphens}}</p>\n </div>\n\n <!-- <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"heading-xlarge\">Fee Summary</h1>\n </div>\n\n\n \u00A0<div\u00A0class=\"govuk-grid-column-one-third\"\u00A0align=\"right\">\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0<button\u00A0 *ngIf=\"!isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\"\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0[disabled]=\"isPaymentExist\"\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0[ngClass]='isPaymentExist ?\u00A0\"button\u00A0button--disabled govuk-!-margin-right-1\"\u00A0:\u00A0\"button govuk-!-margin-right-1\"'>\n Add a new fee\n </button>\n\n <a *ngIf=\"isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"button\">Add a new fee</a>\t\n </div>\n </div> -->\n\n\n <div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Payment Group details could not be retrieved\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n\n <!-- <table class=\"govuk-table\" *ngIf=\"!errorMessage && paymentGroup\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee Code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee description</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Remission code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\"></th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell\">{{ fee.code }}</td>\n <td class=\"govuk-table__cell\">{{ fee.description }}</td>\n <td class=\"govuk-table__cell\">{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</td>\n <td class=\"govuk-table__cell grey-text\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee amount:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"!isTurnOff\">\n <a (click)=\"confirmRemoveFee(fee.id)\" [ngClass]='isPaymentExist || fee.remissions ? \"disable-link\" : \"\"'>remove fee</a>\n </td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"isTurnOff\">\n <a (click)=\"confirmRemoveFee(fee.id)\">remove fee</a>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"fee.volume && fee.volume > 0\">\n <td class=\"no-border grey-text subcolumn-1\">Volume:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.volume }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee total:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Remission amount:</td>\n <td class=\"no-border subcolumn-2\">{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}</td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"!isTurnOff\"> \n <a (click)=\"addRemission(fee)\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && !isPaymentExist\">\n Deduct remission\n </a>\n </td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"isTurnOff\"> \n <a (click)=\"addRemission(fee)\" *ngIf=\"getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount\">\n Deduct remission\n </a>\n </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Total after remission:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total payment</td>\n <td class=\"no-border subcolumn-2\">{{ totalAfterRemission - outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total outstanding amount</td>\n <td class=\"no-border subcolumn-2\">{{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"!bsPaymentDcnNumber && isOldPcipalOff && isNewPcipalOff\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <div class=\"govuk-form-group govuk-form-group--mg\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <span class=\"govuk-fieldset__heading govuk-fieldset__heading--fz\">\n Which system are you using to take the payment?\n </span>\n </legend>\n <div class=\"govuk-radios govuk-radios--small\">\n <div class=\"govuk-radios__item\">\n <input id=\"changed-name\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"8x8\" value=\"8x8\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name\">\t\n 8x8\t\n </label>\t\n </div>\t\n <div class=\"govuk-radios__item\">\t\n <input id=\"changed-name-2\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"Antenna\" value=\"Antenna\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name-2\">\t\n Antenna\t\n </label>\t\n </div>\t\n </div>\t\n </fieldset>\n </div>\n </td>\n </tr>\n </tbody>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border subcolumn-2\"> \n <button *ngIf=\"!bsPaymentDcnNumber\" type=\"submit\" (click)=\"takePayment()\"\n [disabled]=\"totalFee <= 0 || !platForm || isConfirmationBtnDisabled\"\n [ngClass]='totalFee <= 0 || !platForm || isConfirmationBtnDisabled? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'>\n Take payment\n </button>\n <button *ngIf=\"bsPaymentDcnNumber\" type=\"button\" (click)=\"goToAllocatePage(outStandingAmount, isFeeAmountZero)\" class=\"button govuk-!-margin-right-1\">\n <span *ngIf=\"outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)\">\n Allocate payment\n </span>\n <span *ngIf=\"outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)\">\n Continue\n </span>\n </button>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </tbody>\n </table> -->\n\n <div class=\"govuk-!-margin-top-3\">\n <table class=\"govuk-table govuk-!-margin-bottom-2\" *ngIf=\"!errorMessage && paymentGroup\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\" style=\"width: 600px;\">Description</th>\n <th class=\"govuk-table__header\" scope=\"col\" style=\"width: 60px;\">Quantity</th>\n <th class=\"govuk-table__header\" scope=\"col\" style=\"width: 80px; text-align: right;\"></th>\n <th class=\"govuk-table__header\" scope=\"col\" style=\"width: 100px; text-align: right;\">Amount</th>\n </tr>\n </thead>\n\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell\">{{ fee.description }}\n \n <span class=\"no-border\" *ngIf=\"(isPaymentExist || (getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount)) && !isTurnOff\">\n \n \n <a (click)=\"confirmRemoveFee(fee.id)\" *ngIf=\"(!isPaymentExist || !fee.remissions)\" [ngClass]='isPaymentExist || fee.remissions? \"disable-link\" : \"\"'> <br>Remove</a>\n </span>\n\n <span class=\"no-border\" *ngIf=\"(!isPaymentExist || (getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount)) && isTurnOff \">\n <a (click)=\"confirmRemoveFee(fee.id)\">Remove</a>\n </span>\n \n <a (click)=\"addRemission(fee)\" class=\"remissionActive\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && !isPaymentExist && !isTurnOff\">\n Add help with fees or remission\n </a>\n <a (click)=\"addRemission(fee)\" class=\"remissionActive\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && isTurnOff\">\n Add help with fees or remission\n </a>\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">Remission,{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</div>\n </span>\n </td>\n \n <td class=\"govuk-table__cell\" *ngIf=\"fee.volume && fee.volume > 0\">\n {{ fee.volume }}\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\">1</div>\n </span>\n </td>\n \n <td class=\"govuk-table__cell\" style=\"text-align: right;\">\n <br>\n <div *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\" class=\"govuk-table__cell_border\"> <br><br></div>\n </td>\n <td class=\"govuk-table__cell\" style=\"text-align: right;\">\n {{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_rmborder\" style=\"text-align: right;\">\n -{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}\n </div> \n </span>\n </td>\n \n \n </tr>\n <!-- <tr>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">Remission,{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</div>\n </td>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount ===''\">\n <div class=\"govuk-table__cell_border\"></div>\n </td>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount === ''\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount === ''\"></div>\n </td>\n <td>\n <br>\n <div class=\"govuk-table__cell_border\" style=\"text-align: right;\">\n -{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}\n </div> \n </td>\n </tr> -->\n </tbody>\n </table>\n </div>\n <div style=\"display:flex; flex-direction:row;\">\n <button *ngIf=\"!isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\"\n [disabled]=\"isPaymentExist\"\n [ngClass]='isPaymentExist ? \"govuk-button govuk-button--secondary button--disabled\" : \"govuk-button govuk-button--secondary\"'>\n Add fee\n </button>\n <a *ngIf=\"isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"govuk-button govuk-button--secondary\">Add a new fee</a>\t\n <div class=\"feeAddButton\">\n <p class=\"paddigleft govuk-!-margin-top-2\">Total to pay: {{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</p>\n </div>\n </div>\n<!-- \n <div class=\"govuk-form-group govuk-form-group--mg\" *ngIf=\"!bsPaymentDcnNumber\">\n <label class=\"govuk-label custom-govuk-label govuk-fieldset__heading--fz\" for=\"responsibleOffice\">\n <strong>What service is this fee for?</strong>\n </label>\n <select class=\"govuk-select govuk-select--custom\" id=\"responsibleOffice\" [(ngModel)]=\"service\" name=\"responsibleOffice\">\n <option value=\"\" selected='selected'>Please select</option>\n <option value=\"AA07\">Divorce</option>\n <option value=\"AA09\">Financial Remedy</option>\n <option value=\"AA08\">Probate</option>\n </select>\n </div> -->\n\n <div class=\"govuk-form-group govuk-form-group--mg\" *ngIf=\"!bsPaymentDcnNumber && isOldPcipalOff && isNewPcipalOff\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <span class=\"govuk-fieldset__heading govuk-fieldset__heading--fz\">\n Select payment service\n </span>\n </legend>\n <div class=\"govuk-radios govuk-radios--small\">\n <div class=\"govuk-radios__item\">\n <input id=\"changed-name\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"8x8\" value=\"8x8\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name\">\t\n 8x8\t\n </label>\t\n </div>\t\n <div class=\"govuk-radios__item\">\t\n <input id=\"changed-name-2\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"Antenna\" value=\"Antenna\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name-2\">\t\n Antenna\t\n </label>\t\n </div>\t\n </div>\t\n </fieldset>\n </div>\n\n <div>\n <button *ngIf=\"!bsPaymentDcnNumber\" type=\"submit\" (click)=\"takePayment()\"\n [disabled]=\"totalFee <= 0 || isConfirmationBtnDisabled\"\n [ngClass]='totalFee <= 0 || !platForm || !service || isConfirmationBtnDisabled? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'>\n Take payment\n </button>\n <button *ngIf=\"bsPaymentDcnNumber\" type=\"button\" (click)=\"goToAllocatePage(outStandingAmount, isFeeAmountZero)\" class=\"button govuk-!-margin-right-1\">\n <span *ngIf=\"outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)\">\n Allocate payment\n </span>\n <span *ngIf=\"outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)\">\n Continue\n </span>\n </button>\n </div>\n\n\n \n</main>\n</div>\n\n <ng-container *ngIf=\"viewStatus === 'feeRemovalConfirmation'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='FEEREMOVALCONFIRMATION_1'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to delete this fee?\n </strong>\n </div>\n <div class=\"govuk-button-grb\">\n <form novalidate>\n <button type=\"submit\" class=\"button govuk-button--secondary\" (click)=\"cancelRemission()\">\n Cancel\n </button>\n <button type=\"submit\" class=\"button\" \n *ngIf =\"!isRemoveBtnDisabled\"\n [ngClass]='isRemoveBtnDisabled ? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'\n (click)=\"removeFee(currentFee)\">\n Remove\n </button>\n </form>\n </div>\n </ng-container>\n<ccpay-add-remission *ngIf=\"viewStatus === 'add_remission' && currentFee\"\n [isTurnOff]=\"isTurnOff\"\n [isStrategicFixEnable]=\"isStrategicFixEnable\" \n [isOldPcipalOff]=\"isOldPcipalOff\" \n [isNewPcipalOff]=\"isNewPcipalOff\" \n [fee]=\"currentFee\" \n [caseType]=\"caseType\" \n [ccdCaseNumber]=\"ccdCaseNumber\" \n [paymentGroupRef]=\"paymentGroupRef\" \n (cancelRemission)=\"cancelRemission()\"></ccpay-add-remission>\n <input *ngIf=\"viewStatus === 'payhub_view' && payhubHtml\" #myInput type='hidden' id='iFrameDrivenImageValue' value='PCIPAL'>\n<div *ngIf=\"viewStatus === 'payhub_view' && payhubHtml\" [innerHTML]=\"payhubHtml | sanitizeHtml\" id=\"payhub-html-id\"></div>\n",
434
+ styles: [".fee-summary .grey-text{color:#6b7376;font-weight:500}.fee-summary .govuk-table{margin-bottom:0}.fee-summary .no-border{border:none;border-bottom:none}.fee-summary table td,.fee-summary table th{font-size:19px;vertical-align:top}.fee-summary table td .no-padding,.fee-summary table th .no-padding{padding:0}.fee-summary table td .subcolumn-1,.fee-summary table th .subcolumn-1{width:45%}.fee-summary table td .subcolumn-2,.fee-summary table th .subcolumn-2{width:25%;text-align:right}.fee-summary table td .subcolumn-3,.fee-summary table th .subcolumn-3{width:30%;text-align:center}table th{font-weight:700}.govuk-button-grb{padding-bottom:20px}.govuk-button-grb .govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:10px}.govuk-form-group--mg{margin-top:10px!important}.govuk-fieldset__heading--fz{font-size:16px}.remissionDisable{color:grey;cursor:default}.heading-xlarge{margin:0 0 14px -20px}.govuk-select--custom{width:50%}.disable-link{cursor:default;pointer-events:none;color:#8e8c8c}.govuk-table__cell_border,.govuk-table__header{padding:10px 0 0;border-top:1px solid #bfc1c3;text-align:left}.govuk-table__cell,.govuk-table__header{padding:10px 0}.govuk-table__cell_rmborder,.govuk-table__header{padding:10px 0 0;border-top:1px solid #bfc1c3;text-align:left}.govuk-table__fessheader{font-weight:700}.govuk-button{font-size:19px}.feeAddButton{padding-left:65rem}.remissionActive{padding-left:10px}.paddigleft{padding-left:2em}.govuk-back-link{font-size:1.5rem!important}"]
435
+ }] }
294
436
  ];
295
437
  /** @nocollapse */
296
438
  FeeSummaryComponent.ctorParameters = function () { return [
@@ -298,12 +440,16 @@ var FeeSummaryComponent = /** @class */ (function () {
298
440
  { type: BulkScaningPaymentService },
299
441
  { type: Location },
300
442
  { type: PaymentViewService },
301
- { type: CaseTransactionsService },
302
- { type: PaymentLibComponent }
443
+ { type: PaymentLibComponent },
444
+ { type: OrderslistService }
303
445
  ]; };
304
446
  FeeSummaryComponent.propDecorators = {
305
447
  paymentGroupRef: [{ type: Input }],
306
- ccdCaseNumber: [{ type: Input }]
448
+ ccdCaseNumber: [{ type: Input }],
449
+ isTurnOff: [{ type: Input }],
450
+ caseType: [{ type: Input }],
451
+ isOldPcipalOff: [{ type: Input }],
452
+ isNewPcipalOff: [{ type: Input }]
307
453
  };
308
454
  return FeeSummaryComponent;
309
455
  }());
@@ -314,6 +460,14 @@ if (false) {
314
460
  /** @type {?} */
315
461
  FeeSummaryComponent.prototype.ccdCaseNumber;
316
462
  /** @type {?} */
463
+ FeeSummaryComponent.prototype.isTurnOff;
464
+ /** @type {?} */
465
+ FeeSummaryComponent.prototype.caseType;
466
+ /** @type {?} */
467
+ FeeSummaryComponent.prototype.isOldPcipalOff;
468
+ /** @type {?} */
469
+ FeeSummaryComponent.prototype.isNewPcipalOff;
470
+ /** @type {?} */
317
471
  FeeSummaryComponent.prototype.bsPaymentDcnNumber;
318
472
  /** @type {?} */
319
473
  FeeSummaryComponent.prototype.paymentGroup;
@@ -330,6 +484,8 @@ if (false) {
330
484
  /** @type {?} */
331
485
  FeeSummaryComponent.prototype.service;
332
486
  /** @type {?} */
487
+ FeeSummaryComponent.prototype.platForm;
488
+ /** @type {?} */
333
489
  FeeSummaryComponent.prototype.upPaymentErrorMessage;
334
490
  /** @type {?} */
335
491
  FeeSummaryComponent.prototype.selectedOption;
@@ -348,17 +504,41 @@ if (false) {
348
504
  /** @type {?} */
349
505
  FeeSummaryComponent.prototype.isPaymentExist;
350
506
  /** @type {?} */
351
- FeeSummaryComponent.prototype.router;
507
+ FeeSummaryComponent.prototype.isRemissionsExist;
352
508
  /** @type {?} */
353
- FeeSummaryComponent.prototype.bulkScaningPaymentService;
509
+ FeeSummaryComponent.prototype.isRemissionsMatch;
354
510
  /** @type {?} */
511
+ FeeSummaryComponent.prototype.isStrategicFixEnable;
512
+ /**
513
+ * @type {?}
514
+ * @private
515
+ */
516
+ FeeSummaryComponent.prototype.router;
517
+ /**
518
+ * @type {?}
519
+ * @private
520
+ */
521
+ FeeSummaryComponent.prototype.bulkScaningPaymentService;
522
+ /**
523
+ * @type {?}
524
+ * @private
525
+ */
355
526
  FeeSummaryComponent.prototype.location;
356
- /** @type {?} */
527
+ /**
528
+ * @type {?}
529
+ * @private
530
+ */
357
531
  FeeSummaryComponent.prototype.paymentViewService;
358
- /** @type {?} */
359
- FeeSummaryComponent.prototype.caseTransactionsService;
360
- /** @type {?} */
532
+ /**
533
+ * @type {?}
534
+ * @private
535
+ */
361
536
  FeeSummaryComponent.prototype.paymentLibComponent;
537
+ /**
538
+ * @type {?}
539
+ * @private
540
+ */
541
+ FeeSummaryComponent.prototype.OrderslistService;
542
+ /* Skipping unhandled member: ;*/
362
543
  }
363
-
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mZWUtc3VtbWFyeS9mZWUtc3VtbWFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQUV6QyxJQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQzs7SUF5TTdDLDZCQUNVLFFBQ0EsMkJBQ0EsVUFDQSxvQkFDQSx5QkFDQTtRQUxBLFdBQU0sR0FBTixNQUFNO1FBQ04sOEJBQXlCLEdBQXpCLHlCQUF5QjtRQUN6QixhQUFRLEdBQVIsUUFBUTtRQUNSLHVCQUFrQixHQUFsQixrQkFBa0I7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1COzRCQXZCVCxFQUFFOzBCQUVULE1BQU07dUJBSUQsRUFBRTtrQ0FHVSxJQUFJO2lDQUNOLElBQUk7K0JBQ0wsS0FBSzttQ0FDRixJQUFJO3lDQUNHLEtBQUs7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aUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN0RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1NBQ3pEO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNoQztLQUNGOztnQkF4WUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSx5cVJBMktYO29CQUNDLE1BQU0sRUFBRSxDQUFDLDI5QkFBMjlCLENBQUM7aUJBQ3QrQjs7OztnQkFwTE8sTUFBTTtnQkFOTCx5QkFBeUI7Z0JBTzFCLFFBQVE7Z0JBUlAsa0JBQWtCO2dCQURuQix1QkFBdUI7Z0JBR3RCLG1CQUFtQjs7O2tDQTRMekIsS0FBSztnQ0FDTCxLQUFLOzs4QkFsTVI7O1NBZ01hLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBheW1lbnRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudExpc3QnO1xuaW1wb3J0IHtDYXNlVHJhbnNhY3Rpb25zU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS10cmFuc2FjdGlvbnMvY2FzZS10cmFuc2FjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJUmVtaXNzaW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVtaXNzaW9uJztcbmltcG9ydCB7IElGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGZWUnO1xuaW1wb3J0IHsgUGF5bWVudFRvUGF5aHViUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUGF5bWVudFRvUGF5aHViUmVxdWVzdCc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBCU19FTkFCTEVfRkxBRyA9ICdidWxrLXNjYW4tZW5hYmxpbmctZmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1mZWUtc3VtbWFyeScsXG4gIHRlbXBsYXRlOiBgXG48ZGl2IGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNcIiAqbmdJZj1cImlzQmFja0J1dHRvbkVuYWJsZVwiPlxuICA8b2wgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdFwiPlxuICAgIDxsaSBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW1cIj5cbiAgICAgIDxhIChjbGljayk9XCJyZWRpcmVjdFRvRmVlU2VhcmNoUGFnZSgkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1iYWNrLWxpbmsgZ292dWstbGFiZWxcIj5CYWNrPC9hPlxuICAgIDwvbGk+XG4gIDwvb2w+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImZlZS1zdW1tYXJ5XCIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnbWFpbidcIj5cbiAgICA8bWFpbiBjbGFzcz1cImdvdnVrLW1haW4td3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkc1wiPlxuICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy14bGFyZ2VcIj5GZWUgU3VtbWFyeTwvaDE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLW9uZS10aGlyZFwiIGFsaWduPVwicmlnaHRcIj5cbiAgICAgIDxhIChjbGljayk9XCJyZWRpcmVjdFRvRmVlU2VhcmNoUGFnZSgkZXZlbnQsJ3N1bW1hcnknKVwiIGNsYXNzPVwiYnV0dG9uXCI+QWRkIGEgbmV3IGZlZTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cblxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJmYWlsdXJlLWVycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICAgICAgUGF5bWVudCBHcm91cCBkZXRhaWxzIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWRcbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiICAqbmdJZj1cIiFlcnJvck1lc3NhZ2UgJiYgcGF5bWVudEdyb3VwXCI+XG4gICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIiBzY29wZT1cImNvbFwiPkZlZSBDb2RlPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIiBzY29wZT1cImNvbFwiPkZlZSBkZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgc2NvcGU9XCJjb2xcIj5SZW1pc3Npb24gY29kZTwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJwYXltZW50R3JvdXAubGVuZ3RoID4gMFwiPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCBmZWUgb2YgcGF5bWVudEdyb3VwOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGZlZS5jb2RlIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBmZWUuZGVzY3JpcHRpb24gfX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGZlZS5yZW1pc3Npb24/Lmh3Zl9yZWZlcmVuY2UgfX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBncmV5LXRleHRcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgZ3JleS10ZXh0IHN1YmNvbHVtbi0xXCI+RmVlIGFtb3VudDo8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTJcIj57eyBmZWUuZmVlX2Ftb3VudCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PGEgKm5nSWY9XCIhKGZlZS5pc1BheW1lbnRFeGlzdCAmJiBpID09PSAwKVwiIChjbGljayk9XCJjb25maXJtUmVtb3ZlRmVlKGZlZS5pZClcIj5yZW1vdmUgZmVlPC9hPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiZmVlLnZvbHVtZSAmJiBmZWUudm9sdW1lID4gMFwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgZ3JleS10ZXh0IHN1YmNvbHVtbi0xXCI+Vm9sdW1lOjwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tMlwiPnt7IGZlZS52b2x1bWUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTNcIj48L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIGdyZXktdGV4dCBzdWJjb2x1bW4tMVwiPkZlZSB0b3RhbDo8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTJcIj57eyBmZWUuY2FsY3VsYXRlZF9hbW91bnQgIHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTNcIj48L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIGdyZXktdGV4dCBzdWJjb2x1bW4tMVwiPlJlbWlzc2lvbiBhbW91bnQ6PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgZmVlLnJlbWlzc2lvbj8uaHdmX2Ftb3VudCA/IChmZWUucmVtaXNzaW9uPy5od2ZfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicpIDogJy0nIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+IDxhIChjbGljayk9XCJhZGRSZW1pc3Npb24oZmVlKVwiIFtuZ0NsYXNzXT1cInsncmVtaXNzaW9uRGlzYWJsZSc6ICFzZXJ2aWNlfVwiICpuZ0lmPVwiZmVlLnJlbWlzc2lvbj8uaHdmX2Ftb3VudCA9PT0gMCB8fCAhZmVlLnJlbWlzc2lvbj8uaHdmX2Ftb3VudFwiPkRlZHVjdCByZW1pc3Npb248L2E+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBncmV5LXRleHQgc3ViY29sdW1uLTFcIj5Ub3RhbCBhZnRlciByZW1pc3Npb246PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgZmVlLm5ldF9hbW91bnQgIHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTNcIj48L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZCBzdWJjb2x1bW4tMVwiPlRvdGFsIHBheW1lbnQ8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTJcIj57eyB0b3RhbEFmdGVyUmVtaXNzaW9uIC0gb3V0U3RhbmRpbmdBbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGQgc3ViY29sdW1uLTFcIj5Ub3RhbCBvdXRzdGFuZGluZyBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTJcIj57eyBvdXRTdGFuZGluZ0Ftb3VudCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTNcIj48L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cblxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiIWJzUGF5bWVudERjbk51bWJlclwiPlxuICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cCBnb3Z1ay1mb3JtLWdyb3VwLS1tZ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgY3VzdG9tLWdvdnVrLWxhYmVsIGdvdnVrLWZpZWxkc2V0X19oZWFkaW5nLS1melwiIGZvcj1cInJlc3BvbnNpYmxlT2ZmaWNlXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+V2hhdCBzZXJ2aWNlIGlzIHRoaXMgZmVlIGZvcj88L3N0cm9uZz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZ292dWstc2VsZWN0IGdvdnVrLXNlbGVjdC0tY3VzdG9tXCIgaWQ9XCJyZXNwb25zaWJsZU9mZmljZVwiIFsobmdNb2RlbCldPVwic2VydmljZVwiIG5hbWU9XCJyZXNwb25zaWJsZU9mZmljZVwiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ9J3NlbGVjdGVkJz5QbGVhc2Ugc2VsZWN0PC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBQTA3XCI+RGl2b3JjZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQUJBM1wiPkZhbWlseSBQdWJsaWMgTGF3PC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBQTA4XCI+UHJvYmF0ZTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPjwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj48L3RkPlxuICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+IFxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhYnNQYXltZW50RGNuTnVtYmVyXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ0YWtlUGF5bWVudCgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidG90YWxGZWUgPD0gMCB8fCAhc2VydmljZSB8fCBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109J3RvdGFsRmVlIDw9IDAgfHwgIXNlcnZpY2UgfHwgaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZD8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCInPlxuICAgICAgICAgICAgICAgICAgVGFrZSBwYXltZW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYnNQYXltZW50RGNuTnVtYmVyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnb1RvQWxsb2NhdGVQYWdlKG91dFN0YW5kaW5nQW1vdW50LCBpc0ZlZUFtb3VudFplcm8pXCIgY2xhc3M9XCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib3V0U3RhbmRpbmdBbW91bnQgPiAwIHx8IChpc0ZlZUFtb3VudFplcm8gJiYgb3V0U3RhbmRpbmdBbW91bnQgPT09IDApXCI+XG4gICAgICAgICAgICAgICAgICBBbGxvY2F0ZSBwYXltZW50XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib3V0U3RhbmRpbmdBbW91bnQgPCAwIHx8ICghaXNGZWVBbW91bnRaZXJvICYmIG91dFN0YW5kaW5nQW1vdW50ID09PSAwKVwiPlxuICAgICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9tYWluPlxuPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICAgIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX3RleHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fYXNzaXN0aXZlXCI+V2FybmluZzwvc3Bhbj5cbiAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZmVlP1xuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncmJcIj5cbiAgICAgICAgPGZvcm0gbm92YWxpZGF0ZT5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiIChjbGljayk9XCJjYW5jZWxSZW1pc3Npb24oKVwiPlxuICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b25cIiBcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZW1vdmVCdG5EaXNhYmxlZFwiXG4gICAgICAgICAgW25nQ2xhc3NdPSdpc1JlbW92ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCInXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZlZShjdXJyZW50RmVlKVwiPlxuICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48Y2NwYXktYWRkLXJlbWlzc2lvbiAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdhZGRfcmVtaXNzaW9uJyAmJiBjdXJyZW50RmVlXCIgW2ZlZV09XCJjdXJyZW50RmVlXCIgW3NlcnZpY2VdPVwic2VydmljZVwiIFtjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIiBbcGF5bWVudEdyb3VwUmVmXT1cInBheW1lbnRHcm91cFJlZlwiIChjYW5jZWxSZW1pc3Npb24pPVwiY2FuY2VsUmVtaXNzaW9uKClcIj48L2NjcGF5LWFkZC1yZW1pc3Npb24+XG48ZGl2ICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ3BheWh1Yl92aWV3JyAmJiBwYXlodWJIdG1sXCIgW2lubmVySFRNTF09XCJwYXlodWJIdG1sIHwgc2FuaXRpemVIdG1sXCIgaWQ9XCJwYXlodWItaHRtbC1pZFwiPjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbYC5mZWUtc3VtbWFyeSAuZ3JleS10ZXh0e2NvbG9yOiM2YjczNzY7Zm9udC13ZWlnaHQ6NTAwfS5mZWUtc3VtbWFyeSAuZ292dWstdGFibGV7bWFyZ2luLWJvdHRvbTowfS5mZWUtc3VtbWFyeSAubm8tYm9yZGVye2JvcmRlcjpub25lO2JvcmRlci1ib3R0b206bm9uZX0uZmVlLXN1bW1hcnkgdGFibGUgdGQsLmZlZS1zdW1tYXJ5IHRhYmxlIHRoe2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDt2ZXJ0aWNhbC1hbGlnbjp0b3A7bWF4LXdpZHRoOjMyMHB4fS5mZWUtc3VtbWFyeSB0YWJsZSB0ZCAubm8tcGFkZGluZywuZmVlLXN1bW1hcnkgdGFibGUgdGggLm5vLXBhZGRpbmd7cGFkZGluZzowfS5mZWUtc3VtbWFyeSB0YWJsZSB0ZCAuc3ViY29sdW1uLTEsLmZlZS1zdW1tYXJ5IHRhYmxlIHRoIC5zdWJjb2x1bW4tMXt3aWR0aDo0NSV9LmZlZS1zdW1tYXJ5IHRhYmxlIHRkIC5zdWJjb2x1bW4tMiwuZmVlLXN1bW1hcnkgdGFibGUgdGggLnN1YmNvbHVtbi0ye3dpZHRoOjI1JTt0ZXh0LWFsaWduOnJpZ2h0fS5mZWUtc3VtbWFyeSB0YWJsZSB0ZCAuc3ViY29sdW1uLTMsLmZlZS1zdW1tYXJ5IHRhYmxlIHRoIC5zdWJjb2x1bW4tM3t3aWR0aDozMCU7dGV4dC1hbGlnbjpjZW50ZXJ9LmdvdnVrLWJ1dHRvbi1ncmJ7cGFkZGluZy1ib3R0b206MjBweH0uZ292dWstYnV0dG9uLWdyYiAuZ292dWstYnV0dG9uLS1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojZGVlMGUyO2JveC1zaGFkb3c6MCAycHggMCAjODU4Njg4O2NvbG9yOiMwYjBjMGM7bWFyZ2luLXJpZ2h0OjEwcHh9LmdvdnVrLWZvcm0tZ3JvdXAtLW1ne21hcmdpbi10b3A6MTBweCFpbXBvcnRhbnR9LmdvdnVrLWZpZWxkc2V0X19oZWFkaW5nLS1mentmb250LXNpemU6MTZweH0ucmVtaXNzaW9uRGlzYWJsZXtjb2xvcjpncmV5O2N1cnNvcjpkZWZhdWx0fS5oZWFkaW5nLXhsYXJnZXttYXJnaW46MCAwIDE0cHggLTIwcHh9LmdvdnVrLXNlbGVjdC0tY3VzdG9te3dpZHRoOjUwJX1gXVxufSlcblxuZXhwb3J0IGNsYXNzIEZlZVN1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwYXltZW50R3JvdXBSZWY6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuXG4gIGJzUGF5bWVudERjbk51bWJlcjogc3RyaW5nO1xuICBwYXltZW50R3JvdXA6IGFueSA9IFtdO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgdmlld1N0YXR1cyA9ICdtYWluJztcbiAgY3VycmVudEZlZTogSUZlZTtcbiAgdG90YWxGZWU6IG51bWJlcjtcbiAgcGF5aHViSHRtbDogU2FmZUh0bWw7XG4gIHNlcnZpY2U6IHN0cmluZyA9IFwiXCI7XG4gIHVwUGF5bWVudEVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBzZWxlY3RlZE9wdGlvbjpzdHJpbmc7XG4gIGlzQmFja0J1dHRvbkVuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIG91dFN0YW5kaW5nQW1vdW50OiBudW1iZXIgPSAwLjAwO1xuICBpc0ZlZUFtb3VudFplcm86IGJvb2xlYW4gPSBmYWxzZTs7XG4gIHRvdGFsQWZ0ZXJSZW1pc3Npb246IG51bWJlciA9IDAuMDA7XG4gIGlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1vdmVCdG5EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1BheW1lbnRFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXNlVHJhbnNhY3Rpb25zU2VydmljZTogQ2FzZVRyYW5zYWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXltZW50TGliQ29tcG9uZW50OiBQYXltZW50TGliQ29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gICAgdGhpcy5ic1BheW1lbnREY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VMRUNURURfT1BUSU9OLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRCU2ZlYXR1cmUoKS5zdWJzY3JpYmUoXG4gICAgICBmZWF0dXJlcyA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKGZlYXR1cmVzKS5maWx0ZXIoZmVhdHVyZSA9PiBmZWF0dXJlLnVpZCA9PT0gQlNfRU5BQkxFX0ZMQUcpO1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHJlc3VsdFswXSA/IHJlc3VsdFswXS5lbmFibGUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gICAgaWYgKHRoaXMuYnNQYXltZW50RGNuTnVtYmVyKSB7XG4gICAgICB0aGlzLmdldFVuYXNzaWduZWRQYXltZW50bGlzdCgpO1xuICAgIH1cbiAgICB0aGlzLmdldFBheW1lbnRHcm91cCgpO1xuICB9XG5cbiAgICBnZXRVbmFzc2lnbmVkUGF5bWVudGxpc3QoKSB7XG4gICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uID09PSAnZGNuJykge1xuICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZ2V0QlNQYXltZW50c0J5RENOKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5EQ05fTlVNQkVSKS5zdWJzY3JpYmUoXG4gICAgICAgIHVuYXNzaWduZWRQYXltZW50cyA9PiB7XG4gICAgICAgICAgaWYodW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucGF5bWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBQYXltZW50RXJyb3JNZXNzYWdlID0gJ2Vycm9yJztcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5nZXRCU1BheW1lbnRzQnlDQ0QodGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgIHVuYXNzaWduZWRQYXltZW50cyA9PiB7XG4gICAgICAgICAgaWYodW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucGF5bWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBQYXltZW50RXJyb3JNZXNzYWdlID0gJ2Vycm9yJzsgIFxuICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMudXBQYXltZW50RXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxuICBhZGRSZW1pc3Npb24oZmVlOiBJRmVlKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5jdXJyZW50RmVlID0gZmVlO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZF9yZW1pc3Npb24nO1xuICAgIH1cbiAgfVxuXG4gIGdldFBheW1lbnRHcm91cCgpIHtcbiAgICB0aGlzLmNhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlLmdldFBheW1lbnRHcm91cHModGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXBzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXSlcbiAgICAgICAgaWYocGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXSAmJiBwYXltZW50R3JvdXBzWydwYXltZW50X2dyb3VwcyddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXltZW50R3JvdXBzWydwYXltZW50X2dyb3VwcyddLmZvckVhY2gocGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgICAgIGlmIChwYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgICAgICAgICBwYXltZW50R3JvdXAuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoZmVlLmRhdGVfY3JlYXRlZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbEFmdGVyUmVtaXNzaW9uICA9IHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiAgKyBmZWUubmV0X2Ftb3VudDtcbiAgICAgICAgICAgICAgICAgIGxldCBhbGxvY2F0ZWRfYW1vdW50ID0gZmVlLmFsbG9jYXRlZF9hbW91bnQ/IGZlZS5hbGxvY2F0ZWRfYW1vdW50IDogMC4wMDtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3V0U3RhbmRpbmdBbW91bnQgID0gdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCAgKyAoZmVlLm5ldF9hbW91bnQgLSBhbGxvY2F0ZWRfYW1vdW50KTtcbiAgICAgICAgICAgICAgICAgIGlmKGZlZS5jYWxjdWxhdGVkX2Ftb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmVlQW1vdW50WmVybyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBmZWUuaXNGZWVBbW91bnRaZXJvID0gdGhpcy5pc0ZlZUFtb3VudFplcm87XG4gICAgICAgICAgICAgICAgICBmZWUuaXNQYXltZW50RXhpc3QgPSBwYXltZW50R3JvdXAucGF5bWVudHMgPyBwYXltZW50R3JvdXAucGF5bWVudHMubGVuZ3RoID4gMCA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgaWYgKHBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheW1lbnRHcm91cC5yZW1pc3Npb25zLmZvckVhY2gocmVtaXNzaW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVtaXNzaW9uLmZlZV9jb2RlID09PSBmZWUuZmVlLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlLnJlbWlzc2lvbiA9IHJlbWlzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucHVzaChmZWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2codGhpcy5wYXltZW50R3JvdXAsIHRoaXMudG90YWxBZnRlclJlbWlzc2lvbix0aGlzLm91dFN0YW5kaW5nQW1vdW50KVxuICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICk7XG4gIH1cblxuICBjb25maXJtUmVtb3ZlRmVlKGZlZTogSUZlZSl7XG4gICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RmVlID0gZmVlO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJztcbiAgfVxuXG4gIHJlbW92ZUZlZShmZWU6IGFueSl7XG4gICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kZWxldGVGZWVGcm9tUGF5bWVudEdyb3VwKGZlZSkuc3Vic2NyaWJlKFxuICAgICAgKHN1Y2Nlc3M6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnBheW1lbnRHcm91cC5mZWVzICYmIHRoaXMucGF5bWVudEdyb3VwLmZlZXMubGVuZ3RoID4gMSl7XG4gICAgICAgICAgdGhpcy50b3RhbEFmdGVyUmVtaXNzaW9uID0gMDtcbiAgICAgICAgICB0aGlzLmdldFBheW1lbnRHcm91cCgpO1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gbG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEJTZmVhdHVyZSgpLnN1YnNjcmliZShcbiAgICAgIGZlYXR1cmVzID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UoZmVhdHVyZXMpLmZpbHRlcihmZWF0dXJlID0+IGZlYXR1cmUudWlkID09PSBCU19FTkFCTEVfRkxBRyk7XG4gICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gcmVzdWx0WzBdID8gcmVzdWx0WzBdLmVuYWJsZSA6IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuICBjYW5jZWxSZW1pc3Npb24oKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICB9XG4gIHJlZGlyZWN0VG9GZWVTZWFyY2hQYWdlKGV2ZW50OiBhbnksIHBhZ2U/OiBzdHJpbmcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGxldCBkY24gPSB0aGlzLmJzUGF5bWVudERjbk51bWJlciA/IGAmZGNuPSR7dGhpcy5ic1BheW1lbnREY25OdW1iZXJ9YCA6ICcnO1xuICAgIGNvbnN0IElTQlNlbmFibGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgaWYodGhpcy52aWV3U3RhdHVzID09PSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbicgfHwgdGhpcy52aWV3U3RhdHVzID09PSAnYWRkX3JlbWlzc2lvbicpIHtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHVybCA9IGAvZmVlLXNlYXJjaD9jY2RDYXNlTnVtYmVyPSR7dGhpcy5jY2RDYXNlTnVtYmVyfSZzZWxlY3RlZE9wdGlvbj0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT059JnBheW1lbnRHcm91cFJlZj0ke3RoaXMucGF5bWVudEdyb3VwUmVmfSR7ZGNufSR7SVNCU2VuYWJsZX1gO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgfVxuICB0YWtlUGF5bWVudCgpIHtcbiAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNlcml2ZU5hbWUgPSB0aGlzLnNlcnZpY2UgPT09J0FBMDcnID8gJ0RJVk9SQ0UnOiB0aGlzLnNlcnZpY2UgPT09J0FBMDgnID8gJ1BST0JBVEUnIDogJ0ZQTCcsXG5cbiAgICAgIHJlcXVlc3RCb2R5ID0gbmV3IFBheW1lbnRUb1BheWh1YlJlcXVlc3QodGhpcy5jY2RDYXNlTnVtYmVyLCB0aGlzLm91dFN0YW5kaW5nQW1vdW50LCB0aGlzLnNlcnZpY2UsIHNlcml2ZU5hbWUpLFxuICAgICAgcmVzID0gbmV3IElQYXltZW50TGlzdChbdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCwgdGhpcy5jY2RDYXNlTnVtYmVyLCB0aGlzLmNjZENhc2VOdW1iZXIsIHRoaXMucGF5bWVudEdyb3VwLCB0aGlzLnNlcnZpY2UsIHNlcml2ZU5hbWVdKTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UGF5bWVudExpc3RUb1BheUh1YihyZXMpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5nbyhgcGF5bWVudC1oaXN0b3J5P3ZpZXc9ZmVlLXN1bW1hcnlgKTtcbiAgICAgICAgdGhpcy5wYXlodWJIdG1sID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXlodWJfdmlldyc7XG4gICAgICAgIHRoaXMuaXNCYWNrQnV0dG9uRW5hYmxlPWZhbHNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvcGNpLXBhbC1mYWlsdXJlJyk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UGF5bWVudFRvUGF5SHViKHJlcXVlc3RCb2R5LCB0aGlzLnBheW1lbnRHcm91cFJlZikuc3Vic2NyaWJlKFxuICAgIC8vICAgcmVzcG9uc2UgPT4ge1xuICAgIC8vICAgICB0aGlzLmxvY2F0aW9uLmdvKGBwYXltZW50LWhpc3Rvcnk/dmlldz1mZWUtc3VtbWFyeWApO1xuICAgIC8vICAgICB0aGlzLnBheWh1Ykh0bWwgPSByZXNwb25zZTtcbiAgICAvLyAgICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheWh1Yl92aWV3JztcbiAgICAvLyAgICAgdGhpcy5pc0JhY2tCdXR0b25FbmFibGU9ZmFsc2U7XG4gICAgLy8gICB9LFxuICAgIC8vICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAvLyAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAvLyAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9wY2ktcGFsLWZhaWx1cmUnKTtcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuICB9XG4gIGdvVG9BbGxvY2F0ZVBhZ2Uob3V0U3RhbmRpbmdBbW91bnQ6IG51bWJlciwgaXNGZWVBbW91bnRaZXJvOiBCb29sZWFuKSB7XG4gICAgaWYgKG91dFN0YW5kaW5nQW1vdW50ID4gMCB8fCAob3V0U3RhbmRpbmdBbW91bnQgPT09IDAgJiYgaXNGZWVBbW91bnRaZXJvKSkge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHRoaXMucGF5bWVudEdyb3VwUmVmO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2FsbG9jYXRlLXBheW1lbnRzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
544
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mZWUtc3VtbWFyeS9mZWUtc3VtbWFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztJQUVoRSxjQUFjLEdBQUcsdUJBQXVCO0FBRTlDO0lBcUNFLDZCQUNVLE1BQWMsRUFDZCx5QkFBb0QsRUFDcEQsUUFBa0IsRUFDbEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFMcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXpCOUMsZUFBVSxHQUFH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O0lBQzFCLDZDQUFnQzs7SUFDaEMsNkNBQWdDOztJQUdoQyxpREFBMkI7O0lBQzNCLDJDQUE0Qjs7SUFDNUIsMkNBQXFCOztJQUNyQix5Q0FBb0I7O0lBQ3BCLHlDQUFpQjs7SUFDakIsdUNBQWlCOztJQUNqQix5Q0FBcUI7O0lBQ3JCLHNDQUFxQjs7SUFDckIsdUNBQXNCOztJQUN0QixvREFBOEI7O0lBQzlCLDZDQUFzQjs7SUFDdEIsaURBQW1DOztJQUNuQyxnREFBMEI7O0lBQzFCLDhDQUFpQzs7SUFDakMsa0RBQWdDOztJQUNoQyx3REFBMkM7O0lBQzNDLGtEQUFxQzs7SUFDckMsNkNBQWdDOztJQUNoQyxnREFBbUM7O0lBQ25DLGdEQUEwQjs7SUFDMUIsbURBQThCOzs7OztJQUc1QixxQ0FBc0I7Ozs7O0lBQ3RCLHdEQUE0RDs7Ozs7SUFDNUQsdUNBQTBCOzs7OztJQUMxQixpREFBOEM7Ozs7O0lBQzlDLGtEQUFnRDs7Ozs7SUFDaEQsZ0RBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGF5bWVudEdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IElSZW1pc3Npb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHsgSUZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZlZSc7XG5pbXBvcnQgeyBQYXltZW50VG9QYXlodWJSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9QYXltZW50VG9QYXlodWJSZXF1ZXN0JztcbmltcG9ydCB7IFBheWh1YkFudGVubmFSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9QYXlodWJBbnRlbm5hUmVxdWVzdCc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3JkZXJzbGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuXG5jb25zdCBCU19FTkFCTEVfRkxBRyA9ICdidWxrLXNjYW4tZW5hYmxpbmctZmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1mZWUtc3VtbWFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWUtc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlZS1zdW1tYXJ5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBGZWVTdW1tYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGF5bWVudEdyb3VwUmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNjZENhc2VOdW1iZXI6IHN0cmluZztcbiAgQElucHV0KCkgaXNUdXJuT2ZmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhc2VUeXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzT2xkUGNpcGFsT2ZmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzTmV3UGNpcGFsT2ZmOiBzdHJpbmc7XG5cblxuICBic1BheW1lbnREY25OdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwOiBJUGF5bWVudEdyb3VwO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgdmlld1N0YXR1cyA9ICdtYWluJztcbiAgY3VycmVudEZlZTogSUZlZTtcbiAgdG90YWxGZWU6IG51bWJlcjtcbiAgcGF5aHViSHRtbDogU2FmZUh0bWw7XG4gIHNlcnZpY2U6IHN0cmluZyA9IFwiXCI7XG4gIHBsYXRGb3JtOiBzdHJpbmcgPSBcIlwiO1xuICB1cFBheW1lbnRFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgc2VsZWN0ZWRPcHRpb246c3RyaW5nO1xuICBpc0JhY2tCdXR0b25FbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBvdXRTdGFuZGluZ0Ftb3VudDogbnVtYmVyO1xuICBpc0ZlZUFtb3VudFplcm86IGJvb2xlYW4gPSBmYWxzZTs7XG4gIHRvdGFsQWZ0ZXJSZW1pc3Npb246IG51bWJlciA9IDA7XG4gIGlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1vdmVCdG5EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1BheW1lbnRFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlbWlzc2lvbnNFeGlzdDogQm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlbWlzc2lvbnNNYXRjaCA9IGZhbHNlO1xuICBpc1N0cmF0ZWdpY0ZpeEVuYWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICAgIHRoaXMuY2FzZVR5cGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0FTRVRZUEU7XG4gICAgdGhpcy5ic1BheW1lbnREY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VMRUNURURfT1BUSU9OLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1NGRU5BQkxFO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0Q2FzZVR5cGUodGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNBU0VUWVBFKTtcbiAgICBpZiAoKCF0aGlzLmlzT2xkUGNpcGFsT2ZmICYmIHRoaXMuaXNOZXdQY2lwYWxPZmYpKSB7XG4gICAgICB0aGlzLnBsYXRGb3JtID0gJzh4OCc7XG4gICAgfSBlbHNlIGlmICgodGhpcy5pc09sZFBjaXBhbE9mZiAmJiAhdGhpcy5pc05ld1BjaXBhbE9mZikpIHtcbiAgICAgIHRoaXMucGxhdEZvcm0gPSAnQW50ZW5uYSc7XG4gICAgfSBlbHNlIGlmICgodGhpcy5pc09sZFBjaXBhbE9mZiAmJiB0aGlzLmlzTmV3UGNpcGFsT2ZmKSl7XG4gICAgICB0aGlzLnBsYXRGb3JtID0gJzh4OCc7XG4gICAgfVxuXG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0QlNmZWF0dXJlKCkuc3Vic2NyaWJlKFxuICAgICAgZmVhdHVyZXMgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gSlNPTi5wYXJzZShmZWF0dXJlcykuZmlsdGVyKGZlYXR1cmUgPT4gZmVhdHVyZS51aWQgPT09IEJTX0VOQUJMRV9GTEFHKTtcbiAgICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSByZXN1bHRbMF0gPyByZXN1bHRbMF0uZW5hYmxlIDogZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmJzUGF5bWVudERjbk51bWJlcikge1xuICAgICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudGxpc3QoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRQYXltZW50R3JvdXAoKTtcbiAgfVxuXG4gICAgZ2V0VW5hc3NpZ25lZFBheW1lbnRsaXN0KCkge1xuICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiA9PT0gJ2RjbicpIHtcbiAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeURDTih0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuRENOX05VTUJFUikuc3Vic2NyaWJlKFxuICAgICAgICB1bmFzc2lnbmVkUGF5bWVudHMgPT4ge1xuICAgICAgICAgIGlmKHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5yZXNwb25zaWJsZV9zZXJ2aWNlX2lkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9ICdlcnJvcic7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy51cFBheW1lbnRFcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZ2V0QlNQYXltZW50c0J5Q0NEKHRoaXMuY2NkQ2FzZU51bWJlcikuc3Vic2NyaWJlKFxuICAgICAgICB1bmFzc2lnbmVkUGF5bWVudHMgPT4ge1xuICAgICAgICAgIGlmKHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5yZXNwb25zaWJsZV9zZXJ2aWNlX2lkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9ICdlcnJvcic7ICBcbiAgICAgICAgICB9ICAgICAgXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0UmVtaXNzaW9uQnlGZWVDb2RlKGZlZUNvZGU6IHN0cmluZyk6IElSZW1pc3Npb24ge1xuICAgIGlmICh0aGlzLnBheW1lbnRHcm91cCAmJiB0aGlzLnBheW1lbnRHcm91cC5yZW1pc3Npb25zICYmIHRoaXMucGF5bWVudEdyb3VwLnJlbWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCByZW1pc3Npb24gb2YgdGhpcy5wYXltZW50R3JvdXAucmVtaXNzaW9ucykge1xuICAgICAgICBpZiAocmVtaXNzaW9uLmZlZV9jb2RlID09PSBmZWVDb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbWlzc2lvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFkZFJlbWlzc2lvbihmZWU6IElGZWUpIHtcbiAgICB0aGlzLmN1cnJlbnRGZWUgPSBmZWU7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZF9yZW1pc3Npb24nO1xuICB9XG5cbiAgZ2V0UGF5bWVudEdyb3VwKCkge1xuICAgIGxldCBmZWVzID0gW107XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0UGF5bWVudEdyb3VwRGV0YWlscyh0aGlzLnBheW1lbnRHcm91cFJlZikuc3Vic2NyaWJlKFxuICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG4gICAgICAgIHRoaXMuaXNQYXltZW50RXhpc3QgPSBwYXltZW50R3JvdXAucGF5bWVudHMgPyBwYXltZW50R3JvdXAucGF5bWVudHMubGVuZ3RoID4gMCA6IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmVtaXNzaW9uc0V4aXN0ID0gcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMgPyBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5sZW5ndGggPiAwIDogZmFsc2U7XG5cbiAgICAgICAgaWYgKHBheW1lbnRHcm91cC5mZWVzKSB7XG4gICAgICAgICAgcGF5bWVudEdyb3VwLmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvdGFsQWZ0ZXJSZW1pc3Npb24gID0gdGhpcy50b3RhbEFmdGVyUmVtaXNzaW9uICArIGZlZS5uZXRfYW1vdW50O1xuICAgICAgICAgICAgICBpZihmZWUuY2FsY3VsYXRlZF9hbW91bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmVlQW1vdW50WmVybyA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5mb3JFYWNoKHJlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYocmVtLmZlZV9jb2RlID09PSBmZWUuY29kZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBmZWVbJ3JlbWlzc2lvbnMnXSA9IHJlbTtcbiAgICAgICAgICAgICAgICAgIGZlZXMucHVzaChmZWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgXG4gICAgICAgICAgICAgIGlmKCF0aGlzLmlzUmVtaXNzaW9uc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgZmVlcy5wdXNoKGZlZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwYXltZW50R3JvdXAuZmVlcyA9IGZlZXM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm91dFN0YW5kaW5nQW1vdW50ID0gdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmNhbGN1bGF0ZU91dFN0YW5kaW5nQW1vdW50KHBheW1lbnRHcm91cCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICApO1xuICB9XG5cbiAgY29uZmlybVJlbW92ZUZlZShmZWU6IElGZWUpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEZlZSA9IGZlZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbic7XG4gIH1cblxuICByZW1vdmVGZWUoZmVlOiBhbnkpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYXltZW50R3JvdXAuZmVlcyAmJiB0aGlzLnBheW1lbnRHcm91cC5mZWVzLmxlbmd0aCA+IDEpe1xuICAgICAgICAgIHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiA9IDA7XG4gICAgICAgICAgdGhpcy5nZXRQYXltZW50R3JvdXAoKTtcbiAgICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuIGxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRCU2ZlYXR1cmUoKS5zdWJzY3JpYmUoXG4gICAgICBmZWF0dXJlcyA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKGZlYXR1cmVzKS5maWx0ZXIoZmVhdHVyZSA9PiBmZWF0dXJlLnVpZCA9PT0gQlNfRU5BQkxFX0ZMQUcpO1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHJlc3VsdFswXSA/IHJlc3VsdFswXS5lbmFibGUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBsZXQgcGFydFVybCA9IGBzZWxlY3RlZE9wdGlvbj0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT059YDtcbiAgICAgIHBhcnRVcmwgKz10aGlzLmJzUGF5bWVudERjbk51bWJlciA/IGAmZGNuPSR7dGhpcy5ic1BheW1lbnREY25OdW1iZXJ9YCA6ICcnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID8gJyZpc0J1bGtTY2FubmluZz1FbmFibGUnIDogJyZpc0J1bGtTY2FubmluZz1EaXNhYmxlJztcbiAgICAgIHBhcnRVcmwgKz10aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNUVVJOT0ZGID8gJyZpc1R1cm5PZmY9RW5hYmxlJyA6ICcmaXNUdXJuT2ZmPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1NGRU5BQkxFID8gJyZpc1N0Rml4RW5hYmxlPUVuYWJsZScgOiAnJmlzU3RGaXhFbmFibGU9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9YCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgICAgcGFydFVybCArPXRoaXMuaXNOZXdQY2lwYWxPZmYgPyAnJmlzTmV3UGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzTmV3UGNpcGFsT2ZmPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMuaXNPbGRQY2lwYWxPZmYgPyAnJmlzT2xkUGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzT2xkUGNpcGFsT2ZmPURpc2FibGUnO1xuXG4gICAgbGV0IHVybCA9IGAvcGF5bWVudC1oaXN0b3J5LyR7dGhpcy5jY2RDYXNlTnVtYmVyfT92aWV3PWNhc2UtdHJhbnNhY3Rpb25zJnRha2VQYXltZW50PXRydWUmJHtwYXJ0VXJsfWA7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG4gIGNhbmNlbFJlbWlzc2lvbigpIHtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIH1cbiAgcmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoZXZlbnQ6IGFueSwgcGFnZT86IHN0cmluZykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgbGV0IHBhcnRVcmwgPXRoaXMuYnNQYXltZW50RGNuTnVtYmVyID8gYCZkY249JHt0aGlzLmJzUGF5bWVudERjbk51bWJlcn1gIDogJyc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPyAnJmlzQnVsa1NjYW5uaW5nPUVuYWJsZScgOiAnJmlzQnVsa1NjYW5uaW5nPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkYgPyAnJmlzVHVybk9mZj1FbmFibGUnIDogJyZpc1R1cm5PZmY9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEUgPyAnJmlzU3RGaXhFbmFibGU9RW5hYmxlJyA6ICcmaXNTdEZpeEVuYWJsZT1EaXNhYmxlJztcbiAgICAgIHBhcnRVcmwgKz1gJmNhc2VUeXBlPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNBU0VUWVBFfWA7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5pc05ld1BjaXBhbE9mZiA/ICcmaXNOZXdQY2lwYWxPZmY9RW5hYmxlJyA6ICcmaXNOZXdQY2lwYWxPZmY9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5pc09sZFBjaXBhbE9mZiA/ICcmaXNPbGRQY2lwYWxPZmY9RW5hYmxlJyA6ICcmaXNPbGRQY2lwYWxPZmY9RGlzYWJsZSc7XG5cbiAgICBpZih0aGlzLnZpZXdTdGF0dXMgPT09ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJyB8fCB0aGlzLnZpZXdTdGF0dXMgPT09ICdhZGRfcmVtaXNzaW9uJykge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdXJsID0gYC9mZWUtc2VhcmNoP2NjZENhc2VOdW1iZXI9JHt0aGlzLmNjZENhc2VOdW1iZXJ9JnNlbGVjdGVkT3B0aW9uPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTn0mcGF5bWVudEdyb3VwUmVmPSR7dGhpcy5wYXltZW50R3JvdXBSZWZ9JHtwYXJ0VXJsfWA7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG4gIHRha2VQYXltZW50KCkge1xuICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IG5ldyBQYXltZW50VG9QYXlodWJSZXF1ZXN0KHRoaXMuY2NkQ2FzZU51bWJlciwgdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCwgdGhpcy5jYXNlVHlwZSksXG4gICAgICBhbnRlbm5hUmVxQm9keSA9IG5ldyBQYXlodWJBbnRlbm5hUmVxdWVzdCh0aGlzLmNjZENhc2VOdW1iZXIsIHRoaXMub3V0U3RhbmRpbmdBbW91bnQsIHRoaXMuY2FzZVR5cGUpO1xuXG4gICAgaWYodGhpcy5wbGF0Rm9ybSA9PT0gJzh4OCcpIHtcbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RQYXltZW50VG9QYXlIdWIocmVxdWVzdEJvZHksIHRoaXMucGF5bWVudEdyb3VwUmVmKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uLmdvKGBwYXltZW50LWhpc3Rvcnk/dmlldz1mZWUtc3VtbWFyeWApO1xuICAgICAgICAgIHRoaXMucGF5aHViSHRtbCA9IHJlc3BvbnNlO1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXlodWJfdmlldyc7XG4gICAgICAgICAgdGhpcy5pc0JhY2tCdXR0b25FbmFibGU9ZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvcGNpLXBhbC1mYWlsdXJlJyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmKHRoaXMucGxhdEZvcm0gPT09ICdBbnRlbm5hJykge1xuXG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UGF5bWVudEFudGVubmFUb1BheUh1YihhbnRlbm5hUmVxQm9keSwgdGhpcy5wYXltZW50R3JvdXBSZWYpLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuaXNCYWNrQnV0dG9uRW5hYmxlPWZhbHNlO1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9tYWtlUGF5bWVudEJ5VGVsZXBob25leVByb3ZpZGVyJztcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9wY2ktcGFsLWZhaWx1cmUnKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdvVG9BbGxvY2F0ZVBhZ2Uob3V0U3RhbmRpbmdBbW91bnQ6IG51bWJlciwgaXNGZWVBbW91bnRaZXJvOiBCb29sZWFuKSB7XG4gICAgaWYgKG91dFN0YW5kaW5nQW1vdW50ID4gMCB8fCAob3V0U3RhbmRpbmdBbW91bnQgPT09IDAgJiYgaXNGZWVBbW91bnRaZXJvKSkge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHRoaXMucGF5bWVudEdyb3VwUmVmO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2FsbG9jYXRlLXBheW1lbnRzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpO1xuICAgIH1cbiAgfVxuICBpc0NoZWNrQW1vdW50ZHVlRXhpc3QoYW1vdW50RHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFtb3VudER1ZSA9PT0gJ3VuZGVmaW5lZCc7XG4gIH1cbn1cbiJdfQ==