tango-app-ui-manage-settings 3.0.15-dev → 3.0.17-dev
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/esm2022/lib/components/payments-subscription/payments-subscription.component.mjs +127 -66
- package/esm2022/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.mjs +14 -8
- package/esm2022/lib/components/payments-subscription/subscription-popups/model-content/model-content.component.mjs +3 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.mjs +82 -44
- package/esm2022/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.mjs +4 -4
- package/esm2022/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.mjs +8 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.mjs +12 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/subscription-approval/subscription-approval.component.mjs +2 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/trail-settings/trail-settings.component.mjs +7 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/unsubscribe-request/unsubscribe-request.component.mjs +3 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/update/update.component.mjs +3 -4
- package/esm2022/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.mjs +18 -17
- package/esm2022/lib/services/payment-subscription.service.mjs +5 -2
- package/fesm2022/tango-app-ui-manage-settings.mjs +274 -147
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/payments-subscription/payments-subscription.component.d.ts +6 -0
- package/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.d.ts +1 -0
- package/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.d.ts +3 -1
- package/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.d.ts +1 -0
- package/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.d.ts +1 -0
- package/lib/services/payment-subscription.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -13,7 +13,6 @@ import { AddSteppriceComponent } from './subscription-popups/add-stepprice/add-s
|
|
|
13
13
|
import { SkipTrailComponent } from './subscription-popups/skip-trail/skip-trail.component';
|
|
14
14
|
import { TrailSettingsComponent } from './subscription-popups/trail-settings/trail-settings.component';
|
|
15
15
|
import { UnsubscribeRequestComponent } from './subscription-popups/unsubscribe-request/unsubscribe-request.component';
|
|
16
|
-
import Swal from 'sweetalert2';
|
|
17
16
|
import * as i0 from "@angular/core";
|
|
18
17
|
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
19
18
|
import * as i2 from "@angular/forms";
|
|
@@ -105,7 +104,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
105
104
|
totalItems = 0;
|
|
106
105
|
paginationSizes = [10, 20, 30];
|
|
107
106
|
pageSize = 10;
|
|
108
|
-
isFilter = '
|
|
107
|
+
isFilter = 'current';
|
|
109
108
|
searchValue = '';
|
|
110
109
|
invoiceList = [];
|
|
111
110
|
extendPaymentPeriodDays;
|
|
@@ -123,6 +122,8 @@ export class PaymentsSubscriptionComponent {
|
|
|
123
122
|
invoiceNoData = true;
|
|
124
123
|
invoiceLoading = false;
|
|
125
124
|
searchDisabled = false;
|
|
125
|
+
userType = '';
|
|
126
|
+
disabledAddIcon = false;
|
|
126
127
|
destroy$ = new Subject();
|
|
127
128
|
constructor(modalService, fb, PaymentSubscriptionService, changeDetector, toast, gs, elementRef) {
|
|
128
129
|
this.modalService = modalService;
|
|
@@ -147,23 +148,30 @@ export class PaymentsSubscriptionComponent {
|
|
|
147
148
|
cameracount: ['', Validators.required],
|
|
148
149
|
});
|
|
149
150
|
this.paymentinvoiceform = this.fb.group({
|
|
150
|
-
radiooptions: ['', Validators.required,],
|
|
151
|
-
paymentcycle: ['', Validators.required],
|
|
152
|
-
invoiceTo: [''],
|
|
151
|
+
radiooptions: ['before15', Validators.required,],
|
|
152
|
+
paymentcycle: ['monthly', Validators.required],
|
|
153
|
+
invoiceTo: ['', Validators.required],
|
|
153
154
|
generateinvoiceon: ['', Validators.required],
|
|
154
|
-
paymenttype: ['', Validators.required],
|
|
155
|
-
currency: ['', Validators.required],
|
|
156
|
-
paymentAgreementTo: [''],
|
|
157
|
-
extendPaymentPeriodDays: [
|
|
155
|
+
paymenttype: ['online', Validators.required],
|
|
156
|
+
currency: ['inr', Validators.required],
|
|
157
|
+
paymentAgreementTo: ['', Validators.required],
|
|
158
|
+
extendPaymentPeriodDays: [1, Validators.required],
|
|
158
159
|
});
|
|
159
160
|
this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data) => {
|
|
160
161
|
if (data) {
|
|
161
162
|
this.clientId = data.client;
|
|
162
163
|
this.dynamicData.clientId = this.clientId;
|
|
163
|
-
this.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
this.gs.userAccess.pipe(takeUntil(this.destroy$)).subscribe((data) => {
|
|
165
|
+
if (data) {
|
|
166
|
+
this.userType = data.userType;
|
|
167
|
+
if (data.userType == 'tango') {
|
|
168
|
+
this.getPricing('standard');
|
|
169
|
+
this.getProductList();
|
|
170
|
+
this.filterList();
|
|
171
|
+
this.notificationList();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
167
175
|
this.clientBillingInfo(this.clientId);
|
|
168
176
|
this.getpaymentinvoice(this.clientId);
|
|
169
177
|
this.paymentinvoiceform.disable();
|
|
@@ -285,6 +293,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
285
293
|
this.PaymentSubscriptionService.trialExtentApproval(params).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
286
294
|
if (res && res.code == 200) {
|
|
287
295
|
this.toast.getSuccessToast(`${data.name} trial extended successfully`);
|
|
296
|
+
this.notificationList();
|
|
288
297
|
}
|
|
289
298
|
});
|
|
290
299
|
}
|
|
@@ -339,6 +348,11 @@ export class PaymentsSubscriptionComponent {
|
|
|
339
348
|
};
|
|
340
349
|
let modelRef = this.modalService.open(UpdateComponent, { centered: true, size: 'md' });
|
|
341
350
|
modelRef.componentInstance.modalData = responseData;
|
|
351
|
+
modelRef.result.then((result) => {
|
|
352
|
+
if (result) {
|
|
353
|
+
this.clientinfo.billingDetails.billingAddress = result.billingAddress;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
342
356
|
}
|
|
343
357
|
needhelp() {
|
|
344
358
|
const modalRef = this.modalService.open(NeedHelpComponent, {
|
|
@@ -347,7 +361,8 @@ export class PaymentsSubscriptionComponent {
|
|
|
347
361
|
modalRef.componentInstance.clientId = this.clientId;
|
|
348
362
|
modalRef.result.then((result) => {
|
|
349
363
|
if (result) {
|
|
350
|
-
this.
|
|
364
|
+
if (this.userType == 'tango')
|
|
365
|
+
this.notificationList();
|
|
351
366
|
}
|
|
352
367
|
});
|
|
353
368
|
}
|
|
@@ -371,6 +386,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
371
386
|
modalRef.result.then((result) => {
|
|
372
387
|
if (result == 'successcredit') {
|
|
373
388
|
this.toast.getPrimaryToast('The invoice has been sent to the respective email IDs with the discount.');
|
|
389
|
+
this.invoiceTableData();
|
|
374
390
|
}
|
|
375
391
|
});
|
|
376
392
|
}
|
|
@@ -389,21 +405,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
389
405
|
};
|
|
390
406
|
this.PaymentSubscriptionService.updatePricing(params).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
391
407
|
if (res && res.code == 200) {
|
|
392
|
-
|
|
393
|
-
iconHtml: `<img src="../../../../assets/tango/toast-icons/Envelope-Open-icon.svg">`,
|
|
394
|
-
html: `<div class="col-md-12 mt-5"><div class="toasttitile">Revised changes have been updated</div></div>`,
|
|
395
|
-
toast: true,
|
|
396
|
-
position: 'bottom',
|
|
397
|
-
showConfirmButton: false,
|
|
398
|
-
showCloseButton: true,
|
|
399
|
-
timer: 6000,
|
|
400
|
-
timerProgressBar: true,
|
|
401
|
-
customClass: 'custom-toast-container',
|
|
402
|
-
didOpen: (toast) => {
|
|
403
|
-
toast.addEventListener('mouseenter', Swal.stopTimer);
|
|
404
|
-
toast.addEventListener('mouseleave', Swal.resumeTimer);
|
|
405
|
-
}
|
|
406
|
-
});
|
|
408
|
+
this.toast.getSuccessToast('Revised price list has been sent to the email list');
|
|
407
409
|
}
|
|
408
410
|
});
|
|
409
411
|
}
|
|
@@ -504,7 +506,8 @@ export class PaymentsSubscriptionComponent {
|
|
|
504
506
|
modalRef.result.then((result) => {
|
|
505
507
|
if (result.title == 'Add Step Price') {
|
|
506
508
|
let products = [...new Set(this.priceValueDetails.product.map((item, index) => item.productName))];
|
|
507
|
-
|
|
509
|
+
for (let data of products) {
|
|
510
|
+
// products.forEach((data: any) => {
|
|
508
511
|
let productDetails = this.priceValueDetails.product.find((item, index) => {
|
|
509
512
|
if (item.productName == data && item?.lastIndex) {
|
|
510
513
|
item.index = index;
|
|
@@ -516,8 +519,8 @@ export class PaymentsSubscriptionComponent {
|
|
|
516
519
|
let item = productDetails;
|
|
517
520
|
let range = item.storeRange.split('-');
|
|
518
521
|
let differ = (parseInt(range[1]) - parseInt(range[0])) + 1;
|
|
519
|
-
delete this.priceValueDetails.product[index].lastIndex;
|
|
520
|
-
this.priceValueDetails.product[index].showEditDelete = false;
|
|
522
|
+
// delete this.priceValueDetails.product[index].lastIndex;
|
|
523
|
+
// this.priceValueDetails.product[index].showEditDelete = false;
|
|
521
524
|
let newItem = { ...item };
|
|
522
525
|
let newStartRange = parseInt(range[1]) + 1;
|
|
523
526
|
let newEndRange = newStartRange + parseInt(result.intravel) - 1;
|
|
@@ -525,12 +528,18 @@ export class PaymentsSubscriptionComponent {
|
|
|
525
528
|
newItem.showEditDelete = true;
|
|
526
529
|
newItem.lastIndex = true;
|
|
527
530
|
newItem.storeCount = this.priceValueDetails.product[index].storeCount - differ;
|
|
531
|
+
if (newItem.storeCount < 0) {
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
534
|
+
delete this.priceValueDetails.product[index].lastIndex;
|
|
535
|
+
this.priceValueDetails.product[index].showEditDelete = false;
|
|
528
536
|
newItem.price = newItem.storeCount * (newItem.basePrice - newItem.negotiatePrice);
|
|
529
537
|
this.priceValueDetails.product[index].storeCount = differ;
|
|
530
|
-
this.priceValueDetails.product[index].price = this.priceValueDetails.product[index].storeCount *
|
|
538
|
+
this.priceValueDetails.product[index].price = this.priceValueDetails.product[index].storeCount * this.priceValueDetails.product[index].negotiatePrice;
|
|
531
539
|
newItem.storeRange = newStartRange.toString() + '-' + newEndRange.toString();
|
|
532
540
|
this.priceValueDetails.product.splice(index + 1, 0, newItem);
|
|
533
|
-
}
|
|
541
|
+
}
|
|
542
|
+
// )
|
|
534
543
|
let price = 0;
|
|
535
544
|
let actualPrice = 0;
|
|
536
545
|
let negotiatePrice = 0;
|
|
@@ -539,10 +548,13 @@ export class PaymentsSubscriptionComponent {
|
|
|
539
548
|
actualPrice = actualPrice + item.basePrice;
|
|
540
549
|
negotiatePrice = negotiatePrice + item.negotiatePrice;
|
|
541
550
|
});
|
|
542
|
-
this.priceValueDetails.totalNegotiatePrice = price;
|
|
551
|
+
this.priceValueDetails.totalNegotiatePrice = price.toFixed(2);
|
|
543
552
|
this.priceValueDetails.actualPrice = actualPrice;
|
|
544
|
-
this.priceValueDetails.negotiatePrice = negotiatePrice;
|
|
545
|
-
|
|
553
|
+
this.priceValueDetails.negotiatePrice = negotiatePrice.toFixed(2);
|
|
554
|
+
let gstAmount = this.priceValueDetails.totalNegotiatePrice * (18 / 100);
|
|
555
|
+
this.priceValueDetails.finalValue = (parseFloat(this.priceValueDetails.totalNegotiatePrice) + gstAmount).toFixed(2);
|
|
556
|
+
this.priceValueDetails.discountPercentage = ((this.priceValueDetails.negotiatePrice / this.priceValueDetails.actualPrice) * 100).toFixed(2);
|
|
557
|
+
this.priceValueDetails.discountPrice = this.priceValueDetails.actualPrice - this.priceValueDetails.negotiatePrice;
|
|
546
558
|
this.toast.getSuccessToast('Step Price has been added successfully.');
|
|
547
559
|
}
|
|
548
560
|
if (result.title == 'Edit Step Price') {
|
|
@@ -555,20 +567,24 @@ export class PaymentsSubscriptionComponent {
|
|
|
555
567
|
this.priceValueDetails.product[index - 1].storeCount = this.priceValueDetails.product[index - 1].storeCount + this.priceValueDetails.product[index].storeCount;
|
|
556
568
|
this.priceValueDetails.actualPrice = this.priceValueDetails.actualPrice - this.priceValueDetails.product[index].basePrice;
|
|
557
569
|
this.priceValueDetails.negotiatePrice = this.priceValueDetails.negotiatePrice - this.priceValueDetails.product[index].negotiatePrice;
|
|
558
|
-
this.priceValueDetails.product[index - 1].price =
|
|
570
|
+
this.priceValueDetails.product[index - 1].price = this.priceValueDetails.product[index - 1].negotiatePrice * this.priceValueDetails.product[index - 1].storeCount;
|
|
559
571
|
let productInfo = this.priceValueDetails.product.filter(((item) => item.productName == this.priceValueDetails.product[index].productName));
|
|
560
572
|
if (productInfo.length > 2) {
|
|
561
573
|
this.priceValueDetails.product[index - 1].showImg = true;
|
|
562
574
|
this.priceValueDetails.product[index - 1].showEditDelete = true;
|
|
563
|
-
this.priceValueDetails.product[index - 1].lastIndex = true;
|
|
575
|
+
// this.priceValueDetails.product[index - 1].lastIndex = true;
|
|
564
576
|
}
|
|
577
|
+
this.priceValueDetails.product[index - 1].lastIndex = true;
|
|
565
578
|
this.priceValueDetails.product.splice(index, 1);
|
|
566
579
|
let price = 0;
|
|
567
580
|
this.priceValueDetails.product.forEach((item) => {
|
|
568
581
|
price = price + item.price;
|
|
569
582
|
});
|
|
570
|
-
this.priceValueDetails.totalNegotiatePrice = price;
|
|
571
|
-
|
|
583
|
+
this.priceValueDetails.totalNegotiatePrice = price.toFixed(2);
|
|
584
|
+
let gstAmount = this.priceValueDetails.totalNegotiatePrice * (18 / 100);
|
|
585
|
+
this.priceValueDetails.finalValue = (parseFloat(this.priceValueDetails.totalNegotiatePrice) + gstAmount).toFixed(2);
|
|
586
|
+
this.priceValueDetails.discountPercentage = ((this.priceValueDetails.negotiatePrice / this.priceValueDetails.actualPrice) * 100).toFixed(2);
|
|
587
|
+
this.priceValueDetails.discountPrice = this.priceValueDetails.actualPrice - this.priceValueDetails.negotiatePrice;
|
|
572
588
|
this.toast.getErrorToast('Column deleted successfully.');
|
|
573
589
|
}
|
|
574
590
|
});
|
|
@@ -644,23 +660,32 @@ export class PaymentsSubscriptionComponent {
|
|
|
644
660
|
});
|
|
645
661
|
}
|
|
646
662
|
calculate(index, type) {
|
|
647
|
-
if (
|
|
648
|
-
this.priceValueDetails.product[index].negotiatePrice = this.priceValueDetails.product[index].basePrice * (this.priceValueDetails.product[index].discountPercentage / 100);
|
|
649
|
-
this.priceValueDetails.product[index].price = (this.priceValueDetails.product[index].basePrice - this.priceValueDetails.product[index].negotiatePrice) * this.priceValueDetails.product[index].storeCount;
|
|
663
|
+
if (this.priceValueDetails.product[index].discountPercentage < 0 || this.priceValueDetails.product[index].negotiatePrice < 0 || isNaN(this.priceValueDetails.product[index].negotiatePrice) || isNaN(this.priceValueDetails.product[index].discountPercentage)) {
|
|
650
664
|
}
|
|
651
665
|
else {
|
|
652
|
-
this.priceValueDetails.product[index].
|
|
653
|
-
this.priceValueDetails.product[index].
|
|
666
|
+
this.priceValueDetails.product[index].showDiscountError = false;
|
|
667
|
+
this.priceValueDetails.product[index].showNegotiateError = false;
|
|
668
|
+
if (type == 'discount') {
|
|
669
|
+
this.priceValueDetails.product[index].negotiatePrice = this.priceValueDetails.product[index].basePrice - (this.priceValueDetails.product[index].basePrice * (this.priceValueDetails.product[index].discountPercentage / 100));
|
|
670
|
+
this.priceValueDetails.product[index].price = this.priceValueDetails.product[index].negotiatePrice * this.priceValueDetails.product[index].storeCount;
|
|
671
|
+
}
|
|
672
|
+
else {
|
|
673
|
+
this.priceValueDetails.product[index].discountPercentage = ((this.priceValueDetails.product[index].negotiatePrice / this.priceValueDetails.product[index].basePrice) * 100).toFixed(2);
|
|
674
|
+
this.priceValueDetails.product[index].price = this.priceValueDetails.product[index].negotiatePrice * this.priceValueDetails.product[index].storeCount;
|
|
675
|
+
}
|
|
676
|
+
let negotiatePrice = 0;
|
|
677
|
+
let price = 0;
|
|
678
|
+
this.priceValueDetails.product.forEach((item) => {
|
|
679
|
+
price = price + item.price;
|
|
680
|
+
negotiatePrice = negotiatePrice + parseInt(item.negotiatePrice);
|
|
681
|
+
});
|
|
682
|
+
this.priceValueDetails.negotiatePrice = negotiatePrice.toFixed(2);
|
|
683
|
+
this.priceValueDetails.totalNegotiatePrice = price.toFixed(2);
|
|
684
|
+
this.priceValueDetails.discountPercentage = ((this.priceValueDetails.negotiatePrice / this.priceValueDetails.actualPrice) * 100).toFixed(2);
|
|
685
|
+
this.priceValueDetails.discountPrice = this.priceValueDetails.actualPrice - this.priceValueDetails.negotiatePrice;
|
|
686
|
+
let gstAmount = this.priceValueDetails.totalNegotiatePrice * (18 / 100);
|
|
687
|
+
this.priceValueDetails.finalValue = (parseFloat(this.priceValueDetails.totalNegotiatePrice) + gstAmount).toFixed(2);
|
|
654
688
|
}
|
|
655
|
-
let negotiatePrice = 0;
|
|
656
|
-
let price = 0;
|
|
657
|
-
this.priceValueDetails.product.forEach((item) => {
|
|
658
|
-
price = price + item.price;
|
|
659
|
-
negotiatePrice = negotiatePrice + parseInt(item.negotiatePrice);
|
|
660
|
-
});
|
|
661
|
-
this.priceValueDetails.negotiatePrice = negotiatePrice;
|
|
662
|
-
this.priceValueDetails.totalNegotiatePrice = price;
|
|
663
|
-
this.priceValueDetails.finalValue = this.priceValueDetails.totalNegotiatePrice * (18 / 100);
|
|
664
689
|
this.changeDetector.detectChanges();
|
|
665
690
|
}
|
|
666
691
|
getpaymentinvoice(id) {
|
|
@@ -728,7 +753,6 @@ export class PaymentsSubscriptionComponent {
|
|
|
728
753
|
this.PaymentSubscriptionService.invoiceTableData(filters).pipe(takeUntil(this.destroy$)).subscribe({
|
|
729
754
|
next: (e) => {
|
|
730
755
|
if (e?.data?.count) {
|
|
731
|
-
console.log('e.data', e.data);
|
|
732
756
|
this.invoiceLoading = false;
|
|
733
757
|
this.invoiceNoData = false;
|
|
734
758
|
this.invoiceList = e.data?.data;
|
|
@@ -739,7 +763,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
739
763
|
this.invoiceLoading = false;
|
|
740
764
|
this.invoiceNoData = true;
|
|
741
765
|
this.searchDisabled = true;
|
|
742
|
-
if (this.searchInput
|
|
766
|
+
if (this.searchInput?.length) {
|
|
743
767
|
this.searchDisabled = false;
|
|
744
768
|
}
|
|
745
769
|
this.invoiceList = [];
|
|
@@ -799,7 +823,11 @@ export class PaymentsSubscriptionComponent {
|
|
|
799
823
|
}
|
|
800
824
|
getProductList() {
|
|
801
825
|
this.loading = true;
|
|
802
|
-
let data =
|
|
826
|
+
let data = {
|
|
827
|
+
id: this.clientId,
|
|
828
|
+
sortColumn: 'storeCount',
|
|
829
|
+
sortBy: this.sortBy
|
|
830
|
+
};
|
|
803
831
|
this.PaymentSubscriptionService.getProductList(data).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
804
832
|
if (res && res.code == 200) {
|
|
805
833
|
this.loading = false;
|
|
@@ -924,12 +952,14 @@ export class PaymentsSubscriptionComponent {
|
|
|
924
952
|
this.selectedStoreList.splice(index, 1);
|
|
925
953
|
}
|
|
926
954
|
}
|
|
927
|
-
if (this.selectedStoreList.length == this.totalCount)
|
|
955
|
+
if (this.selectedStoreList.length == this.totalCount)
|
|
928
956
|
this.selectAll = true;
|
|
929
|
-
|
|
930
|
-
else {
|
|
957
|
+
else
|
|
931
958
|
this.selectAll = false;
|
|
932
|
-
|
|
959
|
+
if (this.selectedStoreList.length > 1)
|
|
960
|
+
this.disabledAddIcon = true;
|
|
961
|
+
else
|
|
962
|
+
this.disabledAddIcon = false;
|
|
933
963
|
let data = {
|
|
934
964
|
clientId: this.clientId,
|
|
935
965
|
store: this.selectedStoreList
|
|
@@ -972,7 +1002,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
972
1002
|
this.PaymentSubscriptionService.unsubscribeApproval(data).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
973
1003
|
if (res && res.code == 200) {
|
|
974
1004
|
if (data.type == 'unsubscribe') {
|
|
975
|
-
this.toast.
|
|
1005
|
+
this.toast.getPrimaryToast(`Unsubscribed Tango Suite for ${this.clientinfo.clientName} successfully`);
|
|
976
1006
|
}
|
|
977
1007
|
this.notificationList();
|
|
978
1008
|
this.changeDetector.detectChanges();
|
|
@@ -1007,20 +1037,51 @@ export class PaymentsSubscriptionComponent {
|
|
|
1007
1037
|
if (this.invoicedropDown) {
|
|
1008
1038
|
this.invoicedropDown = false;
|
|
1009
1039
|
}
|
|
1040
|
+
if (this.viewplandropDown) {
|
|
1041
|
+
this.viewplandropDown = false;
|
|
1042
|
+
}
|
|
1010
1043
|
if (this.notificationDetails?.notificationList) {
|
|
1011
1044
|
this.notificationDetails.notificationList.forEach((item) => {
|
|
1012
1045
|
item.producttraildropDown = false;
|
|
1013
1046
|
});
|
|
1014
1047
|
}
|
|
1015
1048
|
}
|
|
1049
|
+
increaseCount() {
|
|
1050
|
+
let currentValue = this.paymentinvoiceform.get('extendPaymentPeriodDays')?.value;
|
|
1051
|
+
this.paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(currentValue + 1);
|
|
1052
|
+
this.extendPaymentPeriodDays = this.paymentinvoiceform.get('extendPaymentPeriodDays')?.value;
|
|
1053
|
+
}
|
|
1054
|
+
sortStoreSize() {
|
|
1055
|
+
this.sortBy *= -1;
|
|
1056
|
+
this.getProductList();
|
|
1057
|
+
}
|
|
1058
|
+
getPriceError(value) {
|
|
1059
|
+
if (value > 0 && !isNaN(value) || value == 0) {
|
|
1060
|
+
return '';
|
|
1061
|
+
}
|
|
1062
|
+
else {
|
|
1063
|
+
return 'error';
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
downloadInvoice(data) {
|
|
1067
|
+
this.PaymentSubscriptionService.invoiceDownload(data).subscribe((res) => {
|
|
1068
|
+
if (res) {
|
|
1069
|
+
const blob = new Blob([res], { type: 'application/pdf' });
|
|
1070
|
+
const link = document.createElement('a');
|
|
1071
|
+
link.href = window.URL.createObjectURL(blob);
|
|
1072
|
+
link.target = '_blank';
|
|
1073
|
+
link.click();
|
|
1074
|
+
}
|
|
1075
|
+
});
|
|
1076
|
+
}
|
|
1016
1077
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaymentsSubscriptionComponent, deps: [{ token: i1.NgbModal }, { token: i2.FormBuilder }, { token: i3.PaymentSubscriptionService }, { token: i0.ChangeDetectorRef }, { token: i4.ToastService }, { token: i5.GlobalStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1017
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PaymentsSubscriptionComponent, selector: "lib-payments-subscription", host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n <span *ngIf=\"clientinfo?.currentPlanInfo?.subscriptionType\">{{clientinfo?.currentPlanInfo?.subscriptionType | titlecase}}</span> <span *ngIf=\"!clientinfo?.currentPlanInfo?.subscriptionType\">--</span>\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-8\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-8\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-13\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" *ngIf=\"storeList.length\"/>\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\" *ngIf=\"storeList.length\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"storeList.length && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product || !store?.product.length\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"priceNoData\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n [(ngModel)]=\"extendPaymentPeriodDays\" autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header paymenthistory\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" [disabled]=\"searchDisabled\"/>\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\" [(ngModel)]=\"isFilter\" (change)=\"invoiceFilter()\" [disabled]=\"!invoiceList.length\">\r\n <option value=\"current\"selected>Current Month</option>\r\n <option value=\"prev\">Previous Month</option>\r\n <option value=\"last\">Last 3 Mon</option>\r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"!invoiceList.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\" [disabled]=\"!invoiceList.length\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"invoiceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"invoiceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!invoiceLoading && !invoiceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div (click)=\"sortData()\">\r\n Invoice #\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">Products</th>\r\n <th>Amount</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">Payment Method</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\" *ngIf=\"['free','Payment Received'].includes(invoice?.status)\">{{invoice?.status | titlecase}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"invoice?.status === 'trial'\">{{invoice?.status | titlecase}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\"><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span></span><span class=\"productextend\" *ngIf=\"invoice?.products.length>2\">+{{invoice?.products.length - 2 }}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice.amount ? invoice?.amount : invoice.status | titlecase }}</div>\r\n </td>\r\n <td *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">\r\n <div class=\"table-title\">{{invoice?.paymentMethod || '--' }}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.paymenthistory{padding:0px .25rem!important}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px;height:45px!important}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i4.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i7.MultidropdownComponent, selector: "lib-multidropdown", inputs: ["text", "product", "productList", "type", "stores", "clientId", "selectAll", "clientProduct"], outputs: ["data"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }] });
|
|
1078
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PaymentsSubscriptionComponent, selector: "lib-payments-subscription", host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n <span *ngIf=\"clientinfo?.currentPlanInfo?.subscriptionType\">{{clientinfo?.currentPlanInfo?.subscriptionType | titlecase}}</span> <span *ngIf=\"!clientinfo?.currentPlanInfo?.subscriptionType\">--</span>\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-8\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-8\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton (click)=\"notificationList()\">Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-15\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-11\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-20\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan | titlecase}}</span>\r\n </div>\r\n <div class=\"subtext\">You will not be billed during your free <span class=\"subtextbold\">trial</span>.To keep your projects running after the trial end, upgrade to a paid option.</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-4 me-16\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative ms-2\">\r\n <div class=\"form-select levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" *ngIf=\"storeList.length\"/>\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\" *ngIf=\"storeList.length\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"storeList.length && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>\r\n <div (click)=\"sortStoreSize()\">\r\n No of Stores\r\n <span *ngIf=\"sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Cost Per Store</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product || !store?.product.length\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"disabledAddIcon\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"priceNoData\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\" [ngClass]=\"product?.discountPercentage < 0 ? 'error' : ''\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control w-100px \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\" [ngClass]=\"product?.negotiatePrice < 0 ? 'error' : ''\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <!-- <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div> -->\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">{{getPriceError(product.discountPercentage)}}\r\n <div><input type=\"text\" class=\" form-control w-100px\"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\" [class]=\"getPriceError(product.discountPercentage)\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control w-100px\"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\" [class]=\"getPriceError(product.negotiatePrice)\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control w-150px\"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <!-- <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div> -->\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? increaseCount() : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><button type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></button></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header paymenthistory\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4 invoicesearch\" \r\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\" [disabled]=\"searchDisabled\"/>\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown invheader\">\r\n <select class=\"form-select invheader\" aria-label=\"Default select example\" [(ngModel)]=\"isFilter\" (change)=\"invoiceFilter()\" [disabled]=\"!invoiceList.length\">\r\n <option value=\"current\">Current Month</option>\r\n <option value=\"prev\">Previous Month</option>\r\n <option value=\"last\">Last 3 Months</option>\r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end invheader text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"!invoiceList.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\" [disabled]=\"!invoiceList.length\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"invoiceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"invoiceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!invoiceLoading && !invoiceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div (click)=\"sortData()\">\r\n Invoice #\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">Products</th>\r\n <th>Amount</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">Payment Method</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice mb-2\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\" *ngIf=\"['free','Payment Received'].includes(invoice?.status)\">{{invoice?.status | titlecase}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"invoice?.status === 'trial'\">{{invoice?.status | titlecase}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\"><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span></span><span class=\"productextend\" *ngIf=\"invoice?.products.length>2\">+{{invoice?.products.length - 2 }}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice.amount ? invoice?.amount : invoice.status | titlecase }}</div>\r\n </td>\r\n <td *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">\r\n <div class=\"table-title\">{{invoice?.paymentMethod || '--' }}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\" (click)=\"downloadInvoice(invoice)\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.paymenthistory{padding:0px .25rem!important}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:600!important;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:70%}.discountprice{width:15%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px;height:45px!important}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.error{border:1px solid red!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i4.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i7.MultidropdownComponent, selector: "lib-multidropdown", inputs: ["text", "product", "productList", "type", "stores", "clientId", "selectAll", "clientProduct", "disabled"], outputs: ["data"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }] });
|
|
1018
1079
|
}
|
|
1019
1080
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaymentsSubscriptionComponent, decorators: [{
|
|
1020
1081
|
type: Component,
|
|
1021
|
-
args: [{ selector: 'lib-payments-subscription', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n <span *ngIf=\"clientinfo?.currentPlanInfo?.subscriptionType\">{{clientinfo?.currentPlanInfo?.subscriptionType | titlecase}}</span> <span *ngIf=\"!clientinfo?.currentPlanInfo?.subscriptionType\">--</span>\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-8\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-8\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-13\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" *ngIf=\"storeList.length\"/>\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\" *ngIf=\"storeList.length\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"storeList.length && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product || !store?.product.length\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"priceNoData\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n [(ngModel)]=\"extendPaymentPeriodDays\" autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header paymenthistory\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" [disabled]=\"searchDisabled\"/>\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\" [(ngModel)]=\"isFilter\" (change)=\"invoiceFilter()\" [disabled]=\"!invoiceList.length\">\r\n <option value=\"current\"selected>Current Month</option>\r\n <option value=\"prev\">Previous Month</option>\r\n <option value=\"last\">Last 3 Mon</option>\r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"!invoiceList.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\" [disabled]=\"!invoiceList.length\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"invoiceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"invoiceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!invoiceLoading && !invoiceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div (click)=\"sortData()\">\r\n Invoice #\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">Products</th>\r\n <th>Amount</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">Payment Method</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\" *ngIf=\"['free','Payment Received'].includes(invoice?.status)\">{{invoice?.status | titlecase}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"invoice?.status === 'trial'\">{{invoice?.status | titlecase}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\"><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span></span><span class=\"productextend\" *ngIf=\"invoice?.products.length>2\">+{{invoice?.products.length - 2 }}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice.amount ? invoice?.amount : invoice.status | titlecase }}</div>\r\n </td>\r\n <td *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">\r\n <div class=\"table-title\">{{invoice?.paymentMethod || '--' }}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.paymenthistory{padding:0px .25rem!important}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px;height:45px!important}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
1082
|
+
args: [{ selector: 'lib-payments-subscription', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12 mb-4\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n <span *ngIf=\"clientinfo?.currentPlanInfo?.subscriptionType\">{{clientinfo?.currentPlanInfo?.subscriptionType | titlecase}}</span> <span *ngIf=\"!clientinfo?.currentPlanInfo?.subscriptionType\">--</span>\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-8\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-8\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton (click)=\"notificationList()\">Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-15\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-11\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-20\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan | titlecase}}</span>\r\n </div>\r\n <div class=\"subtext\">You will not be billed during your free <span class=\"subtextbold\">trial</span>.To keep your projects running after the trial end, upgrade to a paid option.</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-4 me-16\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative ms-2\">\r\n <div class=\"form-select levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" *ngIf=\"storeList.length\"/>\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\" *ngIf=\"storeList.length\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"storeList.length && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>\r\n <div (click)=\"sortStoreSize()\">\r\n No of Stores\r\n <span *ngIf=\"sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Cost Per Store</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product || !store?.product.length\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"disabledAddIcon\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"priceNoData\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\" [ngClass]=\"product?.discountPercentage < 0 ? 'error' : ''\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control w-100px \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\" [ngClass]=\"product?.negotiatePrice < 0 ? 'error' : ''\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <!-- <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div> -->\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">{{getPriceError(product.discountPercentage)}}\r\n <div><input type=\"text\" class=\" form-control w-100px\"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\" [class]=\"getPriceError(product.discountPercentage)\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control w-100px\"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\" [class]=\"getPriceError(product.negotiatePrice)\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control w-150px\"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <!-- <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div> -->\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? increaseCount() : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><button type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></button></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header paymenthistory\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon invoicesearch svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4 invoicesearch\" \r\n placeholder=\"Search...\" autocomplete=\"off\" (change)=\"searchField()\" [disabled]=\"searchDisabled\"/>\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown invheader\">\r\n <select class=\"form-select invheader\" aria-label=\"Default select example\" [(ngModel)]=\"isFilter\" (change)=\"invoiceFilter()\" [disabled]=\"!invoiceList.length\">\r\n <option value=\"current\">Current Month</option>\r\n <option value=\"prev\">Previous Month</option>\r\n <option value=\"last\">Last 3 Months</option>\r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end invheader text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\" [disabled]=\"!invoiceList.length\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\" [disabled]=\"!invoiceList.length\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"invoiceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"invoiceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!invoiceLoading && !invoiceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div (click)=\"sortData()\">\r\n Invoice #\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== 1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'invoice' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">Products</th>\r\n <th>Amount</th>\r\n <th *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">Payment Method</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice mb-2\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\" *ngIf=\"['free','Payment Received'].includes(invoice?.status)\">{{invoice?.status | titlecase}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"invoice?.status === 'trial'\">{{invoice?.status | titlecase}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\"><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span></span><span class=\"productextend\" *ngIf=\"invoice?.products.length>2\">+{{invoice?.products.length - 2 }}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice.amount ? invoice?.amount : invoice.status | titlecase }}</div>\r\n </td>\r\n <td *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\">\r\n <div class=\"table-title\">{{invoice?.paymentMethod || '--' }}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\" (click)=\"downloadInvoice(invoice)\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.paymenthistory{padding:0px .25rem!important}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054)!important;font-size:16px;font-weight:600!important;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:70%}.discountprice{width:15%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px;height:45px!important}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.invheader{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.invoicesearch{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.error{border:1px solid red!important}\n"] }]
|
|
1022
1083
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.FormBuilder }, { type: i3.PaymentSubscriptionService }, { type: i0.ChangeDetectorRef }, { type: i4.ToastService }, { type: i5.GlobalStateService }, { type: i0.ElementRef }], propDecorators: { onDocumentClick: [{
|
|
1023
1084
|
type: HostListener,
|
|
1024
1085
|
args: ['document:click', ['$event']]
|
|
1025
1086
|
}] } });
|
|
1026
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvcGF5bWVudHMtc3Vic2NyaXB0aW9uL3BheW1lbnRzLXN1YnNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0MsTUFBTSxFQUF1RCxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBMEIsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFjLE9BQU8sRUFBc0MsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBYSxNQUFNLE1BQU0sQ0FB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QUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIGluamVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFVwZGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy91cGRhdGUvdXBkYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5lZWRIZWxwQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL25lZWQtaGVscC9uZWVkLWhlbHAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBncmFkZVBsYW5Db21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdXBncmFkZS1wbGFuL3VwZ3JhZGUtcGxhbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgQ3JlZGl0Tm90ZUNvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9jcmVkaXQtbm90ZS9jcmVkaXQtbm90ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcmljaW5nUmV2aXNlZENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9wcmljaW5nLXJldmlzZWQvcHJpY2luZy1yZXZpc2VkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBzd2l0Y2hNYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRTdGVwcHJpY2VDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvYWRkLXN0ZXBwcmljZS9hZGQtc3RlcHByaWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTa2lwVHJhaWxDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvc2tpcC10cmFpbC9za2lwLXRyYWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYWlsU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdHJhaWwtc2V0dGluZ3MvdHJhaWwtc2V0dGluZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5zdWJzY3JpYmVSZXF1ZXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3Vuc3Vic2NyaWJlLXJlcXVlc3QvdW5zdWJzY3JpYmUtcmVxdWVzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wYXltZW50cy1zdWJzY3JpcHRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUGF5bWVudHNTdWJzY3JpcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGNsaWVudGluZm86IGFueTtcclxuICBsaXN0OiBhbnlbXTtcclxuICBzZWxlY3Q6IHN0cmluZyA9ICdiZWZvcmUxNSc7XHJcbiAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG4gIGFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcclxuICBwbGFuOiBzdHJpbmcgPSAnc3Vic2NyaXB0aW9uJztcclxuICBzaG93TmF2R3JvdXA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFByaWNpbmdzaG93TmF2OiBib29sZWFuID0gdHJ1ZTtcclxuICBzdWJsZXZlbHZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGNvdW50OiBudW1iZXIgPSAxO1xyXG4gIGRheXNDb3VudDogYW55ID0gJyc7XHJcbiAgY3VycmVudHBsYW5mb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5bWVudGludm9pY2Vmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5bWVudGFsbG93ZWRMaXN0OiBhbnkgPSBbXVxyXG4gIGdlbmVyYXRlaW52b2ljZUxpc3Q6IGFueSA9IFtdXHJcbiAgJGdlbmVyYXRlaW52b2ljZUludGVycnVwdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcclxuICAkc2VuZHBheW1lbnRJbnRlcnJ1cHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXHJcbiAgb3BlbmFjY29yZGlhbiA9IGZhbHNlO1xyXG4gIGJyYW5kTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc2VhcmNoSW5wdXQ6IGFueTtcclxuICBnc3ROdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGJpbGxpbmdBZGRyZXNzOiBzdHJpbmcgPSAnJztcclxuICBwcmljaW5ncGxhbjogc3RyaW5nID0gJ3N0YW5kYXJkJztcclxuICBkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGludm9pY2Vkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBheW1lbnR0eXBlZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW5jeWRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmlld3BsYW5kcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb2R1Y3R0cmFpbGRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25JdGVtczogYW55W10gPSBbeyBuYW1lOiAnTW9udGhseScsIHZhbHVlOiAnbW9udGhseScgfSwgeyBuYW1lOiAnUXVhdGVybHknLCB2YWx1ZTogJ3F1YXRlcmx5JyB9LCB7IG5hbWU6ICdBbm51YWwnLCB2YWx1ZTogJ2FubnVhbCcgfV07XHJcbiAgZ2VuZXJhdGVpbnZvaWNlb246IGFueVtdID0gW3sgbmFtZTogJ0xhc3QgRGF5IG9mIHRoZSBNb250aCcsIHZhbHVlOiAnbGFzdGRheScgfSwgeyBuYW1lOiAnMjV0aCBvZiB0aGUgTW9udGgnLCB2YWx1ZTogJzI1dGgnIH1dO1xyXG4gIHBheW1lbnR0eXBlOiBhbnlbXSA9IFt7IG5hbWU6ICdPbmxpbmUgUGF5bWVudCcsIHZhbHVlOiAnb25saW5lJyB9LCB7IG5hbWU6ICdCYW5rIFRyYW5zZmVyJywgdmFsdWU6ICdiYW5rdHJhbnNmZXInIH1dO1xyXG4gIGN1cnJlbmN5dHlwZTogYW55W10gPSBbeyBuYW1lOiAnSU5SJywgdmFsdWU6ICdpbnInIH0sIHsgbmFtZTogJ0RvbGxlcicsIHZhbHVlOiAnZG9sbGVyJyB9XTtcclxuICB2aWV3cGxhbnR5cGU6IGFueVtdID0gWydQcm9kdWN0IExldmVsIFZpZXcnLCAnU3RvcmUgTGV2ZWwgVmlldyddO1xyXG4gIHByb2R1Y3R0cmFpbHR5cGU6IGFueVtdID0gWydFeHRlbmQgVHJhaWwnLCAnU3Vic2NyaWJlIFByb2R1Y3QnXTtcclxuICBzZWxlY3RlZElzc3VlOiBhbnkgPSAnTW9udGhseSc7XHJcbiAgaW52b2ljZW9uSXNzdWU6IGFueSA9ICdMYXN0IERheSBvZiB0aGUgTW9udGgnO1xyXG4gIHBheW1lbnRJc3N1ZTogYW55ID0gJ29ubGluZSc7XHJcbiAgY3VycmVuY3lJc3N1ZTogYW55ID0gJ0lOUic7XHJcbiAgdmlld3BsYW5Jc3N1ZTogYW55ID0gJ1Byb2R1Y3QgTGV2ZWwgVmlldyc7XHJcbiAgcHJvZHVjdHRyYWlsSXNzdWU6IGFueSA9ICdFeHRlbmQgVHJhaWwnO1xyXG4gIHByaWNlVmFsdWVEZXRhaWxzOiBhbnk7XHJcbiAgb3JpZ2luYWxQcmljZVZhbHVlOiBhbnk7XHJcbiAgcHJvZHVjdExpc3Q6IGFueSA9IFtdO1xyXG4gIHN0b3JlTGlzdDogYW55ID0gW107XHJcbiAgZGF0YU9iamVjdDogYW55ID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1Byb2R1Y3RzJywgSXNzdWVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1N0b3JlJywgSXNzdWVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ0xvY2F0aW9uJywgSXNzdWVzOiBbXSB9LFxyXG4gIF07XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBkeW5hbWljRGF0YTogYW55ID0ge1xyXG4gICAgbGltaXQ6IDEwLFxyXG4gICAgb2Zmc2V0OiAxLFxyXG4gICAgY2xpZW50SWQ6IFwiXCIsXHJcbiAgICBzZWFyY2hWYWx1ZTogXCJcIixcclxuICAgIHNvcnRDb2x1bW46ICcnLFxyXG4gICAgc29ydEJ5OiAnJyxcclxuICAgIHByb2R1Y3Q6IFtdLFxyXG4gICAgc3RvcmU6IFtdLFxyXG4gICAgbG9jYXRpb246IFtdXHJcbiAgfVxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkU3RvcmVMaXN0OiBhbnkgPSBbXTtcclxuICBzdG9yZVByb2R1Y3Q6IGFueTtcclxuICBub3RpZmljYXRpb25EZXRhaWxzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50UGxhbjogc3RyaW5nID0gJ2ZyZWUnO1xyXG4gIHBheW1lbnRpbnZvaWNlaW5mbzogYW55O1xyXG4gIHJlcXVlc3REYXRhOiBhbnlcclxuICBpc0V4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwXHJcbiAgY3VycmVudFBhZ2UgPSAxXHJcbiAgdG90YWxJdGVtcyA9IDBcclxuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF1cclxuICBwYWdlU2l6ZSA9IDEwXHJcbiAgaXNGaWx0ZXIgPSAnbGFzdCc7XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGwgPSAnJztcclxuICBpbnZvaWNlTGlzdDogYW55ID0gW107XHJcbiAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IDA7XHJcbiAgcGF5bWVudGludm9pY2VzaG93OiBib29sZWFuID0gdHJ1ZVxyXG4gIHJhZGlvYnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmFkaW9vcHRpb25zOiBhbnkgPSAnYmVmb3JlMTUnXHJcbiAgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xyXG4gIGF1dGggPSB0cnVlO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbj10cnVlO1xyXG4gIG5vRGF0YTpib29sZWFuID1mYWxzZTtcclxuICBwcmljZU5vRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpY2VMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydENvbHVtTmFtZTpzdHJpbmc9XCJpbnZvaWNlXCI7XHJcbiAgc29ydEJ5Om51bWJlcj0xO1xyXG4gIGludm9pY2VOb0RhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGludm9pY2VMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoRGlzYWJsZWQ6YW55ID0gZmFsc2VcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuIFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZTogUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5wYXltZW50aW52b2ljZUZvcm1EYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSAnaW5wdXQnICYmIHJlcy5mb3JtID09PSAncGF5bWVudC1pbnZvaWNlJykge1xyXG4gICAgICAgICAgdGhpcy5nZXRwYXltZW50aW52b2ljZShyZXMudmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRwbGFuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzdG9yZWNvdW50OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBhdmdzcWZ0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjYW1lcmFjb3VudDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgcmFkaW9vcHRpb25zOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWQsXSxcclxuICAgICAgcGF5bWVudGN5Y2xlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBpbnZvaWNlVG86IFsnJ10sXHJcbiAgICAgIGdlbmVyYXRlaW52b2ljZW9uOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwYXltZW50dHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY3VycmVuY3k6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBheW1lbnRBZ3JlZW1lbnRUbzogWycnXSxcclxuICAgICAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IFsnJ10sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkXHJcbiAgICAgICAgdGhpcy5nZXRQcmljaW5nKCdzdGFuZGFyZCcpO1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgICAgICB0aGlzLmZpbHRlckxpc3QoKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmNsaWVudEJpbGxpbmdJbmZvKHRoaXMuY2xpZW50SWQpO1xyXG4gICAgICAgIHRoaXMuZ2V0cGF5bWVudGludm9pY2UodGhpcy5jbGllbnRJZCk7XHJcbiAgICAgICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlVGFibGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnaW52b2ljZVRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQucGlwZShtYXAoKGludGVycnVwdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGludGVycnVwdCA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQubmV4dCgnJylcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2ludm9pY2VUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnBvcCgpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKVxyXG5cclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncGF5bWVudEFncmVlbWVudFRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzZW5kcGF5bWVudEludGVycnVwdC5waXBlKG1hcCgoaW50ZXJydXB0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50ZXJydXB0ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJHNlbmRwYXltZW50SW50ZXJydXB0Lm5leHQoJycpXHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ3BheW1lbnRBZ3JlZW1lbnRUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdC5wb3AoKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKVxyXG4gICAgICB9KVxyXG4gICAgKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVjZWl2ZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICBkYXRhLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdQcm9kdWN0cycpIHtcclxuICAgICAgICBsZXQgcHJvZHVjdCA9IGl0ZW0uSXNzdWVzLm1hcCgocHJvZHVjdDphbnkpID0+IHByb2R1Y3QudGV4dCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5wcm9kdWN0ID0gcHJvZHVjdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5EZXNjcmlwdGlvbiA9PSAnU3RvcmUnKSB7XHJcbiAgICAgICAgbGV0IHN0b3JlID0gaXRlbS5Jc3N1ZXMubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5pZCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5zdG9yZSA9IHN0b3JlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdMb2NhdGlvbicpIHtcclxuICAgICAgICBsZXQgbG9jYXRpb24gPSBpdGVtLklzc3Vlcy5tYXAoKGxvY2F0aW9uOiBhbnkpID0+IGxvY2F0aW9uLnRleHQpO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQbGFuKHBsYW46IHN0cmluZykge1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMucHJpY2VOb0RhdGE9IGZhbHNlO1xyXG4gICAgaWYocGxhbiA9PSAnc3Vic2NyaXB0aW9uJykge1xyXG4gICAgICB0aGlzLmdldFByb2R1Y3RMaXN0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRQcmljaW5nKCdzdGFuZGFyZCcpXHJcbiAgICB9XHJcbiAgICB0aGlzLnBsYW4gPSBwbGFuO1xyXG4gICAgdGhpcy52aWV3cGxhbklzc3VlID0gXCJQcm9kdWN0IExldmVsIFZpZXdcIlxyXG4gIH1cclxuXHJcbiAgc2VsZWN0UHJpY2VQbGFuKHByaWNpbmdwbGFuOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucHJpY2luZ3BsYW4gPSBwcmljaW5ncGxhbjtcclxuICAgIHRoaXMuZ2V0UHJpY2luZyhwcmljaW5ncGxhbilcclxuICB9XHJcblxyXG5cclxuICBnZXRDb2xvckNsYXNzKHByb2R1Y3Q6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHByb2R1Y3QpIHtcclxuICAgICAgY2FzZSAndGFuZ29UcmFmZmljJzogcmV0dXJuICdiYWRnZSBwcm9kdWN0LXRyYWZmaWMgbXgtMSc7XHJcbiAgICAgIGNhc2UgJ3RhbmdvWm9uZSc6IHJldHVybiAnYmFkZ2UgcHJvZHVjdC16b25lIG14LTEnO1xyXG4gICAgICBjYXNlICd0YW5nb1NvcCc6IHJldHVybiAnYmFkZ2UgcHJvZHVjdC1zb3AgbXgtMSc7XHJcbiAgICAgIGNhc2UgJ3ByaW9yaXR5U3VwcG9ydCc6IHJldHVybiAnYmFkZ2UgcHJpb3JpdHlzdXBwb3J0IG14LTEnO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RJdGVtKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnZHJvcGRvd25JdGVtcycpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXNzdWUpXHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpbnZvaWNlSXRlbShpbnZvaWNldmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5pbnZvaWNlb25Jc3N1ZSA9IGludm9pY2V2YWx1ZTtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnZ2VuZXJhdGVpbnZvaWNlb24nKT8uc2V0VmFsdWUodGhpcy5pbnZvaWNlb25Jc3N1ZSlcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwYXltZW50SXRlbShwYXltZW50dmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5wYXltZW50SXNzdWUgPSBwYXltZW50dmFsdWU7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ3BheW1lbnR0eXBlJyk/LnNldFZhbHVlKHRoaXMucGF5bWVudElzc3VlKVxyXG4gICAgdGhpcy5wYXltZW50dHlwZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjdXJyZW5jeUl0ZW0oY3VycmVuY3l2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5SXNzdWUgPSBjdXJyZW5jeXZhbHVlO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdjdXJyZW5jeXR5cGUnKT8uc2V0VmFsdWUodGhpcy5jdXJyZW5jeUlzc3VlKVxyXG4gICAgdGhpcy5jdXJyZW5jeWRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0dHJhaWxJdGVtKHByb2R1Y3R0cmFpbHZhbHVlOiBhbnksIGRhdGE6IGFueSkge1xyXG5cclxuICAgIGlmIChwcm9kdWN0dHJhaWx2YWx1ZSA9PSAnRXh0ZW5kIFRyYWlsJykge1xyXG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVHJhaWxTZXR0aW5nc0NvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLFxyXG4gICAgICB9KTtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2V0dGluZ3N2YWx1ZSA9IHByb2R1Y3R0cmFpbHZhbHVlO1xyXG4gICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC50aXRsZSA9PSAndHJhaWxleHRlbmQnKSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICAgICAgZGF5czogcmVzdWx0LmNvdW50LFxyXG4gICAgICAgICAgICBwcm9kdWN0OiBkYXRhLnByb2R1Y3RcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UudHJpYWxFeHRlbnRBcHByb3ZhbChwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoYCR7ZGF0YS5uYW1lfSB0cmlhbCBleHRlbmRlZCBzdWNjZXNzZnVsbHlgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocHJvZHVjdHRyYWlsdmFsdWUgPT0gJ1N1YnNjcmliZSBQcm9kdWN0Jykge1xyXG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVHJhaWxTZXR0aW5nc0NvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLFxyXG4gICAgICB9KTtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2V0dGluZ3N2YWx1ZSA9IHByb2R1Y3R0cmFpbHZhbHVlO1xyXG4gICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PSAnc3Vic2NyaWJlZCcpIHtcclxuICAgICAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgICBwcm9kdWN0OiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1YnNjcmlwdGlvbicsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnByb2R1Y3RcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UudXBkYXRlUHJvZHVjdChwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoYCR7ZGF0YS5uYW1lfSBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIGxpc3QuYCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvZHVjdHRyYWlsSXNzdWUgPSBwcm9kdWN0dHJhaWx2YWx1ZTtcclxuICAgIHRoaXMucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHZpZXdwbGFuSXRlbSh2aWV3cGxhbnZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMudmlld3BsYW5Jc3N1ZSA9IHZpZXdwbGFudmFsdWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgaWYgKHZpZXdwbGFudmFsdWUgPT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldycpIHtcclxuICAgICAgdGhpcy5nZXRQcm9kdWN0TGlzdCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdwbGFuZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcclxuICAgICAgYnJhbmROYW1lOiB0aGlzLmNsaWVudGluZm8uY2xpZW50TmFtZSxcclxuICAgICAgZ3N0TnVtYmVyOiB0aGlzLmNsaWVudGluZm8uYmlsbGluZ0RldGFpbHMuZ3N0TnVtYmVyLFxyXG4gICAgICBiaWxsaW5nQWRkcmVzczogdGhpcy5jbGllbnRpbmZvLmJpbGxpbmdEZXRhaWxzLmJpbGxpbmdBZGRyZXNzLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICB9O1xyXG4gICAgbGV0IG1vZGVsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVcGRhdGVDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5tb2RhbERhdGEgPSByZXNwb25zZURhdGE7XHJcbiAgfVxyXG5cclxuICBuZWVkaGVscCgpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZWVkSGVscENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBncmFkZXBsYW4oKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVXBncmFkZVBsYW5Db21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBjcmVkaXRub3RlKCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENyZWRpdE5vdGVDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6ICdtZCcsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWNjZXNzY3JlZGl0Jykge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdUaGUgaW52b2ljZSBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIGVtYWlsIElEcyB3aXRoIHRoZSBkaXNjb3VudC4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpY2luZ3JldmlzZWQoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oUHJpY2luZ1JldmlzZWRDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNjcm9sbGFibGU6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE5ld0RldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE9sZERldGFpbHMgPSB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc2F2ZScpIHtcclxuICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgdHlwZTogdGhpcy5wcmljaW5ncGxhbixcclxuICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgcHJvZHVjdHM6IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVwZGF0ZVByaWNpbmcocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICBpY29uSHRtbDogYDxpbWcgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy90YW5nby90b2FzdC1pY29ucy9FbnZlbG9wZS1PcGVuLWljb24uc3ZnXCI+YCxcclxuICAgICAgICAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC01XCI+PGRpdiBjbGFzcz1cInRvYXN0dGl0aWxlXCI+UmV2aXNlZCBjaGFuZ2VzIGhhdmUgYmVlbiB1cGRhdGVkPC9kaXY+PC9kaXY+YCxcclxuICAgICAgICAgICAgICB0b2FzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICB0aW1lcjogNjAwMCxcclxuICAgICAgICAgICAgICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiAnY3VzdG9tLXRvYXN0LWNvbnRhaW5lcicsXHJcbiAgICAgICAgICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmljaW5nVHlwZShldmVudDogYW55LCBwcmljaW5nOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gcHJpY2luZztcclxuICAgIHRoaXMucmFkaW9vcHRpb25zID0gcHJpY2luZ1xyXG4gIH1cclxuICBcclxuICBvbktleURvd24oZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuJGdlbmVyYXRlaW52b2ljZUludGVycnVwdC5uZXh0KGV2ZW50LmNvZGUpXHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnNwbGljZShpLCAxKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRvbktleURvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy4kc2VuZHBheW1lbnRJbnRlcnJ1cHQubmV4dChldmVudC5jb2RlKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRyZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYXltZW50YWxsb3dlZExpc3Quc3BsaWNlKGksIDEpXHJcbiAgfVxyXG5cclxuICBjbGllbnRCaWxsaW5nSW5mbyhpZDogYW55KSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmNsaWVudEJpbGxpbmdJbmZvKGlkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50aW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGludm9pY2VEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSAhdGhpcy5pbnZvaWNlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBwYXltZW50dHlwZURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9ICF0aGlzLnBheW1lbnR0eXBlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBjdXJyZW5jeURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9ICF0aGlzLmN1cnJlbmN5ZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2aWV3cGxhbkRyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudmlld3BsYW5kcm9wRG93biA9ICF0aGlzLnZpZXdwbGFuZHJvcERvd247XHJcbiAgfVxyXG4gIFxyXG4gIHByb2R1Y3R0cmFpbERyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdFtpbmRleF0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAhdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3RbaW5kZXhdLnByb2R1Y3R0cmFpbGRyb3BEb3duXHJcbiAgfVxyXG5cclxuICBza2lwdHJhaWwoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2tpcFRyYWlsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3Vic2NyaWJlZCcpIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnPCBUYW5nbyBTT1AgPiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIGxpc3QuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRzdGVwcHJpY2UoZGF0YTogYW55LCBwcm9kdWN0OiBhbnkgPSB7fSwgaW5kZXg6IGFueSA9IC0xKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkU3RlcHByaWNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGF0YSA9PSAnYWRkJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiQWRkIFN0ZXAgUHJpY2VcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlZGVzY3JpcHRpb24gPSBcIlBsZWFzZSBlbnRlciBubyBvZiBzdG9yZSAgdG8gYmUgYWRkZWQgaW4gbmV4dCBzdGVwIHByaWNlIGluIGludGVydmFscyBcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlaWNvbiA9IFwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcGx1cy1pY29uLnN2Z1wiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VidXR0b24gPSBcIkFwcGx5XCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZWRpdCcpIHtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNldGl0bGUgPSBcIkVkaXQgU3RlcCBQcmljZVwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VkZXNjcmlwdGlvbiA9IFwiUGxlYXNlIGVudGVyIG5vIG9mIHN0b3JlICB0byBiZSBhZGRlZCBpbiBuZXh0IHN0ZXAgcHJpY2UgaW4gaW50ZXJ2YWxzIFwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VpY29uID0gXCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9lZGl0LWljb24uc3ZnXCI7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0ZXBwcmljZWJ1dHRvbiA9IFwiVXBkYXRlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZGVsZXRlJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiZGVsZXRlXCI7XHJcbiAgICB9XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0FkZCBTdGVwIFByaWNlJykge1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHMgPSBbLi4ubmV3IFNldCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZW0ucHJvZHVjdE5hbWUpKV1cclxuXHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvZHVjdERldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZmluZCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnByb2R1Y3ROYW1lID09IGRhdGEgJiYgaXRlbT8ubGFzdEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGluZGV4ID0gcHJvZHVjdERldGFpbHMuaW5kZXg7XHJcbiAgICAgICAgICBkZWxldGUgcHJvZHVjdERldGFpbHMuaW5kZXg7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHByb2R1Y3REZXRhaWxzO1xyXG4gICAgICAgICAgbGV0IHJhbmdlID0gaXRlbS5zdG9yZVJhbmdlLnNwbGl0KCctJyk7XHJcbiAgICAgICAgICBsZXQgZGlmZmVyID0gKHBhcnNlSW50KHJhbmdlWzFdKSAtIHBhcnNlSW50KHJhbmdlWzBdKSkgKyAxO1xyXG4gICAgICAgICAgZGVsZXRlIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubGFzdEluZGV4O1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zaG93RWRpdERlbGV0ZSA9IGZhbHNlXHJcbiAgICAgICAgICBsZXQgbmV3SXRlbSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgICAgbGV0IG5ld1N0YXJ0UmFuZ2UgPSBwYXJzZUludChyYW5nZVsxXSkgKyAxO1xyXG4gICAgICAgICAgbGV0IG5ld0VuZFJhbmdlID0gbmV3U3RhcnRSYW5nZSArIHBhcnNlSW50KHJlc3VsdC5pbnRyYXZlbCkgLSAxO1xyXG5cclxuICAgICAgICAgIG5ld0l0ZW0uc2hvd0ltZyA9IHRydWVcclxuICAgICAgICAgIG5ld0l0ZW0uc2hvd0VkaXREZWxldGUgPSB0cnVlXHJcbiAgICAgICAgICBuZXdJdGVtLmxhc3RJbmRleCA9IHRydWU7XHJcbiAgICAgICAgICBuZXdJdGVtLnN0b3JlQ291bnQgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQgLSBkaWZmZXI7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIG5ld0l0ZW0ucHJpY2UgPSBuZXdJdGVtLnN0b3JlQ291bnQgKiAobmV3SXRlbS5iYXNlUHJpY2UgLSBuZXdJdGVtLm5lZ290aWF0ZVByaWNlKVxyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50ID0gZGlmZmVyO1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5wcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudCAqICh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmJhc2VQcmljZSAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubmVnb3RpYXRlUHJpY2UpO1xyXG5cclxuICAgICAgICAgIG5ld0l0ZW0uc3RvcmVSYW5nZSA9IG5ld1N0YXJ0UmFuZ2UudG9TdHJpbmcoKSArICctJyArIG5ld0VuZFJhbmdlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3Quc3BsaWNlKGluZGV4ICsgMSwgMCwgbmV3SXRlbSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBwcmljZSA9IDA7XHJcbiAgICAgICAgbGV0IGFjdHVhbFByaWNlID0gMDtcclxuICAgICAgICBsZXQgbmVnb3RpYXRlUHJpY2UgPSAwO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHByaWNlID0gcHJpY2UgKyBpdGVtLnByaWNlO1xyXG4gICAgICAgICAgYWN0dWFsUHJpY2UgPSBhY3R1YWxQcmljZSArIGl0ZW0uYmFzZVByaWNlO1xyXG4gICAgICAgICAgbmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZSArIGl0ZW0ubmVnb3RpYXRlUHJpY2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlID0gcHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSA9IGFjdHVhbFByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmZpbmFsVmFsdWUgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgKiAoMTggLyAxMDApO1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnU3RlcCBQcmljZSBoYXMgYmVlbiBhZGRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0LnRpdGxlID09ICdFZGl0IFN0ZXAgUHJpY2UnKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZVJhbmdlLnNwbGl0KCctJyk7XHJcbiAgICAgICAgbGV0IGVuZCA9IHBhcnNlSW50KHJhbmdlWzBdKSArIChwYXJzZUludChyZXN1bHQuaW50cmF2ZWwpIC0gMSk7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZVJhbmdlID0gcmFuZ2VbMF0udG9TdHJpbmcoKSArICctJyArIGVuZC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KCdTdGVwIFByaWNlIGhhcyBiZWVuIFVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdC50aXRsZSA9PSAnZGVsZXRlJykge1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnN0b3JlQ291bnQgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXggLSAxXS5zdG9yZUNvdW50ICsgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50O1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnByaWNlID0gKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLmJhc2VQcmljZSAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLm5lZ290aWF0ZVByaWNlKSAqIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnN0b3JlQ291bnQ7XHJcblxyXG4gICAgICAgIGxldCBwcm9kdWN0SW5mbyA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5maWx0ZXIoKChpdGVtOiBhbnkpID0+IGl0ZW0ucHJvZHVjdE5hbWUgPT0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5wcm9kdWN0TmFtZSkpXHJcbiAgICAgICAgaWYgKHByb2R1Y3RJbmZvLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnNob3dJbWcgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXggLSAxXS5zaG93RWRpdERlbGV0ZSA9IHRydWVcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLmxhc3RJbmRleCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICBsZXQgcHJpY2UgPSAwO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHByaWNlID0gcHJpY2UgKyBpdGVtLnByaWNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgPSBwcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmZpbmFsVmFsdWUgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgKiAoMTggLyAxMDApO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnQ29sdW1uIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZXRyaWFsKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZGF0YS5faWQsXHJcbiAgICAgIHR5cGU6IHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuYXBwcm92ZVRyaWFsKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChgJHtkYXRhLm5hbWV9IHRyaWFsIGhhcyBiZWVuIGFwcHJvdmVkIHN1Y2Nlc3NmdWxseS5gKVxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXBwcm92ZVVuc3Vic2NyaWJlKGRhdGE6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVW5zdWJzY3JpYmVSZXF1ZXN0Q29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudE5hbWUgPSB0aGlzLmNsaWVudGluZm8uY2xpZW50TmFtZTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAndW5zdWJzY3JpYmVkJykge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICBpZDogZGF0YS5faWQsXHJcbiAgICAgICAgICB0eXBlOiB0eXBlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBwcm92ZUNhbmNlbFVuc3Vic2NyaWJlKHBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2lyY2xlQ2hhcnQoZGF0YTogYW55LCBpbmRleDogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgaWQgPSAncHJvZ3Jlc3MtY2lyY2xlLScgKyBpbmRleDtcclxuICAgIGxldCB0ZXh0ID0gJ3BlcmNlbnRhZ2UtdGV4dC0nICsgaW5kZXg7XHJcbiAgICBjb25zdCBwcm9ncmVzc0NpcmNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIGNvbnN0IHBlcmNlbnRhZ2VUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGV4dCk7XHJcbiAgICBpZiAocHJvZ3Jlc3NDaXJjbGUgJiYgcGVyY2VudGFnZVRleHQpIHtcclxuICAgICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IE1hdGguUEkgKiAyICogcGFyc2VGbG9hdChwcm9ncmVzc0NpcmNsZS5nZXRBdHRyaWJ1dGUoJ3InKSEpO1xyXG4gICAgICBjb25zdCBkYXNoYXJyYXkgPSBjaXJjdW1mZXJlbmNlO1xyXG4gICAgICBjb25zdCBkYXNob2Zmc2V0ID0gY2lyY3VtZmVyZW5jZSAtIChkYXRhIC8gMTAwKSAqIGNpcmN1bWZlcmVuY2U7XHJcblxyXG4gICAgICBwcm9ncmVzc0NpcmNsZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1kYXNoYXJyYXknLCBkYXNoYXJyYXkudG9TdHJpbmcoKSk7XHJcbiAgICAgIHByb2dyZXNzQ2lyY2xlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnLCBkYXNob2Zmc2V0LnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgcGVyY2VudGFnZVRleHQudGV4dENvbnRlbnQgPSBgJHtkYXRhfSVgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJpY2luZyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucHJpY2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSAnJztcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIHByaWNlVHlwZTogZGF0YSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0UHJpY2VEZXRhaWxzKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnByaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSBmYWxzZTtcclxuICAgICAgICBpZihyZXMuZGF0YS5wcm9kdWN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscyA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5vcmlnaW5hbFByaWNlVmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucHJpY2VWYWx1ZURldGFpbHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByaWNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmljZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByaWNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSwoZXJyb3I6YW55KSA9PiB7XHJcbiAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZShpbmRleDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09ICdkaXNjb3VudCcpIHtcclxuICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uZGlzY291bnRQZXJjZW50YWdlIC8gMTAwKVxyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSkgKiB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnRcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmRpc2NvdW50UGVyY2VudGFnZSA9ICh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlIC8gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UpICogMTAwXHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ucHJpY2UgPSAodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlKSAqIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudFxyXG4gICAgfVxyXG4gICAgbGV0IG5lZ290aWF0ZVByaWNlID0gMDtcclxuICAgIGxldCBwcmljZSA9IDA7XHJcblxyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBwcmljZSA9IHByaWNlICsgaXRlbS5wcmljZTtcclxuICAgICAgbmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZSArIHBhcnNlSW50KGl0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZTtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5maW5hbFZhbHVlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlICogKDE4IC8gMTAwKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgZ2V0cGF5bWVudGludm9pY2UoaWQ6IGFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRwYXltZW50aW52b2ljZShpZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlaW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMucGF5bWVudElzc3VlID0gcmVzLmRhdGEucGF5bWVudHR5cGU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeUlzc3VlID0gcmVzLmRhdGEuY3VycmVuY3lUeXBlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IHJlcy5kYXRhLnBheW1lbnRDeWNsZTtcclxuICAgICAgICB0aGlzLmludm9pY2Vvbklzc3VlID0gcmVzLmRhdGEuaW52b2ljZU9uO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncmFkaW9vcHRpb25zJyk/LnNldFZhbHVlKHJlcy5kYXRhLnByb1JhdGUpO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGVUeXBlOiByZXMuZGF0YS5maWxlVHlwZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH1cclxuICAgICAgICApXHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdCA9IHJlcy5kYXRhPy5pbnZvaWNlVG9cclxuICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdCA9IHJlcy5kYXRhPy5wYXltZW50QWdyZWVtZW50VG9cclxuICAgICAgICB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzID0gcmVzLmRhdGE/LmV4dGVuZFBheW1lbnRQZXJpb2REYXlzXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRTdWJtaXQoKSB7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlc2hvdyA9IHRydWVcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBwcm9SYXRlOiB0aGlzLnJhZGlvb3B0aW9ucyxcclxuICAgICAgcGF5bWVudHR5cGU6IHRoaXMucGF5bWVudElzc3VlLFxyXG4gICAgICBwYXltZW50Q3ljbGU6IHRoaXMuc2VsZWN0ZWRJc3N1ZSxcclxuICAgICAgY3VycmVuY3lUeXBlOiB0aGlzLmN1cnJlbmN5SXNzdWUsXHJcbiAgICAgIGludm9pY2VUbzogdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LFxyXG4gICAgICBwYXltZW50QWdyZWVtZW50VG86IHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LFxyXG4gICAgICBpbnZvaWNlT246IHRoaXMuaW52b2ljZW9uSXNzdWUsXHJcbiAgICAgIGV4dGVuZFBheW1lbnRQZXJpb2REYXlzOiB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZXVwZGF0ZShyZXF1ZXN0RGF0YSwgdGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChyZXMubWVzc2FnZSlcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIHRoaXMub25wYXltZW50Q2FuY2VsKClcclxuXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgdXBkYXRlOicsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIG9ucGF5bWVudENhbmNlbCgpIHtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UucGF5bWVudGludm9pY2VGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdjYW5jZWwnLCBmb3JtOiAncGF5bWVudC1pbnZvaWNlJyB9KVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSB0cnVlXHJcbiAgICB0aGlzLmdldHBheW1lbnRpbnZvaWNlKHRoaXMuY2xpZW50SWQpO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRlZGl0KCkge1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSBmYWxzZVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZW5hYmxlKClcclxuICB9XHJcblxyXG4gIGludm9pY2VUYWJsZURhdGEoKSB7XHJcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmlzRmlsdGVyLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bW46dGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzb3J0Qnk6dGhpcy5zb3J0QnlcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YShmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICBcclxuICAgICAgbmV4dDogKGUpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZS5kYXRhJywgZS5kYXRhKVxyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW52b2ljZU5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IGUuZGF0YT8uZGF0YVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWFyY2hJbnB1dC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmludm9pY2VMaXN0ID0gW11cclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IFtdXHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uRXhwb3J0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmlzRmlsdGVyLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5pbnZvaWNlVGFibGVEYXRhRXhwb3J0KGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnaW52b2ljZScpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChwYWdlU2l6ZSlcclxuICAgIHRoaXMuaW52b2ljZVRhYmxlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyc2VJbnQocGFnZU9mZnNldClcclxuICAgIHRoaXMuaW52b2ljZVRhYmxlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBpbnZvaWNlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDFcclxuICAgIHRoaXMuaW52b2ljZVRhYmxlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YSgpIHtcclxuICAgIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGQoKSB7XHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0T3JpZ2luYWxQcmljZSgpIHtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxQcmljZVZhbHVlKSlcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0UHJvZHVjdExpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmdldFN0b3JlTGlzdCh0aGlzLmR5bmFtaWNEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMuc3RvcmVMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5jaGVja2VkID0gdGhpcy5zZWxlY3RBbGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25TdG9yZVBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSBwYXJzZUludChldmVudCk7XHJcbiAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZVBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSBwYXJzZUludChldmVudCk7XHJcbiAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyTGlzdCgpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0RmlsdGVyRGV0YWlscyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHJlcy5kYXRhLnN0b3JlLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzdG9yZXNJbmRleCA9IHRoaXMuZGF0YU9iamVjdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PSAnU3RvcmUnKTtcclxuICAgICAgICAgIGlmIChzdG9yZXNJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3Rbc3RvcmVzSW5kZXhdLklzc3Vlcy5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBzdG9yZS5zdG9yZU5hbWUsXHJcbiAgICAgICAgICAgICAgaWQ6IHN0b3JlLnN0b3JlSWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICByZXMuZGF0YS5sb2NhdGlvbi5mb3JFYWNoKChsb2NhdGlvbjogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IHRoaXMuZGF0YU9iamVjdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PSAnTG9jYXRpb24nKTtcclxuICAgICAgICAgIGlmIChsb2NhdGlvbkluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFtsb2NhdGlvbkluZGV4XS5Jc3N1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogbG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgaWQ6IGluZGV4XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgcmVzLmRhdGEucHJvZHVjdC5mb3JFYWNoKChwcm9kdWN0OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBwcm9kdWN0SW5kZXggPSB0aGlzLmRhdGFPYmplY3QuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT0gJ1Byb2R1Y3RzJyk7XHJcbiAgICAgICAgICBpZiAocHJvZHVjdEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFtwcm9kdWN0SW5kZXhdLklzc3Vlcy5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBwcm9kdWN0LFxyXG4gICAgICAgICAgICAgIGlkOiBpbmRleFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIHNlYXJjaFJlY29yZHMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5zZWFyY2hWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxTdG9yZShldmVudDogYW55KSB7XHJcbiAgICBsZXQgc3RvcmVJZExpc3Q7IFxyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHN0b3JlSWRMaXN0ID0gdGhpcy5kYXRhT2JqZWN0WzFdLklzc3Vlcy5tYXAoKGl0ZW06YW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgc3RvcmU6IFtdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5zdG9yZVByb2R1Y3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSByZXMuZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc3RvcmVJZExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0QWxsID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnN0b3JlTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWRcclxuICAgIH0pXHJcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0ID0gc3RvcmVJZExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFN0b3JlTGlzdFxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2soZXZlbnQ6IGFueSwgc3RvcmVJZDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5wdXNoKHN0b3JlSWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbSA9PT0gc3RvcmVJZCk7XHJcbiAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3QubGVuZ3RoID09IHRoaXMudG90YWxDb3VudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc3RvcmU6IHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3RcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc3RvcmVQcm9kdWN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3QoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5sZW5ndGggfHwgdGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcmVQcm9kdWN0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgbm90aWZpY2F0aW9uTGlzdCgpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscyA9IFtdO1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb24oZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMgPSByZXMuZGF0YTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSByZXMuZGF0YS5jdXJyZW50UGxhbjtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbmNlbFVuc3Vic2NyaWJlKGRhdGE6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZGF0YS5faWQsXHJcbiAgICAgIHR5cGU6IHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuYXBwcm92ZUNhbmNlbFVuc3Vic2NyaWJlKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVuc3Vic2NyaWJlQXBwcm92YWwoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICBpZiAoZGF0YS50eXBlID09ICd1bnN1YnNjcmliZScpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgVW5zdWJzY3JpYmVkIFRhbmdvIFN1aXRlIGZvciAke3RoaXMuY2xpZW50aW5mby5jbGllbnROYW1lfSBzdWNjZXNzZnVsbHlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbG9hZChldmVudDphbnkpIHtcclxuICAgIGlmKGV2ZW50ID09ICdzdG9yZScpIHtcclxuICAgICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKGV2ZW50ID09ICdwcm9kdWN0Jykge1xyXG4gICAgICB0aGlzLmdldFByb2R1Y3RMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRVcHBlcihkYXRhOnN0cmluZykge1xyXG4gICAgbGV0IFtmaXJzdFdvcmQsIHNlY29uZFdvcmRdID0gZGF0YS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKS5zcGxpdCgnICcpO1xyXG4gICAgZmlyc3RXb3JkID0gZmlyc3RXb3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZmlyc3RXb3JkLnNsaWNlKDEpO1xyXG4gICAgcmV0dXJuIGZpcnN0V29yZCArICcgJyArIHNlY29uZFdvcmQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgIGlmICh0aGlzLnBheW1lbnR0eXBlZHJvcERvd24pIHtcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9IGZhbHNlO1xyXG4gICB9XHJcbiAgIGlmICh0aGlzLmRyb3BEb3duKSB7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYgKHRoaXMuY3VycmVuY3lkcm9wRG93bikge1xyXG4gICAgdGhpcy5jdXJyZW5jeWRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYgKHRoaXMuaW52b2ljZWRyb3BEb3duKSB7XHJcbiAgICB0aGlzLmludm9pY2Vkcm9wRG93biA9IGZhbHNlO1xyXG4gICB9XHJcbiAgIGlmKHRoaXMubm90aWZpY2F0aW9uRGV0YWlscz8ubm90aWZpY2F0aW9uTGlzdCkge1xyXG4gICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06YW55KT0+e1xyXG4gICAgICBpdGVtLnByb2R1Y3R0cmFpbGRyb3BEb3duID0gIGZhbHNlXHJcbiAgICAgfSlcclxuICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uIFtjbG9zZU90aGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQmlsbGluZyAmIHN1YnNjcmlwdGlvbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIiBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwib3BlbmFjY29yZGlhblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+QmlsbGluZyAmIFN1YnNjcmlwdGlvbjxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OnBsYW4gZGV0YWlscyBDYXJkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIGJpbGxpbmdjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0Y2FyZCBjb2wtbWQtMTIgbWItNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGF5bWVudFN0YXR1cz09PSdkdWUnICYmIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uZHVlTGltaXRSZWFjaGVkPT09ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zMHB4IG1lLTVcIj48c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWFsZXJ0LXByaW1hcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9hc3R0ZXh0IGQtYmxvY2tcIj5LaW5kIFJlbWluZGVyOiBZb3UgaGF2ZSBhIHJlYWNoZWQgeW91ciBkdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgLFRvIGNvbnRpbnVlIGVuam95aW5nIG91ciBzZXJ2aWNlcywgcGxlYXNlIHJlbmV3IHlvdXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IG1ha2luZyB0aGUgcGF5bWVudC4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlBheSBOb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0Y2FyZCBjb2wtbWQtMTIgbWItNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGF5bWVudFN0YXR1cz09PSdkdWUnICYmIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uZHVlTGltaXRSZWFjaGVkPT09dHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTMwcHggbWUtNVwiPjxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItYWxlcnQtcHJpbWFyeS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2FzdHRleHQgZC1ibG9ja1wiPktpbmQgUmVtaW5kZXI6IFdlIGhhdmVuJ3QgcmVjZWl2ZWQgeW91clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXltZW50IHlldC4gVG8gY29udGludWUgZW5qb3lpbmcgb3VyIHNlcnZpY2VzLCBwbGVhc2UgcmVuZXcgeW91clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gYnkgbWFraW5nIHRoZSBwYXltZW50LiBUaGFuayB5b3UgZm9yIHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcGVyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGEgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPjxzcGFuIGNsYXNzPVwiY3JlYXRlXCI+UGF5IE5vd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVyLXZhbCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQbGFuIEluZm88c3BhbiBjbGFzcz1cImJhZGdlLWxpZ2h0LWdyZXkgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucHJpY2VUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJpY2luZ3RleHQgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuSB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX08c3BhbiBjbGFzcz1cInByaWNpbmdzcGFuIG1zLTJcIj5TdG9yZS9Nb250aDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZmxleC1jb2x1bW4gcGxhbmNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBoZWFkaW5nIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnN1YnNjcmlwdGlvblR5cGVcIj57e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3Vic2NyaXB0aW9uVHlwZSB8IHRpdGxlY2FzZX19PC9zcGFuPiA8c3BhbiAqbmdJZj1cIiFjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnN1YnNjcmlwdGlvblR5cGVcIj4tLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gLSB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3RvcmVDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YmhlYWRpbmcgbXMtMlwiPnN0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ib2FyZGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7IHByb2R1Y3QudG9vbFRpcCB9fVwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8udHJpYWxQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvY2xvY2tleHBpcnktaWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBwcm9kdWN0LnRvb2xUaXAgfX1cIiBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5leHBpcmVkUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LmFsaXNlUHJvZHVjdE5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL3ByaW1hcnktY2xvY2staWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgZC1ibG9ja1wiPkNhbWVyYXMgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnRvdGFsQ2FtZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0gfCBBdmcgc3EuZnQgOiB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3RvcmVTaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0gc3EuZnQgfCBQcm9kdWN0cyA6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5saXZlUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LmFsaXNlUHJvZHVjdE5hbWUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZC1mbGV4IGFsaWduLWl0ZW1zLWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZXF1ZXN0IGlzIEFscmVhZHkgaW5pdGlhdGVkIHdhaXRpbmcgZm9yIGFkbWluIGFwcHJvdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmVlZGhlbHAoKVwiIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5NjVfMjMwMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNTc1MzMgNy41MDAzM0M3Ljc3MTI1IDYuOTQzMzggOC4xNTc5NSA2LjQ3Mzc1IDguNjY2OTUgNi4xNzQ2QzkuMTc1OTYgNS44NzU0NiA5Ljc3NDQxIDUuNzY2MTEgMTAuMzU2MyA1Ljg2NTkyQzEwLjkzODIgNS45NjU3MyAxMS40NjYgNi4yNjgyNiAxMS44NDYyIDYuNzE5OTNDMTIuMjI2NCA3LjE3MTYgMTIuNDM0NSA3Ljc0MzI2IDEyLjQzMzcgOC4zMzM2NkMxMi40MzM3IDEwLjAwMDMgOS45MzM2NiAxMC44MzM3IDkuOTMzNjYgMTAuODMzN00xMC4wMDAzIDE0LjE2N0gxMC4wMDg3TTE4LjMzMzcgMTAuMDAwM0MxOC4zMzM3IDE0LjYwMjcgMTQuNjAyNyAxOC4zMzM3IDEwLjAwMDMgMTguMzMzN0M1LjM5Nzk1IDE4LjMzMzcgMS42NjY5OSAxNC42MDI3IDEuNjY2OTkgMTAuMDAwM0MxLjY2Njk5IDUuMzk3OTUgNS4zOTc5NSAxLjY2Njk5IDEwLjAwMDMgMS42NjY5OUMxNC42MDI3IDEuNjY2OTkgMTguMzMzNyA1LjM5Nzk1IDE4LjMzMzcgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xOTY1XzIzMDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+IE5lZWQgSGVscDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ1cGdyYWRlcGxhbigpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biB1cGRhdGUgYnRuLWxnIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlVwZ3JhZGUgUGxhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6cGxhbiBkZXRhaWxzIENhcmQtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTcgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nY2FyZCBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJpbGxpbmd0ZXh0IG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFuayBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5QYXltZW50IFR5cGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPlZpcnR1YWwgQWNjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+QWNjb3VudCBObyA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5hY2NvdW50Tm8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5JRlNDIENvZGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5pZnNjQ29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+U1dJRlQgQ29kZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+IHt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LnN3aWZ0Q29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPkJyYW5jaCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPnt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LmJyYW5jaCB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc1ZpZXdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIEJpbGxpbmcgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nIGgteGwtMTAwIHctMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjbGllbnRpbmZvPy5iaWxsaW5nRGV0YWlscz8uYmlsbGluZ0FkZHJlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvYWRkYmlsbGluZ19pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nIG10LTQgbXMtMVwiPkFkZCBiaWxsaW5nIGFkZHJlc3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtOCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwidXBkYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtMiBuZy1zdGFyLWluc2VydGVkIGFkZHJlc3Mgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VibWl0XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMyA0LjE2Njc1VjE1LjgzMzRNNC4xNjY5OSAxMC4wMDAxSDE1LjgzMzdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPiBOZXcgQWRkcmVzcyA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIEJpbGxpbmcgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJpbGxpbmcgSW5mb3JtYXRpb24gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nY2FyZCBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjbGllbnRpbmZvPy5iaWxsaW5nRGV0YWlscz8uYmlsbGluZ0FkZHJlc3MgJiYgY2xpZW50aW5mbz8uYmlsbGluZ0RldGFpbHM/LmJpbGxpbmdBZGRyZXNzIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJpbGxpbmd0ZXh0IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlsbGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInVwZGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIHVwZGF0ZSBidG4tbGcgYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGU8L3NwYW4+PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+TmV4dCBCaWxsaW5nIERhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5uZXh0QmlsbGluZ0RhdGUgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXIgbXQtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5CaWxsaW5nIEFkZHJlc3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzcyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQmlsbGluZyAmIHN1YnNjcmlwdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tc3Vic2NyaXB0aW9uIENvbmZpZyBzdGFydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0gKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgJiYgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+U3Vic2NyaXB0aW9uIENvbmZpZyA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIG14LTUgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBpbmZvIGhlYWRlciBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dOYXZHcm91cFwiIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbic/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJzdWJzY3JpcHRpb25cIiAoY2xpY2spPVwic2VsZWN0UGxhbignc3Vic2NyaXB0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwbGFuID09PSAncHJpY2luZyc/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJwcmljaW5nXCIgKGNsaWNrKT1cInNlbGVjdFBsYW4oJ3ByaWNpbmcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gaW5mbyBoZWFkZXIgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIHRhYiBzdGFydHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIiBbbmdDbGFzc109XCJpID4gMT8gJ210LTUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3Q7bGV0IGk9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCaWxsaW5nIEluZm9ybWF0aW9uIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmlsbGluZ2NhcmQgaC14bC0xMDAgZmxleC1yb3cgZmxleC1zdGFjayBmbGV4LXdyYXAgbWItNiBweC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uLmNhdGVnb3J5ID09PSAnVHJpYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLm5hbWV9fSA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+e3tjdXJyZW50UGxhbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5LaW5kbHkgbWFrZSBuZWNlc3NhcnkgYWN0aW9uIGZvciB0cmlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBvciBza2lwIHByb2R1Y3QgdG8gc3Vic2NyaXB0aW9uIGxpc3Q8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggbXQtOVwiPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcHJvdmV0cmlhbChub3RpZmljYXRpb24sJ2NhbmNlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS02IG10LTNcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTZcIj5Ta2lwIFRyYWlsPC9zcGFuPjwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHByb3ZldHJpYWwobm90aWZpY2F0aW9uLCdhcHByb3ZlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbXQtMyBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3Bhbj5BcHByb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG10LTEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb24uY2F0ZWdvcnkgPT09ICd1bnN1YnNjcmliZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxldmVsdmlld3RleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5zdWJzY3JpYmUgUmVxdWVzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5DbGllbnQgaGFzIHJlcXVlc3RlZCB0byB1bnN1YnNjcmliZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0ZXh0Ym9sZFwiPlRhbmdvIFN1aXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggbXQtMTNcIj48YSB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS02IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxVbnN1YnNjcmliZShub3RpZmljYXRpb24sJ2NhbmNlbCcpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC02XCI+Q2FuY2VsPC9zcGFuPjwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHByb3ZlVW5zdWJzY3JpYmUobm90aWZpY2F0aW9uLCd1bnN1YnNjcmliZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHB4LTQgbXQtMyBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3Bhbj5BcHByb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG10LTEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb24uY2F0ZWdvcnkgPT09ICd0cmlhbCBwcm9kdWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbGV2ZWx2aWV3dGV4dCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25vdGlmaWNhdGlvbi5uYW1lfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlLWxpZ2h0LWdyZXkgbXMtMlwiPnt7Y3VycmVudFBsYW59fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0XCI+Q3VycmVudCBQbGFuIEluZm88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3ZnIGlkPVwiY2lyY2xlLWNoYXJ0XCIgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJhY2tncm91bmQgY2lyY2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjZjBmMGYwXCIgc3Ryb2tlLXdpZHRoPVwiOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcmVncm91bmQgY2lyY2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cInByb2dyZXNzLWNpcmNsZS17e2l9fVwiIGN4PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCIyNTEuMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hvZmZzZXRdPVwidXBkYXRlQ2lyY2xlQ2hhcnQobm90aWZpY2F0aW9uLnBlcmNlbnRhZ2UsaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2lyY2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZXh0IGRpc3BsYXlpbmcgcGVyY2VudGFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0IGlkPVwicGVyY2VudGFnZS10ZXh0LXt7aX19XCIgeD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5PVwiNTRcIiBjbGFzcz1cInByb2R1Y3R0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzMzMzMzNcIj57e25vdGlmaWNhdGlvbi5wZXJjZW50YWdlfX0lPC90ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQganVzdGlmeS1jb250ZW50LWJldHdlZW4gZGF5c2xlZnQgbXMtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLmRheX19IERheXMgTGVmdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQgdHJhaWwgbXQtMiBtZS0xNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZSB0cmlhbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwicHJvZHVjdHRyYWlsRHJvcGRvd24oJGV2ZW50LGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZCBjdXJzb3ItcG9pbnRlciBtcy0yMFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI2MFwiIGhlaWdodD1cIjYwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA2MCA2MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNTIyMV82MDE0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjU2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NlwiIHJ4PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCI1NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTVcIiByeD1cIjcuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTIyMV82MDE0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwIDMyQzMxLjY1NjkgMzIgMzMgMzAuNjU2OSAzMyAyOUMzMyAyNy4zNDMxIDMxLjY1NjkgMjYgMzAgMjZDMjguMzQzMSAyNiAyNyAyNy4zNDMxIDI3IDI5QzI3IDMwLjY1NjkgMjguMzQzMSAzMiAzMCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNy40IDMyQzM3LjI2NjkgMzIuMzAxNiAzNy4yMjcyIDMyLjYzNjIgMzcuMjg2IDMyLjk2MDZDMzcuMzQ0OCAzMy4yODUgMzcuNDk5NSAzMy41ODQzIDM3LjczIDMzLjgyTDM3Ljc5IDMzLjg4QzM3Ljk3NiAzNC4wNjU3IDM4LjEyMzUgMzQuMjg2MyAzOC4yMjQxIDM0LjUyOTFDMzguMzI0OCAzNC43NzE5IDM4LjM3NjYgMzUuMDMyMiAzOC4zNzY2IDM1LjI5NUMzOC4zNzY2IDM1LjU1NzggMzguMzI0OCAzNS44MTgxIDM4LjIyNDEgMzYuMDYwOUMzOC4xMjM1IDM2LjMwMzcgMzcuOTc2IDM2LjUyNDMgMzcuNzkgMzYuNzFDMzcuNjA0MyAzNi44OTYgMzcuMzgzNyAzNy4wNDM1IDM3LjE0MDkgMzcuMTQ0MUMzNi44OTgxIDM3LjI0NDggMzYuNjM3OCAzNy4yOTY2IDM2LjM3NSAzNy4yOTY2QzM2LjExMjIgMzcuMjk2NiAzNS44NTE5IDM3LjI0NDggMzUuNjA5MSAzNy4xNDQxQzM1LjM2NjMgMzcuMDQzNSAzNS4xNDU3IDM2Ljg5NiAzNC45NiAzNi43MUwzNC45IDM2LjY1QzM0LjY2NDMgMzYuNDE5NSAzNC4zNjUgMzYuMjY0OCAzNC4wNDA2IDM2LjIwNkMzMy43MTYyIDM2LjE0NzIgMzMuMzgxNiAzNi4xODY5IDMzLjA4IDM2LjMyQzMyLjc4NDIgMzYuNDQ2OCAzMi41MzIgMzYuNjU3MiAzMi4zNTQzIDM2LjkyNTVDMzIuMTc2NiAzNy4xOTM4IDMyLjA4MTMgMzcuNTA4MiAzMi4wOCAzNy44M1YzOEMzMi4wOCAzOC41MzA0IDMxLjg2OTMgMzkuMDM5MSAzMS40OTQyIDM5LjQxNDJDMzEuMTE5MSAzOS43ODkzIDMwLjYxMDQgNDAgMzAuMDggNDBDMjkuNTQ5NiA0MCAyOS4wNDA5IDM5Ljc4OTMgMjguNjY1OCAzOS40MTQyQzI4LjI5MDcgMzkuMDM5MSAyOC4wOCAzOC41MzA0IDI4LjA4IDM4VjM3LjkxQzI4LjA3MjMgMzcuNTc5IDI3Ljk2NTEgMzcuMjU4IDI3Ljc3MjUgMzYuOTg4N0MyNy41Nzk5IDM2LjcxOTQgMjcuMzEwNyAzNi41MTQzIDI3IDM2LjRDMjYuNjk4NCAzNi4yNjY5IDI2LjM2MzggMzYuMjI3MiAyNi4wMzk0IDM2LjI4NkMyNS43MTUgMzYuMzQ0OCAyNS40MTU3IDM2LjQ5OTUgMjUuMTggMzYuNzNMMjUuMTIgMzYuNzlDMjQuOTM0MyAzNi45NzYgMjQuNzEzNyAzNy4xMjM1IDI0LjQ3MDkgMzcuMjI0MUMyNC4yMjgxIDM3LjMyNDggMjMuOTY3OCAzNy4zNzY2IDIzLjcwNSAzNy4zNzY2QzIzLjQ0MjIgMzcuMzc2NiAyMy4xODE5IDM3LjMyNDggMjIuOTM5MSAzNy4yMjQxQzIyLjY5NjMgMzcuMTIzNSAyMi40NzU3IDM2Ljk3NiAyMi4yOSAzNi43OUMyMi4xMDQgMzYuNjA0MyAyMS45NTY1IDM2LjM4MzcgMjEuODU1OSAzNi4xNDA5QzIxLjc1NTIgMzUuODk4MSAyMS43MDM0IDM1LjYzNzggMjEuNzAzNCAzNS4zNzVDMjEuNzAzNCAzNS4xMTIyIDIxLjc1NTIgMzQuODUxOSAyMS44NTU5IDM0LjYwOTFDMjEuOTU2NSAzNC4zNjYzIDIyLjEwNCAzNC4xNDU3IDIyLjI5IDMzLjk2TDIyLjM1IDMzLjlDMjIuNTgwNSAzMy42NjQzIDIyLjczNTIgMzMuMzY1IDIyLjc5NCAzMy4wNDA2QzIyLjg1MjggMzIuNzE2MiAyMi44MTMxIDMyLjM4MTYgMjIuNjggMzIuMDhDMjIuNTUzMiAzMS43ODQyIDIyLjM0MjggMzEuNTMyIDIyLjA3NDUgMzEuMzU0M0MyMS44MDYyIDMxLjE3NjYgMjEuNDkxOCAzMS4wODEzIDIxLjE3IDMxLjA4SDIxQzIwLjQ2OTYgMzEuMDggMTkuOTYwOSAzMC44NjkzIDE5LjU4NTggMzAuNDk0MkMxOS4yMTA3IDMwLjExOTEgMTkgMjkuNjEwNCAxOSAyOS4wOEMxOSAyOC41NDk2IDE5LjIxMDcgMjguMDQwOSAxOS41ODU4IDI3LjY2NThDMTkuOTYwOSAyNy4yOTA3IDIwLjQ2OTYgMjcuMDggMjEgMjcuMDhIMjEuMDlDMjEuNDIxIDI3LjA3MjMgMjEuNzQyIDI2Ljk2NTEgMjIuMDExMyAyNi43NzI1QzIyLjI4MDYgMjYuNTc5OSAyMi40ODU3IDI2LjMxMDcgMjIuNiAyNkMyMi43MzMxIDI1LjY5ODQgMjIuNzcyOCAyNS4zNjM4IDIyLjcxNCAyNS4wMzk0QzIyLjY1NTIgMjQuNzE1IDIyLjUwMDUgMjQuNDE1NyAyMi4yNyAyNC4xOEwyMi4yMSAyNC4xMkMyMi4wMjQgMjMuOTM0MyAyMS44NzY1IDIzLjcxMzcgMjEuNzc1OSAyMy40NzA5QzIxLjY3NTIgMjMuMjI4MSAyMS42MjM0IDIyLjk2NzggMjEuNjIzNCAyMi43MDVDMjEuNjIzNCAyMi40NDIyIDIxLjY3NTIgMjIuMTgxOSAyMS43NzU5IDIxLjkzOTFDMjEuODc2NSAyMS42OTYzIDIyLjAyNCAyMS40NzU3IDIyLjIxIDIxLjI5QzIyLjM5NTcgMjEuMTA0IDIyLjYxNjMgMjAuOTU2NSAyMi44NTkxIDIwLjg1NTlDMjMuMTAxOSAyMC43NTUyIDIzLjM2MjIgMjAuNzAzNCAyMy42MjUgMjAuNzAzNEMyMy44ODc4IDIwLjcwMzQgMjQuMTQ4MSAyMC43NTUyIDI0LjM5MDkgMjAuODU1OUMyNC42MzM3IDIwLjk1NjUgMjQuODU0MyAyMS4xMDQgMjUuMDQgMjEuMjlMMjUuMSAyMS4zNUMyNS4zMzU3IDIxLjU4MDUgMjUuNjM1IDIxLjczNTIgMjUuOTU5NCAyMS43OTRDMjYuMjgzOCAyMS44NTI4IDI2LjYxODQgMjEuODEzMSAyNi45MiAyMS42OEgyN0MyNy4yOTU4IDIxLjU1MzIgMjcuNTQ4IDIxLjM0MjggMjcuNzI1NyAyMS4wNzQ1QzI3LjkwMzQgMjAuODA2MiAyNy45OTg3IDIwLjQ5MTggMjggMjAuMTdWMjBDMjggMTkuNDY5NiAyOC4yMTA3IDE4Ljk2MDkgMjguNTg1OCAxOC41ODU4QzI4Ljk2MDkgMTguMjEwNyAyOS40Njk2IDE4IDMwIDE4QzMwLjUzMDQgMTggMzEuMDM5MSAxOC4yMTA3IDMxLjQxNDIgMTguNTg1OEMzMS43ODkzIDE4Ljk2MDkgMzIgMTkuNDY5NiAzMiAyMFYyMC4wOUMzMi4wMDEzIDIwLjQxMTggMzIuMDk2NiAyMC43MjYyIDMyLjI3NDMgMjAuOTk0NUMzMi40NTIgMjEuMjYyOCAzMi43MDQyIDIxLjQ3MzIgMzMgMjEuNkMzMy4zMDE2IDIxLjczMzEgMzMuNjM2MiAyMS43NzI4IDMzLjk2MDYgMjEuNzE0QzM0LjI4NSAyMS42NTUyIDM0LjU4NDMgMjEuNTAwNSAzNC44MiAyMS4yN0wzNC44OCAyMS4yMUMzNS4wNjU3IDIxLjAyNCAzNS4yODYzIDIwLjg3NjUgMzUuNTI5MSAyMC43NzU5QzM1Ljc3MTkgMjAuNjc1MiAzNi4wMzIyIDIwLjYyMzQgMzYuMjk1IDIwLjYyMzRDMzYuNTU3OCAyMC42MjM0IDM2LjgxODEgMjAuNjc1MiAzNy4wNjA5IDIwLjc3NTlDMzcuMzAzNyAyMC44NzY1IDM3LjUyNDMgMjEuMDI0IDM3LjcxIDIxLjIxQzM3Ljg5NiAyMS4zOTU3IDM4LjA0MzUgMjEuNjE2MyAzOC4xNDQxIDIxLjg1OTFDMzguMjQ0OCAyMi4xMDE5IDM4LjI5NjYgMjIuMzYyMiAzOC4yOTY2IDIyLjYyNUMzOC4yOTY2IDIyLjg4NzggMzguMjQ0OCAyMy4xNDgxIDM4LjE0NDEgMjMuMzkwOUMzOC4wNDM1IDIzLjYzMzcgMzcuODk2IDIzLjg1NDMgMzcuNzEgMjQuMDRMMzcuNjUgMjQuMUMzNy40MTk1IDI0LjMzNTcgMzcuMjY0OCAyNC42MzUgMzcuMjA2IDI0Ljk1OTRDMzcuMTQ3MiAyNS4yODM4IDM3LjE4NjkgMjUuNjE4NCAzNy4zMiAyNS45MlYyNkMzNy40NDY4IDI2LjI5NTggMzcuNjU3MiAyNi41NDggMzcuOTI1NSAyNi43MjU3QzM4LjE5MzggMjYuOTAzNCAzOC41MDgyIDI2Ljk5ODcgMzguODMgMjdIMzlDMzkuNTMwNCAyNyA0MC4wMzkxIDI3LjIxMDcgNDAuNDE0MiAyNy41ODU4QzQwLjc4OTMgMjcuOTYwOSA0MSAyOC40Njk2IDQxIDI5QzQxIDI5LjUzMDQgNDAuNzg5MyAzMC4wMzkxIDQwLjQxNDIgMzAuNDE0MkM0MC4wMzkxIDMwLjc4OTMgMzkuNTMwNCAzMSAzOSAzMUgzOC45MUMzOC41ODgyIDMxLjAwMTMgMzguMjczOCAzMS4wOTY2IDM4LjAwNTUgMzEuMjc0M0MzNy43MzcyIDMxLjQ1MiAzNy41MjY4IDMxLjcwNDIgMzcuNCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaWx0ZXIwX2RfNTIyMV82MDE0M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjYwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluPVwiU291cmNlQWxwaGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTIyMV82MDE0M1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluPVwiU291cmNlR3JhcGhpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd181MjIxXzYwMTQzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81MjIxXzYwMTQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDE4IDE3KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uLnByb2R1Y3R0cmFpbGRyb3BEb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMjAwcHggcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHByb2R1Y3R0cmFpbGl0ZW0gb2YgcHJvZHVjdHRyYWlsdHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZHVjdHRyYWlsSXRlbShwcm9kdWN0dHJhaWxpdGVtLG5vdGlmaWNhdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9kdWN0dHJhaWxpdGVtfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxldmVsIHZpZXcgZHJvcGRvd24gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1YmxldmVsdmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGhlYWRpbmcgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdCBsZXZlbHZpZXd0ZXh0XCIgaWQ9XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdwbGFuRHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e3ZpZXdwbGFuSXNzdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdwbGFuZHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgdmlld3BsYW5pdGVtIG9mIHZpZXdwbGFudHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLnZpZXdwbGFuSXNzdWUgPT09IHZpZXdwbGFuaXRlbSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdwbGFuSXRlbSh2aWV3cGxhbml0ZW0pXCI+e3t2aWV3cGxhbml0ZW19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN1YlwiPkJhc2VkIG9uIEN1cnJlbnQgU3Vic2NyaWJlZCBQcm9kdWN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbicgJiYgdmlld3BsYW5Jc3N1ZSA9PT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLW11bHRpZHJvcGRvd24gdGV4dD1cIkFkZCBQcm9kdWN0c1wiIFtwcm9kdWN0XT1cInByb2R1Y3RMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RMaXN0XT1cImRhdGFPYmplY3RbMF0uSXNzdWVzXCIgdHlwZT1cInByb2R1Y3RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWVudElkXT1cImNsaWVudElkXCIgKGRhdGEpPVwicmVsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48L2xpYi1tdWx0aWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3cGxhbklzc3VlID09PSAnU3RvcmUgTGV2ZWwgVmlldycgJiYgcGxhbiA9PT0gJ3N1YnNjcmlwdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtZW5kIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtYi0zIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaFJlY29yZHMoJGV2ZW50KVwiICpuZ0lmPVwic3RvcmVMaXN0Lmxlbmd0aFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzIGNsYXNzPVwibWUtMlwiIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAqbmdJZj1cInN0b3JlTGlzdC5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpZWRGaWx0ZXJzKT1yZWNlaXZlRGF0YSgkZXZlbnQpPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93biB0ZXh0PVwiQWRkIFByb2R1Y3RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9kdWN0TGlzdF09XCJkYXRhT2JqZWN0WzBdLklzc3Vlc1wiIHR5cGU9XCJzdG9yZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0b3Jlc109XCJnZXRTdG9yZXMoKVwiIFtwcm9kdWN0XT1cImdldFByb2R1Y3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIiBbY2xpZW50UHJvZHVjdF09XCJwcm9kdWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSk9XCJyZWxvYWQoJGV2ZW50KVwiIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVMaXN0Lmxlbmd0aCAmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PC9saWItbXVsdGlkcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gY29uZmlnIHRvb2xiYXIgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIHBsYW4gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdwbGFuSXNzdWUgPT09ICdQcm9kdWN0IExldmVsIFZpZXcnICYmICFsb2FkaW5nICYmICFub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5vIG9mIFN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvc3QgUGVyIFN0b3JlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0TGlzdDtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBzdWJzY3JpYmVkdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb252ZXJ0VXBwZXIocHJvZHVjdD8ucHJvZHVjdCkgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3twcm9kdWN0Py5zdG9yZUNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAwfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj7igrkge3twcm9kdWN0Py5iYXNlUHJpY2UgfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIHBsYW4gZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN0b3JlIHN1YnNjcmlwdGlvbiBwbGFuIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3cGxhbklzc3VlID09PSAnU3RvcmUgTGV2ZWwgVmlldycgJiYgIWxvYWRpbmcgJiYgIW5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic3RvcmVpbnB1dCBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbFN0b3JlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhDaGVja0RlZmF1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TdG9yZSBJbmZvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TG9jYXRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVMaXN0O2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInN0b3JlaW5wdXQgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0b3JlLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlQ2hlY2soJGV2ZW50LHN0b3JlPy5zdG9yZUlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdGFibGUtdGl0bGUtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhDaGVja0RlZmF1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZT8uc3RvcmVOYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXN1YiBkLWJsb2NrN1wiPklEIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZT8uc3RvcmVJZCB8fCAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmU/LnN0b3JlUHJvZmlsZT8uY2l0eSB8fCAnLS0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzdG9yZT8ucHJvZHVjdCAmJiBzdG9yZT8ucHJvZHVjdC5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHN0b3JlPy5wcm9kdWN0O2xldCBpPWluZGV4O1wiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpPDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtZS0xXCI+e3twcm9kdWN0fX08L3NwYW4+PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlLnByb2R1Y3QubGVuZ3RoID4gMlwiPit7e3N0b3JlPy5wcm9kdWN0Lmxlbmd0aC0yfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhc3RvcmU/LnByb2R1Y3QgfHwgIXN0b3JlPy5wcm9kdWN0Lmxlbmd0aFwiPiAtLSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1tdWx0aWRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdF09XCJzdG9yZT8ucHJvZHVjdCB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdExpc3RdPVwiZGF0YU9iamVjdFswXS5Jc3N1ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN0b3Jlc1wiIFtzdG9yZXNdPVwiW3N0b3JlPy5zdG9yZUlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWVudFByb2R1Y3RdPVwicHJvZHVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEpPVwicmVsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PC9saWItbXVsdGlkcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJkeW5hbWljRGF0YS5saW1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiZHluYW1pY0RhdGEub2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsQ291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cIlsxMCwyMCwzMF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImR5bmFtaWNEYXRhLmxpbWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uU3RvcmVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uU3RvcmVQYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN0b3JlIHN1YnNjcmlwdGlvbiBwbGFuIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gdGFiIHN0YXJ0cyAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tcHJpY2luZyB0YWIgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3ByaWNpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbGV2ZWx2aWV3dGV4dCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nIFRhYmxlPGJyPjxzcGFuIGNsYXNzPVwidGV4dC1zdWJcIj5CYXNlZCBvbiBQcm9kdWN0ICZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZXM8L3NwYW4+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlN3aXRjaCB0bzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQcmljaW5nc2hvd05hdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJpY2luZ3BsYW4gPT09ICdzdGFuZGFyZCc/ICdhY3RpdmVQbGFuQnRucHJpbWFyeSc6J2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1wbGFuPVwic3RhbmRhcmRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGFuZGFyZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBQcmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcmljaW5ncGxhbiA9PT0gJ3N0ZXAnPyAnYWN0aXZlUGxhbkJ0bnByaW1hcnknOidpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGxhbj1cInN0ZXBwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGVwJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXAgUHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RlcCdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkc3RlcHByaWNlKCdhZGQnKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgdGV4dC1ub3dyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCIgW2Rpc2FibGVkXT1cInByaWNlTm9EYXRhXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2Njc1VjE1LjgzMzRNNC42NjYwMiAxMC4wMDAxSDE2LjMzMjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5BZGQgU3RlcDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmljZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByaWNlTm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RhbmRhcmQnICYmICFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJkaXNjb3VudGhlYWRlclwiPkRpc2NvdW50ICU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibmVnaGVhZGVyXCI+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SW5zdGFsbGVkIFN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VG90YWwgUHJpY2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3R0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29udmVydFVwcGVyKHByb2R1Y3QucHJvZHVjdE5hbWUpfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5iYXNlUHJpY2V9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJkaXNjb3VudHByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGlzY291bnRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2R1Y3QuZGlzY291bnRQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2FsY3VsYXRlKGksJ2Rpc2NvdW50JylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuZWdwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5lZ3ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdwcmljZScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e3Byb2R1Y3Quc3RvcmVDb3VudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj4kIHt7cHJvZHVjdC5wcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+VG90YWwgVmFsdWU8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJpY2luZ3BsYW4gPT09ICdzdGVwJyAmJiAhcHJpY2VMb2FkaW5nICYmICFwcmljZU5vRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgcHJpY2luZ3RhYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGlzY291bnQgJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbGxlZCBTdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRvdGFsIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcmljZVZhbHVlRGV0YWlscz8ucHJvZHVjdDtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbnZlcnRVcHBlcihwcm9kdWN0LnByb2R1Y3ROYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNFwiICpuZ0lmPVwicHJvZHVjdC5zaG93SW1nXCI+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2V4cGlyeS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+IOKCuSB7e3Byb2R1Y3QuYmFzZVByaWNlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZGlzY291bnRwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRpc2NvdW50cHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9kdWN0LmRpc2NvdW50UGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdkaXNjb3VudCcpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibmVncHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJuZWdwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2R1Y3QubmVnb3RpYXRlUHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjYWxjdWxhdGUoaSwncHJpY2UnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0b3JlcmFuZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdG9yZXJhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5zdG9yZVJhbmdlXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5zdG9yZUNvdW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiDigrkge3twcm9kdWN0LnByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXByb2R1Y3Quc2hvd0VkaXREZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjE2NjAyIDQuOTk5MzVINC44MzI2OE00LjgzMjY4IDQuOTk5MzVIMTguMTY2TTQuODMyNjggNC45OTkzNVYxNi42NjZDNC44MzI2OCAxNy4xMDggNS4wMDgyOCAxNy41MzIgNS4zMjA4NCAxNy44NDQ1QzUuNjMzNCAxOC4xNTcxIDYuMDU3MzIgMTguMzMyNyA2LjQ5OTM1IDE4LjMzMjdIMTQuODMyN0MxNS4yNzQ3IDE4LjMzMjcgMTUuNjk4NiAxOC4xNTcxIDE2LjAxMTIgMTcuODQ0NUMxNi4zMjM4IDE3LjUzMiAxNi40OTkzIDE3LjEwOCAxNi40OTkzIDE2LjY2NlY0Ljk5OTM1SDQuODMyNjhaTTcuMzMyNjggNC45OTkzNVYzLjMzMjY4QzcuMzMyNjggMi44OTA2NSA3LjUwODI4IDIuNDY2NzMgNy44MjA4NCAyLjE1NDE3QzguMTMzNCAxLjg0MTYxIDguNTU3MzIgMS42NjYwMiA4Ljk5OTM1IDEuNjY2MDJIMTIuMzMyN0MxMi43NzQ3IDEuNjY2MDIgMTMuMTk4NiAxLjg0MTYxIDEzLjUxMTIgMi4xNTQxN0MxMy44MjM4IDIuNDY2NzMgMTMuOTk5MyAyLjg5MDY1IDEzLjk5OTMgMy4zMzI2OFY0Ljk5OTM1TTguOTk5MzUgOS4xNjYwMlYxNC4xNjZNMTIuMzMyNyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuODMyIDIuNTAwOUMxNS4wNTA5IDIuMjgyMDMgMTUuMzEwNyAyLjEwODQyIDE1LjU5NjcgMS45ODk5NkMxNS44ODI3IDEuODcxNTEgMTYuMTg5MiAxLjgxMDU1IDE2LjQ5ODcgMS44MTA1NUMxNi44MDgyIDEuODEwNTUgMTcuMTE0NyAxLjg3MTUxIDE3LjQwMDcgMS45ODk5NkMxNy42ODY3IDIuMTA4NDIgMTcuOTQ2NSAyLjI4MjAzIDE4LjE2NTQgMi41MDA5QzE4LjM4NDIgMi43MTk3NyAxOC41NTc5IDIuOTc5NjEgMTguNjc2MyAzLjI2NTU4QzE4Ljc5NDggMy41NTE1NCAxOC44NTU3IDMuODU4MDQgMTguODU1NyA0LjE2NzU3QzE4Ljg1NTcgNC40NzcxIDE4Ljc5NDggNC43ODM2IDE4LjY3NjMgNS4wNjk1NkMxOC41NTc5IDUuMzU1NTMgMTguMzg0MiA1LjYxNTM3IDE4LjE2NTQgNS44MzQyNEw2LjkxNTM2IDE3LjA4NDJMMi4zMzIwMyAxOC4zMzQyTDMuNTgyMDMgMTMuNzUwOUwxNC44MzIgMi41MDA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRhYmxlLXRpdGxlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5zaG93RWRpdERlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZHN0ZXBwcmljZSgnZGVsZXRlJyxwcm9kdWN0LGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjE2NjAyIDQuOTk5MzVINC44MzI2OE00LjgzMjY4IDQuOTk5MzVIMTguMTY2TTQuODMyNjggNC45OTkzNVYxNi42NjZDNC44MzI2OCAxNy4xMDggNS4wMDgyOCAxNy41MzIgNS4zMjA4NCAxNy44NDQ1QzUuNjMzNCAxOC4xNTcxIDYuMDU3MzIgMTguMzMyNyA2LjQ5OTM1IDE4LjMzMjdIMTQuODMyN0MxNS4yNzQ3IDE4LjMzMjcgMTUuNjk4NiAxOC4xNTcxIDE2LjAxMTIgMTcuODQ0NUMxNi4zMjM4IDE3LjUzMiAxNi40OTkzIDE3LjEwOCAxNi40OTkzIDE2LjY2NlY0Ljk5OTM1SDQuODMyNjhaTTcuMzMyNjggNC45OTkzNVYzLjMzMjY4QzcuMzMyNjggMi44OTA2NSA3LjUwODI4IDIuNDY2NzMgNy44MjA4NCAyLjE1NDE3QzguMTMzNCAxLjg0MTYxIDguNTU3MzIgMS42NjYwMiA4Ljk5OTM1IDEuNjY2MDJIMTIuMzMyN0MxMi43NzQ3IDEuNjY2MDIgMTMuMTk4NiAxLjg0MTYxIDEzLjUxMTIgMi4xNTQxN0MxMy44MjM4IDIuNDY2NzMgMTMuOTk5MyAyLjg5MDY1IDEzLjk5OTMgMy4zMzI2OFY0Ljk5OTM1TTguOTk5MzUgOS4xNjYwMlYxNC4xNjZNMTIuMzMyNyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRzdGVwcHJpY2UoJ2VkaXQnLHByb2R1Y3QsaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC44MzIgMi41MDA5QzE1LjA1MDkgMi4yODIwMyAxNS4zMTA3IDIuMTA4NDIgMTUuNTk2NyAxLjk4OTk2QzE1Ljg4MjcgMS44NzE1MSAxNi4xODkyIDEuODEwNTUgMTYuNDk4NyAxLjgxMDU1QzE2LjgwODIgMS44MTA1NSAxNy4xMTQ3IDEuODcxNTEgMTcuNDAwNyAxLjk4OTk2QzE3LjY4NjcgMi4xMDg0MiAxNy45NDY1IDIuMjgyMDMgMTguMTY1NCAyLjUwMDlDMTguMzg0MiAyLjcxOTc3IDE4LjU1NzkgMi45Nzk2MSAxOC42NzYzIDMuMjY1NThDMTguNzk0OCAzLjU1MTU0IDE4Ljg1NTcgMy44NTgwNCAxOC44NTU3IDQuMTY3NTdDMTguODU1NyA0LjQ3NzEgMTguNzk0OCA0Ljc4MzYgMTguNjc2MyA1LjA2OTU2QzE4LjU1NzkgNS4zNTU1MyAxOC4zODQyIDUuNjE1MzcgMTguMTY1NCA1LjgzNDI0TDYuOTE1MzYgMTcuMDg0MkwyLjMzMjAzIDE4LjMzNDJMMy41ODIwMyAxMy43NTA5TDE0LjgzMiAyLjUwMDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+VG90YWwgVmFsdWU8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMTRcIiAqbmdJZj1cIiFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5BY3R1YWwgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbEFjdHVhbFByaWNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+RGlzY291bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPnt7cHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQZXJjZW50YWdlfX0lICgtICDigrkge3twcmljZVZhbHVlRGV0YWlscy5kaXNjb3VudFByaWNlfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPk5lZ290aWF0ZWQgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+VGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWFubHZhbHRleHRcIj4xOCUgR1NUPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5GaW5hbCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlhbmx2YWx0ZXh0XCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLmZpbmFsVmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHB5LTNcIj48YSB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNCBtdC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmVydE9yaWdpbmFsUHJpY2UoKVwiPkNhbmNlbDwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ3JldmlzZWQoKVwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiPjxzcGFuPlNhdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJpY2luZyB0YWIgcGxhbiBlbmQgLS0+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1Ym1pdCBwbGFuIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBsYW4gPT09ICdzdG9yZXN1YnNjcmlwdGlvbidcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHktM1wiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTQgbXQtM1wiPkNhbmNlbDwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5ncmV2aXNlZCgpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBtdC0zIG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjxzcGFuPkFwcGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJtaXQgcGxhbiBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3QgaW5mbyBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2Ugc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIG15LTQgYmlsbGluZ2NhcmRcIiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyAmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBheW1lbnRpbnZvaWNlZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBzLTQgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRpbmcgbWItMlwiPlBheW1lbnQgYW5kIEludm9pY2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VGl0bGUtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRvb2xiYXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgbWItMlwiICpuZ0lmPVwicGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25wYXltZW50ZWRpdCgpXCIgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCBuZWVkaGVscCAgbWUtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY3IDIuNDk5OTNDMTQuMzg1OSAyLjI4MTA2IDE0LjY0NTcgMi4xMDc0NCAxNC45MzE3IDEuOTg4OTlDMTUuMjE3NiAxLjg3MDU0IDE1LjUyNDEgMS44MDk1NyAxNS44MzM3IDEuODA5NTdDMTYuMTQzMiAxLjgwOTU3IDE2LjQ0OTcgMS44NzA1NCAxNi43MzU3IDEuOTg4OTlDMTcuMDIxNiAyLjEwNzQ0IDE3LjI4MTUgMi4yODEwNiAxNy41MDAzIDIuNDk5OTNDMTcuNzE5MiAyLjcxODggMTcuODkyOCAyLjk3ODYzIDE4LjAxMTMgMy4yNjQ2QzE4LjEyOTcgMy41NTA1NyAxOC4xOTA3IDMuODU3MDYgMTguMTkwNyA0LjE2NjU5QzE4LjE5MDcgNC40NzYxMiAxOC4xMjk3IDQuNzgyNjIgMTguMDExMyA1LjA2ODU5QzE3Ljg5MjggNS4zNTQ1NSAxNy43MTkyIDUuNjE0MzkgMTcuNTAwMyA1LjgzMzI2TDYuMjUwMzMgMTcuMDgzM0wxLjY2Njk5IDE4LjMzMzNMMi45MTY5OSAxMy43NDk5TDE0LjE2NyAyLjQ5OTkzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjU3OV8yNTEyNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdCBEZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlRvb2xiYXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcGF5bWVudCBpbnZvaWNlIGZvcm0gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcm93IGZ2LXJvdyBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIHB5LTQgcHgtNFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBheW1lbnRjeWNsZVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkVuYWJsZSBQcm8tUmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDaGFyZ2VzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIHBzLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ1R5cGUoJGV2ZW50LCAnYmVmb3JlMTUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmFkaW8tY3VzdG9tIGN1cnNvci1wb2ludGVyIHJhZGlvQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwiaW5saW5lUmFkaW8xXCIgdmFsdWU9XCJiZWZvcmUxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHJhZGlvLWN1c3RvbS1sYWJlbCBteC0zIGhlYWRpbmd0ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImlubGluZVJhZGlvMVwiPkJlZm9yZSAxNXRoIG9mIE1vbnRoPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBwcy0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByaWNpbmdUeXBlKCRldmVudCwgJ2FmdGVyMTUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyYWRpby1jdXN0b20gIGN1cnNvci1wb2ludGVyIHJhZGlvQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGZvcm1Db250cm9sTmFtZT1cInJhZGlvb3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlubGluZVJhZGlvMlwiIHZhbHVlPVwiYWZ0ZXIxNVwiIG5hbWU9XCJyYWRpb29wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGhlYWRpbmd0ZXh0IHJhZGlvLWN1c3RvbS1sYWJlbCBteC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImlubGluZVJhZGlvMVwiPkFmdGVyIDE1dGggb2YgTW9udGg8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXltZW50Y3ljbGVcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5QYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3ljbGU8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJwYXltZW50Y3ljbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7c2VsZWN0ZWRJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbnRobHknID8gJ01vbnRobHknIDogc2VsZWN0ZWRJc3N1ZSA9PT0gJ3F1YXRlcmx5JyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdRdWF0ZXJseScgOiAnQW5udWFsJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5zZWxlY3RlZElzc3VlID09PSBpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0udmFsdWUpXCI+e3tpdGVtLm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZVRvXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIFRvIDxzcGFuPiA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzI3MDZfMjUzMjQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03Ljk5OTY3IDEwLjY2NjNWNy45OTk2N003Ljk5OTY3IDUuMzMzMDFIOC4wMDYzNE0xNC42NjYzIDcuOTk5NjdDMTQuNjY2MyAxMS42ODE2IDExLjY4MTYgMTQuNjY2MyA3Ljk5OTY3IDE0LjY2NjNDNC4zMTc3OCAxNC42NjYzIDEuMzMzMDEgMTEuNjgxNiAxLjMzMzAxIDcuOTk5NjdDMS4zMzMwMSA0LjMxNzc4IDQuMzE3NzggMS4zMzMwMSA3Ljk5OTY3IDEuMzMzMDFDMTEuNjgxNiAxLjMzMzAxIDE0LjY2NjMgNC4zMTc3OCAxNC42NjYzIDcuOTk5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNzA2XzI1MzI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW52b2ljZVRvIG9mIGdlbmVyYXRlaW52b2ljZUxpc3Q7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2ludm9pY2VUb319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2hpcChpKVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlVG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImdlbmVyYXRlaW52b2ljZW9uXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdFwiIGlkPVwiZ2VuZXJhdGVpbnZvaWNlb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7aW52b2ljZW9uSXNzdWUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXN0ZGF5JyA/ICdMYXN0IERheSBvZiB0aGUgTW9udGgnIDonMjV0aCBvZiB0aGUgTW9udGgnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52b2ljZWRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaW52b2ljZWl0ZW0gb2YgZ2VuZXJhdGVpbnZvaWNlb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLmludm9pY2Vvbklzc3VlID09PSBpbnZvaWNlaXRlbS52YWx1ZSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdHRleHQgcHgtNSBpdGVtcyBjdXJzb3ItcG9pbnRlciBweS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZUl0ZW0oaW52b2ljZWl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpbnZvaWNlaXRlbS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGF5bWVudHR5cGVcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5QYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdFwiIGlkPVwicGF5bWVudHR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudHR5cGVEcm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e3BheW1lbnRJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubGluZScgPyAnb25saW5lIFBheW1lbnQnIDonQmFuayBUcmFuc2Zlcid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50dHlwZWRyb3BEb3duICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBwYXltZW50aXRlbSBvZiBwYXltZW50dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMucGF5bWVudElzc3VlID09PSBwYXltZW50aXRlbS52YWx1ZSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdHRleHQgcHgtNSBpdGVtcyBjdXJzb3ItcG9pbnRlciBweS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudEl0ZW0ocGF5bWVudGl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twYXltZW50aXRlbS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjdXJyZW5jeVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkN1cnJlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW5jeURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7Y3VycmVuY3lJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lucidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnSU5SJyA6J0RvbGxlcid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW5jeWRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgY3VycmVuY3lpdGVtIG9mIGN1cnJlbmN5dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMuY3VycmVuY3lJc3N1ZSA9PT0gY3VycmVuY3lpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW5jeUl0ZW0oY3VycmVuY3lpdGVtLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y3VycmVuY3lpdGVtLm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2VuZHBheW1lbnRcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5TZW5kIFBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZW1lbnQ8c3BhbiBjbGFzcz1cIm1zLTJcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjcwNl8yNTMyNClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuOTk5NjcgMTAuNjY2M1Y3Ljk5OTY3TTcuOTk5NjcgNS4zMzMwMUg4LjAwNjM0TTE0LjY2NjMgNy45OTk2N0MxNC42NjYzIDExLjY4MTYgMTEuNjgxNiAxNC42NjYzIDcuOTk5NjcgMTQuNjY2M0M0LjMxNzc4IDE0LjY2NjMgMS4zMzMwMSAxMS42ODE2IDEuMzMzMDEgNy45OTk2N0MxLjMzMzAxIDQuMzE3NzggNC4zMTc3OCAxLjMzMzAxIDcuOTk5NjcgMS4zMzMwMUMxMS42ODE2IDEuMzMzMDEgMTQuNjY2MyA0LjMxNzc4IDE0LjY2NjMgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI3MDZfMjUzMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9sYWJlbD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcGF5bWVudEFncmVlbWVudFRvIG9mIHBheW1lbnRhbGxvd2VkTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCI+e3twYXltZW50QWdyZWVtZW50VG99fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBheW1lbnRpbnZvaWNlZm9ybS5lbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRwYXltZW50cmVtb3ZlQ2hpcChpKVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFncmVlbWVudFRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNlbmRwYXltZW50b25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4dGVuZFBheW1lbnRQZXJpb2REYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBoZWFkaW5ndGV4dCBtYi0yXCI+RXh0ZW5kIFBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJpb2QgRGF5cyA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctbGctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgbWUtNSBwcy0zIHRpY2tldERheXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb2ZmIHN2Zy1pY29uLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnZhbHVlID4gMCAmJiBwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZCAgPyBwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy5zZXRWYWx1ZShwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy52YWx1ZSAtIDEpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2OTkgMTBIMTUuODMzN1wiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlbmRQYXltZW50UGVyaW9kRGF5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIGVuZC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZCAgPyBwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy5zZXRWYWx1ZShwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy52YWx1ZSArIDEpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguNDk5NjcgMy4zMzMwMVYxMi42NjYzTTMuODMzMDEgNy45OTk2N0gxMy4xNjYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC02XCIgKm5nSWY9XCIhcGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbnBheW1lbnRDYW5jZWwoKVwiPkNhbmNlbDwvYT48YSB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbnBheW1lbnRTdWJtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW4+QXBwbHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBmb3JtIGVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gY29uZmlnIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgIDwhLS1JbnZvaWNlcyBzdGFydCAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc1ZpZXdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5JbnZvaWNlcyA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHBheW1lbnRoaXN0b3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+UGF5bWVudCBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2VhcmNoRmllbGQoKVwiIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiLz5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTMgbW9udGh3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IFwiIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCIgWyhuZ01vZGVsKV09XCJpc0ZpbHRlclwiIChjaGFuZ2UpPVwiaW52b2ljZUZpbHRlcigpXCIgW2Rpc2FibGVkXT1cIiFpbnZvaWNlTGlzdC5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImN1cnJlbnRcInNlbGVjdGVkPkN1cnJlbnQgTW9udGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInByZXZcIj5QcmV2aW91cyBNb250aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGFzdFwiPkxhc3QgMyBNb248L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3JlZGl0bm90ZSgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLW91dGxpbmUgIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgbWUtNFwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nICYmIChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIiBbZGlzYWJsZWRdPVwiIWludm9pY2VMaXN0Lmxlbmd0aFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjQ5OTMgNC4xNjY3NVYxNS44MzM0TTQuNjY2MDIgMTAuMDAwMUgxNi4zMzI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4+Q3JlZGl0IE5vdGU8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgbWUtNFwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRG93bmxvYWRcIiBbZGlzYWJsZWRdPVwiIWludm9pY2VMaXN0Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj48L3NwYW4+IEV4cG9ydDwvYnV0dG9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZvaWNlTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW52b2ljZU5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWludm9pY2VMb2FkaW5nICYmICFpbnZvaWNlTm9EYXRhXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNvcnREYXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlICNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdpbnZvaWNlJyAmJiBzb3J0QnkgIT09IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdpbnZvaWNlJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QmlsbGluZyBkYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlByb2R1Y3RzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFtb3VudDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSAhPT0gJ3RhbmdvJ1wiPlBheW1lbnQgTWV0aG9kPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW52b2ljZSBvZiBpbnZvaWNlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBpbnZvaWNlXCI+e3tpbnZvaWNlPy5pbnZvaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiWydmcmVlJywnUGF5bWVudCBSZWNlaXZlZCddLmluY2x1ZGVzKGludm9pY2U/LnN0YXR1cylcIj57e2ludm9pY2U/LnN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nXCIgKm5nSWY9XCJpbnZvaWNlPy5zdGF0dXMgPT09ICd0cmlhbCdcIj57e2ludm9pY2U/LnN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2U/LmJpbGxpbmdEYXRlfX0gPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5zdG9yZXN9fTwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+PHNwYW4gKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgaW52b2ljZT8ucHJvZHVjdHM7IGxldCBpID0gaW5kZXhcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sb3JDbGFzcyhwcm9kdWN0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaTwyXCI+e3twcm9kdWN0fX08L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPVwicHJvZHVjdGV4dGVuZFwiICpuZ0lmPVwiaW52b2ljZT8ucHJvZHVjdHMubGVuZ3RoPjJcIj4re3tpbnZvaWNlPy5wcm9kdWN0cy5sZW5ndGggLSAyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2UuYW1vdW50ID8gaW52b2ljZT8uYW1vdW50IDogaW52b2ljZS5zdGF0dXMgfCB0aXRsZWNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2U/LnBheW1lbnRNZXRob2QgfHwgJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvaW50ZXJcIj48c3ZnIGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tSW52b2ljZXMgZW5kIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+Il19
|
|
1087
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvcGF5bWVudHMtc3Vic2NyaXB0aW9uL3BheW1lbnRzLXN1YnNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0MsTUFBTSxFQUF1RCxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBMEIsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFjLE9BQU8sRUFBc0MsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBYSxNQUFNLE1BQU0sQ0FB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QUMsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBRUgsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3VHQWxvQ1UsNkJBQTZCOzJGQUE3Qiw2QkFBNkIsdUlDM0IxQyxpZ2dKQThpRFU7OzJGRG5oREcsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDJCQUEyQjtxUUFpbENyQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIGluamVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFVwZGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy91cGRhdGUvdXBkYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5lZWRIZWxwQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL25lZWQtaGVscC9uZWVkLWhlbHAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBncmFkZVBsYW5Db21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdXBncmFkZS1wbGFuL3VwZ3JhZGUtcGxhbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgQ3JlZGl0Tm90ZUNvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9jcmVkaXQtbm90ZS9jcmVkaXQtbm90ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcmljaW5nUmV2aXNlZENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9wcmljaW5nLXJldmlzZWQvcHJpY2luZy1yZXZpc2VkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBzd2l0Y2hNYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRTdGVwcHJpY2VDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvYWRkLXN0ZXBwcmljZS9hZGQtc3RlcHByaWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTa2lwVHJhaWxDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvc2tpcC10cmFpbC9za2lwLXRyYWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYWlsU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdHJhaWwtc2V0dGluZ3MvdHJhaWwtc2V0dGluZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5zdWJzY3JpYmVSZXF1ZXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3Vuc3Vic2NyaWJlLXJlcXVlc3QvdW5zdWJzY3JpYmUtcmVxdWVzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wYXltZW50cy1zdWJzY3JpcHRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUGF5bWVudHNTdWJzY3JpcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGNsaWVudGluZm86IGFueTtcclxuICBsaXN0OiBhbnlbXTtcclxuICBzZWxlY3Q6IHN0cmluZyA9ICdiZWZvcmUxNSc7XHJcbiAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG4gIGFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcclxuICBwbGFuOiBzdHJpbmcgPSAnc3Vic2NyaXB0aW9uJztcclxuICBzaG93TmF2R3JvdXA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFByaWNpbmdzaG93TmF2OiBib29sZWFuID0gdHJ1ZTtcclxuICBzdWJsZXZlbHZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGNvdW50OiBudW1iZXIgPSAxO1xyXG4gIGRheXNDb3VudDogYW55ID0gJyc7XHJcbiAgY3VycmVudHBsYW5mb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5bWVudGludm9pY2Vmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcGF5bWVudGFsbG93ZWRMaXN0OiBhbnkgPSBbXVxyXG4gIGdlbmVyYXRlaW52b2ljZUxpc3Q6IGFueSA9IFtdXHJcbiAgJGdlbmVyYXRlaW52b2ljZUludGVycnVwdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcclxuICAkc2VuZHBheW1lbnRJbnRlcnJ1cHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXHJcbiAgb3BlbmFjY29yZGlhbiA9IGZhbHNlO1xyXG4gIGJyYW5kTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc2VhcmNoSW5wdXQ6IGFueTtcclxuICBnc3ROdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGJpbGxpbmdBZGRyZXNzOiBzdHJpbmcgPSAnJztcclxuICBwcmljaW5ncGxhbjogc3RyaW5nID0gJ3N0YW5kYXJkJztcclxuICBkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGludm9pY2Vkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBheW1lbnR0eXBlZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJyZW5jeWRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmlld3BsYW5kcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb2R1Y3R0cmFpbGRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25JdGVtczogYW55W10gPSBbeyBuYW1lOiAnTW9udGhseScsIHZhbHVlOiAnbW9udGhseScgfSwgeyBuYW1lOiAnUXVhdGVybHknLCB2YWx1ZTogJ3F1YXRlcmx5JyB9LCB7IG5hbWU6ICdBbm51YWwnLCB2YWx1ZTogJ2FubnVhbCcgfV07XHJcbiAgZ2VuZXJhdGVpbnZvaWNlb246IGFueVtdID0gW3sgbmFtZTogJ0xhc3QgRGF5IG9mIHRoZSBNb250aCcsIHZhbHVlOiAnbGFzdGRheScgfSwgeyBuYW1lOiAnMjV0aCBvZiB0aGUgTW9udGgnLCB2YWx1ZTogJzI1dGgnIH1dO1xyXG4gIHBheW1lbnR0eXBlOiBhbnlbXSA9IFt7IG5hbWU6ICdPbmxpbmUgUGF5bWVudCcsIHZhbHVlOiAnb25saW5lJyB9LCB7IG5hbWU6ICdCYW5rIFRyYW5zZmVyJywgdmFsdWU6ICdiYW5rdHJhbnNmZXInIH1dO1xyXG4gIGN1cnJlbmN5dHlwZTogYW55W10gPSBbeyBuYW1lOiAnSU5SJywgdmFsdWU6ICdpbnInIH0sIHsgbmFtZTogJ0RvbGxlcicsIHZhbHVlOiAnZG9sbGVyJyB9XTtcclxuICB2aWV3cGxhbnR5cGU6IGFueVtdID0gWydQcm9kdWN0IExldmVsIFZpZXcnLCAnU3RvcmUgTGV2ZWwgVmlldyddO1xyXG4gIHByb2R1Y3R0cmFpbHR5cGU6IGFueVtdID0gWydFeHRlbmQgVHJhaWwnLCAnU3Vic2NyaWJlIFByb2R1Y3QnXTtcclxuICBzZWxlY3RlZElzc3VlOiBhbnkgPSAnTW9udGhseSc7XHJcbiAgaW52b2ljZW9uSXNzdWU6IGFueSA9ICdMYXN0IERheSBvZiB0aGUgTW9udGgnO1xyXG4gIHBheW1lbnRJc3N1ZTogYW55ID0gJ29ubGluZSc7XHJcbiAgY3VycmVuY3lJc3N1ZTogYW55ID0gJ0lOUic7XHJcbiAgdmlld3BsYW5Jc3N1ZTogYW55ID0gJ1Byb2R1Y3QgTGV2ZWwgVmlldyc7XHJcbiAgcHJvZHVjdHRyYWlsSXNzdWU6IGFueSA9ICdFeHRlbmQgVHJhaWwnO1xyXG4gIHByaWNlVmFsdWVEZXRhaWxzOiBhbnk7XHJcbiAgb3JpZ2luYWxQcmljZVZhbHVlOiBhbnk7XHJcbiAgcHJvZHVjdExpc3Q6IGFueSA9IFtdO1xyXG4gIHN0b3JlTGlzdDogYW55ID0gW107XHJcbiAgZGF0YU9iamVjdDogYW55ID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1Byb2R1Y3RzJywgSXNzdWVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1N0b3JlJywgSXNzdWVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ0xvY2F0aW9uJywgSXNzdWVzOiBbXSB9LFxyXG4gIF07XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBkeW5hbWljRGF0YTogYW55ID0ge1xyXG4gICAgbGltaXQ6IDEwLFxyXG4gICAgb2Zmc2V0OiAxLFxyXG4gICAgY2xpZW50SWQ6IFwiXCIsXHJcbiAgICBzZWFyY2hWYWx1ZTogXCJcIixcclxuICAgIHNvcnRDb2x1bW46ICcnLFxyXG4gICAgc29ydEJ5OiAnJyxcclxuICAgIHByb2R1Y3Q6IFtdLFxyXG4gICAgc3RvcmU6IFtdLFxyXG4gICAgbG9jYXRpb246IFtdXHJcbiAgfVxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkU3RvcmVMaXN0OiBhbnkgPSBbXTtcclxuICBzdG9yZVByb2R1Y3Q6IGFueTtcclxuICBub3RpZmljYXRpb25EZXRhaWxzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50UGxhbjogc3RyaW5nID0gJ2ZyZWUnO1xyXG4gIHBheW1lbnRpbnZvaWNlaW5mbzogYW55O1xyXG4gIHJlcXVlc3REYXRhOiBhbnlcclxuICBpc0V4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwXHJcbiAgY3VycmVudFBhZ2UgPSAxXHJcbiAgdG90YWxJdGVtcyA9IDBcclxuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF1cclxuICBwYWdlU2l6ZSA9IDEwXHJcbiAgaXNGaWx0ZXIgPSAnY3VycmVudCc7XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGwgPSAnJztcclxuICBpbnZvaWNlTGlzdDogYW55ID0gW107XHJcbiAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IDA7XHJcbiAgcGF5bWVudGludm9pY2VzaG93OiBib29sZWFuID0gdHJ1ZVxyXG4gIHJhZGlvYnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmFkaW9vcHRpb25zOiBhbnkgPSAnYmVmb3JlMTUnXHJcbiAgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xyXG4gIGF1dGggPSB0cnVlO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbj10cnVlO1xyXG4gIG5vRGF0YTpib29sZWFuID1mYWxzZTtcclxuICBwcmljZU5vRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpY2VMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydENvbHVtTmFtZTpzdHJpbmc9XCJpbnZvaWNlXCI7XHJcbiAgc29ydEJ5Om51bWJlcj0xO1xyXG4gIGludm9pY2VOb0RhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGludm9pY2VMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoRGlzYWJsZWQ6YW55ID0gZmFsc2VcclxuICB1c2VyVHlwZTphbnkgPSAnJztcclxuICBkaXNhYmxlZEFkZEljb246Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIFBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlOiBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSwgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnBheW1lbnRpbnZvaWNlRm9ybURhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICBpZiAocmVzLnR5cGUgPT09ICdpbnB1dCcgJiYgcmVzLmZvcm0gPT09ICdwYXltZW50LWludm9pY2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmdldHBheW1lbnRpbnZvaWNlKHJlcy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudHBsYW5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHN0b3JlY291bnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGF2Z3NxZnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGNhbWVyYWNvdW50OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICByYWRpb29wdGlvbnM6IFsnYmVmb3JlMTUnLCBWYWxpZGF0b3JzLnJlcXVpcmVkLF0sXHJcbiAgICAgIHBheW1lbnRjeWNsZTogWydtb250aGx5JywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGludm9pY2VUbzogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBnZW5lcmF0ZWludm9pY2VvbjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGF5bWVudHR5cGU6IFsnb25saW5lJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGN1cnJlbmN5OiBbJ2lucicsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwYXltZW50QWdyZWVtZW50VG86IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IFsxLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhLmNsaWVudDtcclxuICAgICAgICB0aGlzLmR5bmFtaWNEYXRhLmNsaWVudElkID0gdGhpcy5jbGllbnRJZFxyXG4gICAgICAgIHRoaXMuZ3MudXNlckFjY2Vzcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChkYXRhOmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJUeXBlID0gZGF0YS51c2VyVHlwZTtcclxuICAgICAgICAgICAgaWYoZGF0YS51c2VyVHlwZSA9PSAndGFuZ28nKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRQcmljaW5nKCdzdGFuZGFyZCcpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckxpc3QoKTtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuY2xpZW50QmlsbGluZ0luZm8odGhpcy5jbGllbnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRwYXltZW50aW52b2ljZSh0aGlzLmNsaWVudElkKTtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5kaXNhYmxlKClcclxuICAgICAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdpbnZvaWNlVG8nKT8udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJGdlbmVyYXRlaW52b2ljZUludGVycnVwdC5waXBlKG1hcCgoaW50ZXJydXB0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50ZXJydXB0ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGdlbmVyYXRlaW52b2ljZUludGVycnVwdC5uZXh0KCcnKVxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlaW52b2ljZUxpc3QucHVzaCh2YWwpXHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnaW52b2ljZVRvJyk/LnNldFZhbHVlKCcnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnJ1cHQgPT09ICdCYWNrc3BhY2UnICYmICF2YWwgJiYgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlaW52b2ljZUxpc3QucG9wKClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgfSlcclxuICAgICkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgpXHJcblxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdwYXltZW50QWdyZWVtZW50VG8nKT8udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHNlbmRwYXltZW50SW50ZXJydXB0LnBpcGUobWFwKChpbnRlcnJ1cHQpID0+IHtcclxuICAgICAgICAgIGlmIChpbnRlcnJ1cHQgPT09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgdGhpcy4kc2VuZHBheW1lbnRJbnRlcnJ1cHQubmV4dCgnJylcclxuICAgICAgICAgICAgdGhpcy5wYXltZW50YWxsb3dlZExpc3QucHVzaCh2YWwpXHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncGF5bWVudEFncmVlbWVudFRvJyk/LnNldFZhbHVlKCcnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnJ1cHQgPT09ICdCYWNrc3BhY2UnICYmICF2YWwgJiYgdGhpcy5wYXltZW50YWxsb3dlZExpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LnBvcCgpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICByZWNlaXZlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEuZm9yRWFjaCgoaXRlbTphbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uRGVzY3JpcHRpb24gPT0gJ1Byb2R1Y3RzJykge1xyXG4gICAgICAgIGxldCBwcm9kdWN0ID0gaXRlbS5Jc3N1ZXMubWFwKChwcm9kdWN0OmFueSkgPT4gcHJvZHVjdC50ZXh0KTtcclxuICAgICAgICB0aGlzLmR5bmFtaWNEYXRhLnByb2R1Y3QgPSBwcm9kdWN0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdTdG9yZScpIHtcclxuICAgICAgICBsZXQgc3RvcmUgPSBpdGVtLklzc3Vlcy5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmlkKTtcclxuICAgICAgICB0aGlzLmR5bmFtaWNEYXRhLnN0b3JlID0gc3RvcmU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uRGVzY3JpcHRpb24gPT0gJ0xvY2F0aW9uJykge1xyXG4gICAgICAgIGxldCBsb2NhdGlvbiA9IGl0ZW0uSXNzdWVzLm1hcCgobG9jYXRpb246IGFueSkgPT4gbG9jYXRpb24udGV4dCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5sb2NhdGlvbiA9IGxvY2F0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFBsYW4ocGxhbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5wcmljZU5vRGF0YT0gZmFsc2U7XHJcbiAgICBpZihwbGFuID09ICdzdWJzY3JpcHRpb24nKSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFByaWNpbmcoJ3N0YW5kYXJkJylcclxuICAgIH1cclxuICAgIHRoaXMucGxhbiA9IHBsYW47XHJcbiAgICB0aGlzLnZpZXdwbGFuSXNzdWUgPSBcIlByb2R1Y3QgTGV2ZWwgVmlld1wiXHJcbiAgfVxyXG5cclxuICBzZWxlY3RQcmljZVBsYW4ocHJpY2luZ3BsYW46IHN0cmluZykge1xyXG4gICAgdGhpcy5wcmljaW5ncGxhbiA9IHByaWNpbmdwbGFuO1xyXG4gICAgdGhpcy5nZXRQcmljaW5nKHByaWNpbmdwbGFuKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENvbG9yQ2xhc3MocHJvZHVjdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAocHJvZHVjdCkge1xyXG4gICAgICBjYXNlICd0YW5nb1RyYWZmaWMnOiByZXR1cm4gJ2JhZGdlIHByb2R1Y3QtdHJhZmZpYyBteC0xJztcclxuICAgICAgY2FzZSAndGFuZ29ab25lJzogcmV0dXJuICdiYWRnZSBwcm9kdWN0LXpvbmUgbXgtMSc7XHJcbiAgICAgIGNhc2UgJ3RhbmdvU29wJzogcmV0dXJuICdiYWRnZSBwcm9kdWN0LXNvcCBteC0xJztcclxuICAgICAgY2FzZSAncHJpb3JpdHlTdXBwb3J0JzogcmV0dXJuICdiYWRnZSBwcmlvcml0eXN1cHBvcnQgbXgtMSc7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEl0ZW0odmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZElzc3VlID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdkcm9wZG93bkl0ZW1zJyk/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJc3N1ZSlcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGludm9pY2VJdGVtKGludm9pY2V2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmludm9pY2Vvbklzc3VlID0gaW52b2ljZXZhbHVlO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdnZW5lcmF0ZWludm9pY2VvbicpPy5zZXRWYWx1ZSh0aGlzLmludm9pY2Vvbklzc3VlKVxyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHBheW1lbnRJdGVtKHBheW1lbnR2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnBheW1lbnRJc3N1ZSA9IHBheW1lbnR2YWx1ZTtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncGF5bWVudHR5cGUnKT8uc2V0VmFsdWUodGhpcy5wYXltZW50SXNzdWUpXHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGN1cnJlbmN5SXRlbShjdXJyZW5jeXZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVuY3lJc3N1ZSA9IGN1cnJlbmN5dmFsdWU7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2N1cnJlbmN5dHlwZScpPy5zZXRWYWx1ZSh0aGlzLmN1cnJlbmN5SXNzdWUpXHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb2R1Y3R0cmFpbEl0ZW0ocHJvZHVjdHRyYWlsdmFsdWU6IGFueSwgZGF0YTogYW55KSB7XHJcblxyXG4gICAgaWYgKHByb2R1Y3R0cmFpbHZhbHVlID09ICdFeHRlbmQgVHJhaWwnKSB7XHJcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUcmFpbFNldHRpbmdzQ29tcG9uZW50LCB7XHJcbiAgICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZXR0aW5nc3ZhbHVlID0gcHJvZHVjdHRyYWlsdmFsdWU7XHJcbiAgICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LnRpdGxlID09ICd0cmFpbGV4dGVuZCcpIHtcclxuICAgICAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgICBkYXlzOiByZXN1bHQuY291bnQsXHJcbiAgICAgICAgICAgIHByb2R1Y3Q6IGRhdGEucHJvZHVjdFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS50cmlhbEV4dGVudEFwcHJvdmFsKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChgJHtkYXRhLm5hbWV9IHRyaWFsIGV4dGVuZGVkIHN1Y2Nlc3NmdWxseWApO1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChwcm9kdWN0dHJhaWx2YWx1ZSA9PSAnU3Vic2NyaWJlIFByb2R1Y3QnKSB7XHJcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUcmFpbFNldHRpbmdzQ29tcG9uZW50LCB7XHJcbiAgICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZXR0aW5nc3ZhbHVlID0gcHJvZHVjdHRyYWlsdmFsdWU7XHJcbiAgICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ID09ICdzdWJzY3JpYmVkJykge1xyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHByb2R1Y3Q6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3Vic2NyaXB0aW9uJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEucHJvZHVjdFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS51cGRhdGVQcm9kdWN0KHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChgJHtkYXRhLm5hbWV9IHN1Y2Nlc3NmdWxseSBhZGRlZCB0byB0aGUgcHJvZHVjdCBzdWJzY3JpcHRpb24gbGlzdC5gKTtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9kdWN0dHJhaWxJc3N1ZSA9IHByb2R1Y3R0cmFpbHZhbHVlO1xyXG4gICAgdGhpcy5wcm9kdWN0dHJhaWxkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdmlld3BsYW5JdGVtKHZpZXdwbGFudmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy52aWV3cGxhbklzc3VlID0gdmlld3BsYW52YWx1ZTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICBpZiAodmlld3BsYW52YWx1ZSA9PSAnUHJvZHVjdCBMZXZlbCBWaWV3Jykge1xyXG4gICAgICB0aGlzLmdldFByb2R1Y3RMaXN0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld3BsYW5kcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgY29uc3QgcmVzcG9uc2VEYXRhID0ge1xyXG4gICAgICBicmFuZE5hbWU6IHRoaXMuY2xpZW50aW5mby5jbGllbnROYW1lLFxyXG4gICAgICBnc3ROdW1iZXI6IHRoaXMuY2xpZW50aW5mby5iaWxsaW5nRGV0YWlscy5nc3ROdW1iZXIsXHJcbiAgICAgIGJpbGxpbmdBZGRyZXNzOiB0aGlzLmNsaWVudGluZm8uYmlsbGluZ0RldGFpbHMuYmlsbGluZ0FkZHJlc3MsXHJcbiAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWRcclxuICAgIH07XHJcbiAgICBsZXQgbW9kZWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFVwZGF0ZUNvbXBvbmVudCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyB9KTtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLm1vZGFsRGF0YSA9IHJlc3BvbnNlRGF0YTtcclxuICAgIG1vZGVsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRpbmZvLmJpbGxpbmdEZXRhaWxzLmJpbGxpbmdBZGRyZXNzID0gcmVzdWx0LmJpbGxpbmdBZGRyZXNzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5lZWRoZWxwKCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5lZWRIZWxwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLFxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgIGlmKCB0aGlzLnVzZXJUeXBlID09ICd0YW5nbycpXHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGdyYWRlcGxhbigpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVcGdyYWRlUGxhbkNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJ1xyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGNyZWRpdG5vdGUoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQ3JlZGl0Tm90ZUNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgc2Nyb2xsYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gJ3N1Y2Nlc3NjcmVkaXQnKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ1RoZSBpbnZvaWNlIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHJlc3BlY3RpdmUgZW1haWwgSURzIHdpdGggdGhlIGRpc2NvdW50LicpO1xyXG4gICAgICAgIHRoaXMuaW52b2ljZVRhYmxlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcmljaW5ncmV2aXNlZCgpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihQcmljaW5nUmV2aXNlZENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2Nyb2xsYWJsZTogdHJ1ZSwgc2l6ZTogJ2xnJ1xyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wcm9kdWN0TmV3RGV0YWlscyA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHM7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wcm9kdWN0T2xkRGV0YWlscyA9IHRoaXMub3JpZ2luYWxQcmljZVZhbHVlO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzYXZlJykge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICB0eXBlOiB0aGlzLnByaWNpbmdwbGFuLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICBwcm9kdWN0czogdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UudXBkYXRlUHJpY2luZyhwYXJhbXMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KCdSZXZpc2VkIHByaWNlIGxpc3QgaGFzIGJlZW4gc2VudCB0byB0aGUgZW1haWwgbGlzdCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmljaW5nVHlwZShldmVudDogYW55LCBwcmljaW5nOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gcHJpY2luZztcclxuICAgIHRoaXMucmFkaW9vcHRpb25zID0gcHJpY2luZ1xyXG4gIH1cclxuICBcclxuICBvbktleURvd24oZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuJGdlbmVyYXRlaW52b2ljZUludGVycnVwdC5uZXh0KGV2ZW50LmNvZGUpXHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnNwbGljZShpLCAxKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRvbktleURvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy4kc2VuZHBheW1lbnRJbnRlcnJ1cHQubmV4dChldmVudC5jb2RlKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRyZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYXltZW50YWxsb3dlZExpc3Quc3BsaWNlKGksIDEpXHJcbiAgfVxyXG5cclxuICBjbGllbnRCaWxsaW5nSW5mbyhpZDogYW55KSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmNsaWVudEJpbGxpbmdJbmZvKGlkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50aW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGludm9pY2VEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSAhdGhpcy5pbnZvaWNlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBwYXltZW50dHlwZURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9ICF0aGlzLnBheW1lbnR0eXBlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBjdXJyZW5jeURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9ICF0aGlzLmN1cnJlbmN5ZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2aWV3cGxhbkRyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudmlld3BsYW5kcm9wRG93biA9ICF0aGlzLnZpZXdwbGFuZHJvcERvd247XHJcbiAgfVxyXG4gIFxyXG4gIHByb2R1Y3R0cmFpbERyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdFtpbmRleF0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAhdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3RbaW5kZXhdLnByb2R1Y3R0cmFpbGRyb3BEb3duXHJcbiAgfVxyXG5cclxuICBza2lwdHJhaWwoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2tpcFRyYWlsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3Vic2NyaWJlZCcpIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnPCBUYW5nbyBTT1AgPiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIGxpc3QuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRzdGVwcHJpY2UoZGF0YTogYW55LCBwcm9kdWN0OiBhbnkgPSB7fSwgaW5kZXg6IGFueSA9IC0xKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkU3RlcHByaWNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGF0YSA9PSAnYWRkJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiQWRkIFN0ZXAgUHJpY2VcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlZGVzY3JpcHRpb24gPSBcIlBsZWFzZSBlbnRlciBubyBvZiBzdG9yZSAgdG8gYmUgYWRkZWQgaW4gbmV4dCBzdGVwIHByaWNlIGluIGludGVydmFscyBcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlaWNvbiA9IFwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcGx1cy1pY29uLnN2Z1wiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VidXR0b24gPSBcIkFwcGx5XCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZWRpdCcpIHtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNldGl0bGUgPSBcIkVkaXQgU3RlcCBQcmljZVwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VkZXNjcmlwdGlvbiA9IFwiUGxlYXNlIGVudGVyIG5vIG9mIHN0b3JlICB0byBiZSBhZGRlZCBpbiBuZXh0IHN0ZXAgcHJpY2UgaW4gaW50ZXJ2YWxzIFwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VpY29uID0gXCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9lZGl0LWljb24uc3ZnXCI7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0ZXBwcmljZWJ1dHRvbiA9IFwiVXBkYXRlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZGVsZXRlJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiZGVsZXRlXCI7XHJcbiAgICB9XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0FkZCBTdGVwIFByaWNlJykge1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHMgPSBbLi4ubmV3IFNldCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZW0ucHJvZHVjdE5hbWUpKV1cclxuICAgICAgICBmb3IobGV0IGRhdGEgb2YgcHJvZHVjdHMpIHtcclxuICAgICAgICAvLyBwcm9kdWN0cy5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBwcm9kdWN0RGV0YWlscyA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5maW5kKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ucHJvZHVjdE5hbWUgPT0gZGF0YSAmJiBpdGVtPy5sYXN0SW5kZXgpIHtcclxuICAgICAgICAgICAgICBpdGVtLmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGxldCBpbmRleCA9IHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgZGVsZXRlIHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwcm9kdWN0RGV0YWlscztcclxuICAgICAgICAgIGxldCByYW5nZSA9IGl0ZW0uc3RvcmVSYW5nZS5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgbGV0IGRpZmZlciA9IChwYXJzZUludChyYW5nZVsxXSkgLSBwYXJzZUludChyYW5nZVswXSkpICsgMTtcclxuICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmxhc3RJbmRleDtcclxuICAgICAgICAgIC8vIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc2hvd0VkaXREZWxldGUgPSBmYWxzZTtcclxuICAgICAgICAgIGxldCBuZXdJdGVtID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgICBsZXQgbmV3U3RhcnRSYW5nZSA9IHBhcnNlSW50KHJhbmdlWzFdKSArIDE7XHJcbiAgICAgICAgICBsZXQgbmV3RW5kUmFuZ2UgPSBuZXdTdGFydFJhbmdlICsgcGFyc2VJbnQocmVzdWx0LmludHJhdmVsKSAtIDE7XHJcblxyXG4gICAgICAgICAgbmV3SXRlbS5zaG93SW1nID0gdHJ1ZVxyXG4gICAgICAgICAgbmV3SXRlbS5zaG93RWRpdERlbGV0ZSA9IHRydWVcclxuICAgICAgICAgIG5ld0l0ZW0ubGFzdEluZGV4ID0gdHJ1ZTtcclxuICAgICAgICAgIG5ld0l0ZW0uc3RvcmVDb3VudCA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudCAtIGRpZmZlcjtcclxuXHJcbiAgICAgICAgICBpZihuZXdJdGVtLnN0b3JlQ291bnQgPCAwKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVsZXRlIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubGFzdEluZGV4O1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zaG93RWRpdERlbGV0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbmV3SXRlbS5wcmljZSA9IG5ld0l0ZW0uc3RvcmVDb3VudCAqIChuZXdJdGVtLmJhc2VQcmljZSAtIG5ld0l0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQgPSBkaWZmZXI7XHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50ICogdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZTtcclxuXHJcbiAgICAgICAgICBuZXdJdGVtLnN0b3JlUmFuZ2UgPSBuZXdTdGFydFJhbmdlLnRvU3RyaW5nKCkgKyAnLScgKyBuZXdFbmRSYW5nZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LnNwbGljZShpbmRleCArIDEsIDAsIG5ld0l0ZW0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIClcclxuICAgICAgICBsZXQgcHJpY2UgPSAwO1xyXG4gICAgICAgIGxldCBhY3R1YWxQcmljZSA9IDA7XHJcbiAgICAgICAgbGV0IG5lZ290aWF0ZVByaWNlID0gMDtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBwcmljZSA9IHByaWNlICsgaXRlbS5wcmljZTtcclxuICAgICAgICAgIGFjdHVhbFByaWNlID0gYWN0dWFsUHJpY2UgKyBpdGVtLmJhc2VQcmljZTtcclxuICAgICAgICAgIG5lZ290aWF0ZVByaWNlID0gbmVnb3RpYXRlUHJpY2UgKyBpdGVtLm5lZ290aWF0ZVByaWNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlLnRvRml4ZWQoMik7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSA9IGFjdHVhbFByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIGxldCBnc3RBbW91bnQgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgKiAoMTggLyAxMDApO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IChwYXJzZUZsb2F0KHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSkgKyBnc3RBbW91bnQpLnRvRml4ZWQoMik7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5kaXNjb3VudFBlcmNlbnRhZ2UgPSAoKHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgL3RoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UpICogMTAwKS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UgIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZTtcclxuXHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoJ1N0ZXAgUHJpY2UgaGFzIGJlZW4gYWRkZWQgc3VjY2Vzc2Z1bGx5LicpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdC50aXRsZSA9PSAnRWRpdCBTdGVwIFByaWNlJykge1xyXG4gICAgICAgIGxldCByYW5nZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVSYW5nZS5zcGxpdCgnLScpO1xyXG4gICAgICAgIGxldCBlbmQgPSBwYXJzZUludChyYW5nZVswXSkgKyAocGFyc2VJbnQocmVzdWx0LmludHJhdmVsKSAtIDEpO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVSYW5nZSA9IHJhbmdlWzBdLnRvU3RyaW5nKCkgKyAnLScgKyBlbmQudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnU3RlcCBQcmljZSBoYXMgYmVlbiBVcGRhdGVkIHN1Y2Nlc3NmdWxseS4nKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXggLSAxXS5zdG9yZUNvdW50ID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudCArIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudDtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXggLSAxXS5wcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLm5lZ290aWF0ZVByaWNlICogdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudDtcclxuXHJcbiAgICAgICAgbGV0IHByb2R1Y3RJbmZvID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZpbHRlcigoKGl0ZW06IGFueSkgPT4gaXRlbS5wcm9kdWN0TmFtZSA9PSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByb2R1Y3ROYW1lKSlcclxuICAgICAgICBpZiAocHJvZHVjdEluZm8ubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc2hvd0ltZyA9IHRydWVcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnNob3dFZGl0RGVsZXRlID0gdHJ1ZVxyXG4gICAgICAgICAgLy8gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubGFzdEluZGV4ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubGFzdEluZGV4ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgbGV0IHByaWNlID0gMDtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBwcmljZSA9IHByaWNlICsgaXRlbS5wcmljZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlID0gcHJpY2UudG9GaXhlZCgyKTtcclxuICAgICAgICBsZXQgZ3N0QW1vdW50ID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlICogKDE4IC8gMTAwKTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmZpbmFsVmFsdWUgPSAocGFyc2VGbG9hdCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UpICsgZ3N0QW1vdW50KS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQZXJjZW50YWdlID0gKCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlIC90aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlKSAqIDEwMCkudG9GaXhlZCgyKTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmRpc2NvdW50UHJpY2UgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlICAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2U7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdDb2x1bW4gZGVsZXRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZldHJpYWwoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgdHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5hcHByb3ZlVHJpYWwocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gdHJpYWwgaGFzIGJlZW4gYXBwcm92ZWQgc3VjY2Vzc2Z1bGx5LmApXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhcHByb3ZlVW5zdWJzY3JpYmUoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVbnN1YnNjcmliZVJlcXVlc3RDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50TmFtZSA9IHRoaXMuY2xpZW50aW5mby5jbGllbnROYW1lO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICd1bnN1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgICAgIHR5cGU6IHR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaXJjbGVDaGFydChkYXRhOiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBpZCA9ICdwcm9ncmVzcy1jaXJjbGUtJyArIGluZGV4O1xyXG4gICAgbGV0IHRleHQgPSAncGVyY2VudGFnZS10ZXh0LScgKyBpbmRleDtcclxuICAgIGNvbnN0IHByb2dyZXNzQ2lyY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgY29uc3QgcGVyY2VudGFnZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXh0KTtcclxuICAgIGlmIChwcm9ncmVzc0NpcmNsZSAmJiBwZXJjZW50YWdlVGV4dCkge1xyXG4gICAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gTWF0aC5QSSAqIDIgKiBwYXJzZUZsb2F0KHByb2dyZXNzQ2lyY2xlLmdldEF0dHJpYnV0ZSgncicpISk7XHJcbiAgICAgIGNvbnN0IGRhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2U7XHJcbiAgICAgIGNvbnN0IGRhc2hvZmZzZXQgPSBjaXJjdW1mZXJlbmNlIC0gKGRhdGEgLyAxMDApICogY2lyY3VtZmVyZW5jZTtcclxuXHJcbiAgICAgIHByb2dyZXNzQ2lyY2xlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIGRhc2hhcnJheS50b1N0cmluZygpKTtcclxuICAgICAgcHJvZ3Jlc3NDaXJjbGUuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaG9mZnNldCcsIGRhc2hvZmZzZXQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICBwZXJjZW50YWdlVGV4dC50ZXh0Q29udGVudCA9IGAke2RhdGF9JWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcmljaW5nKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5wcmljZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscyA9ICcnO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgcHJpY2VUeXBlOiBkYXRhLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRQcmljZURldGFpbHMocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHJlcy5kYXRhLnByb2R1Y3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmljZVZhbHVlRGV0YWlscykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnByaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LChlcnJvcjphbnkpID0+IHtcclxuICAgICAgdGhpcy5wcmljZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlKGluZGV4OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgaWYodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5kaXNjb3VudFBlcmNlbnRhZ2UgPCAwIHx8IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubmVnb3RpYXRlUHJpY2UgPCAwIHx8aXNOYU4odGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSkgfHwgaXNOYU4odGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5kaXNjb3VudFBlcmNlbnRhZ2UpKSB7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zaG93RGlzY291bnRFcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnNob3dOZWdvdGlhdGVFcnJvciA9IGZhbHNlO1xyXG4gICAgICBpZiAodHlwZSA9PSAnZGlzY291bnQnKSB7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uZGlzY291bnRQZXJjZW50YWdlIC8gMTAwKSlcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSAqIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uZGlzY291bnRQZXJjZW50YWdlID0gKCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlIC8gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UpICogMTAwKS50b0ZpeGVkKDIpXHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5wcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubmVnb3RpYXRlUHJpY2UgKiB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnRcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmVnb3RpYXRlUHJpY2UgPSAwO1xyXG4gICAgICBsZXQgcHJpY2UgPSAwO1xyXG4gIFxyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcHJpY2UgPSBwcmljZSArIGl0ZW0ucHJpY2U7XHJcbiAgICAgICAgbmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZSArIHBhcnNlSW50KGl0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICAgIH0pXHJcbiAgXHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZS50b0ZpeGVkKDIpO1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgPSBwcmljZS50b0ZpeGVkKDIpO1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmRpc2NvdW50UGVyY2VudGFnZSA9ICgodGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSAvdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSkgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UgIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZTtcclxuICAgICAgbGV0IGdzdEFtb3VudCA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSAqICgxOCAvIDEwMClcclxuICAgICAgXHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IChwYXJzZUZsb2F0KHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSkgKyBnc3RBbW91bnQpLnRvRml4ZWQoMik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgfVxyXG4gIFxyXG4gIGdldHBheW1lbnRpbnZvaWNlKGlkOiBhbnkpIHtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0cGF5bWVudGludm9pY2UoaWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5wYXltZW50aW52b2ljZWluZm8gPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLnBheW1lbnRJc3N1ZSA9IHJlcy5kYXRhLnBheW1lbnR0eXBlO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3lJc3N1ZSA9IHJlcy5kYXRhLmN1cnJlbmN5VHlwZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSByZXMuZGF0YS5wYXltZW50Q3ljbGU7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlb25Jc3N1ZSA9IHJlcy5kYXRhLmludm9pY2VPbjtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ3JhZGlvb3B0aW9ucycpPy5zZXRWYWx1ZShyZXMuZGF0YS5wcm9SYXRlKTtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5wYXRjaFZhbHVlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBmaWxlVHlwZTogcmVzLmRhdGEuZmlsZVR5cGUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9XHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICB0aGlzLmdlbmVyYXRlaW52b2ljZUxpc3QgPSByZXMuZGF0YT8uaW52b2ljZVRvXHJcbiAgICAgICAgdGhpcy5wYXltZW50YWxsb3dlZExpc3QgPSByZXMuZGF0YT8ucGF5bWVudEFncmVlbWVudFRvXHJcbiAgICAgICAgdGhpcy5leHRlbmRQYXltZW50UGVyaW9kRGF5cyA9IHJlcy5kYXRhPy5leHRlbmRQYXltZW50UGVyaW9kRGF5c1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25wYXltZW50U3VibWl0KCkge1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSB0cnVlXHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgcHJvUmF0ZTogdGhpcy5yYWRpb29wdGlvbnMsXHJcbiAgICAgIHBheW1lbnR0eXBlOiB0aGlzLnBheW1lbnRJc3N1ZSxcclxuICAgICAgcGF5bWVudEN5Y2xlOiB0aGlzLnNlbGVjdGVkSXNzdWUsXHJcbiAgICAgIGN1cnJlbmN5VHlwZTogdGhpcy5jdXJyZW5jeUlzc3VlLFxyXG4gICAgICBpbnZvaWNlVG86IHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdCxcclxuICAgICAgcGF5bWVudEFncmVlbWVudFRvOiB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdCxcclxuICAgICAgaW52b2ljZU9uOiB0aGlzLmludm9pY2Vvbklzc3VlLFxyXG4gICAgICBleHRlbmRQYXltZW50UGVyaW9kRGF5czogdGhpcy5leHRlbmRQYXltZW50UGVyaW9kRGF5cyxcclxuICAgIH07XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmludm9pY2V1cGRhdGUocmVxdWVzdERhdGEsIHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QocmVzLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB0aGlzLm9ucGF5bWVudENhbmNlbCgpXHJcblxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIHVwZGF0ZTonLCBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRDYW5jZWwoKSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnBheW1lbnRpbnZvaWNlRm9ybURhdGEubmV4dCh7IHZhbHVlOiBudWxsLCB0eXBlOiAnY2FuY2VsJywgZm9ybTogJ3BheW1lbnQtaW52b2ljZScgfSlcclxuICAgIHRoaXMucGF5bWVudGludm9pY2VzaG93ID0gdHJ1ZVxyXG4gICAgdGhpcy5nZXRwYXltZW50aW52b2ljZSh0aGlzLmNsaWVudElkKTtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmRpc2FibGUoKVxyXG4gIH1cclxuXHJcbiAgb25wYXltZW50ZWRpdCgpIHtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2VzaG93ID0gZmFsc2VcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZSgpXHJcbiAgfVxyXG5cclxuICBpbnZvaWNlVGFibGVEYXRhKCkge1xyXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5pc0ZpbHRlcixcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBleHBvcnQ6IGZhbHNlLFxyXG4gICAgICBzb3J0Q29sdW1uOnRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OnRoaXMuc29ydEJ5XHJcbiAgICB9XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmludm9pY2VUYWJsZURhdGEoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgXHJcbiAgICAgIG5leHQ6IChlKSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChlPy5kYXRhPy5jb3VudCkge1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW52b2ljZU5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IGUuZGF0YT8uZGF0YVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWFyY2hJbnB1dD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IFtdXHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwXHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZUxpc3QgPSBbXVxyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbkV4cG9ydCgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5pc0ZpbHRlcixcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBleHBvcnQ6IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YUV4cG9ydChmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2ludm9pY2UnKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgaW52b2ljZUZpbHRlcigpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgc29ydERhdGEoKSB7XHJcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5pbnZvaWNlVGFibGVEYXRhKClcclxuICB9XHJcblxyXG4gIHNlYXJjaEZpZWxkKCkge1xyXG4gICAgdGhpcy5pbnZvaWNlVGFibGVEYXRhKClcclxuICB9XHJcblxyXG4gIHJldmVydE9yaWdpbmFsUHJpY2UoKSB7XHJcbiAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZSkpXHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0TGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgaWQ6dGhpcy5jbGllbnRJZCxcclxuICAgICAgc29ydENvbHVtbjonc3RvcmVDb3VudCcsXHJcbiAgICAgIHNvcnRCeTp0aGlzLnNvcnRCeVxyXG4gICAgfTtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0UHJvZHVjdExpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmdldFN0b3JlTGlzdCh0aGlzLmR5bmFtaWNEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMuc3RvcmVMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5jaGVja2VkID0gdGhpcy5zZWxlY3RBbGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25TdG9yZVBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSBwYXJzZUludChldmVudCk7XHJcbiAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZVBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSBwYXJzZUludChldmVudCk7XHJcbiAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyTGlzdCgpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0RmlsdGVyRGV0YWlscyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHJlcy5kYXRhLnN0b3JlLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzdG9yZXNJbmRleCA9IHRoaXMuZGF0YU9iamVjdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PSAnU3RvcmUnKTtcclxuICAgICAgICAgIGlmIChzdG9yZXNJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3Rbc3RvcmVzSW5kZXhdLklzc3Vlcy5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBzdG9yZS5zdG9yZU5hbWUsXHJcbiAgICAgICAgICAgICAgaWQ6IHN0b3JlLnN0b3JlSWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICByZXMuZGF0YS5sb2NhdGlvbi5mb3JFYWNoKChsb2NhdGlvbjogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IHRoaXMuZGF0YU9iamVjdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PSAnTG9jYXRpb24nKTtcclxuICAgICAgICAgIGlmIChsb2NhdGlvbkluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFtsb2NhdGlvbkluZGV4XS5Jc3N1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogbG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgaWQ6IGluZGV4XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgcmVzLmRhdGEucHJvZHVjdC5mb3JFYWNoKChwcm9kdWN0OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBwcm9kdWN0SW5kZXggPSB0aGlzLmRhdGFPYmplY3QuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT0gJ1Byb2R1Y3RzJyk7XHJcbiAgICAgICAgICBpZiAocHJvZHVjdEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFtwcm9kdWN0SW5kZXhdLklzc3Vlcy5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBwcm9kdWN0LFxyXG4gICAgICAgICAgICAgIGlkOiBpbmRleFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICB9XHJcblxyXG4gIHNlYXJjaFJlY29yZHMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5zZWFyY2hWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxTdG9yZShldmVudDogYW55KSB7XHJcbiAgICBsZXQgc3RvcmVJZExpc3Q7IFxyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHN0b3JlSWRMaXN0ID0gdGhpcy5kYXRhT2JqZWN0WzFdLklzc3Vlcy5tYXAoKGl0ZW06YW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgc3RvcmU6IFtdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5zdG9yZVByb2R1Y3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSByZXMuZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc3RvcmVJZExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0QWxsID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnN0b3JlTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaXRlbS5jaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWRcclxuICAgIH0pXHJcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0ID0gc3RvcmVJZExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFN0b3JlTGlzdFxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2soZXZlbnQ6IGFueSwgc3RvcmVJZDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5wdXNoKHN0b3JlSWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbSA9PT0gc3RvcmVJZCk7XHJcbiAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVMaXN0Lmxlbmd0aCA9PSB0aGlzLnRvdGFsQ291bnQpXHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkU3RvcmVMaXN0Lmxlbmd0aCA+ICAxKVxyXG4gICAgICB0aGlzLmRpc2FibGVkQWRkSWNvbiA9IHRydWU7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGlzYWJsZWRBZGRJY29uID0gZmFsc2U7XHJcbiAgICBcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc3RvcmU6IHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3RcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc3RvcmVQcm9kdWN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZVByb2R1Y3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3QoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5sZW5ndGggfHwgdGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcmVQcm9kdWN0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgbm90aWZpY2F0aW9uTGlzdCgpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscyA9IFtdO1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb24oZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMgPSByZXMuZGF0YTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSByZXMuZGF0YS5jdXJyZW50UGxhbjtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbmNlbFVuc3Vic2NyaWJlKGRhdGE6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZGF0YS5faWQsXHJcbiAgICAgIHR5cGU6IHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuYXBwcm92ZUNhbmNlbFVuc3Vic2NyaWJlKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVuc3Vic2NyaWJlQXBwcm92YWwoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICBpZiAoZGF0YS50eXBlID09ICd1bnN1YnNjcmliZScpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGBVbnN1YnNjcmliZWQgVGFuZ28gU3VpdGUgZm9yICR7dGhpcy5jbGllbnRpbmZvLmNsaWVudE5hbWV9IHN1Y2Nlc3NmdWxseWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVsb2FkKGV2ZW50OmFueSkge1xyXG4gICAgaWYoZXZlbnQgPT0gJ3N0b3JlJykge1xyXG4gICAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQgPT0gJ3Byb2R1Y3QnKSB7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFVwcGVyKGRhdGE6c3RyaW5nKSB7XHJcbiAgICBsZXQgW2ZpcnN0V29yZCwgc2Vjb25kV29yZF0gPSBkYXRhLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpLnNwbGl0KCcgJyk7XHJcbiAgICBmaXJzdFdvcmQgPSBmaXJzdFdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBmaXJzdFdvcmQuc2xpY2UoMSk7XHJcbiAgICByZXR1cm4gZmlyc3RXb3JkICsgJyAnICsgc2Vjb25kV29yZDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgaWYgKHRoaXMucGF5bWVudHR5cGVkcm9wRG93bikge1xyXG4gICAgdGhpcy5wYXltZW50dHlwZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYgKHRoaXMuZHJvcERvd24pIHtcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgfVxyXG4gICBpZiAodGhpcy5jdXJyZW5jeWRyb3BEb3duKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICAgfVxyXG4gICBpZiAodGhpcy5pbnZvaWNlZHJvcERvd24pIHtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYgKHRoaXMudmlld3BsYW5kcm9wRG93bikge1xyXG4gICAgdGhpcy52aWV3cGxhbmRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYodGhpcy5ub3RpZmljYXRpb25EZXRhaWxzPy5ub3RpZmljYXRpb25MaXN0KSB7XHJcbiAgICAgdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3QuZm9yRWFjaCgoaXRlbTphbnkpPT57XHJcbiAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAgZmFsc2VcclxuICAgICB9KVxyXG4gICB9XHJcbiAgfVxyXG5cclxuICBpbmNyZWFzZUNvdW50KCkge1xyXG4gICAgbGV0IGN1cnJlbnRWYWx1ZSA9IHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnZXh0ZW5kUGF5bWVudFBlcmlvZERheXMnKT8udmFsdWU7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnNldFZhbHVlKGN1cnJlbnRWYWx1ZSArIDEpO1xyXG4gICAgdGhpcy5leHRlbmRQYXltZW50UGVyaW9kRGF5cyA9IHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnZXh0ZW5kUGF5bWVudFBlcmlvZERheXMnKT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBzb3J0U3RvcmVTaXplKCkge1xyXG4gICAgdGhpcy5zb3J0QnkgKj0gLTE7XHJcbiAgICB0aGlzLmdldFByb2R1Y3RMaXN0KClcclxuICB9XHJcblxyXG4gIGdldFByaWNlRXJyb3IodmFsdWU6YW55KSB7XHJcbiAgICBpZih2YWx1ZSA+IDAgJiYgIWlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PSAwKXtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZSAge1xyXG4gICAgICByZXR1cm4gJ2Vycm9yJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkSW52b2ljZShkYXRhOmFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5pbnZvaWNlRG93bmxvYWQoZGF0YSkuc3Vic2NyaWJlKChyZXM6YW55KT0+IHtcclxuICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXNdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJztcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gW2Nsb3NlT3RoZXJzXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPCEtLSBCaWxsaW5nICYgc3Vic2NyaXB0aW9uIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiIG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCJvcGVuYWNjb3JkaWFuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5CaWxsaW5nICYgU3Vic2NyaXB0aW9uPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6cGxhbiBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3RjYXJkIGNvbC1tZC0xMiBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5wYXltZW50U3RhdHVzPT09J2R1ZScgJiYgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5kdWVMaW1pdFJlYWNoZWQ9PT1mYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTMwcHggbWUtNVwiPjxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9kYW5nZXItYWxlcnQtcHJpbWFyeS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2FzdHRleHQgZC1ibG9ja1wiPktpbmQgUmVtaW5kZXI6IFlvdSBoYXZlIGEgcmVhY2hlZCB5b3VyIGR1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCAsVG8gY29udGludWUgZW5qb3lpbmcgb3VyIHNlcnZpY2VzLCBwbGVhc2UgcmVuZXcgeW91ciBzdWJzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgbWFraW5nIHRoZSBwYXltZW50LiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGEgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPjxzcGFuIGNsYXNzPVwiY3JlYXRlXCI+UGF5IE5vd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3RjYXJkIGNvbC1tZC0xMiBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5wYXltZW50U3RhdHVzPT09J2R1ZScgJiYgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5kdWVMaW1pdFJlYWNoZWQ9PT10cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzBweCBtZS01XCI+PHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1hbGVydC1wcmltYXJ5LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvYXN0dGV4dCBkLWJsb2NrXCI+S2luZCBSZW1pbmRlcjogV2UgaGF2ZW4ndCByZWNlaXZlZCB5b3VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnQgeWV0LiBUbyBjb250aW51ZSBlbmpveWluZyBvdXIgc2VydmljZXMsIHBsZWFzZSByZW5ldyB5b3VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiBieSBtYWtpbmcgdGhlIHBheW1lbnQuIFRoYW5rIHlvdSBmb3IgeW91clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29wZXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YSB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+PHNwYW4gY2xhc3M9XCJjcmVhdGVcIj5QYXkgTm93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBib3JkZXItdmFsIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IFBsYW4gSW5mbzxzcGFuIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5wcmljZVR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcmljaW5ndGV4dCBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5IHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5wcmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fTxzcGFuIGNsYXNzPVwicHJpY2luZ3NwYW4gbXMtMlwiPlN0b3JlL01vbnRoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBmbGV4LWNvbHVtbiBwbGFuY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGhlYWRpbmcgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3Vic2NyaXB0aW9uVHlwZVwiPnt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdWJzY3JpcHRpb25UeXBlIHwgdGl0bGVjYXNlfX08L3NwYW4+IDxzcGFuICpuZ0lmPVwiIWNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3Vic2NyaXB0aW9uVHlwZVwiPi0tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbiAtIHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdG9yZUNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViaGVhZGluZyBtcy0yXCI+c3RvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmJvYXJkZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3sgcHJvZHVjdC50b29sVGlwIH19XCIgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy50cmlhbFByb2R1Y3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5hbGlzZVByb2R1Y3ROYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9jbG9ja2V4cGlyeS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IHByb2R1Y3QudG9vbFRpcCB9fVwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmV4cGlyZWRQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcHJpbWFyeS1jbG9jay1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBkLWJsb2NrXCI+Q2FtZXJhcyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8udG90YWxDYW1lcmFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fSB8IEF2ZyBzcS5mdCA6IHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdG9yZVNpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fSBzcS5mdCB8IFByb2R1Y3RzIDogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmxpdmVQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXggYWxpZ24taXRlbXMtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIWNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGVuZGluZ0NsaWVudFJlcXVlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlJlcXVlc3QgaXMgQWxyZWFkeSBpbml0aWF0ZWQgd2FpdGluZyBmb3IgYWRtaW4gYXBwcm92YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCIgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGVuZGluZ0NsaWVudFJlcXVlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuZWVkaGVscCgpXCIgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPjxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTk2NV8yMzAxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy41NzUzMyA3LjUwMDMzQzcuNzcxMjUgNi45NDMzOCA4LjE1Nzk1IDYuNDczNzUgOC42NjY5NSA2LjE3NDZDOS4xNzU5NiA1Ljg3NTQ2IDkuNzc0NDEgNS43NjYxMSAxMC4zNTYzIDUuODY1OTJDMTAuOTM4MiA1Ljk2NTczIDExLjQ2NiA2LjI2ODI2IDExLjg0NjIgNi43MTk5M0MxMi4yMjY0IDcuMTcxNiAxMi40MzQ1IDcuNzQzMjYgMTIuNDMzNyA4LjMzMzY2QzEyLjQzMzcgMTAuMDAwMyA5LjkzMzY2IDEwLjgzMzcgOS45MzM2NiAxMC44MzM3TTEwLjAwMDMgMTQuMTY3SDEwLjAwODdNMTguMzMzNyAxMC4wMDAzQzE4LjMzMzcgMTQuNjAyNyAxNC42MDI3IDE4LjMzMzcgMTAuMDAwMyAxOC4zMzM3QzUuMzk3OTUgMTguMzMzNyAxLjY2Njk5IDE0LjYwMjcgMS42NjY5OSAxMC4wMDAzQzEuNjY2OTkgNS4zOTc5NSA1LjM5Nzk1IDEuNjY2OTkgMTAuMDAwMyAxLjY2Njk5QzE0LjYwMjcgMS42NjY5OSAxOC4zMzM3IDUuMzk3OTUgMTguMzMzNyAxMC4wMDAzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5NjVfMjMwMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj4gTmVlZCBIZWxwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVwZ3JhZGVwbGFuKClcIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIHVwZGF0ZSBidG4tbGcgYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPjxzcGFuIGNsYXNzPVwiY3JlYXRlXCI+VXBncmFkZSBQbGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpwbGFuIGRldGFpbHMgQ2FyZC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGd4LTQgbXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdjYXJkIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYmlsbGluZ3RleHQgbWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYW5rIERldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPlBheW1lbnQgVHlwZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+VmlydHVhbCBBY2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5BY2NvdW50IE5vIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+IHt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LmFjY291bnRObyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPklGU0MgQ29kZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+IHt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/Lmlmc2NDb2RlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5TV0lGVCBDb2RlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ21haW5cIj4ge3tjbGllbnRpbmZvPy5iYW5rRGV0YWlscz8uc3dpZnRDb2RlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+QnJhbmNoIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+e3tjbGllbnRpbmZvPy5iYW5rRGV0YWlscz8uYnJhbmNoIHx8ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC01IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGQgQmlsbGluZyBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmcgaC14bC0xMDAgdy0xMDAgZmxleC1yb3cgZmxleC1zdGFjayBmbGV4LXdyYXAgcC02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9hZGRiaWxsaW5nX2ljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgbXQtNCBtcy0xXCI+QWRkIGJpbGxpbmcgYWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC04IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJ1cGRhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtcy0yIG5nLXN0YXItaW5zZXJ0ZWQgYWRkcmVzcyB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXRcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAzIDQuMTY2NzVWMTUuODMzNE00LjE2Njk5IDEwLjAwMDFIMTUuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IE5ldyBBZGRyZXNzIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGQgQmlsbGluZyBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdjYXJkIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzcyAmJiBjbGllbnRpbmZvPy5iaWxsaW5nRGV0YWlscz8uYmlsbGluZ0FkZHJlc3MhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gYmlsbGluZ3RleHQgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWxsaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwidXBkYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gdXBkYXRlIGJ0bi1sZyBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB4LTQgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZTwvc3Bhbj48L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5OZXh0IEJpbGxpbmcgRGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ21haW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uYmlsbGluZ0RldGFpbHM/Lm5leHRCaWxsaW5nRGF0ZSB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlciBtdC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPkJpbGxpbmcgQWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ21haW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uYmlsbGluZ0RldGFpbHM/LmJpbGxpbmdBZGRyZXNzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCaWxsaW5nIEluZm9ybWF0aW9uIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBCaWxsaW5nICYgc3Vic2NyaXB0aW9uIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgIDwhLS1zdWJzY3JpcHRpb24gQ29uZmlnIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbSAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyAmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbiAoY2xpY2spPVwibm90aWZpY2F0aW9uTGlzdCgpXCI+U3Vic2NyaXB0aW9uIENvbmZpZyA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIG14LTUgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBpbmZvIGhlYWRlciBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dOYXZHcm91cFwiIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbic/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJzdWJzY3JpcHRpb25cIiAoY2xpY2spPVwic2VsZWN0UGxhbignc3Vic2NyaXB0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwbGFuID09PSAncHJpY2luZyc/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJwcmljaW5nXCIgKGNsaWNrKT1cInNlbGVjdFBsYW4oJ3ByaWNpbmcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gaW5mbyBoZWFkZXIgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIHRhYiBzdGFydHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIiBbbmdDbGFzc109XCJpID4gMT8gJ210LTUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3Q7bGV0IGk9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCaWxsaW5nIEluZm9ybWF0aW9uIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmlsbGluZ2NhcmQgaC14bC0xMDAgZmxleC1yb3cgZmxleC1zdGFjayBmbGV4LXdyYXAgbWItNiBweC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uLmNhdGVnb3J5ID09PSAnVHJpYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLm5hbWV9fSA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+e3tjdXJyZW50UGxhbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5LaW5kbHkgbWFrZSBuZWNlc3NhcnkgYWN0aW9uIGZvciB0cmlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBvciBza2lwIHByb2R1Y3QgdG8gc3Vic2NyaXB0aW9uIGxpc3Q8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggbXQtMTVcIj48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHByb3ZldHJpYWwobm90aWZpY2F0aW9uLCdjYW5jZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNiBtdC0zXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC02XCI+U2tpcCBUcmFpbDwvc3Bhbj48L2E+PGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92ZXRyaWFsKG5vdGlmaWNhdGlvbiwnYXBwcm92ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW4+QXBwcm92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0xMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uLmNhdGVnb3J5ID09PSAndW5zdWJzY3JpYmUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuc3Vic2NyaWJlIFJlcXVlc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0XCI+Q2xpZW50IGhhcyByZXF1ZXN0ZWQgdG8gdW5zdWJzY3JpYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGV4dGJvbGRcIj5UYW5nbyBTdWl0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IG10LTIwXCI+PGEgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNiBtdC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsVW5zdWJzY3JpYmUobm90aWZpY2F0aW9uLCdjYW5jZWwnKVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNlwiPkNhbmNlbDwvc3Bhbj48L2E+PGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92ZVVuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiwndW5zdWJzY3JpYmUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW4+QXBwcm92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uLmNhdGVnb3J5ID09PSAndHJpYWwgcHJvZHVjdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxldmVsdmlld3RleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tub3RpZmljYXRpb24ubmFtZX19IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZS1saWdodC1ncmV5IG1zLTJcIj57e2N1cnJlbnRQbGFuIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGV4dFwiPllvdSB3aWxsIG5vdCBiZSBiaWxsZWQgZHVyaW5nIHlvdXIgZnJlZSA8c3BhbiBjbGFzcz1cInN1YnRleHRib2xkXCI+dHJpYWw8L3NwYW4+LlRvIGtlZXAgeW91ciBwcm9qZWN0cyBydW5uaW5nIGFmdGVyIHRoZSB0cmlhbCBlbmQsIHVwZ3JhZGUgdG8gYSBwYWlkIG9wdGlvbi48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3ZnIGlkPVwiY2lyY2xlLWNoYXJ0XCIgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJhY2tncm91bmQgY2lyY2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjZjBmMGYwXCIgc3Ryb2tlLXdpZHRoPVwiOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcmVncm91bmQgY2lyY2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cInByb2dyZXNzLWNpcmNsZS17e2l9fVwiIGN4PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwN2JmZlwiIHN0cm9rZS13aWR0aD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCIyNTEuMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hvZmZzZXRdPVwidXBkYXRlQ2lyY2xlQ2hhcnQobm90aWZpY2F0aW9uLnBlcmNlbnRhZ2UsaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2lyY2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZXh0IGRpc3BsYXlpbmcgcGVyY2VudGFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0IGlkPVwicGVyY2VudGFnZS10ZXh0LXt7aX19XCIgeD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5PVwiNTRcIiBjbGFzcz1cInByb2R1Y3R0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMzMzMzMzNcIj57e25vdGlmaWNhdGlvbi5wZXJjZW50YWdlfX0lPC90ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQganVzdGlmeS1jb250ZW50LWJldHdlZW4gZGF5c2xlZnQgbXMtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLmRheX19IERheXMgTGVmdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQgdHJhaWwgbXQtNCBtZS0xNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZSB0cmlhbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwicHJvZHVjdHRyYWlsRHJvcGRvd24oJGV2ZW50LGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZCBjdXJzb3ItcG9pbnRlciBtcy0yMFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI2MFwiIGhlaWdodD1cIjYwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA2MCA2MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNTIyMV82MDE0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjU2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NlwiIHJ4PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCI1NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTVcIiByeD1cIjcuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTIyMV82MDE0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwIDMyQzMxLjY1NjkgMzIgMzMgMzAuNjU2OSAzMyAyOUMzMyAyNy4zNDMxIDMxLjY1NjkgMjYgMzAgMjZDMjguMzQzMSAyNiAyNyAyNy4zNDMxIDI3IDI5QzI3IDMwLjY1NjkgMjguMzQzMSAzMiAzMCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNy40IDMyQzM3LjI2NjkgMzIuMzAxNiAzNy4yMjcyIDMyLjYzNjIgMzcuMjg2IDMyLjk2MDZDMzcuMzQ0OCAzMy4yODUgMzcuNDk5NSAzMy41ODQzIDM3LjczIDMzLjgyTDM3Ljc5IDMzLjg4QzM3Ljk3NiAzNC4wNjU3IDM4LjEyMzUgMzQuMjg2MyAzOC4yMjQxIDM0LjUyOTFDMzguMzI0OCAzNC43NzE5IDM4LjM3NjYgMzUuMDMyMiAzOC4zNzY2IDM1LjI5NUMzOC4zNzY2IDM1LjU1NzggMzguMzI0OCAzNS44MTgxIDM4LjIyNDEgMzYuMDYwOUMzOC4xMjM1IDM2LjMwMzcgMzcuOTc2IDM2LjUyNDMgMzcuNzkgMzYuNzFDMzcuNjA0MyAzNi44OTYgMzcuMzgzNyAzNy4wNDM1IDM3LjE0MDkgMzcuMTQ0MUMzNi44OTgxIDM3LjI0NDggMzYuNjM3OCAzNy4yOTY2IDM2LjM3NSAzNy4yOTY2QzM2LjExMjIgMzcuMjk2NiAzNS44NTE5IDM3LjI0NDggMzUuNjA5MSAzNy4xNDQxQzM1LjM2NjMgMzcuMDQzNSAzNS4xNDU3IDM2Ljg5NiAzNC45NiAzNi43MUwzNC45IDM2LjY1QzM0LjY2NDMgMzYuNDE5NSAzNC4zNjUgMzYuMjY0OCAzNC4wNDA2IDM2LjIwNkMzMy43MTYyIDM2LjE0NzIgMzMuMzgxNiAzNi4xODY5IDMzLjA4IDM2LjMyQzMyLjc4NDIgMzYuNDQ2OCAzMi41MzIgMzYuNjU3MiAzMi4zNTQzIDM2LjkyNTVDMzIuMTc2NiAzNy4xOTM4IDMyLjA4MTMgMzcuNTA4MiAzMi4wOCAzNy44M1YzOEMzMi4wOCAzOC41MzA0IDMxLjg2OTMgMzkuMDM5MSAzMS40OTQyIDM5LjQxNDJDMzEuMTE5MSAzOS43ODkzIDMwLjYxMDQgNDAgMzAuMDggNDBDMjkuNTQ5NiA0MCAyOS4wNDA5IDM5Ljc4OTMgMjguNjY1OCAzOS40MTQyQzI4LjI5MDcgMzkuMDM5MSAyOC4wOCAzOC41MzA0IDI4LjA4IDM4VjM3LjkxQzI4LjA3MjMgMzcuNTc5IDI3Ljk2NTEgMzcuMjU4IDI3Ljc3MjUgMzYuOTg4N0MyNy41Nzk5IDM2LjcxOTQgMjcuMzEwNyAzNi41MTQzIDI3IDM2LjRDMjYuNjk4NCAzNi4yNjY5IDI2LjM2MzggMzYuMjI3MiAyNi4wMzk0IDM2LjI4NkMyNS43MTUgMzYuMzQ0OCAyNS40MTU3IDM2LjQ5OTUgMjUuMTggMzYuNzNMMjUuMTIgMzYuNzlDMjQuOTM0MyAzNi45NzYgMjQuNzEzNyAzNy4xMjM1IDI0LjQ3MDkgMzcuMjI0MUMyNC4yMjgxIDM3LjMyNDggMjMuOTY3OCAzNy4zNzY2IDIzLjcwNSAzNy4zNzY2QzIzLjQ0MjIgMzcuMzc2NiAyMy4xODE5IDM3LjMyNDggMjIuOTM5MSAzNy4yMjQxQzIyLjY5NjMgMzcuMTIzNSAyMi40NzU3IDM2Ljk3NiAyMi4yOSAzNi43OUMyMi4xMDQgMzYuNjA0MyAyMS45NTY1IDM2LjM4MzcgMjEuODU1OSAzNi4xNDA5QzIxLjc1NTIgMzUuODk4MSAyMS43MDM0IDM1LjYzNzggMjEuNzAzNCAzNS4zNzVDMjEuNzAzNCAzNS4xMTIyIDIxLjc1NTIgMzQuODUxOSAyMS44NTU5IDM0LjYwOTFDMjEuOTU2NSAzNC4zNjYzIDIyLjEwNCAzNC4xNDU3IDIyLjI5IDMzLjk2TDIyLjM1IDMzLjlDMjIuNTgwNSAzMy42NjQzIDIyLjczNTIgMzMuMzY1IDIyLjc5NCAzMy4wNDA2QzIyLjg1MjggMzIuNzE2MiAyMi44MTMxIDMyLjM4MTYgMjIuNjggMzIuMDhDMjIuNTUzMiAzMS43ODQyIDIyLjM0MjggMzEuNTMyIDIyLjA3NDUgMzEuMzU0M0MyMS44MDYyIDMxLjE3NjYgMjEuNDkxOCAzMS4wODEzIDIxLjE3IDMxLjA4SDIxQzIwLjQ2OTYgMzEuMDggMTkuOTYwOSAzMC44NjkzIDE5LjU4NTggMzAuNDk0MkMxOS4yMTA3IDMwLjExOTEgMTkgMjkuNjEwNCAxOSAyOS4wOEMxOSAyOC41NDk2IDE5LjIxMDcgMjguMDQwOSAxOS41ODU4IDI3LjY2NThDMTkuOTYwOSAyNy4yOTA3IDIwLjQ2OTYgMjcuMDggMjEgMjcuMDhIMjEuMDlDMjEuNDIxIDI3LjA3MjMgMjEuNzQyIDI2Ljk2NTEgMjIuMDExMyAyNi43NzI1QzIyLjI4MDYgMjYuNTc5OSAyMi40ODU3IDI2LjMxMDcgMjIuNiAyNkMyMi43MzMxIDI1LjY5ODQgMjIuNzcyOCAyNS4zNjM4IDIyLjcxNCAyNS4wMzk0QzIyLjY1NTIgMjQuNzE1IDIyLjUwMDUgMjQuNDE1NyAyMi4yNyAyNC4xOEwyMi4yMSAyNC4xMkMyMi4wMjQgMjMuOTM0MyAyMS44NzY1IDIzLjcxMzcgMjEuNzc1OSAyMy40NzA5QzIxLjY3NTIgMjMuMjI4MSAyMS42MjM0IDIyLjk2NzggMjEuNjIzNCAyMi43MDVDMjEuNjIzNCAyMi40NDIyIDIxLjY3NTIgMjIuMTgxOSAyMS43NzU5IDIxLjkzOTFDMjEuODc2NSAyMS42OTYzIDIyLjAyNCAyMS40NzU3IDIyLjIxIDIxLjI5QzIyLjM5NTcgMjEuMTA0IDIyLjYxNjMgMjAuOTU2NSAyMi44NTkxIDIwLjg1NTlDMjMuMTAxOSAyMC43NTUyIDIzLjM2MjIgMjAuNzAzNCAyMy42MjUgMjAuNzAzNEMyMy44ODc4IDIwLjcwMzQgMjQuMTQ4MSAyMC43NTUyIDI0LjM5MDkgMjAuODU1OUMyNC42MzM3IDIwLjk1NjUgMjQuODU0MyAyMS4xMDQgMjUuMDQgMjEuMjlMMjUuMSAyMS4zNUMyNS4zMzU3IDIxLjU4MDUgMjUuNjM1IDIxLjczNTIgMjUuOTU5NCAyMS43OTRDMjYuMjgzOCAyMS44NTI4IDI2LjYxODQgMjEuODEzMSAyNi45MiAyMS42OEgyN0MyNy4yOTU4IDIxLjU1MzIgMjcuNTQ4IDIxLjM0MjggMjcuNzI1NyAyMS4wNzQ1QzI3LjkwMzQgMjAuODA2MiAyNy45OTg3IDIwLjQ5MTggMjggMjAuMTdWMjBDMjggMTkuNDY5NiAyOC4yMTA3IDE4Ljk2MDkgMjguNTg1OCAxOC41ODU4QzI4Ljk2MDkgMTguMjEwNyAyOS40Njk2IDE4IDMwIDE4QzMwLjUzMDQgMTggMzEuMDM5MSAxOC4yMTA3IDMxLjQxNDIgMTguNTg1OEMzMS43ODkzIDE4Ljk2MDkgMzIgMTkuNDY5NiAzMiAyMFYyMC4wOUMzMi4wMDEzIDIwLjQxMTggMzIuMDk2NiAyMC43MjYyIDMyLjI3NDMgMjAuOTk0NUMzMi40NTIgMjEuMjYyOCAzMi43MDQyIDIxLjQ3MzIgMzMgMjEuNkMzMy4zMDE2IDIxLjczMzEgMzMuNjM2MiAyMS43NzI4IDMzLjk2MDYgMjEuNzE0QzM0LjI4NSAyMS42NTUyIDM0LjU4NDMgMjEuNTAwNSAzNC44MiAyMS4yN0wzNC44OCAyMS4yMUMzNS4wNjU3IDIxLjAyNCAzNS4yODYzIDIwLjg3NjUgMzUuNTI5MSAyMC43NzU5QzM1Ljc3MTkgMjAuNjc1MiAzNi4wMzIyIDIwLjYyMzQgMzYuMjk1IDIwLjYyMzRDMzYuNTU3OCAyMC42MjM0IDM2LjgxODEgMjAuNjc1MiAzNy4wNjA5IDIwLjc3NTlDMzcuMzAzNyAyMC44NzY1IDM3LjUyNDMgMjEuMDI0IDM3LjcxIDIxLjIxQzM3Ljg5NiAyMS4zOTU3IDM4LjA0MzUgMjEuNjE2MyAzOC4xNDQxIDIxLjg1OTFDMzguMjQ0OCAyMi4xMDE5IDM4LjI5NjYgMjIuMzYyMiAzOC4yOTY2IDIyLjYyNUMzOC4yOTY2IDIyLjg4NzggMzguMjQ0OCAyMy4xNDgxIDM4LjE0NDEgMjMuMzkwOUMzOC4wNDM1IDIzLjYzMzcgMzcuODk2IDIzLjg1NDMgMzcuNzEgMjQuMDRMMzcuNjUgMjQuMUMzNy40MTk1IDI0LjMzNTcgMzcuMjY0OCAyNC42MzUgMzcuMjA2IDI0Ljk1OTRDMzcuMTQ3MiAyNS4yODM4IDM3LjE4NjkgMjUuNjE4NCAzNy4zMiAyNS45MlYyNkMzNy40NDY4IDI2LjI5NTggMzcuNjU3MiAyNi41NDggMzcuOTI1NSAyNi43MjU3QzM4LjE5MzggMjYuOTAzNCAzOC41MDgyIDI2Ljk5ODcgMzguODMgMjdIMzlDMzkuNTMwNCAyNyA0MC4wMzkxIDI3LjIxMDcgNDAuNDE0MiAyNy41ODU4QzQwLjc4OTMgMjcuOTYwOSA0MSAyOC40Njk2IDQxIDI5QzQxIDI5LjUzMDQgNDAuNzg5MyAzMC4wMzkxIDQwLjQxNDIgMzAuNDE0MkM0MC4wMzkxIDMwLjc4OTMgMzkuNTMwNCAzMSAzOSAzMUgzOC45MUMzOC41ODgyIDMxLjAwMTMgMzguMjczOCAzMS4wOTY2IDM4LjAwNTUgMzEuMjc0M0MzNy43MzcyIDMxLjQ1MiAzNy41MjY4IDMxLjcwNDIgMzcuNCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaWx0ZXIwX2RfNTIyMV82MDE0M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjYwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluPVwiU291cmNlQWxwaGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTIyMV82MDE0M1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluPVwiU291cmNlR3JhcGhpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd181MjIxXzYwMTQzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81MjIxXzYwMTQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDE4IDE3KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uLnByb2R1Y3R0cmFpbGRyb3BEb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMjAwcHggcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHByb2R1Y3R0cmFpbGl0ZW0gb2YgcHJvZHVjdHRyYWlsdHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZHVjdHRyYWlsSXRlbShwcm9kdWN0dHJhaWxpdGVtLG5vdGlmaWNhdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twcm9kdWN0dHJhaWxpdGVtfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxldmVsIHZpZXcgZHJvcGRvd24gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1YmxldmVsdmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGhlYWRpbmcgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VsZWN0IGxldmVsdmlld3RleHRcIiBpZD1cImN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld3BsYW5Ecm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7dmlld3BsYW5Jc3N1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld3BsYW5kcm9wRG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCB2aWV3cGxhbml0ZW0gb2Ygdmlld3BsYW50eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMudmlld3BsYW5Jc3N1ZSA9PT0gdmlld3BsYW5pdGVtID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld3BsYW5JdGVtKHZpZXdwbGFuaXRlbSlcIj57e3ZpZXdwbGFuaXRlbX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3ViXCI+QmFzZWQgb24gQ3VycmVudCBTdWJzY3JpYmVkIFByb2R1Y3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwbGFuID09PSAnc3Vic2NyaXB0aW9uJyAmJiB2aWV3cGxhbklzc3VlID09PSAnUHJvZHVjdCBMZXZlbCBWaWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93biB0ZXh0PVwiQWRkIFByb2R1Y3RzXCIgW3Byb2R1Y3RdPVwicHJvZHVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdExpc3RdPVwiZGF0YU9iamVjdFswXS5Jc3N1ZXNcIiB0eXBlPVwicHJvZHVjdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIiAoZGF0YSk9XCJyZWxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjwvbGliLW11bHRpZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdwbGFuSXNzdWUgPT09ICdTdG9yZSBMZXZlbCBWaWV3JyAmJiBwbGFuID09PSAnc3Vic2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1iLTMgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoUmVjb3JkcygkZXZlbnQpXCIgKm5nSWY9XCJzdG9yZUxpc3QubGVuZ3RoXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgY2xhc3M9XCJtZS0yXCIgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiICpuZ0lmPVwic3RvcmVMaXN0Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbGllZEZpbHRlcnMpPXJlY2VpdmVEYXRhKCRldmVudCk+PC9saWItZmlsdGVycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1tdWx0aWRyb3Bkb3duIHRleHQ9XCJBZGQgUHJvZHVjdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RMaXN0XT1cImRhdGFPYmplY3RbMF0uSXNzdWVzXCIgdHlwZT1cInN0b3Jlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RvcmVzXT1cImdldFN0b3JlcygpXCIgW3Byb2R1Y3RdPVwiZ2V0UHJvZHVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGllbnRJZF09XCJjbGllbnRJZFwiIFtjbGllbnRQcm9kdWN0XT1cInByb2R1Y3RMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKT1cInJlbG9hZCgkZXZlbnQpXCIgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUxpc3QubGVuZ3RoICYmIChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48L2xpYi1tdWx0aWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBjb25maWcgdG9vbGJhciBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJvZHVjdCBzdWJzY3JpcHRpb24gcGxhbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld3BsYW5Jc3N1ZSA9PT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldycgJiYgIWxvYWRpbmcgJiYgIW5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNvcnRTdG9yZVNpemUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gb2YgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRCeSAhPT0gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db3N0IFBlciBTdG9yZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdExpc3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgc3Vic2NyaWJlZHRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29udmVydFVwcGVyKHByb2R1Y3Q/LnByb2R1Y3QpIHx8ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdD8uc3RvcmVDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgMH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+4oK5IHt7cHJvZHVjdD8uYmFzZVByaWNlIHx8IDB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwcm9kdWN0IHN1YnNjcmlwdGlvbiBwbGFuIGVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdG9yZSBzdWJzY3JpcHRpb24gcGxhbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld3BsYW5Jc3N1ZSA9PT0gJ1N0b3JlIExldmVsIFZpZXcnICYmICFsb2FkaW5nICYmICFub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInN0b3JlaW5wdXQgbWUtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGxTdG9yZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U3RvcmUgSW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlTGlzdDtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzdG9yZWlucHV0IG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdG9yZS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUNoZWNrKCRldmVudCxzdG9yZT8uc3RvcmVJZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRhYmxlLXRpdGxlLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c3RvcmU/LnN0b3JlTmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS1zdWIgZC1ibG9jazdcIj5JRCA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmU/LnN0b3JlSWQgfHwgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlPy5zdG9yZVByb2ZpbGU/LmNpdHkgfHwgJy0tJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic3RvcmU/LnByb2R1Y3QgJiYgc3RvcmU/LnByb2R1Y3QubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdDtsZXQgaT1pbmRleDtcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaTwyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPnt7cHJvZHVjdH19PC9zcGFuPjwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZS5wcm9kdWN0Lmxlbmd0aCA+IDJcIj4re3tzdG9yZT8ucHJvZHVjdC5sZW5ndGgtMn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIXN0b3JlPy5wcm9kdWN0IHx8ICFzdG9yZT8ucHJvZHVjdC5sZW5ndGhcIj4gLS0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RdPVwic3RvcmU/LnByb2R1Y3QgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RMaXN0XT1cImRhdGFPYmplY3RbMF0uSXNzdWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdG9yZXNcIiBbc3RvcmVzXT1cIltzdG9yZT8uc3RvcmVJZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWVudElkXT1cImNsaWVudElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGllbnRQcm9kdWN0XT1cInByb2R1Y3RMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKT1cInJlbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFkZEljb25cIj48L2xpYi1tdWx0aWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cImR5bmFtaWNEYXRhLmxpbWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJkeW5hbWljRGF0YS5vZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxDb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwiWzEwLDIwLDMwXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZHluYW1pY0RhdGEubGltaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25TdG9yZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25TdG9yZVBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3RvcmUgc3Vic2NyaXB0aW9uIHBsYW4gZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiB0YWIgc3RhcnRzIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1wcmljaW5nIHRhYiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwbGFuID09PSAncHJpY2luZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB5LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBsZXZlbHZpZXd0ZXh0IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgVGFibGU8YnI+PHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YlwiPkJhc2VkIG9uIFByb2R1Y3QgJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jlczwvc3Bhbj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3R0ZXh0XCI+U3dpdGNoIHRvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlByaWNpbmdzaG93TmF2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtZ3JvdXAgbmF2LWdyb3VwLW91dGxpbmUgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tY29sb3ItZ3JheS02MDAgYnRuLWFjdGl2ZSBidG4tYWN0aXZlLXNlY29uZGFyeSBweC02IHB5LTMgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcmljaW5ncGxhbiA9PT0gJ3N0YW5kYXJkJz8gJ2FjdGl2ZVBsYW5CdG5wcmltYXJ5JzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJzdGFuZGFyZHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmljZVBsYW4oJ3N0YW5kYXJkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkIFByaWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInByaWNpbmdwbGFuID09PSAnc3RlcCc/ICdhY3RpdmVQbGFuQnRucHJpbWFyeSc6J2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1wbGFuPVwic3RlcHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmljZVBsYW4oJ3N0ZXAnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RlcCBQcmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJpY2luZ3BsYW4gPT09ICdzdGVwJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRzdGVwcHJpY2UoJ2FkZCcpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCB0ZXh0LW5vd3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIiBbZGlzYWJsZWRdPVwicHJpY2VOb0RhdGFcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC40OTkzIDQuMTY2NzVWMTUuODMzNE00LjY2NjAyIDEwLjAwMDFIMTYuMzMyN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkFkZCBTdGVwPC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByaWNlTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJpY2VOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJpY2luZ3BsYW4gPT09ICdzdGFuZGFyZCcgJiYgIXByaWNlTG9hZGluZyAmJiAhcHJpY2VOb0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0dWFsIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImRpc2NvdW50aGVhZGVyXCI+RGlzY291bnQgJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJuZWdoZWFkZXJcIj5OZWdvdGlhdGVkIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JbnN0YWxsZWQgU3RvcmVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Ub3RhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdDtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdHRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb252ZXJ0VXBwZXIocHJvZHVjdC5wcm9kdWN0TmFtZSl9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3twcm9kdWN0LmJhc2VQcmljZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImRpc2NvdW50cHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkaXNjb3VudHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5kaXNjb3VudFBlcmNlbnRhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjYWxjdWxhdGUoaSwnZGlzY291bnQnKVwiIFtuZ0NsYXNzXT1cInByb2R1Y3Q/LmRpc2NvdW50UGVyY2VudGFnZSAgPCAwID8gJ2Vycm9yJyA6ICcnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibmVncHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCB3LTEwMHB4IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5lZ3ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdwcmljZScpXCIgW25nQ2xhc3NdPVwicHJvZHVjdD8ubmVnb3RpYXRlUHJpY2UgPCAwID8gJ2Vycm9yJyA6ICcnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e3Byb2R1Y3Quc3RvcmVDb3VudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj7igrkge3twcm9kdWN0LnByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5Ub3RhbCBWYWx1ZTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlfX08L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZX19PC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcmljaW5ncGxhbiA9PT0gJ3N0ZXAnICYmICFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGlzY291bnQgJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbGxlZCBTdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRvdGFsIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcmljZVZhbHVlRGV0YWlscz8ucHJvZHVjdDtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbnZlcnRVcHBlcihwcm9kdWN0LnByb2R1Y3ROYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNFwiICpuZ0lmPVwicHJvZHVjdC5zaG93SW1nXCI+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2V4cGlyeS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+IOKCuSB7e3Byb2R1Y3QuYmFzZVByaWNlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZGlzY291bnRwcmljZVwiPnt7Z2V0UHJpY2VFcnJvcihwcm9kdWN0LmRpc2NvdW50UGVyY2VudGFnZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIHctMTAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkaXNjb3VudHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5kaXNjb3VudFBlcmNlbnRhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjYWxjdWxhdGUoaSwnZGlzY291bnQnKVwiIFtjbGFzc109XCJnZXRQcmljZUVycm9yKHByb2R1Y3QuZGlzY291bnRQZXJjZW50YWdlKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5lZ3ByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgdy0xMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5lZ3ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdwcmljZScpXCIgW2NsYXNzXT1cImdldFByaWNlRXJyb3IocHJvZHVjdC5uZWdvdGlhdGVQcmljZSlcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdG9yZXJhbmdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgdy0xNTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN0b3JlcmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9kdWN0LnN0b3JlUmFuZ2VcIiByZWFkb25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3twcm9kdWN0LnN0b3JlQ291bnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+IOKCuSB7e3Byb2R1Y3QucHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJvZHVjdC5zaG93RWRpdERlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuMTY2MDIgNC45OTkzNUg0LjgzMjY4TTQuODMyNjggNC45OTkzNUgxOC4xNjZNNC44MzI2OCA0Ljk5OTM1VjE2LjY2NkM0LjgzMjY4IDE3LjEwOCA1LjAwODI4IDE3LjUzMiA1LjMyMDg0IDE3Ljg0NDVDNS42MzM0IDE4LjE1NzEgNi4wNTczMiAxOC4zMzI3IDYuNDk5MzUgMTguMzMyN0gxNC44MzI3QzE1LjI3NDcgMTguMzMyNyAxNS42OTg2IDE4LjE1NzEgMTYuMDExMiAxNy44NDQ1QzE2LjMyMzggMTcuNTMyIDE2LjQ5OTMgMTcuMTA4IDE2LjQ5OTMgMTYuNjY2VjQuOTk5MzVINC44MzI2OFpNNy4zMzI2OCA0Ljk5OTM1VjMuMzMyNjhDNy4zMzI2OCAyLjg5MDY1IDcuNTA4MjggMi40NjY3MyA3LjgyMDg0IDIuMTU0MTdDOC4xMzM0IDEuODQxNjEgOC41NTczMiAxLjY2NjAyIDguOTk5MzUgMS42NjYwMkgxMi4zMzI3QzEyLjc3NDcgMS42NjYwMiAxMy4xOTg2IDEuODQxNjEgMTMuNTExMiAyLjE1NDE3QzEzLjgyMzggMi40NjY3MyAxMy45OTkzIDIuODkwNjUgMTMuOTk5MyAzLjMzMjY4VjQuOTk5MzVNOC45OTkzNSA5LjE2NjAyVjE0LjE2Nk0xMi4zMzI3IDkuMTY2MDJWMTQuMTY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC44MzIgMi41MDA5QzE1LjA1MDkgMi4yODIwMyAxNS4zMTA3IDIuMTA4NDIgMTUuNTk2NyAxLjk4OTk2QzE1Ljg4MjcgMS44NzE1MSAxNi4xODkyIDEuODEwNTUgMTYuNDk4NyAxLjgxMDU1QzE2LjgwODIgMS44MTA1NSAxNy4xMTQ3IDEuODcxNTEgMTcuNDAwNyAxLjk4OTk2QzE3LjY4NjcgMi4xMDg0MiAxNy45NDY1IDIuMjgyMDMgMTguMTY1NCAyLjUwMDlDMTguMzg0MiAyLjcxOTc3IDE4LjU1NzkgMi45Nzk2MSAxOC42NzYzIDMuMjY1NThDMTguNzk0OCAzLjU1MTU0IDE4Ljg1NTcgMy44NTgwNCAxOC44NTU3IDQuMTY3NTdDMTguODU1NyA0LjQ3NzEgMTguNzk0OCA0Ljc4MzYgMTguNjc2MyA1LjA2OTU2QzE4LjU1NzkgNS4zNTU1MyAxOC4zODQyIDUuNjE1MzcgMTguMTY1NCA1LjgzNDI0TDYuOTE1MzYgMTcuMDg0MkwyLjMzMjAzIDE4LjMzNDJMMy41ODIwMyAxMy43NTA5TDE0LjgzMiAyLjUwMDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGFibGUtdGl0bGUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0LnNob3dFZGl0RGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkc3RlcHByaWNlKCdkZWxldGUnLHByb2R1Y3QsaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuMTY2MDIgNC45OTkzNUg0LjgzMjY4TTQuODMyNjggNC45OTkzNUgxOC4xNjZNNC44MzI2OCA0Ljk5OTM1VjE2LjY2NkM0LjgzMjY4IDE3LjEwOCA1LjAwODI4IDE3LjUzMiA1LjMyMDg0IDE3Ljg0NDVDNS42MzM0IDE4LjE1NzEgNi4wNTczMiAxOC4zMzI3IDYuNDk5MzUgMTguMzMyN0gxNC44MzI3QzE1LjI3NDcgMTguMzMyNyAxNS42OTg2IDE4LjE1NzEgMTYuMDExMiAxNy44NDQ1QzE2LjMyMzggMTcuNTMyIDE2LjQ5OTMgMTcuMTA4IDE2LjQ5OTMgMTYuNjY2VjQuOTk5MzVINC44MzI2OFpNNy4zMzI2OCA0Ljk5OTM1VjMuMzMyNjhDNy4zMzI2OCAyLjg5MDY1IDcuNTA4MjggMi40NjY3MyA3LjgyMDg0IDIuMTU0MTdDOC4xMzM0IDEuODQxNjEgOC41NTczMiAxLjY2NjAyIDguOTk5MzUgMS42NjYwMkgxMi4zMzI3QzEyLjc3NDcgMS42NjYwMiAxMy4xOTg2IDEuODQxNjEgMTMuNTExMiAyLjE1NDE3QzEzLjgyMzggMi40NjY3MyAxMy45OTkzIDIuODkwNjUgMTMuOTk5MyAzLjMzMjY4VjQuOTk5MzVNOC45OTkzNSA5LjE2NjAyVjE0LjE2Nk0xMi4zMzI3IDkuMTY2MDJWMTQuMTY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImFkZHN0ZXBwcmljZSgnZWRpdCcscHJvZHVjdCxpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjgzMiAyLjUwMDlDMTUuMDUwOSAyLjI4MjAzIDE1LjMxMDcgMi4xMDg0MiAxNS41OTY3IDEuOTg5OTZDMTUuODgyNyAxLjg3MTUxIDE2LjE4OTIgMS44MTA1NSAxNi40OTg3IDEuODEwNTVDMTYuODA4MiAxLjgxMDU1IDE3LjExNDcgMS44NzE1MSAxNy40MDA3IDEuOTg5OTZDMTcuNjg2NyAyLjEwODQyIDE3Ljk0NjUgMi4yODIwMyAxOC4xNjU0IDIuNTAwOUMxOC4zODQyIDIuNzE5NzcgMTguNTU3OSAyLjk3OTYxIDE4LjY3NjMgMy4yNjU1OEMxOC43OTQ4IDMuNTUxNTQgMTguODU1NyAzLjg1ODA0IDE4Ljg1NTcgNC4xNjc1N0MxOC44NTU3IDQuNDc3MSAxOC43OTQ4IDQuNzgzNiAxOC42NzYzIDUuMDY5NTZDMTguNTU3OSA1LjM1NTUzIDE4LjM4NDIgNS42MTUzNyAxOC4xNjU0IDUuODM0MjRMNi45MTUzNiAxNy4wODQyTDIuMzMyMDMgMTguMzM0MkwzLjU4MjAzIDEzLjc1MDlMMTQuODMyIDIuNTAwOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5Ub3RhbCBWYWx1ZTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlfX08L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZX19PC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0xNFwiICpuZ0lmPVwiIXByaWNlTG9hZGluZyAmJiAhcHJpY2VOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPkFjdHVhbCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlhbmx2YWx0ZXh0XCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsQWN0dWFsUHJpY2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIHB0LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5EaXNjb3VudDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlhbmx2YWx0ZXh0XCI+e3twcmljZVZhbHVlRGV0YWlscy5kaXNjb3VudFBlcmNlbnRhZ2V9fSUgKC0gIOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLmRpc2NvdW50UHJpY2V9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+TmVnb3RpYXRlZCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlhbmx2YWx0ZXh0XCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIHB0LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5UYXg8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPjE4JSBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPkZpbmFsIFZhbHVlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWFubHZhbHRleHRcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHktM1wiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS00IG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2ZXJ0T3JpZ2luYWxQcmljZSgpXCI+Q2FuY2VsPC9hPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5ncmV2aXNlZCgpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbXQtMyBuZy1zdGFyLWluc2VydGVkXCI+PHNwYW4+U2F2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwcmljaW5nIHRhYiBwbGFuIGVuZCAtLT5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3VibWl0IHBsYW4gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N0b3Jlc3Vic2NyaXB0aW9uJ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBweS0zXCI+PGEgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNCBtdC0zXCI+Q2FuY2VsPC9hPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByaWNpbmdyZXZpc2VkKClcIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW4+QXBwbHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1Ym1pdCBwbGFuIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJvZHVjdCBpbmZvIGVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgbXktNCBiaWxsaW5nY2FyZFwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nICYmIChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc1ZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicGF5bWVudGludm9pY2Vmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHMtNCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRpdGxlLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZyBtYi0yXCI+UGF5bWVudCBhbmQgSW52b2ljZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpUaXRsZS0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VG9vbGJhci0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBtYi0yXCIgKm5nSWY9XCJwYXltZW50aW52b2ljZXNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbnBheW1lbnRlZGl0KClcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gYWxpZ24taXRlbXMtZW5kIG5lZWRoZWxwICBtZS00XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yNTc5XzI1MTI1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VG9vbGJhci0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2UgZm9ybSBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiByb3cgZnYtcm93IGZ2LXBsdWdpbnMtaWNvbi1jb250YWluZXIgcHktNCBweC00XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGF5bWVudGN5Y2xlXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+RW5hYmxlIFByby1SYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIENoYXJnZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgcHMtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5nVHlwZSgkZXZlbnQsICdiZWZvcmUxNScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb29wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyYWRpby1jdXN0b20gY3Vyc29yLXBvaW50ZXIgcmFkaW9CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgaWQ9XCJpbmxpbmVSYWRpbzFcIiB2YWx1ZT1cImJlZm9yZTE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyYWRpb29wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcmFkaW8tY3VzdG9tLWxhYmVsIG14LTMgaGVhZGluZ3RleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiaW5saW5lUmFkaW8xXCI+QmVmb3JlIDE1dGggb2YgTW9udGg8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIHBzLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ1R5cGUoJGV2ZW50LCAnYWZ0ZXIxNScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJhZGlvLWN1c3RvbSAgY3Vyc29yLXBvaW50ZXIgcmFkaW9CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaW5saW5lUmFkaW8yXCIgdmFsdWU9XCJhZnRlcjE1XCIgbmFtZT1cInJhZGlvb3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgaGVhZGluZ3RleHQgcmFkaW8tY3VzdG9tLWxhYmVsIG14LTMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiaW5saW5lUmFkaW8xXCI+QWZ0ZXIgMTV0aCBvZiBNb250aDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBheW1lbnRjeWNsZVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDeWNsZTwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VsZWN0IGRyb3BzZWxlY3RcIiBpZD1cInBheW1lbnRjeWNsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCI+e3tzZWxlY3RlZElzc3VlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9udGhseScgPyAnTW9udGhseScgOiBzZWxlY3RlZElzc3VlID09PSAncXVhdGVybHknID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1F1YXRlcmx5JyA6ICdBbm51YWwnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcERvd24gICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRyb3Bkb3duSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLnNlbGVjdGVkSXNzdWUgPT09IGl0ZW0udmFsdWUgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbS52YWx1ZSlcIj57e2l0ZW0ubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlVG9cIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5HZW5lcmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgVG8gPHNwYW4+IDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjcwNl8yNTMyNClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuOTk5NjcgMTAuNjY2M1Y3Ljk5OTY3TTcuOTk5NjcgNS4zMzMwMUg4LjAwNjM0TTE0LjY2NjMgNy45OTk2N0MxNC42NjYzIDExLjY4MTYgMTEuNjgxNiAxNC42NjYzIDcuOTk5NjcgMTQuNjY2M0M0LjMxNzc4IDE0LjY2NjMgMS4zMzMwMSAxMS42ODE2IDEuMzMzMDEgNy45OTk2N0MxLjMzMzAxIDQuMzE3NzggNC4zMTc3OCAxLjMzMzAxIDcuOTk5NjcgMS4zMzMwMUMxMS42ODE2IDEuMzMzMDEgMTQuNjY2MyA0LjMxNzc4IDE0LjY2NjMgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI3MDZfMjUzMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbnZvaWNlVG8gb2YgZ2VuZXJhdGVpbnZvaWNlTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiPnt7aW52b2ljZVRvfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwKGkpXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VUb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ2VuZXJhdGVpbnZvaWNlb25cIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5HZW5lcmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJnZW5lcmF0ZWludm9pY2VvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnZvaWNlRHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCI+e3tpbnZvaWNlb25Jc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3RkYXknID8gJ0xhc3QgRGF5IG9mIHRoZSBNb250aCcgOicyNXRoIG9mIHRoZSBNb250aCd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbnZvaWNlZHJvcERvd24gICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBpbnZvaWNlaXRlbSBvZiBnZW5lcmF0ZWludm9pY2VvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMuaW52b2ljZW9uSXNzdWUgPT09IGludm9pY2VpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnZvaWNlSXRlbShpbnZvaWNlaXRlbS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ludm9pY2VpdGVtLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXltZW50dHlwZVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJwYXltZW50dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50dHlwZURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7cGF5bWVudElzc3VlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25saW5lJyA/ICdvbmxpbmUgUGF5bWVudCcgOidCYW5rIFRyYW5zZmVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBheW1lbnR0eXBlZHJvcERvd24gJiYgIXBheW1lbnRpbnZvaWNlc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHBheW1lbnRpdGVtIG9mIHBheW1lbnR0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5wYXltZW50SXNzdWUgPT09IHBheW1lbnRpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50SXRlbShwYXltZW50aXRlbS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3BheW1lbnRpdGVtLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImN1cnJlbmN5XCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+Q3VycmVuY3k8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VsZWN0IGRyb3BzZWxlY3RcIiBpZD1cImN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbmN5RHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCI+e3tjdXJyZW5jeUlzc3VlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdJTlInIDonRG9sbGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbmN5ZHJvcERvd24gICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBjdXJyZW5jeWl0ZW0gb2YgY3VycmVuY3l0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5jdXJyZW5jeUlzc3VlID09PSBjdXJyZW5jeWl0ZW0udmFsdWUgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbmN5SXRlbShjdXJyZW5jeWl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjdXJyZW5jeWl0ZW0ubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZW5kcGF5bWVudFwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlNlbmQgUGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlbWVudDxzcGFuIGNsYXNzPVwibXMtMlwiPiA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yNzA2XzI1MzI0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyAxMC42NjYzVjcuOTk5NjdNNy45OTk2NyA1LjMzMzAxSDguMDA2MzRNMTQuNjY2MyA3Ljk5OTY3QzE0LjY2NjMgMTEuNjgxNiAxMS42ODE2IDE0LjY2NjMgNy45OTk2NyAxNC42NjYzQzQuMzE3NzggMTQuNjY2MyAxLjMzMzAxIDExLjY4MTYgMS4zMzMwMSA3Ljk5OTY3QzEuMzMzMDEgNC4zMTc3OCA0LjMxNzc4IDEuMzMzMDEgNy45OTk2NyAxLjMzMzAxQzExLjY4MTYgMS4zMzMwMSAxNC42NjYzIDQuMzE3NzggMTQuNjY2MyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjcwNl8yNTMyNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2xhYmVsPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXltZW50QWdyZWVtZW50VG8gb2YgcGF5bWVudGFsbG93ZWRMaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e3BheW1lbnRBZ3JlZW1lbnRUb319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZHBheW1lbnRyZW1vdmVDaGlwKGkpXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50QWdyZWVtZW50VG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwic2VuZHBheW1lbnRvbktleURvd24oJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIGhlYWRpbmd0ZXh0IG1iLTJcIj5FeHRlbmQgUGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmlvZCBEYXlzIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1sZy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZS15IHRvcC01MCBtZS01IHBzLTMgdGlja2V0RGF5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHRvZ2dsZS1vZmYgc3ZnLWljb24tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudGludm9pY2Vmb3JtLmdldCgnZXh0ZW5kUGF5bWVudFBlcmlvZERheXMnKT8udmFsdWUgPiAwICYmIHBheW1lbnRpbnZvaWNlZm9ybS5lbmFibGVkICA/IHBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnNldFZhbHVlKHBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnZhbHVlIC0gMSkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC4xNjY5OSAxMEgxNS44MzM3XCIgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJleHRlbmRQYXltZW50UGVyaW9kRGF5c1wiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVuZFBheW1lbnRQZXJpb2REYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZS15IHRvcC01MCBlbmQtMCBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gdG9nZ2xlLW9uIHN2Zy1pY29uLTEgdGlja2V0RGF5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZWQgID8gaW5jcmVhc2VDb3VudCgpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguNDk5NjcgMy4zMzMwMVYxMi42NjYzTTMuODMzMDEgNy45OTk2N0gxMy4xNjYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC02XCIgKm5nSWY9XCIhcGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbnBheW1lbnRDYW5jZWwoKVwiPkNhbmNlbDwvYT48YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9ucGF5bWVudFN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3Bhbj5BcHBseVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2UgZm9ybSBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2UgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIGNvbmZpZyBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tSW52b2ljZXMgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+SW52b2ljZXMgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwYXltZW50aGlzdG9yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPlBheW1lbnQgSGlzdG9yeTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gaW52b2ljZXNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4PVwiMVwiIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS00IGludm9pY2VzZWFyY2hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hGaWVsZCgpXCIgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCIvPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMyAgbW9udGh3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGludmhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBpbnZoZWFkZXJcIiBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiIFsobmdNb2RlbCldPVwiaXNGaWx0ZXJcIiAoY2hhbmdlKT1cImludm9pY2VGaWx0ZXIoKVwiIFtkaXNhYmxlZF09XCIhaW52b2ljZUxpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjdXJyZW50XCI+Q3VycmVudCBNb250aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicHJldlwiPlByZXZpb3VzIE1vbnRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXN0XCI+TGFzdCAzIE1vbnRoczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcmVkaXRub3RlKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZSAgYnRuIGFsaWduLWl0ZW1zLWVuZCBpbnZoZWFkZXIgdGV4dC1ub3dyYXAgbWUtNFwiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nICYmIChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIiBbZGlzYWJsZWRdPVwiIWludm9pY2VMaXN0Lmxlbmd0aFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjQ5OTMgNC4xNjY3NVYxNS44MzM0TTQuNjY2MDIgMTAuMDAwMUgxNi4zMzI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4+Q3JlZGl0IE5vdGU8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1lLTRcIiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0Rvd25sb2FkXCIgW2Rpc2FibGVkXT1cIiFpbnZvaWNlTGlzdC5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnQ8L2J1dHRvbj5cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW52b2ljZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludm9pY2VOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpbnZvaWNlTG9hZGluZyAmJiAhaW52b2ljZU5vRGF0YVwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzb3J0RGF0YSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2ljZSAjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnaW52b2ljZScgJiYgc29ydEJ5ICE9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnaW52b2ljZScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJpbGxpbmcgZGF0ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIj5Qcm9kdWN0czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BbW91bnQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgIT09ICd0YW5nbydcIj5QYXltZW50IE1ldGhvZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGludm9pY2Ugb2YgaW52b2ljZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgaW52b2ljZSBtYi0yXCI+e3tpbnZvaWNlPy5pbnZvaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwiWydmcmVlJywnUGF5bWVudCBSZWNlaXZlZCddLmluY2x1ZGVzKGludm9pY2U/LnN0YXR1cylcIj57e2ludm9pY2U/LnN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nXCIgKm5nSWY9XCJpbnZvaWNlPy5zdGF0dXMgPT09ICd0cmlhbCdcIj57e2ludm9pY2U/LnN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2U/LmJpbGxpbmdEYXRlfX0gPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5zdG9yZXN9fTwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+PHNwYW4gKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgaW52b2ljZT8ucHJvZHVjdHM7IGxldCBpID0gaW5kZXhcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sb3JDbGFzcyhwcm9kdWN0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaTwyXCI+e3twcm9kdWN0fX08L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPVwicHJvZHVjdGV4dGVuZFwiICpuZ0lmPVwiaW52b2ljZT8ucHJvZHVjdHMubGVuZ3RoPjJcIj4re3tpbnZvaWNlPy5wcm9kdWN0cy5sZW5ndGggLSAyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2UuYW1vdW50ID8gaW52b2ljZT8uYW1vdW50IDogaW52b2ljZS5zdGF0dXMgfCB0aXRsZWNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e2ludm9pY2U/LnBheW1lbnRNZXRob2QgfHwgJy0tJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvaW50ZXJcIiAoY2xpY2spPVwiZG93bmxvYWRJbnZvaWNlKGludm9pY2UpXCI+PHN2ZyBjbGFzcz1cIm10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIGNsYXNzPVwidGV4dC1zdGFydFwiIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPCEtLUludm9pY2VzIGVuZCAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiJdfQ==
|