@hmcts/ccpay-web-component 4.0.0-beta49 → 4.0.0-beta494
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.
- package/bundles/hmcts-ccpay-web-component.umd.js +859 -340
- package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
- package/esm2015/lib/components/add-remission/add-remission.component.js +42 -6
- package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +253 -166
- package/esm2015/lib/components/card-details/card-details.component.js +4 -27
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +635 -225
- package/esm2015/lib/components/fee-summary/fee-summary.component.js +183 -73
- package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +66 -28
- package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +103 -46
- package/esm2015/lib/components/payment-list/payment-list.component.js +1 -1
- package/esm2015/lib/components/payment-view/payment-view.component.js +64 -34
- package/esm2015/lib/components/pba-details/pba-details.component.js +9 -16
- package/esm2015/lib/components/processed-payments/processed-payments.component.js +2 -2
- package/esm2015/lib/components/reports/reports.component.js +60 -14
- package/esm2015/lib/components/status-history/status-history.component.js +14 -7
- package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +84 -9
- package/esm2015/lib/interfaces/AddRemissionRequest.js +5 -5
- package/esm2015/lib/interfaces/AllocatePaymentRequest.js +10 -7
- package/esm2015/lib/interfaces/IFee.js +15 -1
- package/esm2015/lib/interfaces/PayhubAntennaRequest.js +29 -0
- package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +5 -9
- package/esm2015/lib/payment-lib.component.js +43 -14
- package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +16 -1
- package/esm2015/lib/services/payment-view/payment-view.service.js +22 -5
- package/esm2015/lib/services/xl-file/xl-file.service.js +2 -2
- package/esm5/lib/components/add-remission/add-remission.component.js +41 -7
- package/esm5/lib/components/allocate-payments/allocate-payments.component.js +157 -88
- package/esm5/lib/components/card-details/card-details.component.js +3 -3
- package/esm5/lib/components/case-transactions/case-transactions.component.js +277 -85
- package/esm5/lib/components/fee-summary/fee-summary.component.js +120 -51
- package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +64 -28
- package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +93 -43
- package/esm5/lib/components/payment-list/payment-list.component.js +1 -1
- package/esm5/lib/components/payment-view/payment-view.component.js +29 -5
- package/esm5/lib/components/pba-details/pba-details.component.js +3 -3
- package/esm5/lib/components/processed-payments/processed-payments.component.js +2 -2
- package/esm5/lib/components/reports/reports.component.js +49 -10
- package/esm5/lib/components/status-history/status-history.component.js +2 -2
- package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +55 -6
- package/esm5/lib/interfaces/AddRemissionRequest.js +4 -4
- package/esm5/lib/interfaces/AllocatePaymentRequest.js +8 -6
- package/esm5/lib/interfaces/IFee.js +15 -1
- package/esm5/lib/interfaces/PayhubAntennaRequest.js +26 -0
- package/esm5/lib/interfaces/PaymentToPayhubRequest.js +4 -7
- package/esm5/lib/payment-lib.component.js +27 -9
- package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +25 -1
- package/esm5/lib/services/payment-view/payment-view.service.js +31 -7
- package/esm5/lib/services/xl-file/xl-file.service.js +2 -2
- package/fesm2015/hmcts-ccpay-web-component.js +1485 -664
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/fesm5/hmcts-ccpay-web-component.js +857 -337
- package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +6 -1
- package/lib/components/allocate-payments/allocate-payments.component.d.ts +11 -9
- package/lib/components/case-transactions/case-transactions.component.d.ts +17 -4
- package/lib/components/fee-summary/fee-summary.component.d.ts +12 -4
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +2 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +4 -0
- package/lib/components/payment-view/payment-view.component.d.ts +2 -0
- package/lib/components/reports/reports.component.d.ts +4 -1
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +9 -0
- package/lib/interfaces/AddRemissionRequest.d.ts +2 -2
- package/lib/interfaces/AllocatePaymentRequest.d.ts +16 -3
- package/lib/interfaces/IFee.d.ts +7 -0
- package/lib/interfaces/PayhubAntennaRequest.d.ts +7 -0
- package/lib/interfaces/PaymentToPayhubRequest.d.ts +2 -3
- package/lib/payment-lib.component.d.ts +10 -3
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +2 -0
- package/lib/services/payment-view/payment-view.service.d.ts +5 -3
- package/package.json +1 -1
- package/esm2015/lib/interfaces/IPaymentList.js +0 -48
- package/esm5/lib/interfaces/IPaymentList.js +0 -47
- package/lib/interfaces/IPaymentList.d.ts +0 -15
|
@@ -8,6 +8,7 @@ import { CaseTransactionsService } from '../../services/case-transactions/case-t
|
|
|
8
8
|
import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
|
|
9
9
|
import { PaymentViewService } from '../../services/payment-view/payment-view.service';
|
|
10
10
|
import { Router } from '@angular/router';
|
|
11
|
+
import * as ls from "local-storage";
|
|
11
12
|
var CaseTransactionsComponent = /** @class */ (function () {
|
|
12
13
|
function CaseTransactionsComponent(router, paymentViewService, bulkScaningPaymentService, caseTransactionsService, paymentLibComponent) {
|
|
13
14
|
this.router = router;
|
|
@@ -24,10 +25,14 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
24
25
|
this.isAddFeeBtnEnabled = true;
|
|
25
26
|
this.isExceptionRecord = false;
|
|
26
27
|
this.isUnprocessedRecordSelected = false;
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
28
|
+
this.isAnyFeeGroupAvilable = true;
|
|
29
|
+
this.isHistoricGroupAvailable = false;
|
|
29
30
|
this.viewStatus = 'main';
|
|
30
31
|
this.isRemoveBtnDisabled = false;
|
|
32
|
+
this.clAmountDue = 0;
|
|
33
|
+
this.isFeeRecordsExist = false;
|
|
34
|
+
this.isGrpOutstandingAmtPositive = false;
|
|
35
|
+
this.lsCcdNumber = ls.get('ccdNumber');
|
|
31
36
|
}
|
|
32
37
|
/**
|
|
33
38
|
* @return {?}
|
|
@@ -39,22 +44,43 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
39
44
|
var _this = this;
|
|
40
45
|
this.isGrpOutstandingAmtPositive = false;
|
|
41
46
|
this.ccdCaseNumber = this.paymentLibComponent.CCD_CASE_NUMBER;
|
|
47
|
+
this.caseType = this.paymentLibComponent.CASETYPE;
|
|
42
48
|
if (this.paymentLibComponent.CCD_CASE_NUMBER === '') {
|
|
43
49
|
this.ccdCaseNumber = this.paymentLibComponent.EXC_REFERENCE;
|
|
44
50
|
}
|
|
45
51
|
this.excReference = this.paymentLibComponent.EXC_REFERENCE;
|
|
46
52
|
this.takePayment = this.paymentLibComponent.TAKEPAYMENT;
|
|
47
53
|
this.isBulkScanEnable = this.paymentLibComponent.ISBSENABLE;
|
|
48
|
-
this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(function (paymentGroups) {
|
|
49
|
-
_this.paymentGroups = paymentGroups['payment_groups'];
|
|
50
|
-
_this.calculateAmounts();
|
|
51
|
-
_this.totalRefundAmount = _this.calculateRefundAmount();
|
|
52
|
-
}, function (error) {
|
|
53
|
-
_this.errorMessage = /** @type {?} */ (error);
|
|
54
|
-
_this.setDefaults();
|
|
55
|
-
});
|
|
56
54
|
this.dcnNumber = this.paymentLibComponent.DCN_NUMBER;
|
|
57
55
|
this.selectedOption = this.paymentLibComponent.SELECTED_OPTION.toLocaleLowerCase();
|
|
56
|
+
this.isTurnOff = this.paymentLibComponent.ISTURNOFF;
|
|
57
|
+
this.isNewPcipalOff = this.paymentLibComponent.ISNEWPCIPALOFF;
|
|
58
|
+
this.isOldPcipalOff = this.paymentLibComponent.ISOLDPCIPALOFF;
|
|
59
|
+
this.isStrategicFixEnable = this.paymentLibComponent.ISSFENABLE;
|
|
60
|
+
if (!this.isTurnOff) {
|
|
61
|
+
if (this.lsCcdNumber !== this.ccdCaseNumber) {
|
|
62
|
+
this.router.navigateByUrl("/ccd-search?takePayment=true");
|
|
63
|
+
}
|
|
64
|
+
this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(function (paymentGroups) {
|
|
65
|
+
_this.paymentGroups = paymentGroups['payment_groups'];
|
|
66
|
+
_this.calculateAmounts();
|
|
67
|
+
_this.calculateRefundAmount();
|
|
68
|
+
}, function (error) {
|
|
69
|
+
_this.errorMessage = /** @type {?} */ (error);
|
|
70
|
+
_this.isAnyFeeGroupAvilable = false;
|
|
71
|
+
_this.setDefaults();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.caseTransactionsService.getPaymentGroups(this.ccdCaseNumber).subscribe(function (paymentGroups) {
|
|
76
|
+
_this.paymentGroups = paymentGroups['payment_groups'];
|
|
77
|
+
_this.calculateAmounts();
|
|
78
|
+
_this.totalRefundAmount = _this.calculateRefundAmount();
|
|
79
|
+
}, function (error) {
|
|
80
|
+
_this.errorMessage = /** @type {?} */ (error);
|
|
81
|
+
_this.setDefaults();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
58
84
|
this.checkForExceptionRecord();
|
|
59
85
|
};
|
|
60
86
|
/**
|
|
@@ -66,8 +92,8 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
66
92
|
function () {
|
|
67
93
|
this.totalPayments = 0.00;
|
|
68
94
|
this.totalRemissions = 0.00;
|
|
69
|
-
this.totalFees = 0.00;
|
|
70
95
|
this.totalNonOffPayments = 0.00;
|
|
96
|
+
this.totalFees = 0.00;
|
|
71
97
|
};
|
|
72
98
|
/**
|
|
73
99
|
* @param {?} payments
|
|
@@ -93,17 +119,17 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
93
119
|
*/
|
|
94
120
|
function () {
|
|
95
121
|
var _this = this;
|
|
96
|
-
if (this.paymentGroups.length === 0 && this.selectedOption.toLocaleLowerCase() === 'ccdorexception') {
|
|
122
|
+
if (this.paymentGroups.length === 0 && (this.selectedOption.toLocaleLowerCase() === 'ccdorexception' || this.selectedOption.toLocaleLowerCase() === 'rc')) {
|
|
97
123
|
this.bulkScaningPaymentService.getBSPaymentsByCCD(this.ccdCaseNumber).subscribe(function (recordData) {
|
|
98
|
-
if (recordData['data'] && recordData['data'].exception_record_reference.length > 0 && recordData['data'].ccd_reference > 0) {
|
|
124
|
+
if (recordData['data'] && recordData['data'].exception_record_reference && recordData['data'].exception_record_reference.length > 0 && recordData['data'].ccd_reference > 0) {
|
|
99
125
|
_this.isExceptionRecord = false;
|
|
100
126
|
_this.isAddFeeBtnEnabled = true;
|
|
101
127
|
}
|
|
102
|
-
if (recordData['data'] && recordData['data'].exception_record_reference.length > 0 && recordData['data'].ccd_reference === undefined) {
|
|
128
|
+
if (recordData['data'] && recordData['data'].exception_record_reference && recordData['data'].exception_record_reference.length > 0 && recordData['data'].ccd_reference === undefined) {
|
|
103
129
|
_this.isExceptionRecord = true;
|
|
104
130
|
_this.isAddFeeBtnEnabled = false;
|
|
105
131
|
}
|
|
106
|
-
if (recordData['data'] && recordData['data'].exception_record_reference.length === undefined && recordData['data'].ccd_reference > 0) {
|
|
132
|
+
if (recordData['data'] && recordData['data'].exception_record_reference && recordData['data'].exception_record_reference.length === undefined && recordData['data'].ccd_reference > 0) {
|
|
107
133
|
_this.isExceptionRecord = false;
|
|
108
134
|
_this.isAddFeeBtnEnabled = true;
|
|
109
135
|
}
|
|
@@ -126,9 +152,8 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
126
152
|
if (this.paymentGroups.length > 0)
|
|
127
153
|
this.paymentGroups.forEach(function (paymentGroup) {
|
|
128
154
|
if (paymentGroup.payments) {
|
|
129
|
-
_this.nonPayments = paymentGroup.payments;
|
|
130
155
|
paymentGroup.payments.forEach(function (payment) {
|
|
131
|
-
if (payment.case_reference !== undefined && payment.
|
|
156
|
+
if (payment.case_reference !== undefined && payment.ccd_case_number === undefined) {
|
|
132
157
|
_this.isExceptionRecord = true;
|
|
133
158
|
_this.isAddFeeBtnEnabled = false;
|
|
134
159
|
}
|
|
@@ -159,29 +184,63 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
159
184
|
this.paymentGroups.forEach(function (paymentGroup) {
|
|
160
185
|
if (paymentGroup.fees) {
|
|
161
186
|
paymentGroup.fees.forEach(function (fee) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
187
|
+
// new feature Apportionment toggle changes
|
|
188
|
+
if (!_this.isTurnOff) {
|
|
189
|
+
if (fee.date_created) {
|
|
190
|
+
/** @type {?} */
|
|
191
|
+
var a = fee.amount_due === undefined;
|
|
192
|
+
/** @type {?} */
|
|
193
|
+
var b = fee.amount_due <= 0;
|
|
194
|
+
_this.clAmountDue = a ? _this.clAmountDue + fee.net_amount : b ? _this.clAmountDue + 0 : _this.clAmountDue + fee.amount_due;
|
|
195
|
+
}
|
|
196
|
+
fee['payment_group_reference'] = paymentGroup['payment_group_reference'];
|
|
197
|
+
_this.fees.push(fee);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
feesTotal = feesTotal + fee.calculated_amount;
|
|
201
|
+
_this.fees.push(fee);
|
|
202
|
+
}
|
|
165
203
|
});
|
|
166
204
|
}
|
|
167
|
-
_this.
|
|
205
|
+
if (_this.isTurnOff) {
|
|
206
|
+
_this.totalFees = feesTotal;
|
|
207
|
+
}
|
|
168
208
|
if (paymentGroup.payments) {
|
|
169
209
|
paymentGroup.payments.forEach(function (payment) {
|
|
170
|
-
|
|
171
|
-
|
|
210
|
+
// new feature Apportionment toggle changes
|
|
211
|
+
if (!_this.isTurnOff) {
|
|
172
212
|
/** @type {?} */
|
|
173
213
|
var allocationLen = payment.payment_allocation;
|
|
174
|
-
if (
|
|
175
|
-
|
|
214
|
+
if (payment.status.toUpperCase() === 'SUCCESS') {
|
|
215
|
+
paymentsTotal = paymentsTotal + payment.amount;
|
|
216
|
+
if (allocationLen.length === 0 || allocationLen.length > 0 && allocationLen[0].allocation_status === 'Allocated') {
|
|
217
|
+
nonOffLinePayment = nonOffLinePayment + payment.amount;
|
|
218
|
+
}
|
|
219
|
+
if (allocationLen.length > 0) {
|
|
220
|
+
_this.nonPayments.push(payment);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (allocationLen.length === 0) {
|
|
224
|
+
_this.payments.push(payment);
|
|
225
|
+
}
|
|
226
|
+
payment.paymentGroupReference = paymentGroup.payment_group_reference;
|
|
227
|
+
_this.allPayments.push(payment);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
if (payment.status.toUpperCase() === 'SUCCESS') {
|
|
231
|
+
paymentsTotal = paymentsTotal + payment.amount;
|
|
232
|
+
_this.payments.push(payment);
|
|
176
233
|
}
|
|
177
|
-
|
|
234
|
+
payment.paymentGroupReference = paymentGroup.payment_group_reference;
|
|
235
|
+
_this.allPayments.push(payment);
|
|
178
236
|
}
|
|
179
|
-
payment.paymentGroupReference = paymentGroup.payment_group_reference;
|
|
180
|
-
_this.allPayments.push(payment);
|
|
181
237
|
});
|
|
182
238
|
}
|
|
183
239
|
_this.totalPayments = paymentsTotal;
|
|
184
|
-
|
|
240
|
+
// new feature Apportionment toggle changes
|
|
241
|
+
if (!_this.isTurnOff) {
|
|
242
|
+
_this.totalNonOffPayments = nonOffLinePayment;
|
|
243
|
+
}
|
|
185
244
|
if (paymentGroup.remissions) {
|
|
186
245
|
paymentGroup.remissions.forEach(function (remisison) {
|
|
187
246
|
remissionsTotal = remissionsTotal + remisison.hwf_amount;
|
|
@@ -199,54 +258,119 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
199
258
|
*/
|
|
200
259
|
function () {
|
|
201
260
|
var _this = this;
|
|
202
|
-
|
|
203
|
-
var totalRefundAmount = 0;
|
|
204
|
-
/** @type {?} */
|
|
205
|
-
var isFeeAmountZero = false;
|
|
206
|
-
this.paymentGroups.forEach(function (paymentGroup) {
|
|
207
|
-
/** @type {?} */
|
|
208
|
-
var grpOutstandingAmount = 0.00;
|
|
261
|
+
if (!this.isTurnOff) {
|
|
209
262
|
/** @type {?} */
|
|
210
|
-
var
|
|
263
|
+
var isNewPaymentGroup_1 = false;
|
|
264
|
+
this.paymentGroups.forEach(function (paymentGroup, index) {
|
|
265
|
+
/** @type {?} */
|
|
266
|
+
var grpOutstandingAmount = 0.00;
|
|
267
|
+
/** @type {?} */
|
|
268
|
+
var feesTotal = 0.00;
|
|
269
|
+
/** @type {?} */
|
|
270
|
+
var paymentsTotal = 0.00;
|
|
271
|
+
/** @type {?} */
|
|
272
|
+
var remissionsTotal = 0.00;
|
|
273
|
+
/** @type {?} */
|
|
274
|
+
var fees = [];
|
|
275
|
+
if (paymentGroup.fees) {
|
|
276
|
+
paymentGroup.fees.forEach(function (fee) {
|
|
277
|
+
feesTotal = feesTotal + fee.calculated_amount;
|
|
278
|
+
_this.isRemissionsMatch = false;
|
|
279
|
+
paymentGroup.remissions.forEach(function (rem) {
|
|
280
|
+
if (rem.fee_code === fee.code) {
|
|
281
|
+
_this.isRemissionsMatch = true;
|
|
282
|
+
fee['remissions'] = rem;
|
|
283
|
+
fees.push(fee);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
if (!_this.isRemissionsMatch) {
|
|
287
|
+
fees.push(fee);
|
|
288
|
+
}
|
|
289
|
+
if (fee.date_created) {
|
|
290
|
+
isNewPaymentGroup_1 = true;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
_this.isHistoricGroupAvailable = true;
|
|
294
|
+
_this.paymentGroups[index]['old'] = true;
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
_this.paymentGroups[index].fees = fees;
|
|
298
|
+
}
|
|
299
|
+
if (paymentGroup.payments) {
|
|
300
|
+
paymentGroup.payments.forEach(function (payment) {
|
|
301
|
+
if (payment.status.toUpperCase() === 'SUCCESS') {
|
|
302
|
+
paymentsTotal = paymentsTotal + payment.amount;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
if (paymentGroup.remissions) {
|
|
307
|
+
paymentGroup.remissions.forEach(function (remission) {
|
|
308
|
+
remissionsTotal = remissionsTotal + remission.hwf_amount;
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
grpOutstandingAmount = (feesTotal - remissionsTotal) - paymentsTotal;
|
|
312
|
+
if (grpOutstandingAmount > 0 && isNewPaymentGroup_1) {
|
|
313
|
+
_this.isAnyFeeGroupAvilable = true;
|
|
314
|
+
_this.paymentRef = paymentGroup.payment_group_reference;
|
|
315
|
+
}
|
|
316
|
+
if (paymentGroup.fees && paymentGroup.fees.length > 0 && grpOutstandingAmount <= 0 && isNewPaymentGroup_1) {
|
|
317
|
+
_this.isAnyFeeGroupAvilable = false;
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
if ((!isNewPaymentGroup_1 && this.isHistoricGroupAvailable) || (!isNewPaymentGroup_1 && !this.isHistoricGroupAvailable)) {
|
|
321
|
+
this.isAnyFeeGroupAvilable = false;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
211
325
|
/** @type {?} */
|
|
212
|
-
var
|
|
326
|
+
var totalRefundAmount_1 = 0;
|
|
213
327
|
/** @type {?} */
|
|
214
|
-
var
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
328
|
+
var isFeeAmountZero_1 = false;
|
|
329
|
+
this.paymentGroups.forEach(function (paymentGroup) {
|
|
330
|
+
/** @type {?} */
|
|
331
|
+
var grpOutstandingAmount = 0.00;
|
|
332
|
+
/** @type {?} */
|
|
333
|
+
var feesTotal = 0.00;
|
|
334
|
+
/** @type {?} */
|
|
335
|
+
var paymentsTotal = 0.00;
|
|
336
|
+
/** @type {?} */
|
|
337
|
+
var remissionsTotal = 0.00;
|
|
338
|
+
if (paymentGroup.fees) {
|
|
339
|
+
_this.isFeeRecordsExist = true;
|
|
340
|
+
paymentGroup.fees.forEach(function (fee) {
|
|
341
|
+
feesTotal = feesTotal + fee.calculated_amount;
|
|
342
|
+
if (fee.calculated_amount === 0) {
|
|
343
|
+
isFeeAmountZero_1 = true;
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
if (paymentGroup.payments) {
|
|
348
|
+
paymentGroup.payments.forEach(function (payment) {
|
|
349
|
+
if (payment.status.toUpperCase() === 'SUCCESS') {
|
|
350
|
+
paymentsTotal = paymentsTotal + payment.amount;
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
if (paymentGroup.remissions) {
|
|
355
|
+
paymentGroup.remissions.forEach(function (remission) {
|
|
356
|
+
remissionsTotal = remissionsTotal + remission.hwf_amount;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
grpOutstandingAmount = (feesTotal - remissionsTotal) - paymentsTotal;
|
|
360
|
+
if (grpOutstandingAmount < 0) {
|
|
361
|
+
if (totalRefundAmount_1 === 0) {
|
|
362
|
+
totalRefundAmount_1 = grpOutstandingAmount;
|
|
221
363
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
if (paymentGroup.payments) {
|
|
225
|
-
paymentGroup.payments.forEach(function (payment) {
|
|
226
|
-
if (payment.status.toUpperCase() === 'SUCCESS') {
|
|
227
|
-
paymentsTotal = paymentsTotal + payment.amount;
|
|
364
|
+
else {
|
|
365
|
+
totalRefundAmount_1 = (totalRefundAmount_1 + grpOutstandingAmount);
|
|
228
366
|
}
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
if (paymentGroup.remissions) {
|
|
232
|
-
paymentGroup.remissions.forEach(function (remission) {
|
|
233
|
-
remissionsTotal = remissionsTotal + remission.hwf_amount;
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
grpOutstandingAmount = (feesTotal - remissionsTotal) - paymentsTotal;
|
|
237
|
-
if (grpOutstandingAmount < 0) {
|
|
238
|
-
if (totalRefundAmount === 0) {
|
|
239
|
-
totalRefundAmount = grpOutstandingAmount;
|
|
240
367
|
}
|
|
241
|
-
else {
|
|
242
|
-
|
|
368
|
+
else if (grpOutstandingAmount > 0 || (grpOutstandingAmount === 0 && isFeeAmountZero_1)) {
|
|
369
|
+
_this.isGrpOutstandingAmtPositive = true;
|
|
243
370
|
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
return totalRefundAmount * -1;
|
|
371
|
+
});
|
|
372
|
+
return totalRefundAmount_1 * -1;
|
|
373
|
+
}
|
|
250
374
|
};
|
|
251
375
|
/**
|
|
252
376
|
* @param {?} paymentGroup
|
|
@@ -270,9 +394,22 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
270
394
|
*/
|
|
271
395
|
function (event) {
|
|
272
396
|
event.preventDefault();
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
397
|
+
if (!this.isAnyFeeGroupAvilable || this.isTurnOff) {
|
|
398
|
+
/** @type {?} */
|
|
399
|
+
var url = this.isBulkScanEnable ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
|
|
400
|
+
url += this.isTurnOff ? '&isTurnOff=Enable' : '&isTurnOff=Disable';
|
|
401
|
+
url += this.isStrategicFixEnable ? '&isStFixEnable=Enable' : '&isStFixEnable=Disable';
|
|
402
|
+
url += "&caseType=" + this.caseType;
|
|
403
|
+
url += this.isNewPcipalOff ? '&isNewPcipalOff=Enable' : '&isNewPcipalOff=Disable';
|
|
404
|
+
url += this.isOldPcipalOff ? '&isOldPcipalOff=Enable' : '&isOldPcipalOff=Disable';
|
|
405
|
+
this.router.navigateByUrl("/fee-search?selectedOption=" + this.selectedOption + "&ccdCaseNumber=" + this.ccdCaseNumber + url);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
this.paymentLibComponent.bspaymentdcn = null;
|
|
409
|
+
this.paymentLibComponent.paymentGroupReference = this.paymentRef;
|
|
410
|
+
this.paymentLibComponent.isTurnOff = this.isTurnOff;
|
|
411
|
+
this.paymentLibComponent.viewName = 'fee-summary';
|
|
412
|
+
}
|
|
276
413
|
};
|
|
277
414
|
/**
|
|
278
415
|
* @param {?} event
|
|
@@ -287,14 +424,17 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
287
424
|
this.router.navigateByUrl("/reports?selectedOption=" + this.selectedOption + "&ccdCaseNumber=" + this.ccdCaseNumber);
|
|
288
425
|
};
|
|
289
426
|
/**
|
|
427
|
+
* @param {?} paymentGroup
|
|
290
428
|
* @return {?}
|
|
291
429
|
*/
|
|
292
430
|
CaseTransactionsComponent.prototype.loadFeeSummaryPage = /**
|
|
431
|
+
* @param {?} paymentGroup
|
|
293
432
|
* @return {?}
|
|
294
433
|
*/
|
|
295
|
-
function () {
|
|
434
|
+
function (paymentGroup) {
|
|
296
435
|
this.paymentLibComponent.bspaymentdcn = null;
|
|
297
|
-
this.paymentLibComponent.paymentGroupReference =
|
|
436
|
+
this.paymentLibComponent.paymentGroupReference = paymentGroup.payment_group_reference;
|
|
437
|
+
this.paymentLibComponent.isTurnOff = this.isTurnOff;
|
|
298
438
|
this.paymentLibComponent.viewName = 'fee-summary';
|
|
299
439
|
};
|
|
300
440
|
/**
|
|
@@ -336,12 +476,15 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
336
476
|
*/
|
|
337
477
|
function (unprocessedRecordId) {
|
|
338
478
|
if (unprocessedRecordId) {
|
|
339
|
-
this.
|
|
479
|
+
if (this.isTurnOff) {
|
|
480
|
+
this.isAddFeeBtnEnabled = false;
|
|
481
|
+
}
|
|
340
482
|
this.isUnprocessedRecordSelected = true;
|
|
341
483
|
}
|
|
342
484
|
else {
|
|
343
|
-
this.
|
|
344
|
-
|
|
485
|
+
if (this.isTurnOff) {
|
|
486
|
+
this.isAddFeeBtnEnabled = true;
|
|
487
|
+
}
|
|
345
488
|
this.isUnprocessedRecordSelected = false;
|
|
346
489
|
}
|
|
347
490
|
};
|
|
@@ -356,6 +499,22 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
356
499
|
function (unProcessedRecordCount) {
|
|
357
500
|
this.unprocessedRecordCount = unProcessedRecordCount;
|
|
358
501
|
};
|
|
502
|
+
/**
|
|
503
|
+
* @param {?} fee
|
|
504
|
+
* @return {?}
|
|
505
|
+
*/
|
|
506
|
+
CaseTransactionsComponent.prototype.calculateAmountDue = /**
|
|
507
|
+
* @param {?} fee
|
|
508
|
+
* @return {?}
|
|
509
|
+
*/
|
|
510
|
+
function (fee) {
|
|
511
|
+
if (fee.date_created) {
|
|
512
|
+
return fee.amount_due !== undefined ? fee.amount_due : fee.net_amount;
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
return "0.00";
|
|
516
|
+
}
|
|
517
|
+
};
|
|
359
518
|
/**
|
|
360
519
|
* @param {?} fee
|
|
361
520
|
* @return {?}
|
|
@@ -396,11 +555,22 @@ var CaseTransactionsComponent = /** @class */ (function () {
|
|
|
396
555
|
_this.isRemoveBtnDisabled = false;
|
|
397
556
|
});
|
|
398
557
|
};
|
|
558
|
+
/**
|
|
559
|
+
* @param {?} amountDue
|
|
560
|
+
* @return {?}
|
|
561
|
+
*/
|
|
562
|
+
CaseTransactionsComponent.prototype.isCheckAmountdueExist = /**
|
|
563
|
+
* @param {?} amountDue
|
|
564
|
+
* @return {?}
|
|
565
|
+
*/
|
|
566
|
+
function (amountDue) {
|
|
567
|
+
return typeof amountDue === 'undefined';
|
|
568
|
+
};
|
|
399
569
|
CaseTransactionsComponent.decorators = [
|
|
400
570
|
{ type: Component, args: [{
|
|
401
571
|
selector: 'ccpay-case-transactions',
|
|
402
|
-
template: "<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper\">\n <div *ngIf=\"viewStatus === 'main'\">\n\n\n <div *ngIf=\"takePayment\" class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-xl\">Case transactions</h1>\n </div>\n </div> \n\n <div *ngIf=\"takePayment\" class=\"govuk-grid-row\">\n <div *ngIf='!isExceptionRecord' class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6 govuk-!-padding-top-6\">\n <h3 class=\"heading-medium\">CCD reference:</h3>\n <span> {{ ccdCaseNumber | ccdHyphens }}</span>\n </div>\n\n <div *ngIf='isExceptionRecord' class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6 govuk-!-padding-top-6\">\n <h3 class=\"heading-medium\">Exception reference:</h3>\n <span> {{ ccdCaseNumber | ccdHyphens }}</span>\n </div>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Total payments</td>\n <td class=\"govuk-table__header\" scope=\"col\">Total remissions</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount due</td>\n <td class=\"govuk-table__header\" scope=\"col\" *ngIf=\"totalRefundAmount > 0\">Total Surplus</td>\n <td class=\"govuk-table__header govuk-table__header--custom\" scope=\"col\" *ngIf=\"isBulkScanEnable\">Unallocated payments</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"totalpayments govuk-table__row\">\n <td class=\"govuk-table__cell\">{{ totalPayments | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ totalRemissions | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ (totalFees - totalRemissions) - totalNonOffPayments | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"govuk-table__cell\" *ngIf=\"totalRefundAmount > 0\">{{totalRefundAmount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"govuk-table__cell case-transaction__color\" *ngIf=\"isBulkScanEnable\">{{unprocessedRecordCount}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6\" *ngIf=\"takePayment\">\n <button type=\"submit\" (click)=\"loadFeeSummaryPage()\" class=\"govuk-button govuk-button--secondary govuk-!-margin-right-1\">\n Take telephony payment\n </button>\n </div>\n\n </div>\n\n <div class=\"govuk-grid-row\">\t\n <div *ngIf=\"takePayment\">\n <hr class=\"govuk-section-records-break\">\n </div>\t\n <ccpay-app-unprocessed-payments\t\n *ngIf=\"isBulkScanEnable\"\t\n [IS_BUTTON_ENABLE]=\"takePayment\"\t\n [FEE_RECORDS_EXISTS]=\"isFeeRecordsExist\" \t\n [IS_OS_AMT_AVAILABLE]=\"isGrpOutstandingAmtPositive\" \t\n (getUnprocessedFeeCount) = \"getUnprocessedFeeCount($event)\"\t\n (selectedUnprocessedFeeEvent) = \"selectedUnprocessedFeeEvent($event)\">\t\n </ccpay-app-unprocessed-payments>\t\n <hr class=\"govuk-section-records-break\">\t\n <ccpay-app-processed-payments\t\n *ngIf=\"takePayment\" [NONPAYMENTS]=\"nonPayments\"\t\n (goToPaymentViewComponent) = \"goToPaymentViewComponent($event)\"\t>\n </ccpay-app-processed-payments>\t\n <hr class=\"govuk-section-records-break\">\n </div>\n <div *ngIf=\"takePayment\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <span class=\"heading-small\">Fees</span>\n </div>\n\n <div class=\"govuk-grid-column-full\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount due</td>\n <td class=\"govuk-table__header\" scope=\"col\">Action</td>\n\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroups?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of fees;\">\t\n <td class=\"govuk-table__cell\">\t{{fee.code}} </td>\t\n <td class=\"govuk-table__cell\">{{fee.description}}</td>\t\n <td class=\"govuk-table__cell\">{{fee.volume? fee.volume : '-'}}</td>\t\n <td class=\"govuk-table__cell\">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\t\n <td class=\"govuk-table__cell\">{{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\t\n <td class=\"govuk-table__cell\"> - </td>\t\n <td class=\"govuk-table__cell\"> <a (click)=\"confirmRemoveFee(fee.id)\">Remove</a></td>\t\n </tr>\t\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroups?.length === 0\">\n <tr class=\"govuk-table__row\" >\n <td class=\"govuk-table__cell\" colspan=\"7\">No fees recorded</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <details *ngIf=\"allPayments?.length > 0 || remissions?.length > 0\">\n <summary class=\"govuk-hidetext\">\n <span class=\"summary\">Payments and remissions</span>\n </summary>\n \n <div class=\"panel panel-border-narrow\">\n <!-- payments -->\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Channel</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n <td class=\"govuk-table__header\" scope=\"col\">Payment status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of allPayments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">{{ payment.reference }}</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">{{ payment.channel | lowercase }}</td>\n <td class=\"govuk-table__cell capitalize whitespace-inherit\">{{ payment.method | lowercase}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.amount }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{getAllocationStatus(payment)}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.status }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n \n <!-- remissions -->\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Fee code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission amount</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"remissions?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let remission of remissions\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.fee_code }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.remission_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_amount }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"remissions?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">No remissions recorded</td>\n </tbody>\n </table>\n </div>\n </details>\n </div>\n</div>\n<div *ngIf=\"!takePayment\" class=\"govuk-grid-row govuk-grid__surplus-payments\">\t\n <div class=\"govuk-grid-column-full\">\t\n <span class=\"heading-medium\">Processed payments</span>\t\n <table class=\"govuk-table\">\t\n <thead class=\"govuk-table__head\">\t\n <tr class=\"govuk-table__row\">\t\n <td class=\"govuk-table__header\" scope=\"col\">Payment reference</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Date updated</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Channel</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\t\n <td class=\"govuk-table__header\" scope=\"col\">Status</td>\t\n </tr>\t\n </thead>\t\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length > 0\">\t\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of allPayments\">\t\n <td class=\"govuk-table__cell whitespace-inherit\">\t\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">{{ payment.reference }}</a>\t\n </td>\t\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\t\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_updated | date:'dd MMM yyyy HH:mm:ss' }}</td>\t\n <td class=\"channel govuk-table__cell whitespace-inherit\">{{ payment.channel | lowercase }}</td>\t\n <td class=\"govuk-table__cell capitalize whitespace-inherit\">{{ payment.method | lowercase}}</td>\t\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.amount }}</td>\t\n <td class=\"govuk-table__cell whitespace-inherit\"> {{getAllocationStatus(payment)}}</td>\t\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.status }}</td>\t\n </tr>\t\n </tbody>\t\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length === 0\">\t\n <td class=\"govuk-table__cell\" colspan=\"8\">No payments recorded</td>\t\n </tbody>\t\n </table>\t\n</div>\t \n</div>\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)=\"cancelRemoval()\">\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(feeId)\">\n Remove\n </button>\n </form>\n </div>\n</ng-container>\n </main>\n\n",
|
|
403
|
-
styles: [".govuk-grid-column-full--gr{position:relative;margin-bottom:10px}.disable{text-decoration:none;cursor:default;color:#fff;background-color:grey;pointer-events:none}.govuk-grid__surplus-payments{margin:20px 0}.govuk-grid__surplus-payments>.govuk-grid-column-full{padding:0}.govuk-grid__surplus-payments-col1{margin-bottom:10px}.govuk-inset-text__no-border{border-left:0}.govuk-hidetext{font-size:22px;padding-bottom:10px}.lowercase{text-transform:lowercase}.channel::first-letter{text-transform:uppercase}.govuk-heading-xl{font-size:48px;margin-bottom:1px}.govuk-section-break--visible{border-bottom:2px solid #000}.totalpayments.govuk-table__row{border-bottom:2px solid #000!important}.govuk-inset-text{margin-left:1em}.govuk-button{font-size:19px}.govuk-table__cell.govuk-table__cell--col6.govuk-table__custom--col6,.groupamount.govuk-table__header{text-align:right}.feeclass{padding-left:.7em}.align-center{text-align:center}details summary{display:list-item}.case-transaction__color{color:#a71414;font-weight:700;text-align:center}.capitalize::first-letter{text-transform:uppercase}.govuk-inset-text__no-left-margin{margin-left:0;padding-left:0}.whitespace-inherit{white-space:inherit!important}.govuk-section-records-break{margin:10px;border-bottom:2px solid #000!important}.exisitng-fees{margin-left:12px}.add-telephony-payment{margin-top:-2em;margin-left:-2em}.govuk-table__header--custom{text-align:center}"]
|
|
572
|
+
template: "<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper\">\n <div *ngIf=\"viewStatus === 'main'&& !isTurnOff && takePayment\">\n\n\n <div *ngIf=\"takePayment\" class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-xl\">Case transactions</h1>\n </div>\n </div>\n\n <div *ngIf=\"takePayment\" class=\"govuk-grid-row\">\n <div *ngIf='!isExceptionRecord' class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6 govuk-!-padding-top-6\">\n <h3 class=\"heading-medium\">CCD reference:</h3>\n <span> {{ ccdCaseNumber | ccdHyphens }}</span>\n </div>\n\n <div *ngIf='isExceptionRecord' class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6 govuk-!-padding-top-6\">\n <h3 class=\"heading-medium\">Exception reference:</h3>\n <span> {{ ccdCaseNumber | ccdHyphens }}</span>\n </div>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Total payments</td>\n <td class=\"govuk-table__header\" scope=\"col\">Total remissions</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount due</td>\n <td class=\"govuk-table__header govuk-table__header--custom\" scope=\"col\" *ngIf=\"isBulkScanEnable\">Unallocated payments</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"totalpayments govuk-table__row\">\n <td class=\"govuk-table__cell summary-table-font\">{{ totalPayments | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell summary-table-font\">{{ totalRemissions | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell summary-table-font\">{{ clAmountDue | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"govuk-table__cell case-transaction__color summary-table-font\" *ngIf=\"isBulkScanEnable\">{{unprocessedRecordCount}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"govuk-grid-column-two-thirds\" *ngIf=\"takePayment\">\n <button type=\"submit\" (click)=\"redirectToFeeSearchPage($event)\"\n [disabled]=\"!isAddFeeBtnEnabled\"\n [ngClass]='!isAddFeeBtnEnabled ? \"govuk-button govuk-button--secondary govuk-button--disabled govuk-!-margin-right-1\" : \"govuk-button govuk-button--secondary govuk-!-margin-right-1\"'>\n Take telephony payment\n </button>\n </div>\n\n </div>\n <div class=\"govuk-grid-row\">\n\n <ccpay-app-unprocessed-payments\n *ngIf=\"isBulkScanEnable\"\n [IS_BUTTON_ENABLE]=\"takePayment\"\n [FEE_RECORDS_EXISTS]=\"isAnyFeeGroupAvilable\"\n [ISTURNOFF]=\"isTurnOff\"\n [ISSFENABLE]=\"isStrategicFixEnable\"\n [PAYMENTREF]=\"paymentRef\"\n [ISNEWPCIPALOFF]=\"isNewPcipalOff\"\n [ISOLDPCIPALOFF]=\"isOldPcipalOff\"\n (getUnprocessedFeeCount) = \"getUnprocessedFeeCount($event)\"\n (selectedUnprocessedFeeEvent) = \"selectedUnprocessedFeeEvent($event)\">\n </ccpay-app-unprocessed-payments>\n </div>\n <div *ngIf=\"takePayment\" class=\" govuk-!-margin-top-9\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <h3 class=\"heading-medium\">Fees</h3>\n </div>\n <div class=\"govuk-grid-column-full\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount due</td>\n <td class=\"govuk-table__header\" scope=\"col\">Action</td>\n\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let paymentGroup of paymentGroups;\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell\">\t{{fee.code}} </td>\n <td class=\"govuk-table__cell\">{{fee.description}}</td>\n <td class=\"govuk-table__cell\">{{fee.volume? fee.volume : '-'}}</td>\n <td class=\"govuk-table__cell\">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\" [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"paymentGroup.old && i==0\"> {{getGroupOutstandingAmount(paymentGroup)| currency:'GBP':'symbol-narrow':'1.2-2'}}* </td>\n <td class=\"govuk-table__cell\" *ngIf=\"!paymentGroup.old\"> {{calculateAmountDue(fee) | currency:'GBP':'symbol-narrow':'1.2-2'}} </td>\n <td class=\"govuk-table__cell\" *ngIf=\"!paymentGroup.old\">\n <a (click)=\"confirmRemoveFee(fee.id)\" [ngClass]='!isCheckAmountdueExist(fee.amount_due) || fee.remissions ? \"disable-link\" : \"\"'>Remove</a>\n </td>\n <td class=\"govuk-table__cell\" *ngIf=\"paymentGroup.old\">\n <a (click)=\"confirmRemoveFee(fee.id)\" [ngClass]='paymentGroup.payments?.length > 0 || paymentGroup.remissions?.length > 0 ? \"disable-link\" : \"\"'>Remove</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroups?.length === 0\">\n <tr class=\"govuk-table__row\" >\n <td class=\"govuk-table__cell\" colspan=\"7\">No fees recorded</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"hmcts-banner\" *ngIf=\"isHistoricGroupAvailable\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\n C13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\"></path>\n </svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">information</span>\n * These fees have already been processed offline. Check the notes in CCD for more information.\n </div>\n </div>\n <div class=\"panel panel-no--style\" *ngIf=\"allPayments?.length > 0 || remissions?.length > 0\">\n <!-- payments -->\n <h3 class=\"heading-medium\">Payments</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-28\" scope=\"col\">Payment reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Channel</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header col-15\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n <td class=\"govuk-table__header\" scope=\"col\">Payment status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of allPayments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">{{ payment.reference }}</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">{{ payment.channel | lowercase }}</td>\n <td class=\"govuk-table__cell capitalize whitespace-inherit\">{{ payment.method | lowercase}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{getAllocationStatus(payment)}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.status }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"7\">No payments recorded</td>\n </tbody>\n </table>\n\n <!-- remissions -->\n <h3 class=\"heading-medium\">Remissions</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Remission reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission amount</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"remissions?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let remission of remissions\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.remission_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.fee_code }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"remissions?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">No remissions recorded</td>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n <div *ngIf=\"takePayment && isTurnOff\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"govuk-heading-xl\">Case transactions</h1>\n </div>\n\n <div class=\"govuk-grid-column-one-third\" align=\"right\" >\n <a [ngClass]=\"{ 'disable': !isAddFeeBtnEnabled} \" (click)=\"redirectToFeeSearchPage($event)\" class=\"button\">Add a new fee</a>\n </div>\n </div> \n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds govuk-!-padding-bottom-6\">\n <h3 class=\"heading-medium\">CCD reference:</h3>\n <span> {{ ccdCaseNumber | ccdHyphens }}</span>\n </div>\n\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Total payments</td>\n <td class=\"govuk-table__header\" scope=\"col\">Total remissions</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount due</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"totalpayments govuk-table__row\">\n <td class=\"govuk-table__cell\">{{ totalPayments | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ totalRemissions | currency :'GBP':'symbol':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ (totalFees - totalRemissions) - totalPayments | currency :'GBP':'symbol':'1.2-2'}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n\n <!-- No fees start -->\n <div *ngIf=\"paymentGroups?.length === 0\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <span class=\"heading-small\">Existing fees</span>\n </div>\n\n <div class=\"govuk-grid-column-full\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Group amount outstanding</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No fees recorded</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n\n <!-- No fees end -->\n\n <div *ngFor=\"let paymentGroup of paymentGroups\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-grid-column-full--gr\">\n <span class=\"heading-medium\">Group reference: {{paymentGroup.payment_group_reference}}</span>\n </div>\n </div>\n <div class=\"govuk-grid-row\">\n\n <!--New Code start-->\n\n <div class=\"govuk-grid-column-full\">\n <span class=\"heading-small\">Exisiting fees</span>\n </div>\n <div class=feeclass>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Description</td>\n <td class=\"govuk-table__header\" scope=\"col\">Volume</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Calculated amount</td>\n <td class=\"groupamount govuk-table__header\" scope=\"col\">Group amount outstanding</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell govuk-table__cell--col1\">{{fee.code}}</td>\n <td class=\"govuk-table__cell govuk-table__cell--col2\"> {{fee.description}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col3 align-center\"> {{fee.volume? fee.volume : '-'}} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col4\"> {{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col5\"> {{fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n <td class=\"govuk-table__cell govuk-table__cell--col6 govuk-table__custom--col6\" [attr.rowspan]=\"paymentGroup.fees.length\" *ngIf=\"i==0\">\n {{getGroupOutstandingAmount(paymentGroup) | currency:'GBP':'symbol-narrow':'1.2-2' }} </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees.length==0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"govuk-inset-text govuk-inset-text__no-border\" *ngIf=\"paymentGroup.payments || paymentGroup.remissions\">\n <details>\n <summary class=\"govuk-hidetext\">\n <span class=\"summary\">Allocated payments and remissions</span>\n </summary>\n\n <div class=\"panel panel-border-narrow\">\n <!-- payments -->\n <span class=\"heading-medium\">Payments</span>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Channel</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n <td class=\"govuk-table__header\" scope=\"col\">Status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.payments?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of paymentGroup.payments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(paymentGroup.payment_group_reference, payment.reference, payment.method)\">{{ payment.reference }}</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">{{ payment.channel | lowercase }}</td>\n <td class=\"govuk-table__cell capitalize whitespace-inherit\">{{ payment.method | lowercase}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.amount }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{getAllocationStatus(payment)}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.status }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.payments?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No payments recorded</td>\n </tbody>\n </table>\n\n <!-- remissions -->\n <span class=\"heading-medium\">Remissions</span>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Remission reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission code</td>\n <td class=\"govuk-table__header\" scope=\"col\">Fee applied against</td>\n <td class=\"govuk-table__header\" scope=\"col\">Remission amount</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.remissions?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let remission of paymentGroup.remissions\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.remission_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.fee_code }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission.hwf_amount }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.remissions?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">No remissions recorded</td>\n </tbody>\n </table>\n </div>\n </details>\n \n\n <div *ngIf=\"takePayment\">\n <button type=\"submit\" (click)=\"loadFeeSummaryPage(paymentGroup)\"\n [disabled]=\"(getGroupOutstandingAmount(paymentGroup) <= 0 || isUnprocessedRecordSelected)\"\n [ngClass]='(getGroupOutstandingAmount(paymentGroup) <= 0 || isUnprocessedRecordSelected) ? \"govuk-button govuk-button--secondary govuk-button--disabled govuk-!-margin-right-1\" : \"govuk-button govuk-button--secondary govuk-!-margin-right-1\"'>\n Add telephone payment\n </button>\n </div>\n </div>\n </div>\n <ccpay-app-unprocessed-payments\n *ngIf=\"isBulkScanEnable\"\n [IS_BUTTON_ENABLE]=\"takePayment\"\n [ISTURNOFF]=\"isTurnOff\"\n [ISNEWPCIPALOFF]=\"isNewPcipalOff\"\n [ISOLDPCIPALOFF]=\"isOldPcipalOff\"\n [ISSFENABLE]=\"isStrategicFixEnable\"\n [FEE_RECORDS_EXISTS]=\"isFeeRecordsExist\" \n [IS_OS_AMT_AVAILABLE]=\"isGrpOutstandingAmtPositive\" \n (selectedUnprocessedFeeEvent) = \"selectedUnprocessedFeeEvent($event)\">\n </ccpay-app-unprocessed-payments>\n <div class=\"govuk-grid-row govuk-grid__surplus-payments\" *ngIf=\"totalRefundAmount > 0 && takePayment\">\n <div class=\"govuk-grid-column-full govuk-grid__surplus-payments-col1\">\n <h3 class=\"heading-medium\">Surplus payments</h3>\n </div>\n <div class=\"govuk-grid-column-full\">\n Total surplus payments received: {{totalRefundAmount | currency :'GBP':'symbol':'1.2-2'}}\n </div>\n </div>\n </div>\n <ccpay-app-unprocessed-payments\n *ngIf=\"isBulkScanEnable && !takePayment\"\n [IS_BUTTON_ENABLE]=\"takePayment\"\n [ISTURNOFF]=\"isTurnOff\"\n [ISSFENABLE]=\"isStrategicFixEnable\"\n [FEE_RECORDS_EXISTS]=\"isFeeRecordsExist\" \n [IS_OS_AMT_AVAILABLE]=\"isGrpOutstandingAmtPositive\" \n (selectedUnprocessedFeeEvent) = \"selectedUnprocessedFeeEvent($event)\">\n</ccpay-app-unprocessed-payments>\n\n<div *ngIf=\"!takePayment\" class=\"govuk-grid-row govuk-grid__surplus-payments\">\n <div class=\"govuk-grid-column-full\">\n <span class=\"heading-medium\">Processed payments</span>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment reference</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Date updated</td>\n <td class=\"govuk-table__header\" scope=\"col\">Channel</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n <td class=\"govuk-table__header\" scope=\"col\">Status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of allPayments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">{{ payment.reference }}</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_created | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.date_updated | date:'dd MMM yyyy HH:mm:ss' }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">{{ payment.channel | lowercase }}</td>\n <td class=\"govuk-table__cell capitalize whitespace-inherit\">{{ payment.method | lowercase}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.amount }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{getAllocationStatus(payment)}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment.status }}</td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"allPayments?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"8\">No payments recorded</td>\n </tbody>\n </table>\n</div>\n</div>\n\n<input #myInput type='hidden' id='iFrameDrivenImageValue' value='FEEREMOVALCONFIRMATION_2'>\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)=\"cancelRemoval()\">\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(feeId)\">\n Remove\n </button>\n </form>\n </div>\n</ng-container>\n </main>\n</div>",
|
|
573
|
+
styles: [".govuk-grid-column-full--gr{position:relative;margin-bottom:10px}.disable{text-decoration:none;cursor:default;color:#fff;background-color:grey;pointer-events:none}.govuk-grid__surplus-payments{margin:20px 0}.govuk-grid__surplus-payments>.govuk-grid-column-full{padding:0}.govuk-grid__surplus-payments-col1{margin-bottom:10px}.govuk-inset-text__no-border{border-left:0}.govuk-hidetext{font-size:22px;padding-bottom:10px}.lowercase{text-transform:lowercase}.channel::first-letter{text-transform:uppercase}.govuk-heading-xl{font-size:48px;margin-bottom:1px}.govuk-section-break--visible{border-bottom:2px solid #000}.totalpayments.govuk-table__row{border-bottom:2px solid #000!important}.govuk-inset-text{margin-left:1em}.govuk-button{font-size:19px}.govuk-table__cell.govuk-table__cell--col6.govuk-table__custom--col6,.groupamount.govuk-table__header{text-align:right}.feeclass{padding-left:.7em}.align-center{text-align:center}details summary{display:list-item}.case-transaction__color{color:#a71414;font-weight:700;text-align:center}.capitalize::first-letter{text-transform:uppercase}.govuk-inset-text__no-left-margin{margin-left:0;padding-left:0}.whitespace-inherit{white-space:inherit!important}.govuk-section-records-break{margin:10px;border-bottom:2px solid #000!important}.exisitng-fees{margin-left:12px}.add-telephony-payment{margin-top:-2em;margin-left:-2em}.govuk-table__header--custom{text-align:center}.disable-link{cursor:default;pointer-events:none;color:#8e8c8c}.panel-no--style{border-left-style:none}.col-28{width:28%}.col-15{width:15%}.hmcts-banner>.hmcts-banner__message{font-size:19px;line-height:1.25}.summary-table-font{font-size:36px}"]
|
|
404
574
|
},] },
|
|
405
575
|
];
|
|
406
576
|
/** @nocollapse */
|
|
@@ -448,6 +618,16 @@ if (false) {
|
|
|
448
618
|
/** @type {?} */
|
|
449
619
|
CaseTransactionsComponent.prototype.dcnNumber;
|
|
450
620
|
/** @type {?} */
|
|
621
|
+
CaseTransactionsComponent.prototype.paymentRef;
|
|
622
|
+
/** @type {?} */
|
|
623
|
+
CaseTransactionsComponent.prototype.isTurnOff;
|
|
624
|
+
/** @type {?} */
|
|
625
|
+
CaseTransactionsComponent.prototype.isNewPcipalOff;
|
|
626
|
+
/** @type {?} */
|
|
627
|
+
CaseTransactionsComponent.prototype.isOldPcipalOff;
|
|
628
|
+
/** @type {?} */
|
|
629
|
+
CaseTransactionsComponent.prototype.isStrategicFixEnable;
|
|
630
|
+
/** @type {?} */
|
|
451
631
|
CaseTransactionsComponent.prototype.isAddFeeBtnEnabled;
|
|
452
632
|
/** @type {?} */
|
|
453
633
|
CaseTransactionsComponent.prototype.isExceptionRecord;
|
|
@@ -456,22 +636,34 @@ if (false) {
|
|
|
456
636
|
/** @type {?} */
|
|
457
637
|
CaseTransactionsComponent.prototype.exceptionRecordReference;
|
|
458
638
|
/** @type {?} */
|
|
459
|
-
CaseTransactionsComponent.prototype.
|
|
460
|
-
/** @type {?} */
|
|
461
|
-
CaseTransactionsComponent.prototype.isGrpOutstandingAmtPositive;
|
|
639
|
+
CaseTransactionsComponent.prototype.isAnyFeeGroupAvilable;
|
|
462
640
|
/** @type {?} */
|
|
463
|
-
CaseTransactionsComponent.prototype.
|
|
641
|
+
CaseTransactionsComponent.prototype.isHistoricGroupAvailable;
|
|
464
642
|
/** @type {?} */
|
|
465
643
|
CaseTransactionsComponent.prototype.isBulkScanEnable;
|
|
466
644
|
/** @type {?} */
|
|
645
|
+
CaseTransactionsComponent.prototype.isRemissionsMatch;
|
|
646
|
+
/** @type {?} */
|
|
467
647
|
CaseTransactionsComponent.prototype.viewStatus;
|
|
468
648
|
/** @type {?} */
|
|
469
649
|
CaseTransactionsComponent.prototype.isRemoveBtnDisabled;
|
|
470
650
|
/** @type {?} */
|
|
471
651
|
CaseTransactionsComponent.prototype.feeId;
|
|
472
652
|
/** @type {?} */
|
|
653
|
+
CaseTransactionsComponent.prototype.clAmountDue;
|
|
654
|
+
/** @type {?} */
|
|
473
655
|
CaseTransactionsComponent.prototype.unprocessedRecordCount;
|
|
474
656
|
/** @type {?} */
|
|
657
|
+
CaseTransactionsComponent.prototype.isFeeRecordsExist;
|
|
658
|
+
/** @type {?} */
|
|
659
|
+
CaseTransactionsComponent.prototype.isGrpOutstandingAmtPositive;
|
|
660
|
+
/** @type {?} */
|
|
661
|
+
CaseTransactionsComponent.prototype.totalRefundAmount;
|
|
662
|
+
/** @type {?} */
|
|
663
|
+
CaseTransactionsComponent.prototype.caseType;
|
|
664
|
+
/** @type {?} */
|
|
665
|
+
CaseTransactionsComponent.prototype.lsCcdNumber;
|
|
666
|
+
/** @type {?} */
|
|
475
667
|
CaseTransactionsComponent.prototype.router;
|
|
476
668
|
/** @type {?} */
|
|
477
669
|
CaseTransactionsComponent.prototype.paymentViewService;
|
|
@@ -483,4 +675,4 @@ if (false) {
|
|
|
483
675
|
CaseTransactionsComponent.prototype.paymentLibComponent;
|
|
484
676
|
}
|
|
485
677
|
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10cmFuc2FjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYXNlLXRyYW5zYWN0aW9ucy9jYXNlLXRyYW5zYWN0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDN0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJdEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDOztJQW1SckMsbUNBQW9CLE1BQWMsRUFDMUIsb0JBQ0EsMkJBQ0EseUJBQ0E7UUFKWSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0I7UUFDbEIsOEJBQXlCLEdBQXpCLHlCQUF5QjtRQUN6Qiw0QkFBdUIsR0FBdkIsdUJBQXVCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUI7NkJBN0JKLEVBQUU7d0JBQ0YsRUFBRTsyQkFDQyxFQUFFOzJCQUNGLEVBQUU7MEJBQ0QsRUFBRTtvQkFDZCxFQUFFO2tDQVFhLElBQUk7aUNBQ0wsS0FBSzsyQ0FDSyxLQUFLO2lDQUVmLEtBQUs7MkNBQ0ssS0FBSzswQkFHL0IsTUFBTTttQ0FDWSxLQUFLO0tBT2lCOzs7O0lBRXJELDRDQUFROzs7SUFBUjtRQUFBLGlCQXlCQztRQXhCQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFD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QUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUM7S0FDNUM7Ozs7SUFDRCxpREFBYTs7O0lBQWI7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztLQUMxQjs7Ozs7SUFDRCw2Q0FBUzs7OztJQUFULFVBQVUsR0FBUTtRQUFsQixpQkFXQztRQVZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsVUFBQyxPQUFZO1lBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUMxQixFQUNELFVBQUMsS0FBVTtZQUNQLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7U0FDcEMsQ0FDRixDQUFDO0tBQ0g7O2dCQTNnQkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxxbWJBK09YO29CQUNDLE1BQU0sRUFBRSxDQUFDLHM0Q0FBczRDLENBQUM7aUJBQ2o1Qzs7OztnQkFyUE8sTUFBTTtnQkFKTCxrQkFBa0I7Z0JBRGxCLHlCQUF5QjtnQkFEMUIsdUJBQXVCO2dCQUZ2QixtQkFBbUI7O29DQUQzQjs7U0ErUGEseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGF5bWVudExpYkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7Q2FzZVRyYW5zYWN0aW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nhc2UtdHJhbnNhY3Rpb25zL2Nhc2UtdHJhbnNhY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7SUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7SVBheW1lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHtJUmVtaXNzaW9ufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LWNhc2UtdHJhbnNhY3Rpb25zJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG5cbiAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ21haW4nXCI+XG5cblxuICAgIDxkaXYgICAqbmdJZj1cInRha2VQYXltZW50XCIgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPkNhc2UgdHJhbnNhY3Rpb25zPC9oMT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiBcblxuICAgIDxkaXYgICAqbmdJZj1cInRha2VQYXltZW50XCIgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiAqbmdJZj0nIWlzRXhjZXB0aW9uUmVjb3JkJyBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMgZ292dWstIS1wYWRkaW5nLWJvdHRvbS02IGdvdnVrLSEtcGFkZGluZy10b3AtNlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkNDRCByZWZlcmVuY2U6PC9oMz5cbiAgICAgICAgPHNwYW4+IHt7IGNjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9J2lzRXhjZXB0aW9uUmVjb3JkJyBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMgZ292dWstIS1wYWRkaW5nLWJvdHRvbS02IGdvdnVrLSEtcGFkZGluZy10b3AtNlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkV4Y2VwdGlvbiByZWZlcmVuY2U6PC9oMz5cbiAgICAgICAgPHNwYW4+IHt7IGNjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIGdvdnVrLSEtcGFkZGluZy1ib3R0b20tM1wiPlxuICAgICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5Ub3RhbCBwYXltZW50czwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlRvdGFsIHJlbWlzc2lvbnM8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbW91bnQgZHVlPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCIgKm5nSWY9XCJ0b3RhbFJlZnVuZEFtb3VudCA+IDBcIj5Ub3RhbCBTdXJwbHVzPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBnb3Z1ay10YWJsZV9faGVhZGVyLS1jdXN0b21cIiBzY29wZT1cImNvbFwiICpuZ0lmPVwiaXNCdWxrU2NhbkVuYWJsZVwiPlVuYWxsb2NhdGVkIHBheW1lbnRzPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidG90YWxwYXltZW50cyBnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgdG90YWxQYXltZW50cyB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyB0b3RhbFJlbWlzc2lvbnMgfCBjdXJyZW5jeSA6J0dCUCc6J3N5bWJvbCc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgKHRvdGFsRmVlcyAtIHRvdGFsUmVtaXNzaW9ucykgLSB0b3RhbE5vbk9mZlBheW1lbnRzIHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMid9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgKm5nSWY9XCJ0b3RhbFJlZnVuZEFtb3VudCA+IDBcIj57e3RvdGFsUmVmdW5kQW1vdW50IHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMid9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGNhc2UtdHJhbnNhY3Rpb25fX2NvbG9yXCIgKm5nSWY9XCJpc0J1bGtTY2FuRW5hYmxlXCI+e3t1bnByb2Nlc3NlZFJlY29yZENvdW50fX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzIGdvdnVrLSEtcGFkZGluZy1ib3R0b20tNlwiICpuZ0lmPVwidGFrZVBheW1lbnRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImxvYWRGZWVTdW1tYXJ5UGFnZSgpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiPlxuICAgICAgICAgIFRha2UgdGVsZXBob255IHBheW1lbnRcbiAgICAgICAgPC9idXR0b24+XG4gICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cdFxuICAgICAgPGRpdiAqbmdJZj1cInRha2VQYXltZW50XCI+XG4gICAgICAgICAgPGhyIGNsYXNzPVwiZ292dWstc2VjdGlvbi1yZWNvcmRzLWJyZWFrXCI+XG4gICAgICA8L2Rpdj5cdFxuICAgICAgPGNjcGF5LWFwcC11bnByb2Nlc3NlZC1wYXltZW50c1x0XG4gICAgICAqbmdJZj1cImlzQnVsa1NjYW5FbmFibGVcIlx0XG4gICAgICBbSVNfQlVUVE9OX0VOQUJMRV09XCJ0YWtlUGF5bWVudFwiXHRcbiAgICAgIFtGRUVfUkVDT1JEU19FWElTVFNdPVwiaXNGZWVSZWNvcmRzRXhpc3RcIiBcdFxuICAgICAgW0lTX09TX0FNVF9BVkFJTEFCTEVdPVwiaXNHcnBPdXRzdGFuZGluZ0FtdFBvc2l0aXZlXCIgXHRcbiAgICAgIChnZXRVbnByb2Nlc3NlZEZlZUNvdW50KSA9IFwiZ2V0VW5wcm9jZXNzZWRGZWVDb3VudCgkZXZlbnQpXCJcdFxuICAgICAgKHNlbGVjdGVkVW5wcm9jZXNzZWRGZWVFdmVudCkgPSBcInNlbGVjdGVkVW5wcm9jZXNzZWRGZWVFdmVudCgkZXZlbnQpXCI+XHRcbiAgICAgIDwvY2NwYXktYXBwLXVucHJvY2Vzc2VkLXBheW1lbnRzPlx0XG4gICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLXJlY29yZHMtYnJlYWtcIj5cdFxuICAgICAgPGNjcGF5LWFwcC1wcm9jZXNzZWQtcGF5bWVudHNcdFxuICAgICAgKm5nSWY9XCJ0YWtlUGF5bWVudFwiIFtOT05QQVlNRU5UU109XCJub25QYXltZW50c1wiXHRcbiAgICAgIChnb1RvUGF5bWVudFZpZXdDb21wb25lbnQpID0gXCJnb1RvUGF5bWVudFZpZXdDb21wb25lbnQoJGV2ZW50KVwiXHQ+XG4gICAgICA8L2NjcGF5LWFwcC1wcm9jZXNzZWQtcGF5bWVudHM+XHRcbiAgICAgIDxociBjbGFzcz1cImdvdnVrLXNlY3Rpb24tcmVjb3Jkcy1icmVha1wiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgICpuZ0lmPVwidGFrZVBheW1lbnRcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5nLXNtYWxsXCI+RmVlczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGxcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+Q29kZTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkRlc2NyaXB0aW9uPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+Vm9sdW1lPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RmVlIGFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNhbGN1bGF0ZWQgYW1vdW50PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+QW1vdW50IGR1ZTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFjdGlvbjwvdGQ+XG5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInBheW1lbnRHcm91cHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCBmZWUgb2YgZmVlcztcIj5cdFxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+XHR7e2ZlZS5jb2RlfX0gPC90ZD5cdFxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tmZWUuZGVzY3JpcHRpb259fTwvdGQ+XHRcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7ZmVlLnZvbHVtZT8gZmVlLnZvbHVtZSA6ICctJ319PC90ZD5cdFxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgZmVlLmZlZV9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XHRcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7ZmVlLmNhbGN1bGF0ZWRfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlx0XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj4gLSA8L3RkPlx0XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj4gPGEgKGNsaWNrKT1cImNvbmZpcm1SZW1vdmVGZWUoZmVlLmlkKVwiPlJlbW92ZTwvYT48L3RkPlx0XG4gICAgICAgICAgICAgIDwvdHI+XHRcbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicGF5bWVudEdyb3Vwcz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiA+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBjb2xzcGFuPVwiN1wiPk5vIGZlZXMgcmVjb3JkZWQ8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkZXRhaWxzICpuZ0lmPVwiYWxsUGF5bWVudHM/Lmxlbmd0aCA+IDAgfHwgcmVtaXNzaW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9XCJnb3Z1ay1oaWRldGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5XCI+UGF5bWVudHMgYW5kIHJlbWlzc2lvbnM8L3NwYW4+XG4gICAgICAgICAgICA8L3N1bW1hcnk+XG4gIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtYm9yZGVyLW5hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5EYXRlIGNyZWF0ZWQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNoYW5uZWw8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPk1ldGhvZDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+QW1vdW50PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbGxvY2F0aW9uIHN0YXR1czwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UGF5bWVudCBzdGF0dXM8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cImFsbFBheW1lbnRzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIGFsbFBheW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9QYXllbWVudFZpZXcocGF5bWVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UsIHBheW1lbnQucmVmZXJlbmNlLCBwYXltZW50Lm1ldGhvZClcIj57eyBwYXltZW50LnJlZmVyZW5jZSB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFubmVsIGdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuY2hhbm5lbCB8IGxvd2VyY2FzZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgY2FwaXRhbGl6ZSB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50Lm1ldGhvZCB8IGxvd2VyY2FzZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LmFtb3VudCB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7Z2V0QWxsb2NhdGlvblN0YXR1cyhwYXltZW50KX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LnN0YXR1cyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwiYWxsUGF5bWVudHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBjb2xzcGFuPVwiNlwiPk5vIHBheW1lbnRzIHJlY29yZGVkPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICBcbiAgICAgICAgICAgICAgICAgICAgPCEtLSByZW1pc3Npb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RmVlIGNvZGU8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlJlbWlzc2lvbiByZWZlcmVuY2U8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkRhdGUgY3JlYXRlZDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UmVtaXNzaW9uIGNvZGU8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlJlbWlzc2lvbiBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInJlbWlzc2lvbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgcmVtaXNzaW9uIG9mIHJlbWlzc2lvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24uZmVlX2NvZGUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbi5yZW1pc3Npb25fcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24uZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24uaHdmX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uLmh3Zl9hbW91bnQgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInJlbWlzc2lvbnM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBjb2xzcGFuPVwiNVwiPk5vIHJlbWlzc2lvbnMgcmVjb3JkZWQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2RldGFpbHM+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhdGFrZVBheW1lbnRcIiBjbGFzcz1cImdvdnVrLWdyaWQtcm93IGdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHNcIj5cdFxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XHRcbiAgICA8c3BhbiBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+UHJvY2Vzc2VkIHBheW1lbnRzPC9zcGFuPlx0XG4gICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cdFxuICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cdFxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RGF0ZSBjcmVhdGVkPC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RGF0ZSB1cGRhdGVkPC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+Q2hhbm5lbDwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPk1ldGhvZDwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFtb3VudDwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFsbG9jYXRpb24gc3RhdHVzPC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+U3RhdHVzPC90ZD5cdFxuICAgICAgICAgIDwvdHI+XHRcbiAgICAgIDwvdGhlYWQ+XHRcbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJhbGxQYXltZW50cz8ubGVuZ3RoID4gMFwiPlx0XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAgKm5nRm9yPVwibGV0IHBheW1lbnQgb2YgYWxsUGF5bWVudHNcIj5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XHRcbiAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50LnJlZmVyZW5jZSwgcGF5bWVudC5tZXRob2QpXCI+e3sgcGF5bWVudC5yZWZlcmVuY2UgfX08L2E+XHRcbiAgICAgICAgICAgIDwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5kYXRlX3VwZGF0ZWQgfCBkYXRlOidkZCBNTU0geXl5eSBISDptbTpzcycgfX08L3RkPlx0XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFubmVsIGdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuY2hhbm5lbCB8IGxvd2VyY2FzZSB9fTwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGNhcGl0YWxpemUgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5tZXRob2QgfCBsb3dlcmNhc2V9fTwvdGQ+XHRcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuYW1vdW50IH19PC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7Z2V0QWxsb2NhdGlvblN0YXR1cyhwYXltZW50KX19PC90ZD5cdFxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5zdGF0dXMgfX08L3RkPlx0XG4gICAgICAgICAgPC90cj5cdFxuICAgICAgPC90Ym9keT5cdFxuICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cImFsbFBheW1lbnRzPy5sZW5ndGggPT09IDBcIj5cdFxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI4XCI+Tm8gcGF5bWVudHMgcmVjb3JkZWQ8L3RkPlx0XG4gICAgICA8L3Rib2R5Plx0XG4gICAgPC90YWJsZT5cdFxuPC9kaXY+XHQgIFxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2ZlZVJlbW92YWxDb25maXJtYXRpb24nXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2Fzc2lzdGl2ZVwiPldhcm5pbmc8L3NwYW4+XG4gICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZmVlP1xuICAgIDwvc3Ryb25nPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncmJcIj5cbiAgICA8Zm9ybSBub3ZhbGlkYXRlPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZhbCgpXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvblwiIFxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVtb3ZlQnRuRGlzYWJsZWRcIlxuICAgICAgW25nQ2xhc3NdPSdpc1JlbW92ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCInXG4gICAgICAoY2xpY2spPVwicmVtb3ZlRmVlKGZlZUlkKVwiPlxuICAgICAgICBSZW1vdmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiAgPC9tYWluPlxuXG5gLFxuICBzdHlsZXM6IFtgLmdvdnVrLWdyaWQtY29sdW1uLWZ1bGwtLWdye3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MTBweH0uZGlzYWJsZXt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6ZGVmYXVsdDtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Z3JleTtwb2ludGVyLWV2ZW50czpub25lfS5nb3Z1ay1ncmlkX19zdXJwbHVzLXBheW1lbnRze21hcmdpbjoyMHB4IDB9LmdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHM+LmdvdnVrLWdyaWQtY29sdW1uLWZ1bGx7cGFkZGluZzowfS5nb3Z1ay1ncmlkX19zdXJwbHVzLXBheW1lbnRzLWNvbDF7bWFyZ2luLWJvdHRvbToxMHB4fS5nb3Z1ay1pbnNldC10ZXh0X19uby1ib3JkZXJ7Ym9yZGVyLWxlZnQ6MH0uZ292dWstaGlkZXRleHR7Zm9udC1zaXplOjIycHg7cGFkZGluZy1ib3R0b206MTBweH0ubG93ZXJjYXNle3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZX0uY2hhbm5lbDo6Zmlyc3QtbGV0dGVye3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uZ292dWstaGVhZGluZy14bHtmb250LXNpemU6NDhweDttYXJnaW4tYm90dG9tOjFweH0uZ292dWstc2VjdGlvbi1icmVhay0tdmlzaWJsZXtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDAwfS50b3RhbHBheW1lbnRzLmdvdnVrLXRhYmxlX19yb3d7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzAwMCFpbXBvcnRhbnR9LmdvdnVrLWluc2V0LXRleHR7bWFyZ2luLWxlZnQ6MWVtfS5nb3Z1ay1idXR0b257Zm9udC1zaXplOjE5cHh9LmdvdnVrLXRhYmxlX19jZWxsLmdvdnVrLXRhYmxlX19jZWxsLS1jb2w2LmdvdnVrLXRhYmxlX19jdXN0b20tLWNvbDYsLmdyb3VwYW1vdW50LmdvdnVrLXRhYmxlX19oZWFkZXJ7dGV4dC1hbGlnbjpyaWdodH0uZmVlY2xhc3N7cGFkZGluZy1sZWZ0Oi43ZW19LmFsaWduLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn1kZXRhaWxzIHN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19LmNhc2UtdHJhbnNhY3Rpb25fX2NvbG9ye2NvbG9yOiNhNzE0MTQ7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5jYXBpdGFsaXplOjpmaXJzdC1sZXR0ZXJ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5nb3Z1ay1pbnNldC10ZXh0X19uby1sZWZ0LW1hcmdpbnttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDowfS53aGl0ZXNwYWNlLWluaGVyaXR7d2hpdGUtc3BhY2U6aW5oZXJpdCFpbXBvcnRhbnR9LmdvdnVrLXNlY3Rpb24tcmVjb3Jkcy1icmVha3ttYXJnaW46MTBweDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDAwIWltcG9ydGFudH0uZXhpc2l0bmctZmVlc3ttYXJnaW4tbGVmdDoxMnB4fS5hZGQtdGVsZXBob255LXBheW1lbnR7bWFyZ2luLXRvcDotMmVtO21hcmdpbi1sZWZ0Oi0yZW19LmdvdnVrLXRhYmxlX19oZWFkZXItLWN1c3RvbXt0ZXh0LWFsaWduOmNlbnRlcn1gXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlVHJhbnNhY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGFrZVBheW1lbnQ6IGJvb2xlYW47XG4gIGNjZENhc2VOdW1iZXI6IHN0cmluZztcbiAgZXhjUmVmZXJlbmNlOiBzdHJpbmc7XG4gIHBheW1lbnRHcm91cHM6IGFueVtdID0gW107XG4gIHBheW1lbnRzOiBJUGF5bWVudFtdID0gW107XG4gIG5vblBheW1lbnRzOiBJUGF5bWVudFtdID0gW107XG4gIGFsbFBheW1lbnRzOiBJUGF5bWVudFtdID0gW107XG4gIHJlbWlzc2lvbnM6IElSZW1pc3Npb25bXSA9IFtdO1xuICBmZWVzOiBJRmVlW10gPSBbXTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHRvdGFsRmVlczogbnVtYmVyO1xuICB0b3RhbFBheW1lbnRzOiBudW1iZXI7XG4gIHRvdGFsTm9uT2ZmUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxSZW1pc3Npb25zOiBudW1iZXI7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBpc0FkZEZlZUJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0V4Y2VwdGlvblJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VucHJvY2Vzc2VkUmVjb3JkU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXhjZXB0aW9uUmVjb3JkUmVmZXJlbmNlOiBzdHJpbmc7XG4gIGlzRmVlUmVjb3Jkc0V4aXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbFJlZnVuZEFtb3VudDpOdW1iZXI7XG4gIGlzQnVsa1NjYW5FbmFibGU7XG4gIHZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVlSWQ6SUZlZTtcbiAgdW5wcm9jZXNzZWRSZWNvcmRDb3VudDogbnVtYmVyO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICBwcml2YXRlIGJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2U6IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UsXG4gIHByaXZhdGUgY2FzZVRyYW5zYWN0aW9uc1NlcnZpY2U6IENhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlLFxuICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNHcnBPdXRzdGFuZGluZ0FtdFBvc2l0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5jY2RDYXNlTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUjtcbiAgICBpZih0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSID09PSAnJykge1xuICAgICAgdGhpcy5jY2RDYXNlTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0U7XG4gICAgfVxuICAgIHRoaXMuZXhjUmVmZXJlbmNlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0U7XG4gICAgdGhpcy50YWtlUGF5bWVudCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVDtcbiAgICB0aGlzLmlzQnVsa1NjYW5FbmFibGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRTtcblxuICAgIHRoaXMuY2FzZVRyYW5zYWN0aW9uc1NlcnZpY2UuZ2V0UGF5bWVudEdyb3Vwcyh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgIHBheW1lbnRHcm91cHMgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cHMgPSBwYXltZW50R3JvdXBzWydwYXltZW50X2dyb3VwcyddO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUFtb3VudHMoKTtcbiAgICAgICAgdGhpcy50b3RhbFJlZnVuZEFtb3VudCA9IHRoaXMuY2FsY3VsYXRlUmVmdW5kQW1vdW50KCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSA8YW55PmVycm9yO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRzKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuZGNuTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkRDTl9OVU1CRVI7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT04udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB0aGlzLmNoZWNrRm9yRXhjZXB0aW9uUmVjb3JkKCk7XG4gIH1cblxuICBzZXREZWZhdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsUGF5bWVudHMgPSAwLjAwO1xuICAgIHRoaXMudG90YWxSZW1pc3Npb25zID0gMC4wMDtcbiAgICB0aGlzLnRvdGFsRmVlcyA9IDAuMDA7XG4gICAgdGhpcy50b3RhbE5vbk9mZlBheW1lbnRzID0gMC4wMDtcbn1cbmdldEFsbG9jYXRpb25TdGF0dXMocGF5bWVudHM6IGFueSl7XG5cbiAgbGV0IHBheW1lbnRBbGxvY2F0aW9uID0gcGF5bWVudHMucGF5bWVudF9hbGxvY2F0aW9uLFxuICAgICAgaXNBbGxvY2F0aW9uU3RhdHVzRXhpc3QgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPjA7XG4gIHJldHVybiBpc0FsbG9jYXRpb25TdGF0dXNFeGlzdCA/IHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzIDogJy0nO1xuICAvL3JldHVybiBcIi1cIjtcblxufVxuXG5jaGVja0ZvckV4Y2VwdGlvblJlY29yZCgpOiB2b2lkIHtcbiAgaWYodGhpcy5wYXltZW50R3JvdXBzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdjY2RvcmV4Y2VwdGlvbicpIHtcbiAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZ2V0QlNQYXltZW50c0J5Q0NEKHRoaXMuY2NkQ2FzZU51bWJlcikuc3Vic2NyaWJlKFxuICAgICAgcmVjb3JkRGF0YSA9PiB7XG4gICAgICAgaWYocmVjb3JkRGF0YVsnZGF0YSddICYmIHJlY29yZERhdGFbJ2RhdGEnXS5leGNlcHRpb25fcmVjb3JkX3JlZmVyZW5jZS5sZW5ndGggPiAwICYmIHJlY29yZERhdGFbJ2RhdGEnXS5jY2RfcmVmZXJlbmNlID4wKSB7XG4gICAgICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHJlY29yZERhdGFbJ2RhdGEnXSAmJiByZWNvcmREYXRhWydkYXRhJ10uZXhjZXB0aW9uX3JlY29yZF9yZWZlcmVuY2UubGVuZ3RoID4gMCAmJiByZWNvcmREYXRhWydkYXRhJ10uY2NkX3JlZmVyZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHJlY29yZERhdGFbJ2RhdGEnXSAmJiByZWNvcmREYXRhWydkYXRhJ10uZXhjZXB0aW9uX3JlY29yZF9yZWZlcmVuY2UubGVuZ3RoID09PSB1bmRlZmluZWQgJiYgcmVjb3JkRGF0YVsnZGF0YSddLmNjZF9yZWZlcmVuY2UgPjApIHtcbiAgICAgICAgICB0aGlzLmlzRXhjZXB0aW9uUmVjb3JkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGlmICh0aGlzLnBheW1lbnRHcm91cHMubGVuZ3RoID09PSAwICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gJ2RjbicpIHtcbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUi5sZW5ndGggPiAwICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5FWENfUkVGRVJFTkNFLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXNFeGNlcHRpb25SZWNvcmQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYodGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUi5sZW5ndGggPT09IDAgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0UubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IHRydWU7XG4gICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRXhjZXB0aW9uUmVjb3JkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmICh0aGlzLnBheW1lbnRHcm91cHMubGVuZ3RoID4gMClcbiAgdGhpcy5wYXltZW50R3JvdXBzLmZvckVhY2gocGF5bWVudEdyb3VwID0+IHtcbiAgICBpZiAocGF5bWVudEdyb3VwLnBheW1lbnRzKSB7XG4gICAgICB0aGlzLm5vblBheW1lbnRzID0gcGF5bWVudEdyb3VwLnBheW1lbnRzO1xuICAgICAgcGF5bWVudEdyb3VwLnBheW1lbnRzLmZvckVhY2gocGF5bWVudCA9PiB7XG4gICAgICAgIGlmIChwYXltZW50LmNhc2VfcmVmZXJlbmNlICE9PSB1bmRlZmluZWQgJiYgcGF5bWVudC5jYXNlX3JlZmVyZW5jZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzRXhjZXB0aW9uUmVjb3JkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbiAgY2FsY3VsYXRlQW1vdW50cygpOiB2b2lkIHtcbiAgICBsZXQgZmVlc1RvdGFsID0gMC4wMCxcbiAgICAgcGF5bWVudHNUb3RhbCA9IDAuMDAsXG4gICAgIHJlbWlzc2lvbnNUb3RhbCA9IDAuMDAsXG4gICAgIG5vbk9mZkxpbmVQYXltZW50ID0gMC4wMDtcblxuICAgIHRoaXMucGF5bWVudEdyb3Vwcy5mb3JFYWNoKHBheW1lbnRHcm91cCA9PiB7XG4gICAgICBpZiAocGF5bWVudEdyb3VwLmZlZXMpIHtcbiAgICAgICAgcGF5bWVudEdyb3VwLmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgICAgIGZlZXNUb3RhbCA9IGZlZXNUb3RhbCArIGZlZS5jYWxjdWxhdGVkX2Ftb3VudDtcbiAgICAgICAgICBmZWVbJ3BheW1lbnRfZ3JvdXBfcmVmZXJlbmNlJ10gPSBwYXltZW50R3JvdXBbJ3BheW1lbnRfZ3JvdXBfcmVmZXJlbmNlJ107XG4gICAgICAgICAgdGhpcy5mZWVzLnB1c2goZmVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvdGFsRmVlcyA9IGZlZXNUb3RhbDtcblxuICAgICAgaWYgKHBheW1lbnRHcm91cC5wYXltZW50cykge1xuICAgICAgICBwYXltZW50R3JvdXAucGF5bWVudHMuZm9yRWFjaChwYXltZW50ID0+IHtcbiAgICAgICAgICBpZiAocGF5bWVudC5zdGF0dXMudG9VcHBlckNhc2UoKSA9PT0gJ1NVQ0NFU1MnKSB7XG4gICAgICAgICAgICBwYXltZW50c1RvdGFsID0gcGF5bWVudHNUb3RhbCArIHBheW1lbnQuYW1vdW50O1xuICAgICAgICAgICAgbGV0IGFsbG9jYXRpb25MZW4gPSBwYXltZW50LnBheW1lbnRfYWxsb2NhdGlvbjtcbiAgICAgICAgICAgIGlmKGFsbG9jYXRpb25MZW4ubGVuZ3RoID09PSAwIHx8IGFsbG9jYXRpb25MZW4ubGVuZ3RoID4gMCAmJiBhbGxvY2F0aW9uTGVuWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSdBbGxvY2F0ZWQnKSB7XG4gICAgICAgICAgICAgIG5vbk9mZkxpbmVQYXltZW50ID0gbm9uT2ZmTGluZVBheW1lbnQgKyBwYXltZW50LmFtb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGF5bWVudHMucHVzaChwYXltZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGF5bWVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSBwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2VcbiAgICAgICAgICB0aGlzLmFsbFBheW1lbnRzLnB1c2gocGF5bWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy50b3RhbFBheW1lbnRzID0gcGF5bWVudHNUb3RhbDtcbiAgICAgIHRoaXMudG90YWxOb25PZmZQYXltZW50cyA9IG5vbk9mZkxpbmVQYXltZW50O1xuXG4gICAgICBpZiAocGF5bWVudEdyb3VwLnJlbWlzc2lvbnMpIHtcbiAgICAgICAgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMuZm9yRWFjaChyZW1pc2lzb24gPT4ge1xuICAgICAgICAgIHJlbWlzc2lvbnNUb3RhbCA9IHJlbWlzc2lvbnNUb3RhbCArIHJlbWlzaXNvbi5od2ZfYW1vdW50O1xuICAgICAgICAgIHRoaXMucmVtaXNzaW9ucy5wdXNoKHJlbWlzaXNvbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy50b3RhbFJlbWlzc2lvbnMgPSByZW1pc3Npb25zVG90YWw7XG4gICAgfSk7XG5cbiAgfVxuICBjYWxjdWxhdGVSZWZ1bmRBbW91bnQoKSB7XG4gICAgbGV0IHRvdGFsUmVmdW5kQW1vdW50ID0gMCxcbiAgICBpc0ZlZUFtb3VudFplcm8gPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRHcm91cHMuZm9yRWFjaChwYXltZW50R3JvdXAgPT4ge1xuICAgICAgbGV0IGdycE91dHN0YW5kaW5nQW1vdW50ID0gMC4wMCxcbiAgICAgICAgZmVlc1RvdGFsID0gMC4wMCxcbiAgICAgICAgcGF5bWVudHNUb3RhbCA9IDAuMDAsXG4gICAgICAgIHJlbWlzc2lvbnNUb3RhbCA9IDAuMDA7XG4gICAgICBpZiAocGF5bWVudEdyb3VwLmZlZXMpIHtcbiAgICAgICAgdGhpcy5pc0ZlZVJlY29yZHNFeGlzdCA9IHRydWU7XG4gICAgICAgIHBheW1lbnRHcm91cC5mZWVzLmZvckVhY2goZmVlID0+IHtcbiAgICAgICAgICBmZWVzVG90YWwgPSBmZWVzVG90YWwgKyBmZWUuY2FsY3VsYXRlZF9hbW91bnQ7XG4gICAgICAgICAgaWYoZmVlLmNhbGN1bGF0ZWRfYW1vdW50ID09PSAwKSB7XG4gICAgICAgICAgICBpc0ZlZUFtb3VudFplcm8gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG4gICAgICBpZiAocGF5bWVudEdyb3VwLnBheW1lbnRzKSB7XG4gICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cy5mb3JFYWNoKHBheW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChwYXltZW50LnN0YXR1cy50b1VwcGVyQ2FzZSgpID09PSAnU1VDQ0VTUycpIHtcbiAgICAgICAgICAgIHBheW1lbnRzVG90YWwgPSBwYXltZW50c1RvdGFsICsgcGF5bWVudC5hbW91bnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICAgIHBheW1lbnRHcm91cC5yZW1pc3Npb25zLmZvckVhY2gocmVtaXNzaW9uID0+IHtcbiAgICAgICAgICByZW1pc3Npb25zVG90YWwgPSByZW1pc3Npb25zVG90YWwgKyByZW1pc3Npb24uaHdmX2Ftb3VudDtcbiAgICAgICAgfSk7XG4gICAgICB9ICBcbiAgICAgICAgZ3JwT3V0c3RhbmRpbmdBbW91bnQgPSAoZmVlc1RvdGFsIC0gcmVtaXNzaW9uc1RvdGFsKSAtIHBheW1lbnRzVG90YWw7XG4gICAgICAgIGlmIChncnBPdXRzdGFuZGluZ0Ftb3VudCA8IDApIHtcbiAgICAgICAgICBpZih0b3RhbFJlZnVuZEFtb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgdG90YWxSZWZ1bmRBbW91bnQgPSBncnBPdXRzdGFuZGluZ0Ftb3VudDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG90YWxSZWZ1bmRBbW91bnQgPSAodG90YWxSZWZ1bmRBbW91bnQgKyBncnBPdXRzdGFuZGluZ0Ftb3VudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoZ3JwT3V0c3RhbmRpbmdBbW91bnQgPiAwIHx8IChncnBPdXRzdGFuZGluZ0Ftb3VudCA9PT0gMCAmJiBpc0ZlZUFtb3VudFplcm8pKSB7XG4gICAgICAgICAgdGhpcy5pc0dycE91dHN0YW5kaW5nQW10UG9zaXRpdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRvdGFsUmVmdW5kQW1vdW50ICogLTE7XG4gIH1cbiAgZ2V0R3JvdXBPdXRzdGFuZGluZ0Ftb3VudChwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXApOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuY2FsY3VsYXRlT3V0U3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwKTs7XG4gIH1cblxuICByZWRpcmVjdFRvRmVlU2VhcmNoUGFnZShldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmlzQnVsa1NjYW5FbmFibGUgPyAnJmlzQnVsa1NjYW5uaW5nPUVuYWJsZScgOiAnJmlzQnVsa1NjYW5uaW5nPURpc2FibGUnO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9mZWUtc2VhcmNoP3NlbGVjdGVkT3B0aW9uPSR7dGhpcy5zZWxlY3RlZE9wdGlvbn0mY2NkQ2FzZU51bWJlcj0ke3RoaXMuY2NkQ2FzZU51bWJlcn0ke3VybH1gKTtcbiAgfVxuXG4gIHJlZGlyZWN0VG9SZXBvcnRzUGFnZShldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvcmVwb3J0cz9zZWxlY3RlZE9wdGlvbj0ke3RoaXMuc2VsZWN0ZWRPcHRpb259JmNjZENhc2VOdW1iZXI9JHt0aGlzLmNjZENhc2VOdW1iZXJ9YCk7XG4gIH1cbiAgbG9hZEZlZVN1bW1hcnlQYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5ic3BheW1lbnRkY24gPSBudWxsO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSAnJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xuICB9XG5cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHBheW1lbnRHcm91cDogYW55KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRNZXRob2QgPSBwYXltZW50R3JvdXAucGF5bWVudE1ldGhvZDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSA9IHBheW1lbnRHcm91cC5wYXltZW50UmVmZXJlbmNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdwYXltZW50LXZpZXcnO1xuICB9XG5cbiAgZ29Ub1BheWVtZW50VmlldyhwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50TWV0aG9kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdvVG9QYXltZW50Vmlld0NvbXBvbmVudCh7cGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50UmVmZXJlbmNlLCBwYXltZW50TWV0aG9kfSk7XG4gIH1cblxuICBzZWxlY3RlZFVucHJvY2Vzc2VkRmVlRXZlbnQodW5wcm9jZXNzZWRSZWNvcmRJZDogc3RyaW5nKSB7XG4gICAgaWYgKCB1bnByb2Nlc3NlZFJlY29yZElkICkge1xuICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSBmYWxzZVxuICAgICAgdGhpcy5pc1VucHJvY2Vzc2VkUmVjb3JkU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9ICF0aGlzLmlzRXhjZXB0aW9uUmVjb3JkOztcbiAgICAgIHRoaXMuaXNVbnByb2Nlc3NlZFJlY29yZFNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGdldFVucHJvY2Vzc2VkRmVlQ291bnQodW5Qcm9jZXNzZWRSZWNvcmRDb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy51bnByb2Nlc3NlZFJlY29yZENvdW50ID0gdW5Qcm9jZXNzZWRSZWNvcmRDb3VudDtcbiAgfVxuICBjb25maXJtUmVtb3ZlRmVlKGZlZTogSUZlZSl7XG4gICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5mZWVJZCA9IGZlZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbic7XG4gIH1cbiAgY2FuY2VsUmVtb3ZhbCgpIHtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIH1cbiAgcmVtb3ZlRmVlKGZlZTogYW55KXtcbiAgICB0aGlzLmlzUmVtb3ZlQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmRlbGV0ZUZlZUZyb21QYXltZW50R3JvdXAoZmVlKS5zdWJzY3JpYmUoXG4gICAgICAoc3VjY2VzczogYW55KSA9PiB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
678
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10cmFuc2FjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYXNlLXRyYW5zYWN0aW9ucy9jYXNlLXRyYW5zYWN0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDN0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJdEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztJQWlnQmxDLG1DQUFvQixNQUFjLEVBQzFCLG9CQUNBLDJCQUNBLHlCQUNBO1FBSlksV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCO1FBQ2xCLDhCQUF5QixHQUF6Qix5QkFBeUI7UUFDekIsNEJBQXVCLEdBQXZCLHVCQUF1QjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1COzZCQXhDSixFQUFFO3dCQUNGLEVBQUU7MkJBQ0MsRUFBRTsyQkFDRixFQUFFOzBCQUNELEVBQUU7b0JBQ2QsRUFBRTtrQ0FhYSxJQUFJO2lDQUNMLEtBQUs7MkNBQ0ssS0FBSztxQ0FFWCxJQUFJO3dDQUNELEtBQUs7MEJBRzVCLE1BQU07bUNBQ1ksS0FBSzsyQkFFZCxDQUFDO2lDQUVNLEtBQUs7MkNBQ0ssS0FBSzsyQkFHekIsRUFBRSxDQUFDLEdBQUcsQ0FBTSxXQUFXLENBQUM7S0FLVTs7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O2dCQUpMLGtCQUFrQjtnQkFEbEIseUJBQXlCO2dCQUQxQix1QkFBdUI7Z0JBRnZCLG1CQUFtQjs7b0NBRDNCOztTQW1lYSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYXltZW50TGliQ29tcG9uZW50fSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXAnO1xuaW1wb3J0IHtDYXNlVHJhbnNhY3Rpb25zU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS10cmFuc2FjdGlvbnMvY2FzZS10cmFuc2FjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtJRmVlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGZWUnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQge0lSZW1pc3Npb259IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlbWlzc2lvbic7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCAqIGFzIGxzIGZyb20gXCJsb2NhbC1zdG9yYWdlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LWNhc2UtdHJhbnNhY3Rpb25zJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG5cbiAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ21haW4nJiYgIWlzVHVybk9mZiAmJiB0YWtlUGF5bWVudFwiPlxuXG5cbiAgICA8ZGl2ICAgKm5nSWY9XCJ0YWtlUGF5bWVudFwiIGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmcteGxcIj5DYXNlIHRyYW5zYWN0aW9uczwvaDE+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgICAqbmdJZj1cInRha2VQYXltZW50XCIgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiAqbmdJZj0nIWlzRXhjZXB0aW9uUmVjb3JkJyBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMgZ292dWstIS1wYWRkaW5nLWJvdHRvbS02IGdvdnVrLSEtcGFkZGluZy10b3AtNlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkNDRCByZWZlcmVuY2U6PC9oMz5cbiAgICAgICAgPHNwYW4+IHt7IGNjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9J2lzRXhjZXB0aW9uUmVjb3JkJyBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMgZ292dWstIS1wYWRkaW5nLWJvdHRvbS02IGdvdnVrLSEtcGFkZGluZy10b3AtNlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkV4Y2VwdGlvbiByZWZlcmVuY2U6PC9oMz5cbiAgICAgICAgPHNwYW4+IHt7IGNjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIGdvdnVrLSEtcGFkZGluZy1ib3R0b20tM1wiPlxuICAgICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5Ub3RhbCBwYXltZW50czwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlRvdGFsIHJlbWlzc2lvbnM8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbW91bnQgZHVlPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBnb3Z1ay10YWJsZV9faGVhZGVyLS1jdXN0b21cIiBzY29wZT1cImNvbFwiICpuZ0lmPVwiaXNCdWxrU2NhbkVuYWJsZVwiPlVuYWxsb2NhdGVkIHBheW1lbnRzPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidG90YWxwYXltZW50cyBnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHN1bW1hcnktdGFibGUtZm9udFwiPnt7IHRvdGFsUGF5bWVudHMgfCBjdXJyZW5jeSA6J0dCUCc6J3N5bWJvbCc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHN1bW1hcnktdGFibGUtZm9udFwiPnt7IHRvdGFsUmVtaXNzaW9ucyB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgc3VtbWFyeS10YWJsZS1mb250XCI+e3sgY2xBbW91bnREdWUgfCBjdXJyZW5jeSA6J0dCUCc6J3N5bWJvbCc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgY2FzZS10cmFuc2FjdGlvbl9fY29sb3Igc3VtbWFyeS10YWJsZS1mb250XCIgKm5nSWY9XCJpc0J1bGtTY2FuRW5hYmxlXCI+e3t1bnByb2Nlc3NlZFJlY29yZENvdW50fX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCIgKm5nSWY9XCJ0YWtlUGF5bWVudFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwicmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FkZEZlZUJ0bkVuYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT0nIWlzQWRkRmVlQnRuRW5hYmxlZCA/IFwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLWJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiIDogXCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiJz5cbiAgICAgICAgICBUYWtlIHRlbGVwaG9ueSBwYXltZW50XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuXG4gICAgICA8Y2NwYXktYXBwLXVucHJvY2Vzc2VkLXBheW1lbnRzXG4gICAgICAqbmdJZj1cImlzQnVsa1NjYW5FbmFibGVcIlxuICAgICAgW0lTX0JVVFRPTl9FTkFCTEVdPVwidGFrZVBheW1lbnRcIlxuICAgICAgW0ZFRV9SRUNPUkRTX0VYSVNUU109XCJpc0FueUZlZUdyb3VwQXZpbGFibGVcIlxuICAgICAgW0lTVFVSTk9GRl09XCJpc1R1cm5PZmZcIlxuICAgICAgW0lTU0ZFTkFCTEVdPVwiaXNTdHJhdGVnaWNGaXhFbmFibGVcIlxuICAgICAgW1BBWU1FTlRSRUZdPVwicGF5bWVudFJlZlwiXG4gICAgICBbSVNORVdQQ0lQQUxPRkZdPVwiaXNOZXdQY2lwYWxPZmZcIlxuICAgICAgW0lTT0xEUENJUEFMT0ZGXT1cImlzT2xkUGNpcGFsT2ZmXCJcbiAgICAgIChnZXRVbnByb2Nlc3NlZEZlZUNvdW50KSA9IFwiZ2V0VW5wcm9jZXNzZWRGZWVDb3VudCgkZXZlbnQpXCJcbiAgICAgIChzZWxlY3RlZFVucHJvY2Vzc2VkRmVlRXZlbnQpID0gXCJzZWxlY3RlZFVucHJvY2Vzc2VkRmVlRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgPC9jY3BheS1hcHAtdW5wcm9jZXNzZWQtcGF5bWVudHM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAgKm5nSWY9XCJ0YWtlUGF5bWVudFwiIGNsYXNzPVwiIGdvdnVrLSEtbWFyZ2luLXRvcC05XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5GZWVzPC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNvZGU8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5EZXNjcmlwdGlvbjwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlZvbHVtZTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkZlZSBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5DYWxjdWxhdGVkIGFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFtb3VudCBkdWU8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BY3Rpb248L3RkPlxuXG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nRm9yPVwibGV0IHBheW1lbnRHcm91cCBvZiBwYXltZW50R3JvdXBzO1wiPlxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IGZlZSBvZiBwYXltZW50R3JvdXAuZmVlczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlx0e3tmZWUuY29kZX19IDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e2ZlZS5kZXNjcmlwdGlvbn19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7ZmVlLnZvbHVtZT8gZmVlLnZvbHVtZSA6ICctJ319PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGZlZS5mZWVfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tmZWUuY2FsY3VsYXRlZF9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgIFthdHRyLnJvd3NwYW5dPVwicGF5bWVudEdyb3VwLmZlZXMubGVuZ3RoXCIgKm5nSWY9XCJwYXltZW50R3JvdXAub2xkICYmIGk9PTBcIj4ge3tnZXRHcm91cE91dHN0YW5kaW5nQW1vdW50KHBheW1lbnRHcm91cCl8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInfX0qIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiAqbmdJZj1cIiFwYXltZW50R3JvdXAub2xkXCI+IHt7Y2FsY3VsYXRlQW1vdW50RHVlKGZlZSkgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319IDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiAqbmdJZj1cIiFwYXltZW50R3JvdXAub2xkXCI+XG4gICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImNvbmZpcm1SZW1vdmVGZWUoZmVlLmlkKVwiIFtuZ0NsYXNzXT0nIWlzQ2hlY2tBbW91bnRkdWVFeGlzdChmZWUuYW1vdW50X2R1ZSkgfHwgZmVlLnJlbWlzc2lvbnMgPyBcImRpc2FibGUtbGlua1wiIDogXCJcIic+UmVtb3ZlPC9hPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiAqbmdJZj1cInBheW1lbnRHcm91cC5vbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJjb25maXJtUmVtb3ZlRmVlKGZlZS5pZClcIiBbbmdDbGFzc109J3BheW1lbnRHcm91cC5wYXltZW50cz8ubGVuZ3RoID4gMCB8fCBwYXltZW50R3JvdXAucmVtaXNzaW9ucz8ubGVuZ3RoID4gMCA/IFwiZGlzYWJsZS1saW5rXCIgOiBcIlwiJz5SZW1vdmU8L2E+XG4gICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJwYXltZW50R3JvdXBzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiID5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI3XCI+Tm8gZmVlcyByZWNvcmRlZDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaG1jdHMtYmFubmVyXCIgKm5nSWY9XCJpc0hpc3RvcmljR3JvdXBBdmFpbGFibGVcIj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cImhtY3RzLWJhbm5lcl9faWNvblwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGhlaWdodD1cIjI1XCIgd2lkdGg9XCIyNVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMy43LDE4LjVoLTIuNHYtMi40aDIuNFYxOC41eiBNMTIuNSwxMy43Yy0wLjcsMC0xLjItMC41LTEuMi0xLjJWNy43YzAtMC43LDAuNS0xLjIsMS4yLTEuMnMxLjIsMC41LDEuMiwxLjJ2NC44XG4gICAgICAgICAgQzEzLjcsMTMuMiwxMy4yLDEzLjcsMTIuNSwxMy43eiBNMTIuNSwwLjVjLTYuNiwwLTEyLDUuNC0xMiwxMnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzE5LjEsMC41LDEyLjUsMC41elwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJfX21lc3NhZ2VcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fYXNzaXN0aXZlXCI+aW5mb3JtYXRpb248L3NwYW4+XG4gICAgICAgICAgKiBUaGVzZSBmZWVzIGhhdmUgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCBvZmZsaW5lLiBDaGVjayB0aGUgbm90ZXMgaW4gQ0NEIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLW5vLS1zdHlsZVwiICpuZ0lmPVwiYWxsUGF5bWVudHM/Lmxlbmd0aCA+IDAgfHwgcmVtaXNzaW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDwhLS0gcGF5bWVudHMgLS0+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5QYXltZW50czwvaDM+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjhcIiBzY29wZT1cImNvbFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RGF0ZSBjcmVhdGVkPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+Q2hhbm5lbDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPk1ldGhvZDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTE1XCIgc2NvcGU9XCJjb2xcIj5BbW91bnQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbGxvY2F0aW9uIHN0YXR1czwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlBheW1lbnQgc3RhdHVzPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJhbGxQYXltZW50cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAgKm5nRm9yPVwibGV0IHBheW1lbnQgb2YgYWxsUGF5bWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50LnJlZmVyZW5jZSwgcGF5bWVudC5tZXRob2QpXCI+e3sgcGF5bWVudC5yZWZlcmVuY2UgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbm5lbCBnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LmNoYW5uZWwgfCBsb3dlcmNhc2UgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBjYXBpdGFsaXplIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQubWV0aG9kIHwgbG93ZXJjYXNlfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LmFtb3VudCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7Z2V0QWxsb2NhdGlvblN0YXR1cyhwYXltZW50KX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5zdGF0dXMgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cImFsbFBheW1lbnRzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI3XCI+Tm8gcGF5bWVudHMgcmVjb3JkZWQ8L3RkPlxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cblxuICAgICAgICAgICAgPCEtLSByZW1pc3Npb25zIC0tPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5SZW1pc3Npb25zPC9oMz5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5SZW1pc3Npb24gcmVmZXJlbmNlPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RGF0ZSBjcmVhdGVkPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UmVtaXNzaW9uIGNvZGU8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5GZWUgY29kZTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlJlbWlzc2lvbiBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInJlbWlzc2lvbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IHJlbWlzc2lvbiBvZiByZW1pc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbi5yZW1pc3Npb25fcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uLmRhdGVfY3JlYXRlZCB8IGRhdGU6J2RkIE1NTSB5eXl5IEhIOm1tOnNzJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbi5od2ZfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uLmZlZV9jb2RlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uLmh3Zl9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJyZW1pc3Npb25zPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI1XCI+Tm8gcmVtaXNzaW9ucyByZWNvcmRlZDwvdGQ+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiAgICA8ZGl2ICAqbmdJZj1cInRha2VQYXltZW50ICYmIGlzVHVybk9mZlwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPkNhc2UgdHJhbnNhY3Rpb25zPC9oMT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLW9uZS10aGlyZFwiIGFsaWduPVwicmlnaHRcIiA+XG4gICAgICAgIDxhIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUnOiAhaXNBZGRGZWVCdG5FbmFibGVkfSBcIiAoY2xpY2spPVwicmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiYnV0dG9uXCI+QWRkIGEgbmV3IGZlZTwvYT5cbiAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gXG5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzIGdvdnVrLSEtcGFkZGluZy1ib3R0b20tNlwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkNDRCByZWZlcmVuY2U6PC9oMz5cbiAgICAgICAgPHNwYW4+IHt7IGNjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIGdvdnVrLSEtcGFkZGluZy1ib3R0b20tM1wiPlxuICAgICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5Ub3RhbCBwYXltZW50czwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlRvdGFsIHJlbWlzc2lvbnM8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbW91bnQgZHVlPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidG90YWxwYXltZW50cyBnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgdG90YWxQYXltZW50cyB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyB0b3RhbFJlbWlzc2lvbnMgfCBjdXJyZW5jeSA6J0dCUCc6J3N5bWJvbCc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgKHRvdGFsRmVlcyAtIHRvdGFsUmVtaXNzaW9ucykgLSB0b3RhbFBheW1lbnRzIHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMid9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuXG4gICAgPCEtLSBObyBmZWVzIHN0YXJ0IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJwYXltZW50R3JvdXBzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZy1zbWFsbFwiPkV4aXN0aW5nIGZlZXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNvZGU8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5EZXNjcmlwdGlvbjwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlZvbHVtZTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkZlZSBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5DYWxjdWxhdGVkIGFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkdyb3VwIGFtb3VudCBvdXRzdGFuZGluZzwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgY29sc3Bhbj1cIjZcIj5ObyBmZWVzIHJlY29yZGVkPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5vIGZlZXMgZW5kIC0tPlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcGF5bWVudEdyb3VwIG9mIHBheW1lbnRHcm91cHNcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgZ292dWstZ3JpZC1jb2x1bW4tZnVsbC0tZ3JcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPkdyb3VwIHJlZmVyZW5jZToge3twYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2V9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG5cbiAgICAgICAgPCEtLU5ldyBDb2RlIHN0YXJ0LS0+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGxcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRpbmctc21hbGxcIj5FeGlzaXRpbmcgZmVlczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9ZmVlY2xhc3M+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5Db2RlPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkRlc2NyaXB0aW9uPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlZvbHVtZTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5GZWUgYW1vdW50PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNhbGN1bGF0ZWQgYW1vdW50PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdyb3VwYW1vdW50IGdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkdyb3VwIGFtb3VudCBvdXRzdGFuZGluZzwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgPlxuICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAgKm5nRm9yPVwibGV0IGZlZSBvZiBwYXltZW50R3JvdXAuZmVlczsgIGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay10YWJsZV9fY2VsbC0tY29sMVwiPnt7ZmVlLmNvZGV9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay10YWJsZV9fY2VsbC0tY29sMlwiPiB7e2ZlZS5kZXNjcmlwdGlvbn19IDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay10YWJsZV9fY2VsbC0tY29sMyBhbGlnbi1jZW50ZXJcIj4ge3tmZWUudm9sdW1lPyBmZWUudm9sdW1lIDogJy0nfX0gPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLXRhYmxlX19jZWxsLS1jb2w0XCI+IHt7IGZlZS5mZWVfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX0gPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLXRhYmxlX19jZWxsLS1jb2w1XCI+IHt7ZmVlLmNhbGN1bGF0ZWRfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX0gPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLXRhYmxlX19jZWxsLS1jb2w2IGdvdnVrLXRhYmxlX19jdXN0b20tLWNvbDZcIiBbYXR0ci5yb3dzcGFuXT1cInBheW1lbnRHcm91cC5mZWVzLmxlbmd0aFwiICpuZ0lmPVwiaT09MFwiPlxuICAgICAgICAgICAgICB7e2dldEdyb3VwT3V0c3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwKSB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19IDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJwYXltZW50R3JvdXAuZmVlcy5sZW5ndGg9PTBcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI2XCI+Tm8gcGF5bWVudHMgcmVjb3JkZWQ8L3RkPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1pbnNldC10ZXh0IGdvdnVrLWluc2V0LXRleHRfX25vLWJvcmRlclwiICpuZ0lmPVwicGF5bWVudEdyb3VwLnBheW1lbnRzIHx8IHBheW1lbnRHcm91cC5yZW1pc3Npb25zXCI+XG4gICAgICA8ZGV0YWlscz5cbiAgICAgICAgPHN1bW1hcnkgY2xhc3M9XCJnb3Z1ay1oaWRldGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnlcIj5BbGxvY2F0ZWQgcGF5bWVudHMgYW5kIHJlbWlzc2lvbnM8L3NwYW4+XG4gICAgICAgIDwvc3VtbWFyeT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1ib3JkZXItbmFycm93XCI+XG4gICAgICAgICAgICAgIDwhLS0gcGF5bWVudHMgLS0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5QYXltZW50czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UGF5bWVudCByZWZlcmVuY2U8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+RGF0ZSBjcmVhdGVkPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkNoYW5uZWw8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+TWV0aG9kPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFtb3VudDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbGxvY2F0aW9uIHN0YXR1czwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5TdGF0dXM8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInBheW1lbnRHcm91cC5wYXltZW50cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIHBheW1lbnRHcm91cC5wYXltZW50c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub1BheWVtZW50VmlldyhwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2UsIHBheW1lbnQucmVmZXJlbmNlLCBwYXltZW50Lm1ldGhvZClcIj57eyBwYXltZW50LnJlZmVyZW5jZSB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LmRhdGVfY3JlYXRlZCB8IGRhdGU6J2RkIE1NTSB5eXl5IEhIOm1tOnNzJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFubmVsIGdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuY2hhbm5lbCB8IGxvd2VyY2FzZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBjYXBpdGFsaXplIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQubWV0aG9kIHwgbG93ZXJjYXNlfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5hbW91bnQgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+IHt7Z2V0QWxsb2NhdGlvblN0YXR1cyhwYXltZW50KX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuc3RhdHVzIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nSWY9XCJwYXltZW50R3JvdXAucGF5bWVudHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI2XCI+Tm8gcGF5bWVudHMgcmVjb3JkZWQ8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICAgICAgICAgPCEtLSByZW1pc3Npb25zIC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5SZW1pc3Npb25zPC9zcGFuPlxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5SZW1pc3Npb24gcmVmZXJlbmNlPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkRhdGUgY3JlYXRlZDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5SZW1pc3Npb24gY29kZTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5GZWUgYXBwbGllZCBhZ2FpbnN0PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlJlbWlzc2lvbiBhbW91bnQ8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cInBheW1lbnRHcm91cC5yZW1pc3Npb25zPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgcmVtaXNzaW9uIG9mIHBheW1lbnRHcm91cC5yZW1pc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24ucmVtaXNzaW9uX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24uZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbi5od2ZfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbi5mZWVfY29kZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24uaHdmX2Ftb3VudCB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicGF5bWVudEdyb3VwLnJlbWlzc2lvbnM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI1XCI+Tm8gcmVtaXNzaW9ucyByZWNvcmRlZDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgPC9kZXRhaWxzPlxuICBcblxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFrZVBheW1lbnRcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJsb2FkRmVlU3VtbWFyeVBhZ2UocGF5bWVudEdyb3VwKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZ2V0R3JvdXBPdXRzdGFuZGluZ0Ftb3VudChwYXltZW50R3JvdXApIDw9IDAgfHwgaXNVbnByb2Nlc3NlZFJlY29yZFNlbGVjdGVkKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT0nKGdldEdyb3VwT3V0c3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwKSA8PSAwIHx8IGlzVW5wcm9jZXNzZWRSZWNvcmRTZWxlY3RlZCkgPyBcImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay1idXR0b24tLWRpc2FibGVkIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIiA6IFwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIic+XG4gICAgICAgICAgICAgICAgQWRkIHRlbGVwaG9uZSBwYXltZW50XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICAgIDxjY3BheS1hcHAtdW5wcm9jZXNzZWQtcGF5bWVudHNcbiAgICAgICpuZ0lmPVwiaXNCdWxrU2NhbkVuYWJsZVwiXG4gICAgICBbSVNfQlVUVE9OX0VOQUJMRV09XCJ0YWtlUGF5bWVudFwiXG4gICAgICBbSVNUVVJOT0ZGXT1cImlzVHVybk9mZlwiXG4gICAgICBbSVNORVdQQ0lQQUxPRkZdPVwiaXNOZXdQY2lwYWxPZmZcIlxuICAgICAgW0lTT0xEUENJUEFMT0ZGXT1cImlzT2xkUGNpcGFsT2ZmXCJcbiAgICAgIFtJU1NGRU5BQkxFXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcbiAgICAgIFtGRUVfUkVDT1JEU19FWElTVFNdPVwiaXNGZWVSZWNvcmRzRXhpc3RcIiBcbiAgICAgIFtJU19PU19BTVRfQVZBSUxBQkxFXT1cImlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZVwiIFxuICAgICAgKHNlbGVjdGVkVW5wcm9jZXNzZWRGZWVFdmVudCkgPSBcInNlbGVjdGVkVW5wcm9jZXNzZWRGZWVFdmVudCgkZXZlbnQpXCI+XG4gICAgPC9jY3BheS1hcHAtdW5wcm9jZXNzZWQtcGF5bWVudHM+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93IGdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHNcIiAgKm5nSWY9XCJ0b3RhbFJlZnVuZEFtb3VudCA+IDAgJiYgdGFrZVBheW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIGdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHMtY29sMVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPlN1cnBsdXMgcGF5bWVudHM8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgICBUb3RhbCBzdXJwbHVzIHBheW1lbnRzIHJlY2VpdmVkOiB7e3RvdGFsUmVmdW5kQW1vdW50IHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMid9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Y2NwYXktYXBwLXVucHJvY2Vzc2VkLXBheW1lbnRzXG4gICpuZ0lmPVwiaXNCdWxrU2NhbkVuYWJsZSAmJiAhdGFrZVBheW1lbnRcIlxuICBbSVNfQlVUVE9OX0VOQUJMRV09XCJ0YWtlUGF5bWVudFwiXG4gIFtJU1RVUk5PRkZdPVwiaXNUdXJuT2ZmXCJcbiAgW0lTU0ZFTkFCTEVdPVwiaXNTdHJhdGVnaWNGaXhFbmFibGVcIlxuICBbRkVFX1JFQ09SRFNfRVhJU1RTXT1cImlzRmVlUmVjb3Jkc0V4aXN0XCIgXG4gIFtJU19PU19BTVRfQVZBSUxBQkxFXT1cImlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZVwiIFxuICAoc2VsZWN0ZWRVbnByb2Nlc3NlZEZlZUV2ZW50KSA9IFwic2VsZWN0ZWRVbnByb2Nlc3NlZEZlZUV2ZW50KCRldmVudClcIj5cbjwvY2NwYXktYXBwLXVucHJvY2Vzc2VkLXBheW1lbnRzPlxuXG48ZGl2ICpuZ0lmPVwiIXRha2VQYXltZW50XCIgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvdyBnb3Z1ay1ncmlkX19zdXJwbHVzLXBheW1lbnRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5Qcm9jZXNzZWQgcGF5bWVudHM8L3NwYW4+XG4gICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlBheW1lbnQgcmVmZXJlbmNlPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkRhdGUgY3JlYXRlZDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5EYXRlIHVwZGF0ZWQ8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+Q2hhbm5lbDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5NZXRob2Q8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+QW1vdW50PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFsbG9jYXRpb24gc3RhdHVzPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPlN0YXR1czwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwiYWxsUGF5bWVudHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICAqbmdGb3I9XCJsZXQgcGF5bWVudCBvZiBhbGxQYXltZW50c1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub1BheWVtZW50VmlldyhwYXltZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSwgcGF5bWVudC5yZWZlcmVuY2UsIHBheW1lbnQubWV0aG9kKVwiPnt7IHBheW1lbnQucmVmZXJlbmNlIH19PC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQuZGF0ZV91cGRhdGVkIHwgZGF0ZTonZGQgTU1NIHl5eXkgSEg6bW06c3MnIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5uZWwgZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5jaGFubmVsIHwgbG93ZXJjYXNlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGNhcGl0YWxpemUgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5tZXRob2QgfCBsb3dlcmNhc2V9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50LmFtb3VudCB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj4ge3tnZXRBbGxvY2F0aW9uU3RhdHVzKHBheW1lbnQpfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudC5zdGF0dXMgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdJZj1cImFsbFBheW1lbnRzPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBjb2xzcGFuPVwiOFwiPk5vIHBheW1lbnRzIHJlY29yZGVkPC90ZD5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuPC9kaXY+XG5cbjxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nRkVFUkVNT1ZBTENPTkZJUk1BVElPTl8yJz5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbidcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+ITwvc3Bhbj5cbiAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fYXNzaXN0aXZlXCI+V2FybmluZzwvc3Bhbj5cbiAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmZWU/XG4gICAgPC9zdHJvbmc+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyYlwiPlxuICAgIDxmb3JtIG5vdmFsaWRhdGU+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiIChjbGljayk9XCJjYW5jZWxSZW1vdmFsKClcIj5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlbW92ZUJ0bkRpc2FibGVkXCJcbiAgICAgIFtuZ0NsYXNzXT0naXNSZW1vdmVCdG5EaXNhYmxlZCA/IFwiYnV0dG9uIGJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiIDogXCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiJ1xuICAgICAgKGNsaWNrKT1cInJlbW92ZUZlZShmZWVJZClcIj5cbiAgICAgICAgUmVtb3ZlXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4gIDwvbWFpbj5cbjwvZGl2PmAsXG4gIHN0eWxlczogW2AuZ292dWstZ3JpZC1jb2x1bW4tZnVsbC0tZ3J7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWJvdHRvbToxMHB4fS5kaXNhYmxle3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpkZWZhdWx0O2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpncmV5O3BvaW50ZXItZXZlbnRzOm5vbmV9LmdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHN7bWFyZ2luOjIwcHggMH0uZ292dWstZ3JpZF9fc3VycGx1cy1wYXltZW50cz4uZ292dWstZ3JpZC1jb2x1bW4tZnVsbHtwYWRkaW5nOjB9LmdvdnVrLWdyaWRfX3N1cnBsdXMtcGF5bWVudHMtY29sMXttYXJnaW4tYm90dG9tOjEwcHh9LmdvdnVrLWluc2V0LXRleHRfX25vLWJvcmRlcntib3JkZXItbGVmdDowfS5nb3Z1ay1oaWRldGV4dHtmb250LXNpemU6MjJweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5sb3dlcmNhc2V7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS5jaGFubmVsOjpmaXJzdC1sZXR0ZXJ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5nb3Z1ay1oZWFkaW5nLXhse2ZvbnQtc2l6ZTo0OHB4O21hcmdpbi1ib3R0b206MXB4fS5nb3Z1ay1zZWN0aW9uLWJyZWFrLS12aXNpYmxle2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMwMDB9LnRvdGFscGF5bWVudHMuZ292dWstdGFibGVfX3Jvd3tib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDAwIWltcG9ydGFudH0uZ292dWstaW5zZXQtdGV4dHttYXJnaW4tbGVmdDoxZW19LmdvdnVrLWJ1dHRvbntmb250LXNpemU6MTlweH0uZ292dWstdGFibGVfX2NlbGwuZ292dWstdGFibGVfX2NlbGwtLWNvbDYuZ292dWstdGFibGVfX2N1c3RvbS0tY29sNiwuZ3JvdXBhbW91bnQuZ292dWstdGFibGVfX2hlYWRlcnt0ZXh0LWFsaWduOnJpZ2h0fS5mZWVjbGFzc3twYWRkaW5nLWxlZnQ6LjdlbX0uYWxpZ24tY2VudGVye3RleHQtYWxpZ246Y2VudGVyfWRldGFpbHMgc3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX0uY2FzZS10cmFuc2FjdGlvbl9fY29sb3J7Y29sb3I6I2E3MTQxNDtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGl0YWxpemU6OmZpcnN0LWxldHRlcnt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmdvdnVrLWluc2V0LXRleHRfX25vLWxlZnQtbWFyZ2lue21hcmdpbi1sZWZ0OjA7cGFkZGluZy1sZWZ0OjB9LndoaXRlc3BhY2UtaW5oZXJpdHt3aGl0ZS1zcGFjZTppbmhlcml0IWltcG9ydGFudH0uZ292dWstc2VjdGlvbi1yZWNvcmRzLWJyZWFre21hcmdpbjoxMHB4O2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMwMDAhaW1wb3J0YW50fS5leGlzaXRuZy1mZWVze21hcmdpbi1sZWZ0OjEycHh9LmFkZC10ZWxlcGhvbnktcGF5bWVudHttYXJnaW4tdG9wOi0yZW07bWFyZ2luLWxlZnQ6LTJlbX0uZ292dWstdGFibGVfX2hlYWRlci0tY3VzdG9te3RleHQtYWxpZ246Y2VudGVyfS5kaXNhYmxlLWxpbmt7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjojOGU4YzhjfS5wYW5lbC1uby0tc3R5bGV7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZX0uY29sLTI4e3dpZHRoOjI4JX0uY29sLTE1e3dpZHRoOjE1JX0uaG1jdHMtYmFubmVyPi5obWN0cy1iYW5uZXJfX21lc3NhZ2V7Zm9udC1zaXplOjE5cHg7bGluZS1oZWlnaHQ6MS4yNX0uc3VtbWFyeS10YWJsZS1mb250e2ZvbnQtc2l6ZTozNnB4fWBdXG59KVxuZXhwb3J0IGNsYXNzIENhc2VUcmFuc2FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0YWtlUGF5bWVudDogYm9vbGVhbjtcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBleGNSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwczogYW55W10gPSBbXTtcbiAgcGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgbm9uUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgYWxsUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgcmVtaXNzaW9uczogSVJlbWlzc2lvbltdID0gW107XG4gIGZlZXM6IElGZWVbXSA9IFtdO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgdG90YWxGZWVzOiBudW1iZXI7XG4gIHRvdGFsUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxOb25PZmZQYXltZW50czogbnVtYmVyO1xuICB0b3RhbFJlbWlzc2lvbnM6IG51bWJlcjtcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZztcbiAgZGNuTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnRSZWY6IHN0cmluZztcbiAgaXNUdXJuT2ZmOiBib29sZWFuO1xuICBpc05ld1BjaXBhbE9mZjogYm9vbGVhbjtcbiAgaXNPbGRQY2lwYWxPZmY6IGJvb2xlYW47XG4gIGlzU3RyYXRlZ2ljRml4RW5hYmxlOiBib29sZWFuO1xuICBpc0FkZEZlZUJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0V4Y2VwdGlvblJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VucHJvY2Vzc2VkUmVjb3JkU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXhjZXB0aW9uUmVjb3JkUmVmZXJlbmNlOiBzdHJpbmc7XG4gIGlzQW55RmVlR3JvdXBBdmlsYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzSGlzdG9yaWNHcm91cEF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0J1bGtTY2FuRW5hYmxlO1xuICBpc1JlbWlzc2lvbnNNYXRjaDogYm9vbGVhbjtcbiAgdmlld1N0YXR1cyA9ICdtYWluJztcbiAgaXNSZW1vdmVCdG5EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBmZWVJZDpJRmVlO1xuICBjbEFtb3VudER1ZTogbnVtYmVyID0gMDtcbiAgdW5wcm9jZXNzZWRSZWNvcmRDb3VudDogbnVtYmVyO1xuICBpc0ZlZVJlY29yZHNFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0dycE91dHN0YW5kaW5nQW10UG9zaXRpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG90YWxSZWZ1bmRBbW91bnQ6IE51bWJlcjtcbiAgY2FzZVR5cGU6IFN0cmluZztcbiAgbHNDY2ROdW1iZXI6IGFueSA9IGxzLmdldDxhbnk+KCdjY2ROdW1iZXInKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgcHJpdmF0ZSBwYXltZW50Vmlld1NlcnZpY2U6IFBheW1lbnRWaWV3U2VydmljZSxcbiAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLFxuICBwcml2YXRlIGNhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlOiBDYXNlVHJhbnNhY3Rpb25zU2VydmljZSxcbiAgcHJpdmF0ZSBwYXltZW50TGliQ29tcG9uZW50OiBQYXltZW50TGliQ29tcG9uZW50KSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5jYXNlVHlwZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRTtcbiAgICBpZih0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSID09PSAnJykge1xuICAgICAgdGhpcy5jY2RDYXNlTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0U7XG4gICAgfVxuICAgIHRoaXMuZXhjUmVmZXJlbmNlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0U7XG4gICAgdGhpcy50YWtlUGF5bWVudCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVDtcbiAgICB0aGlzLmlzQnVsa1NjYW5FbmFibGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRTtcbiAgICB0aGlzLmRjbk51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5EQ05fTlVNQkVSO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VMRUNURURfT1BUSU9OLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5pc1R1cm5PZmYgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNUVVJOT0ZGO1xuICAgIHRoaXMuaXNOZXdQY2lwYWxPZmYgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNORVdQQ0lQQUxPRkY7XG4gICAgdGhpcy5pc09sZFBjaXBhbE9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU09MRFBDSVBBTE9GRjtcbiAgICB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEU7XG4gICAgaWYoIXRoaXMuaXNUdXJuT2ZmKSB7XG4gICAgICBpZih0aGlzLmxzQ2NkTnVtYmVyICE9PSB0aGlzLmNjZENhc2VOdW1iZXIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NjZC1zZWFyY2g/dGFrZVBheW1lbnQ9dHJ1ZWApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlLmdldFBheW1lbnRHcm91cHModGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgIHBheW1lbnRHcm91cHMgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwcyA9IHBheW1lbnRHcm91cHNbJ3BheW1lbnRfZ3JvdXBzJ107XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVBbW91bnRzKCk7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVSZWZ1bmRBbW91bnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IDxhbnk+ZXJyb3I7XG4gICAgICAgICAgdGhpcy5pc0FueUZlZUdyb3VwQXZpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNldERlZmF1bHRzKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZVRyYW5zYWN0aW9uc1NlcnZpY2UuZ2V0UGF5bWVudEdyb3Vwcyh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgICAgcGF5bWVudEdyb3VwcyA9PiB7XG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXBzID0gcGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXTtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUFtb3VudHMoKTtcbiAgICAgICAgICB0aGlzLnRvdGFsUmVmdW5kQW1vdW50ID0gdGhpcy5jYWxjdWxhdGVSZWZ1bmRBbW91bnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IDxhbnk+ZXJyb3I7XG4gICAgICAgICAgdGhpcy5zZXREZWZhdWx0cygpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrRm9yRXhjZXB0aW9uUmVjb3JkKCk7XG4gIH1cblxuICBzZXREZWZhdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsUGF5bWVudHMgPSAwLjAwO1xuICAgIHRoaXMudG90YWxSZW1pc3Npb25zID0gMC4wMDtcbiAgICB0aGlzLnRvdGFsTm9uT2ZmUGF5bWVudHMgPSAwLjAwO1xuICAgIHRoaXMudG90YWxGZWVzID0gMC4wMDtcbn1cblxuZ2V0QWxsb2NhdGlvblN0YXR1cyhwYXltZW50czogYW55KXtcblxuICBsZXQgcGF5bWVudEFsbG9jYXRpb24gPSBwYXltZW50cy5wYXltZW50X2FsbG9jYXRpb24sXG4gICAgICBpc0FsbG9jYXRpb25TdGF0dXNFeGlzdCA9IHBheW1lbnRBbGxvY2F0aW9uLmxlbmd0aCA+MDtcbiAgcmV0dXJuIGlzQWxsb2NhdGlvblN0YXR1c0V4aXN0ID8gcGF5bWVudEFsbG9jYXRpb25bMF0uYWxsb2NhdGlvbl9zdGF0dXMgOiAnLSc7XG4gIC8vcmV0dXJuIFwiLVwiO1xuXG59XG5cbmNoZWNrRm9yRXhjZXB0aW9uUmVjb3JkKCk6IHZvaWQge1xuICBpZih0aGlzLnBheW1lbnRHcm91cHMubGVuZ3RoID09PSAwICYmICh0aGlzLnNlbGVjdGVkT3B0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdjY2RvcmV4Y2VwdGlvbicgfHwgdGhpcy5zZWxlY3RlZE9wdGlvbi50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSAncmMnKSkge1xuICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5nZXRCU1BheW1lbnRzQnlDQ0QodGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICByZWNvcmREYXRhID0+IHtcbiAgICAgICBpZihyZWNvcmREYXRhWydkYXRhJ10gJiYgcmVjb3JkRGF0YVsnZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlICYmIHJlY29yZERhdGFbJ2RhdGEnXS5leGNlcHRpb25fcmVjb3JkX3JlZmVyZW5jZS5sZW5ndGggPiAwICYmIHJlY29yZERhdGFbJ2RhdGEnXS5jY2RfcmVmZXJlbmNlID4wKSB7XG4gICAgICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHJlY29yZERhdGFbJ2RhdGEnXSAmJiByZWNvcmREYXRhWydkYXRhJ10uZXhjZXB0aW9uX3JlY29yZF9yZWZlcmVuY2UgJiYgcmVjb3JkRGF0YVsnZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlLmxlbmd0aCA+IDAgJiYgcmVjb3JkRGF0YVsnZGF0YSddLmNjZF9yZWZlcmVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaXNFeGNlcHRpb25SZWNvcmQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZihyZWNvcmREYXRhWydkYXRhJ10gJiYgcmVjb3JkRGF0YVsnZGF0YSddLmV4Y2VwdGlvbl9yZWNvcmRfcmVmZXJlbmNlICYmIHJlY29yZERhdGFbJ2RhdGEnXS5leGNlcHRpb25fcmVjb3JkX3JlZmVyZW5jZS5sZW5ndGggPT09IHVuZGVmaW5lZCAmJiByZWNvcmREYXRhWydkYXRhJ10uY2NkX3JlZmVyZW5jZSA+MCkge1xuICAgICAgICAgIHRoaXMuaXNFeGNlcHRpb25SZWNvcmQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgaWYgKHRoaXMucGF5bWVudEdyb3Vwcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbi50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSAnZGNuJykge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSLmxlbmd0aCA+IDAgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkVYQ19SRUZFUkVOQ0UubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0V4Y2VwdGlvblJlY29yZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0FkZEZlZUJ0bkVuYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZih0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuRVhDX1JFRkVSRU5DRS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzRXhjZXB0aW9uUmVjb3JkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNFeGNlcHRpb25SZWNvcmQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNBZGRGZWVCdG5FbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKHRoaXMucGF5bWVudEdyb3Vwcy5sZW5ndGggPiAwKVxuICB0aGlzLnBheW1lbnRHcm91cHMuZm9yRWFjaChwYXltZW50R3JvdXAgPT4ge1xuICAgIGlmIChwYXltZW50R3JvdXAucGF5bWVudHMpIHtcbiAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cy5mb3JFYWNoKHBheW1lbnQgPT4ge1xuICAgICAgICBpZiAocGF5bWVudC5jYXNlX3JlZmVyZW5jZSAhPT0gdW5kZWZpbmVkICYmIHBheW1lbnQuY2NkX2Nhc2VfbnVtYmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlzRXhjZXB0aW9uUmVjb3JkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXNFeGNlcHRpb25SZWNvcmQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuICBjYWxjdWxhdGVBbW91bnRzKCk6IHZvaWQge1xuICAgIGxldCBmZWVzVG90YWwgPSAwLjAwLFxuICAgICAgcGF5bWVudHNUb3RhbCA9IDAuMDAsXG4gICAgICByZW1pc3Npb25zVG90YWwgPSAwLjAwLFxuICAgICAgbm9uT2ZmTGluZVBheW1lbnQgPSAwLjAwO1xuICBcbiAgICB0aGlzLnBheW1lbnRHcm91cHMuZm9yRWFjaChwYXltZW50R3JvdXAgPT4ge1xuICAgICAgaWYgKHBheW1lbnRHcm91cC5mZWVzKSB7XG4gICAgICAgIHBheW1lbnRHcm91cC5mZWVzLmZvckVhY2goZmVlID0+IHtcbiAgICAgICAgICAvLyBuZXcgZmVhdHVyZSBBcHBvcnRpb25tZW50IHRvZ2dsZSBjaGFuZ2VzXG4gICAgICAgICAgaWYoIXRoaXMuaXNUdXJuT2ZmKXtcbiAgICAgICAgICAgIGlmKGZlZS5kYXRlX2NyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgbGV0IGEgPSBmZWUuYW1vdW50X2R1ZSA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBsZXQgYiA9IGZlZS5hbW91bnRfZHVlIDw9IDA7XG4gICAgICAgICAgICAgIHRoaXMuY2xBbW91bnREdWUgPSBhID8gdGhpcy5jbEFtb3VudER1ZSArIGZlZS5uZXRfYW1vdW50IDogYiA/IHRoaXMuY2xBbW91bnREdWUgKyAwIDogdGhpcy5jbEFtb3VudER1ZSArIGZlZS5hbW91bnRfZHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmVlWydwYXltZW50X2dyb3VwX3JlZmVyZW5jZSddID0gcGF5bWVudEdyb3VwWydwYXltZW50X2dyb3VwX3JlZmVyZW5jZSddO1xuICAgICAgICAgICAgdGhpcy5mZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmVlc1RvdGFsID0gZmVlc1RvdGFsICsgZmVlLmNhbGN1bGF0ZWRfYW1vdW50O1xuICAgICAgICAgICAgdGhpcy5mZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZih0aGlzLmlzVHVybk9mZil7XG4gICAgICAgIHRoaXMudG90YWxGZWVzID0gZmVlc1RvdGFsO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bWVudEdyb3VwLnBheW1lbnRzKSB7XG4gICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cy5mb3JFYWNoKHBheW1lbnQgPT4ge1xuICAgICAgICAvLyBuZXcgZmVhdHVyZSBBcHBvcnRpb25tZW50IHRvZ2dsZSBjaGFuZ2VzXG4gICAgICAgICAgaWYoIXRoaXMuaXNUdXJuT2ZmKXtcbiAgICAgICAgICAgIGxldCBhbGxvY2F0aW9uTGVuID0gcGF5bWVudC5wYXltZW50X2FsbG9jYXRpb247XG5cbiAgICAgICAgICAgIGlmIChwYXltZW50LnN0YXR1cy50b1VwcGVyQ2FzZSgpID09PSAnU1VDQ0VTUycpIHtcbiAgICAgICAgICAgICAgcGF5bWVudHNUb3RhbCA9IHBheW1lbnRzVG90YWwgKyBwYXltZW50LmFtb3VudDtcbiAgICAgICAgICAgICAgaWYoYWxsb2NhdGlvbkxlbi5sZW5ndGggPT09IDAgfHwgYWxsb2NhdGlvbkxlbi5sZW5ndGggPiAwICYmIGFsbG9jYXRpb25MZW5bMF0uYWxsb2NhdGlvbl9zdGF0dXMgPT09J0FsbG9jYXRlZCcpIHtcbiAgICAgICAgICAgICAgICBub25PZmZMaW5lUGF5bWVudCA9IG5vbk9mZkxpbmVQYXltZW50ICsgcGF5bWVudC5hbW91bnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYoIGFsbG9jYXRpb25MZW4ubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vblBheW1lbnRzLnB1c2gocGF5bWVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKGFsbG9jYXRpb25MZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucGF5bWVudHMucHVzaChwYXltZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBheW1lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlXG4gICAgICAgICAgICB0aGlzLmFsbFBheW1lbnRzLnB1c2gocGF5bWVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwYXltZW50LnN0YXR1cy50b1VwcGVyQ2FzZSgpID09PSAnU1VDQ0VTUycpIHtcbiAgICAgICAgICAgICAgcGF5bWVudHNUb3RhbCA9IHBheW1lbnRzVG90YWwgKyBwYXltZW50LmFtb3VudDtcbiAgICAgICAgICAgICAgdGhpcy5wYXltZW50cy5wdXNoKHBheW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF5bWVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSBwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2VcbiAgICAgICAgICAgIHRoaXMuYWxsUGF5bWVudHMucHVzaChwYXltZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy50b3RhbFBheW1lbnRzID0gcGF5bWVudHNUb3RhbDtcbiAgICAgIC8vIG5ldyBmZWF0dXJlIEFwcG9ydGlvbm1lbnQgdG9nZ2xlIGNoYW5nZXNcbiAgICAgIGlmKCF0aGlzLmlzVHVybk9mZil7XG4gICAgICAgIHRoaXMudG90YWxOb25PZmZQYXltZW50cyA9IG5vbk9mZkxpbmVQYXltZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bWVudEdyb3VwLnJlbWlzc2lvbnMpIHtcbiAgICAgICAgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMuZm9yRWFjaChyZW1pc2lzb24gPT4ge1xuICAgICAgICAgIHJlbWlzc2lvbnNUb3RhbCA9IHJlbWlzc2lvbnNUb3RhbCArIHJlbWlzaXNvbi5od2ZfYW1vdW50O1xuICAgICAgICAgIHRoaXMucmVtaXNzaW9ucy5wdXNoKHJlbWlzaXNvbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy50b3RhbFJlbWlzc2lvbnMgPSByZW1pc3Npb25zVG90YWw7XG4gICAgfSk7XG5cbiAgfVxuICBjYWxjdWxhdGVSZWZ1bmRBbW91bnQoKSB7XG4gICAgaWYoIXRoaXMuaXNUdXJuT2ZmKXtcbiAgICAgICAgbGV0IGlzTmV3UGF5bWVudEdyb3VwID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXBzLmZvckVhY2goKHBheW1lbnRHcm91cCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgZ3JwT3V0c3RhbmRpbmdBbW91bnQgPSAwLjAwLFxuICAgICAgICAgICAgZmVlc1RvdGFsID0gMC4wMCxcbiAgICAgICAgICAgIHBheW1lbnRzVG90YWwgPSAwLjAwLFxuICAgICAgICAgICAgcmVtaXNzaW9uc1RvdGFsID0gMC4wMCxcbiAgICAgICAgICAgIGZlZXMgPSBbXTtcblxuICAgICAgICAgIGlmIChwYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgICAgICAgcGF5bWVudEdyb3VwLmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgICAgICAgICBmZWVzVG90YWwgPSBmZWVzVG90YWwgKyBmZWUuY2FsY3VsYXRlZF9hbW91bnQ7XG5cbiAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5mb3JFYWNoKHJlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYocmVtLmZlZV9jb2RlID09PSBmZWUuY29kZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBmZWVbJ3JlbWlzc2lvbnMnXSA9IHJlbTtcbiAgICAgICAgICAgICAgICAgIGZlZXMucHVzaChmZWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYoIXRoaXMuaXNSZW1pc3Npb25zTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBmZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmKGZlZS5kYXRlX2NyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICBpc05ld1BheW1lbnRHcm91cCA9IHRydWU7XG4gICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSGlzdG9yaWNHcm91cEF2YWlsYWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXltZW50R3JvdXBzW2luZGV4XVsnb2xkJ10gPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEdyb3Vwc1tpbmRleF0uZmVlcyA9IGZlZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYXltZW50R3JvdXAucGF5bWVudHMpIHtcbiAgICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cy5mb3JFYWNoKHBheW1lbnQgPT4ge1xuICAgICAgICAgICAgICBpZiAocGF5bWVudC5zdGF0dXMudG9VcHBlckNhc2UoKSA9PT0gJ1NVQ0NFU1MnKSB7XG4gICAgICAgICAgICAgICAgcGF5bWVudHNUb3RhbCA9IHBheW1lbnRzVG90YWwgKyBwYXltZW50LmFtb3VudDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICAgICAgICBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5mb3JFYWNoKHJlbWlzc2lvbiA9PiB7XG4gICAgICAgICAgICAgIHJlbWlzc2lvbnNUb3RhbCA9IHJlbWlzc2lvbnNUb3RhbCArIHJlbWlzc2lvbi5od2ZfYW1vdW50O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgZ3JwT3V0c3RhbmRpbmdBbW91bnQgPSAoZmVlc1RvdGFsIC0gcmVtaXNzaW9uc1RvdGFsKSAtIHBheW1lbnRzVG90YWw7XG4gICAgICAgICAgICBpZihncnBPdXRzdGFuZGluZ0Ftb3VudCA+IDAgJiYgaXNOZXdQYXltZW50R3JvdXApIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0FueUZlZUdyb3VwQXZpbGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnBheW1lbnRSZWYgPSBwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihwYXltZW50R3JvdXAuZmVlcyAmJiBwYXltZW50R3JvdXAuZmVlcy5sZW5ndGggPiAwICYmIGdycE91dHN0YW5kaW5nQW1vdW50IDw9IDAgJiYgaXNOZXdQYXltZW50R3JvdXApIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0FueUZlZUdyb3VwQXZpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmKCghaXNOZXdQYXltZW50R3JvdXAgJiYgdGhpcy5pc0hpc3RvcmljR3JvdXBBdmFpbGFibGUpIHx8ICghaXNOZXdQYXltZW50R3JvdXAgJiYgIXRoaXMuaXNIaXN0b3JpY0dyb3VwQXZhaWxhYmxlKSkge1xuICAgICAgICAgIHRoaXMuaXNBbnlGZWVHcm91cEF2aWxhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB0b3RhbFJlZnVuZEFtb3VudCA9IDAsXG4gICAgICAgIGlzRmVlQW1vdW50WmVybyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cHMuZm9yRWFjaChwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIGxldCBncnBPdXRzdGFuZGluZ0Ftb3VudCA9IDAuMDAsXG4gICAgICAgICAgICBmZWVzVG90YWwgPSAwLjAwLFxuICAgICAgICAgICAgcGF5bWVudHNUb3RhbCA9IDAuMDAsXG4gICAgICAgICAgICByZW1pc3Npb25zVG90YWwgPSAwLjAwO1xuICAgICAgICAgIGlmIChwYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgICAgICAgdGhpcy5pc0ZlZVJlY29yZHNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICBwYXltZW50R3JvdXAuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICAgICAgICAgIGZlZXNUb3RhbCA9IGZlZXNUb3RhbCArIGZlZS5jYWxjdWxhdGVkX2Ftb3VudDtcbiAgICAgICAgICAgICAgaWYoZmVlLmNhbGN1bGF0ZWRfYW1vdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaXNGZWVBbW91bnRaZXJvID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXltZW50R3JvdXAucGF5bWVudHMpIHtcbiAgICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cy5mb3JFYWNoKHBheW1lbnQgPT4ge1xuICAgICAgICAgICAgICBpZiAocGF5bWVudC5zdGF0dXMudG9VcHBlckNhc2UoKSA9PT0gJ1NVQ0NFU1MnKSB7XG4gICAgICAgICAgICAgICAgcGF5bWVudHNUb3RhbCA9IHBheW1lbnRzVG90YWwgKyBwYXltZW50LmFtb3VudDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICAgICAgICBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5mb3JFYWNoKHJlbWlzc2lvbiA9PiB7XG4gICAgICAgICAgICAgIHJlbWlzc2lvbnNUb3RhbCA9IHJlbWlzc2lvbnNUb3RhbCArIHJlbWlzc2lvbi5od2ZfYW1vdW50O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSAgXG4gICAgICAgICAgICBncnBPdXRzdGFuZGluZ0Ftb3VudCA9IChmZWVzVG90YWwgLSByZW1pc3Npb25zVG90YWwpIC0gcGF5bWVudHNUb3RhbDtcbiAgICAgICAgICAgIGlmIChncnBPdXRzdGFuZGluZ0Ftb3VudCA8IDApIHtcbiAgICAgICAgICAgICAgaWYodG90YWxSZWZ1bmRBbW91bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZEFtb3VudCA9IGdycE91dHN0YW5kaW5nQW1vdW50O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kQW1vdW50ID0gKHRvdGFsUmVmdW5kQW1vdW50ICsgZ3JwT3V0c3RhbmRpbmdBbW91bnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKGdycE91dHN0YW5kaW5nQW1vdW50ID4gMCB8fCAoZ3JwT3V0c3RhbmRpbmdBbW91bnQgPT09IDAgJiYgaXNGZWVBbW91bnRaZXJvKSkge1xuICAgICAgICAgICAgICB0aGlzLmlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdG90YWxSZWZ1bmRBbW91bnQgKiAtMTtcbiAgICAgIH1cbiAgfVxuXG4gIGdldEdyb3VwT3V0c3RhbmRpbmdBbW91bnQocGF5bWVudEdyb3VwOiBJUGF5bWVudEdyb3VwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmNhbGN1bGF0ZU91dFN0YW5kaW5nQW1vdW50KHBheW1lbnRHcm91cCk7O1xuICB9XG5cbiAgcmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYoIXRoaXMuaXNBbnlGZWVHcm91cEF2aWxhYmxlIHx8IHRoaXMuaXNUdXJuT2ZmKSB7XG4gICAgbGV0IHVybCA9IHRoaXMuaXNCdWxrU2NhbkVuYWJsZSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgICB1cmwgKz0gdGhpcy5pc1R1cm5PZmYgPyAnJmlzVHVybk9mZj1FbmFibGUnIDogJyZpc1R1cm5PZmY9RGlzYWJsZSc7XG4gICAgICB1cmwgKz0gdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSA/ICcmaXNTdEZpeEVuYWJsZT1FbmFibGUnIDogJyZpc1N0Rml4RW5hYmxlPURpc2FibGUnO1xuICAgICAgdXJsICs9YCZjYXNlVHlwZT0ke3RoaXMuY2FzZVR5cGV9YFxuICAgICAgdXJsICs9IHRoaXMuaXNOZXdQY2lwYWxPZmYgPyAnJmlzTmV3UGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzTmV3UGNpcGFsT2ZmPURpc2FibGUnO1xuICAgICAgdXJsICs9IHRoaXMuaXNPbGRQY2lwYWxPZmYgPyAnJmlzT2xkUGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzT2xkUGNpcGFsT2ZmPURpc2FibGUnO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2ZlZS1zZWFyY2g/c2VsZWN0ZWRPcHRpb249JHt0aGlzLnNlbGVjdGVkT3B0aW9ufSZjY2RDYXNlTnVtYmVyPSR7dGhpcy5jY2RDYXNlTnVtYmVyfSR7dXJsfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuID0gbnVsbDtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSB0aGlzLnBheW1lbnRSZWY7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUdXJuT2ZmID0gdGhpcy5pc1R1cm5PZmY7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9SZXBvcnRzUGFnZShldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvcmVwb3J0cz9zZWxlY3RlZE9wdGlvbj0ke3RoaXMuc2VsZWN0ZWRPcHRpb259JmNjZENhc2VOdW1iZXI9JHt0aGlzLmNjZENhc2VOdW1iZXJ9YCk7XG4gIH1cbiAgbG9hZEZlZVN1bW1hcnlQYWdlKHBheW1lbnRHcm91cDogSVBheW1lbnRHcm91cCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5ic3BheW1lbnRkY24gPSBudWxsO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSBwYXltZW50R3JvdXAucGF5bWVudF9ncm91cF9yZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVHVybk9mZiA9IHRoaXMuaXNUdXJuT2ZmO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdmZWUtc3VtbWFyeSc7XG4gIH1cblxuICBnb1RvUGF5bWVudFZpZXdDb21wb25lbnQocGF5bWVudEdyb3VwOiBhbnkpIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudE1ldGhvZCA9IHBheW1lbnRHcm91cC5wYXltZW50TWV0aG9kO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSBwYXltZW50R3JvdXAucGF5bWVudEdyb3VwUmVmZXJlbmNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50UmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3BheW1lbnQtdmlldyc7XG4gIH1cblxuICBnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcsIHBheW1lbnRNZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHtwYXltZW50R3JvdXBSZWZlcmVuY2UsIHBheW1lbnRSZWZlcmVuY2UsIHBheW1lbnRNZXRob2R9KTtcbiAgfVxuXG4gIHNlbGVjdGVkVW5wcm9jZXNzZWRGZWVFdmVudCh1bnByb2Nlc3NlZFJlY29yZElkOiBzdHJpbmcpIHtcbiAgICBpZiAoIHVucHJvY2Vzc2VkUmVjb3JkSWQgKSB7XG4gICAgICBpZih0aGlzLmlzVHVybk9mZikge1xuICAgICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1VucHJvY2Vzc2VkUmVjb3JkU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZih0aGlzLmlzVHVybk9mZikge1xuICAgICAgICB0aGlzLmlzQWRkRmVlQnRuRW5hYmxlZCA9IHRydWU7XG4gICAgICB9ICAgICAgXG4gICAgICB0aGlzLmlzVW5wcm9jZXNzZWRSZWNvcmRTZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXRVbnByb2Nlc3NlZEZlZUNvdW50KHVuUHJvY2Vzc2VkUmVjb3JkQ291bnQ6IG51bWJlcikge1xuICAgIHRoaXMudW5wcm9jZXNzZWRSZWNvcmRDb3VudCA9IHVuUHJvY2Vzc2VkUmVjb3JkQ291bnQ7XG4gIH1cblxuICBjYWxjdWxhdGVBbW91bnREdWUoZmVlOiBJRmVlKSB7XG5cbiAgICBpZihmZWUuZGF0ZV9jcmVhdGVkKSB7XG4gICAgICByZXR1cm4gZmVlLmFtb3VudF9kdWUgIT09IHVuZGVmaW5lZD8gZmVlLmFtb3VudF9kdWUgOiBmZWUubmV0X2Ftb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiMC4wMFwiO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1SZW1vdmVGZWUoZmVlOiBJRmVlKXtcbiAgICB0aGlzLmlzUmVtb3ZlQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZlZUlkID0gZmVlO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJztcbiAgfVxuICBjYW5jZWxSZW1vdmFsKCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgfVxuICByZW1vdmVGZWUoZmVlOiBhbnkpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgICB0aGlzLmlzUmVtb3ZlQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaXNDaGVja0Ftb3VudGR1ZUV4aXN0KGFtb3VudER1ZTogYW55KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhbW91bnREdWUgPT09ICd1bmRlZmluZWQnO1xuICB9XG59XG4iXX0=
|