simpo-component-library 3.6.475 → 3.6.477

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.
@@ -16,6 +16,8 @@ import { ButtonEditorDirective } from '../../../directive/button-editor.directiv
16
16
  import { MatProgressSpinner } from "@angular/material/progress-spinner";
17
17
  import { MessageService } from 'primeng/api';
18
18
  import { ToastModule } from 'primeng/toast';
19
+ import { MatSlider } from "@angular/material/slider";
20
+ import { MatSliderModule } from '@angular/material/slider';
19
21
  import * as i0 from "@angular/core";
20
22
  import * as i1 from ".././../../services/events.service";
21
23
  import * as i2 from "../../../services/rest.service";
@@ -28,6 +30,7 @@ import * as i8 from "@angular/forms";
28
30
  import * as i9 from "../../../components/hover-elements/hover-elements.component";
29
31
  import * as i10 from "../../../components/delete-hover-element/delete-hover-element.component";
30
32
  import * as i11 from "primeng/toast";
33
+ import * as i12 from "@angular/material/slider";
31
34
  export class ReturnsCalculatorComponent extends BaseSection {
32
35
  constructor(_eventService, restService, matDialog, storageService, router, messageService) {
33
36
  super();
@@ -65,12 +68,13 @@ export class ReturnsCalculatorComponent extends BaseSection {
65
68
  this.maxAmount = scheme?.maxInstallmentValue ? scheme.maxInstallmentValue : this.maxAmount;
66
69
  this.maturityCount = scheme?.maturityCount ? scheme.maturityCount : this.maturityCount;
67
70
  this.monthlyAmount = this.minAmount;
68
- this.installmentOptions = scheme?.suggestedValues;
71
+ // this.installmentOptions = scheme?.suggestedValues;
69
72
  this.stores = scheme?.storeList ? scheme.storeList : [];
70
73
  this.selectedStaff = "";
71
74
  this.selectedStore = {};
72
- // console.log(scheme);
75
+ console.log(scheme);
73
76
  this.enrolledScheme = scheme;
77
+ this.enrolledScheme?.suggestedValues?.forEach((scheme) => this.installmentOptions.push({ status: false, value: scheme }));
74
78
  this.benefitAmount = 0;
75
79
  this.getMetalPrice();
76
80
  this.onAmountChange();
@@ -103,7 +107,16 @@ export class ReturnsCalculatorComponent extends BaseSection {
103
107
  });
104
108
  }
105
109
  setMonthlyAmount(amount) {
106
- this.monthlyAmount = amount;
110
+ this.installmentOptions.forEach((option) => {
111
+ if (option.value == amount?.value) {
112
+ option.status = true;
113
+ this.monthlyAmount = amount?.value;
114
+ }
115
+ else {
116
+ option.status = false;
117
+ }
118
+ });
119
+ this.monthlyAmount = amount.value;
107
120
  this.onAmountChange();
108
121
  }
109
122
  get individualContribution() {
@@ -273,7 +286,7 @@ export class ReturnsCalculatorComponent extends BaseSection {
273
286
  this.router.navigate(['/scheme-detail'], { queryParams: { schemeId: this.enrolledScheme?.id, termsAndCondition: true } });
274
287
  }
275
288
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReturnsCalculatorComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.MatDialog }, { token: i4.StorageServiceService }, { token: i5.Router }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
276
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReturnsCalculatorComponent, isStandalone: true, selector: "simpo-returns-calculator", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, providers: [MessageService], viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\n [simpoLayout]=\"stylesLayout\">\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\n <div class=\"calculator-header text-center mb-4 w-100\">\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\n </div>\n <div class=\"sub-header mb-3 p-3\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\n </div>\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\n <ng-container *ngFor=\"let scheme of allSchemes\">\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\n (click)=\"onSchemeChange(scheme)\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\n <div class=\"form-check-label ms-2\">\n <div class=\"d-flex align-items-center mb-2\">\n \uD83D\uDC64\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\n 'N/A'}}</div>\n </div>\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"gold-purity\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? [0,0,0]\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_18k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_24k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_22k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\" *ngIf=\"minAmount && maxAmount\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\n <div class=\"slider-container position-relative\">\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"enrolledScheme?.valueStep\" [(ngModel)]=\"monthlyAmount\"\n (ngModelChange)=\"onAmountChange()\">\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center flex-wrap\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\n (click)=\"setMonthlyAmount(option)\">\n {{option}}\n </div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <!-- <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\n </div> -->\n\n <div class=\"row mb-3\">\n <div [class]=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' ? 'col-6' : 'col-4'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\n number}}</div>\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)+benefitAmount) | number}}</div>\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)) | number}}</div>\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\n </div>\n </div>\n <div class=\"col-6\" *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded result-card-highlight\">\n <div class=\"result-amount fw-bold fs-5\">{{purchasedGram}} gms</div>\n <div class=\"result-label small color-white\">Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"enrolledScheme && (stores.length >= 2 || staffMembers.length >= 2) \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"stores.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"terms-and-condition\" *ngIf=\"enrolledScheme\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a\n (click)=\"goToTermsAndCondition()\">Terms & Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\n (click)=\"enrollScheme(enrolledScheme)\"\n [style.borderColor]=\"styles?.background?.accentColor\">\n <span *ngIf=\"!enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n </div>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n </ng-template>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.spinner{width:30px;height:30px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px;border:1px solid}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}@media (max-width:475px){.gold-purity{flex-wrap:wrap;gap:.5rem!important;padding:.5rem}.enrolled-gram{font-size:1rem;white-space:nowrap}.bonus-message{flex-direction:column}.staff-selector,.store_selection{width:100%!important}.scheme-results{padding:20px 0}}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.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: i8.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i9.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i10.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i11.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
289
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReturnsCalculatorComponent, isStandalone: true, selector: "simpo-returns-calculator", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, providers: [MessageService], viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\n [simpoLayout]=\"stylesLayout\">\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\n <div class=\"calculator-header text-center mb-4 w-100\">\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\n </div>\n <div class=\"sub-header mb-3 p-3\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\n </div>\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\n <ng-container *ngFor=\"let scheme of allSchemes\">\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\n (click)=\"onSchemeChange(scheme)\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\n <div class=\"form-check-label ms-2\">\n <div class=\"d-flex align-items-center mb-2\">\n \uD83D\uDC64\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\n 'N/A'}}</div>\n </div>\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"gold-purity\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? [0,0,0]\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_18k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_24k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_22k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\" *ngIf=\"minAmount && maxAmount\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\n <div class=\"slider-container position-relative\">\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"enrolledScheme?.valueStep\"\n class=\"w-100 pale-slider\"\n [style.--mdc-slider-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-focus-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-hover-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-active-track-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"styles?.background?.accentColor\"\n [style.--mat-slider-ripple-color]=\"styles?.background?.accentColor\"\n [style.--mat-slider-value-indicator-color]=\"styles?.background?.accentColor\">\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n </mat-slider>\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"enrolledScheme?.valueStep\" [(ngModel)]=\"monthlyAmount\"\n (ngModelChange)=\"onAmountChange()\"> -->\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center flex-wrap\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value ? option?.value : 'N/A'}}\n </div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <!-- <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\n </div> -->\n\n <div class=\"row mb-3\">\n <div [class]=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' ? 'col-6' : 'col-4'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\n number}}</div>\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)+benefitAmount) | number}}</div>\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)) | number}}</div>\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\n </div>\n </div>\n <div class=\"col-6\" *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded result-card-highlight\">\n <div class=\"result-amount fw-bold fs-5\">{{purchasedGram}} gms</div>\n <div class=\"result-label small color-white\">Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"enrolledScheme && (stores.length >= 2 || staffMembers.length >= 2) \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"stores.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"terms-and-condition\" *ngIf=\"enrolledScheme\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a\n (click)=\"goToTermsAndCondition()\">Terms & Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\n (click)=\"enrollScheme(enrolledScheme)\"\n [style.borderColor]=\"styles?.background?.accentColor\">\n <span *ngIf=\"!enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n </div>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n </ng-template>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.spinner{width:30px;height:30px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px;border:1px solid}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}@media (max-width:475px){.gold-purity{flex-wrap:wrap;gap:.5rem!important;padding:.5rem}.enrolled-gram{font-size:1rem;white-space:nowrap}.bonus-message{flex-direction:column}.staff-selector,.store_selection{width:100%!important}.scheme-results{padding:20px 0}}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i9.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i10.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i11.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "directive", type: i12.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }] }); }
277
290
  }
278
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReturnsCalculatorComponent, decorators: [{
279
292
  type: Component,
@@ -293,8 +306,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
293
306
  TextEditorComponent,
294
307
  ButtonEditorDirective,
295
308
  MatProgressSpinner,
296
- ToastModule
297
- ], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\n [simpoLayout]=\"stylesLayout\">\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\n <div class=\"calculator-header text-center mb-4 w-100\">\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\n </div>\n <div class=\"sub-header mb-3 p-3\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\n </div>\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\n <ng-container *ngFor=\"let scheme of allSchemes\">\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\n (click)=\"onSchemeChange(scheme)\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\n <div class=\"form-check-label ms-2\">\n <div class=\"d-flex align-items-center mb-2\">\n \uD83D\uDC64\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\n 'N/A'}}</div>\n </div>\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"gold-purity\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? [0,0,0]\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_18k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_24k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_22k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\" *ngIf=\"minAmount && maxAmount\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\n <div class=\"slider-container position-relative\">\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"enrolledScheme?.valueStep\" [(ngModel)]=\"monthlyAmount\"\n (ngModelChange)=\"onAmountChange()\">\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center flex-wrap\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\n (click)=\"setMonthlyAmount(option)\">\n {{option}}\n </div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <!-- <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\n </div> -->\n\n <div class=\"row mb-3\">\n <div [class]=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' ? 'col-6' : 'col-4'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\n number}}</div>\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)+benefitAmount) | number}}</div>\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)) | number}}</div>\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\n </div>\n </div>\n <div class=\"col-6\" *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded result-card-highlight\">\n <div class=\"result-amount fw-bold fs-5\">{{purchasedGram}} gms</div>\n <div class=\"result-label small color-white\">Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"enrolledScheme && (stores.length >= 2 || staffMembers.length >= 2) \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"stores.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"terms-and-condition\" *ngIf=\"enrolledScheme\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a\n (click)=\"goToTermsAndCondition()\">Terms & Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\n (click)=\"enrollScheme(enrolledScheme)\"\n [style.borderColor]=\"styles?.background?.accentColor\">\n <span *ngIf=\"!enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n </div>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n </ng-template>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.spinner{width:30px;height:30px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px;border:1px solid}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}@media (max-width:475px){.gold-purity{flex-wrap:wrap;gap:.5rem!important;padding:.5rem}.enrolled-gram{font-size:1rem;white-space:nowrap}.bonus-message{flex-direction:column}.staff-selector,.store_selection{width:100%!important}.scheme-results{padding:20px 0}}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"] }]
309
+ ToastModule,
310
+ MatSlider,
311
+ MatSliderModule
312
+ ], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-section\" [id]=\"data?.id\" [simpoBackground]=\"styles?.background\" [spacingHorizontal]=\"stylesLayout\"\n [simpoLayout]=\"stylesLayout\">\n <div class=\"headers w-100\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <ng-container *ngFor=\"let item of data?.content?.inputText\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"calculator bx-shd w-75 mx-auto my-3\">\n <div class=\"calculator-header text-center mb-4 w-100\">\n <h3 class=\"mb-0 calculator-title\">Interactive Returns Calculator</h3>\n </div>\n <div class=\"sub-header mb-3 p-3\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Preferred Scheme</h6>\n </div>\n <div class=\"calculator-body-top d-flex mb-4 px-3\">\n <ng-container *ngFor=\"let scheme of allSchemes\">\n <div class=\"form-check scheme-option p-3 border rounded border-primary ind-border\"\n (click)=\"onSchemeChange(scheme)\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"scheme\" id=\"individual\"\n (change)=\"onSchemeChange(scheme)\" [checked]=\"scheme.selected\">\n <div class=\"form-check-label ms-2\">\n <div class=\"d-flex align-items-center mb-2\">\n \uD83D\uDC64\n <div class=\"scheme-header fw-bold\">{{scheme?.schemeName ? scheme.schemeName :\n 'N/A'}}</div>\n </div>\n <div class=\"scheme-description text-muted small\">Pay 10 months, get 11th month FREE\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"gold-purity\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? [0,0,0]\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_18k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_24k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\"\n alt=\"\" *ngIf=\"gold?.karats === '_22k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\" *ngIf=\"minAmount && maxAmount\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\" *ngIf=\"minAmount && maxAmount\">\n <div class=\"slider-container position-relative\">\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"enrolledScheme?.valueStep\"\n class=\"w-100 pale-slider\"\n [style.--mdc-slider-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-focus-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-hover-handle-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-active-track-color]=\"styles?.background?.accentColor\"\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"styles?.background?.accentColor\"\n [style.--mat-slider-ripple-color]=\"styles?.background?.accentColor\"\n [style.--mat-slider-value-indicator-color]=\"styles?.background?.accentColor\">\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n </mat-slider>\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"enrolledScheme?.valueStep\" [(ngModel)]=\"monthlyAmount\"\n (ngModelChange)=\"onAmountChange()\"> -->\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"text-muted\">\u20B9{{minAmount | number}}</span>\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n <span class=\"text-muted\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n <div class=\"random_opitons d-flex justify-content-center gap-3 align-items-center flex-wrap\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer\" *ngFor=\"let option of installmentOptions\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value ? option?.value : 'N/A'}}\n </div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <!-- <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 individual-results-title\">Individual Scheme Results</h6>\n </div> -->\n\n <div class=\"row mb-3\">\n <div [class]=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION' ? 'col-6' : 'col-4'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * maturityCount) |\n number}}</div>\n <div class=\"result-label text-muted small\">Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{benefitAmount | number}}</div>\n <div class=\"result-label text-muted small\">Scheme Benefit</div>\n </div>\n </div>\n <div class=\"col-4\" *ngIf=\"enrolledScheme?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"result-card result-card-highlight text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType != 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)+benefitAmount) | number}}</div>\n <div class=\"result-amount fw-bold fs-5\"\n *ngIf=\"enrolledScheme?.benefitType === 'DISCOUNT'\">\u20B9{{((monthlyAmount *\n maturityCount)) | number}}</div>\n <div class=\"result-label small opacity-75\">Total Redemption Value</div>\n </div>\n </div>\n <div class=\"col-6\" *ngIf=\"enrolledScheme?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"result-card text-center p-3 border rounded result-card-highlight\">\n <div class=\"result-amount fw-bold fs-5\">{{purchasedGram}} gms</div>\n <div class=\"result-label small color-white\">Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"enrolledScheme && (stores.length >= 2 || staffMembers.length >= 2) \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"stores.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"terms-and-condition\" *ngIf=\"enrolledScheme\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a\n (click)=\"goToTermsAndCondition()\">Terms & Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\"\n (click)=\"enrollScheme(enrolledScheme)\"\n [style.borderColor]=\"styles?.background?.accentColor\">\n <span *ngIf=\"!enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n </div>\n <ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n </ng-template>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.bx-shd{box-shadow:#ffffff1a 0 1px 1px inset,#32325d40 0 50px 100px -20px,#0000004d 0 30px 60px -30px}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.calculator{border-radius:12px;box-shadow:0 4px 6px #0000001a}.calculator-header{background:linear-gradient(145deg,#f2e8cb,#d1c29e);color:#fff;padding:15px;border-radius:8px 8px 0 0}.calculator-title{color:#000;font-weight:600}.sub-header-text{color:#666;font-weight:500}.w-48{width:48%!important}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.random_opitons{padding:1%}.option{padding:1% 2%;border:1px solid lightgrey;border-radius:50px}.payment-row:last-child{margin-bottom:0}.label{color:#666;font-size:14px;font-weight:400}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}.mat-dialog-container{padding:0!important;border-radius:12px!important}.scheme-option{cursor:pointer;transition:all .3s ease;min-width:22vw}.form-check-input:checked{background-color:#d63384;border-color:#d63384}.form-check-input:focus{box-shadow:0 0 0 .25rem #d6338440}.scheme-header{font-size:16px;margin-bottom:5px;color:#333}.scheme-description{font-size:13px;line-height:1.4}.custom-range{height:8px;border-radius:5px;outline:none}.custom-range::-webkit-slider-thumb{appearance:none;width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #0003}.custom-range::-moz-range-thumb{width:24px;height:24px;background:#d63384;border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #0003}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.monthly-amount{color:#d4a574}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{background:#d4a574;color:#fff}.result-card-group{background:#d63384;color:#fff}.ind-border{border:2px solid rgb(201,176,130)!important}.grp-border{border:2px solid rgb(214,51,132)!important}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.spinner{width:30px;height:30px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.bonus-text{color:#d4a574;font-weight:500}.scheme-results{background:#fff;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.group-results-title{color:#d63384;font-weight:600}.enroll-btn{font-size:16px;border:1px solid}.calculator-body-top{overflow-y:scroll;gap:2rem}@media (max-width: 768px){.calculator{width:95%!important}.scheme-results .row{flex-direction:column}.scheme-results :is(.col-4,.col-6){width:100%!important}.calculator-body-top{flex-direction:column!important}.w-48{width:100%!important;margin-bottom:15px}.row .col-4,.row .col-6,.scheme-option{margin-bottom:15px}}@media (max-width:475px){.gold-purity{flex-wrap:wrap;gap:.5rem!important;padding:.5rem}.enrolled-gram{font-size:1rem;white-space:nowrap}.bonus-message{flex-direction:column}.staff-selector,.store_selection{width:100%!important}.scheme-results{padding:20px 0}}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"] }]
298
313
  }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.MatDialog }, { type: i4.StorageServiceService }, { type: i5.Router }, { type: i6.MessageService }], propDecorators: { showChargesTemplate: [{
299
314
  type: ViewChild,
300
315
  args: ['showCharges', { static: true }]
@@ -309,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
309
324
  }], index: [{
310
325
  type: Input
311
326
  }] } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3JldHVybnMtY2FsY3VsYXRvci9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcmV0dXJucy1jYWxjdWxhdG9yL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FB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LEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdqQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IFJldHVybnNDYWxjdWxhdG9yTW9kZWwsIFJldHVybnNDYWxjdWxhdG9yU3R5bGVNb2RlbCB9IGZyb20gJy4vcmV0dXJucy1jYWxjdWxhdG9yLm1vZGVsJztcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1lZGl0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tcmV0dXJucy1jYWxjdWxhdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcbiAgICBUb2FzdE1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJldHVybnNDYWxjdWxhdG9yQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xuICBAVmlld0NoaWxkKCdzaG93Q2hhcmdlcycsIHsgc3RhdGljOiB0cnVlIH0pIHNob3dDaGFyZ2VzVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD47XG4gIGRpYWxvZ1JlZiE6IE1hdERpYWxvZ1JlZjxhbnk+OyAvLyBzYXZlIHRoZSBkaWFsb2cgcmVmXG5cbiAgQElucHV0KCkgZGF0YT86IFJldHVybnNDYWxjdWxhdG9yTW9kZWw7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XG4gIHN0eWxlcz86IFJldHVybnNDYWxjdWxhdG9yU3R5bGVNb2RlbFxuXG4gIHNlbGVjdGVkU2NoZW1lOiBzdHJpbmcgPSAnaW5kaXZpZHVhbCc7XG4gIG1vbnRobHlBbW91bnQ6IG51bWJlciA9IDA7XG4gIG1heEFtb3VudDogbnVtYmVyID0gMDtcbiAgbWluQW1vdW50OiBudW1iZXIgPSAwO1xuICBtZXRhbFByaWNlOiBhbnk7XG4gIHB1cmNoYXNlZEdyYW06IG51bWJlciA9IDA7XG4gIGN1cnJlbnRHb2xkUmF0ZTogbnVtYmVyID0gMFxuICB0ZXJtc0FuZENvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMuZ2V0RW5yb2xsZWRTY2hlbWVzKCk7XG4gIH1cbiAgbWF0dXJpdHlDb3VudDogbnVtYmVyID0gMTA7XG4gIGVucm9sbGVkU2NoZW1lOiBhbnk7XG4gIHNlbGVjdGVkU3RvcmU6IGFueTtcbiAgc2VsZWN0ZWRTdGFmZjogYW55O1xuICBzdG9yZXM6IGFueVtdID0gW107XG4gIHN0YWZmTWVtYmVyczogYW55W10gPSBbXTtcbiAgb25TY2hlbWVDaGFuZ2Uoc2NoZW1lOiBhbnkpIHtcbiAgICBpZiAodGhpcy5lbnJvbGxlZFNjaGVtZSkge1xuICAgICAgdGhpcy5lbnJvbGxlZFNjaGVtZS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBzY2hlbWUuc2VsZWN0ZWQgPSAhc2NoZW1lPy5zZWxlY3RlZDtcbiAgICB0aGlzLm1pbkFtb3VudCA9IHNjaGVtZT8ubWluSW5zdGFsbG1lbnRWYWx1ZSA/IHNjaGVtZS5taW5JbnN0YWxsbWVudFZhbHVlIDogdGhpcy5taW5BbW91bnQ7XG4gICAgdGhpcy5tYXhBbW91bnQgPSBzY2hlbWU/Lm1heEluc3RhbGxtZW50VmFsdWUgPyBzY2hlbWUubWF4SW5zdGFsbG1lbnRWYWx1ZSA6IHRoaXMubWF4QW1vdW50O1xuICAgIHRoaXMubWF0dXJpdHlDb3VudCA9IHNjaGVtZT8ubWF0dXJpdHlDb3VudCA/IHNjaGVtZS5tYXR1cml0eUNvdW50IDogdGhpcy5tYXR1cml0eUNvdW50O1xuICAgIHRoaXMubW9udGhseUFtb3VudCA9IHRoaXMubWluQW1vdW50O1xuICAgIHRoaXMuaW5zdGFsbG1lbnRPcHRpb25zID0gc2NoZW1lPy5zdWdnZXN0ZWRWYWx1ZXM7XG4gICAgdGhpcy5zdG9yZXMgPSBzY2hlbWU/LnN0b3JlTGlzdCA/IHNjaGVtZS5zdG9yZUxpc3QgOiBbXTtcbiAgICB0aGlzLnNlbGVjdGVkU3RhZmYgPSBcIlwiO1xuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZSA9IHt9O1xuICAgIC8vIGNvbnNvbGUubG9nKHNjaGVtZSk7XG4gICAgdGhpcy5lbnJvbGxlZFNjaGVtZSA9IHNjaGVtZTtcbiAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAwO1xuICAgIHRoaXMuZ2V0TWV0YWxQcmljZSgpO1xuICAgIHRoaXMub25BbW91bnRDaGFuZ2UoKTtcbiAgICB0aGlzLmdldFN0YWZmTGlzdCgpO1xuICB9XG4gIGJlbmVmaXRBbW91bnQ6IG51bWJlciA9IDA7XG4gIG9uQW1vdW50Q2hhbmdlKCkge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmVucm9sbGVkU2NoZW1lLmpld2VsbGVyQmVuZWZpdCkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmVucm9sbGVkU2NoZW1lLmpld2VsbGVyQmVuZWZpdCk7XG4gICAgICBjb25zdCBoaWdoZXN0VmFsdWUgPSBNYXRoLm1heCguLi5PYmplY3QudmFsdWVzKHZhbHVlcykpO1xuICAgICAgaWYgKHRoaXMuZW5yb2xsZWRTY2hlbWUuYmVuZWZpdFR5cGUgPT09IFwiUEVSQ0VOVF9PTl9NT05USFwiKSB7XG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICh0aGlzLm1vbnRobHlBbW91bnQgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5lbnJvbGxlZFNjaGVtZS5iZW5lZml0VHlwZSA9PT0gXCJTQ0hFTUVcIikge1xuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAoKHRoaXMubW9udGhseUFtb3VudCAqIHRoaXMubWF0dXJpdHlDb3VudCkgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5lbnJvbGxlZFNjaGVtZS5iZW5lZml0VHlwZSA9PT0gXCJESVNDT1VOVFwiKSB7XG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICgodGhpcy5tb250aGx5QW1vdW50ICogdGhpcy5tYXR1cml0eUNvdW50KSAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHVyY2hhc2VkR3JhbSA9IE51bWJlcigodGhpcy5tb250aGx5QW1vdW50IC8gdGhpcy5jdXJyZW50R29sZFJhdGUpLnRvRml4ZWQoMikpXG4gIH1cbiAgZ2V0U3RhZmZMaXN0KCkge1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU3RhZmZMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuXG4gICAgICAgIHRoaXMuc3RhZmZNZW1iZXJzID0gcmVzPy5kYXRhPy5kYXRhID8gcmVzPy5kYXRhPy5kYXRhIDogW11cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBzZXRNb250aGx5QW1vdW50KGFtb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5tb250aGx5QW1vdW50ID0gYW1vdW50O1xuICAgIHRoaXMub25BbW91bnRDaGFuZ2UoKTtcbiAgfVxuICBnZXQgaW5kaXZpZHVhbENvbnRyaWJ1dGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMDtcbiAgfVxuXG4gIGdldCBvcnJhQm9udXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tb250aGx5QW1vdW50O1xuICB9XG5cbiAgZ2V0IHRvdGFsUmVkZW1wdGlvblZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDExO1xuICB9XG5cbiAgZ2V0IGdyb3VwQ29udHJpYnV0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudCAqIDExO1xuICB9XG5cbiAgZ2V0IGx1Y2t5RHJhd0Ftb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMTtcbiAgfVxuXG4gIGdldCBzdHlsZXNMYXlvdXQoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xuICB9XG5cbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmlkID8/IFwiXCI7XG4gIH1cbiAgZ2V0QnV0dG9uU3R5bGUoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LnN0eWxlcztcbiAgfVxuICBnZXRCdXR0b25EYXRhKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbaW5kZXhdPy5jb250ZW50O1xuICB9XG5cbiAgcmVkaXJlY3RUbyhzY2hlbWU6IGFueSkge1xuICAgIC8vIGlmICghZGF0YT8ucGFnZUlkICYmIGRhdGE/LnJlZGlyZWN0aW9uVXJsKVxuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIHRoaXMuX2V2ZW50U2VydmljZS5idXR0b25SZWRpcmVjdGlvbi5lbWl0KHsgZGF0YTogZGF0YSB9KTtcbiAgfVxuICBjbG9zZURpYWxvZyhhY3Rpb246ICdTVUNDRVNTJyB8ICdGQUlMJykge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGFjdGlvbik7XG4gIH1cbiAgc3RvcmVDaGFyZ2VzOiBhbnk7XG4gIGVucm9sbEJ1dHRvbkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBlbnJvbGxTY2hlbWUoc2NoZW1lOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMudGVybXNBbmRDb25kaXRpb24pIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdUZXJtcyAmIENvbmRpdGlvbicsIGRldGFpbDogJ1BsZWFzZSBhY2NlcHQgdGVybXMgJiBjb25kaXRpb24nIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xuICAgIGNvbnNvbGUubG9nKHVzZXJEZXRhaWxzKVxuICAgIGxldCBwYXlsb2FkID1cbiAgICB7XG4gICAgICB1c2VyQmFzaWNEZXRhaWxzOiB7XG4gICAgICAgIGN1c3RvbWVyX2lkOiB1c2VyRGV0YWlscz8udXNlcklkLFxuICAgICAgICBjdXN0b21lcl9uYW1lOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubmFtZSxcbiAgICAgICAgY3VzdG9tZXJfcGhvbmU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5tb2JpbGUsXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdD8uZW1haWwsXG4gICAgICB9LFxuICAgICAgc2NoZW1lSWQ6IHNjaGVtZT8uaWQsXG4gICAgICBzY2hlbWVOYW1lOiBzY2hlbWU/LnNjaGVtZU5hbWUsXG4gICAgICBlYXJseVJlZGVtcHRpb25DaGFyZ2U6IHNjaGVtZT8uZW5yb2xsbWVudEZlZXMsXG4gICAgICBpbnN0YWxsbWVudEFtb3VudDogdGhpcy5tb250aGx5QW1vdW50LFxuICAgICAgc3RvcmVSZWZJZDogc2NoZW1lPy5zY2hlbWVSZXByZXNlbnRhdGl2ZUlkLFxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZXMubGVuZ3RoIDwgMiA/IHRoaXMuc3RvcmVzWzBdLmlkIDogdGhpcy5zZWxlY3RlZFN0b3JlPy5pZCxcbiAgICAgIHN0YWZmSWQ6IHRoaXMuc3RhZmZNZW1iZXJzLmxlbmd0aCA8IDIgPyB0aGlzLnN0YWZmTWVtYmVyc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdGFmZj8uaWQsXG4gICAgICBzdGFmZk5hbWU6IHRoaXMuc3RhZmZNZW1iZXJzLmxlbmd0aCA8IDIgPyB0aGlzLnN0YWZmTWVtYmVyc1swXS5uYW1lIDogdGhpcy5zZWxlY3RlZFN0YWZmPy5uYW1lLFxuICAgICAgc3RvcmVOYW1lOiB0aGlzLnN0b3Jlcy5sZW5ndGggPCAyID8gdGhpcy5zdG9yZXNbMF0ubmFtZSA6IHRoaXMuc2VsZWN0ZWRTdG9yZT8ubmFtZSxcbiAgICAgIG1hdHVyaXR5Q291bnQ6IHNjaGVtZT8ubWF0dXJpdHlDb3VudCxcbiAgICAgIGpld2VsbGVyQmVuZWZpdDogc2NoZW1lPy5qZXdlbGxlckJlbmVmaXQsXG4gICAgICBkdWVNb250aHM6IHNjaGVtZT8ubWF0dXJpdHlDb3VudCxcbiAgICAgIGJ1c2luZXNzSWQ6IHNjaGVtZT8uYnVzaW5lc3NJZCxcbiAgICAgIGJ1c2luZXNzTmFtZTogc2NoZW1lPy5idXNpbmVzc05hbWUsXG4gICAgICBlbmFibGVFYXJseVJlZGVtcHRpb246IHNjaGVtZT8uZW5hYmxlRWFybHlSZWRlbXB0aW9uLFxuICAgICAgcmVkZW1wdGlvblNsYWJMaXN0OiBzY2hlbWU/LnJlZGVtcHRpb25TbGFiTGlzdCxcbiAgICAgIHNjaGVtZVR5cGU6IHNjaGVtZT8uc2NoZW1lVHlwZSxcbiAgICAgIG1ldGFsVHlwZTogc2NoZW1lPy5tZXRhbFR5cGUsXG4gICAgICBrYXJhdFR5cGU6IHNjaGVtZT8ua2FyYXRUeXBlLFxuICAgICAgY3VzdG9tZXJBY2NvdW50OiBcIlwiXG4gICAgfVxuXG4gICAgaWYgKHVzZXJEZXRhaWxzICE9IG51bGwpIHtcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuZW5yb2xsU2NoZW1lKHBheWxvYWQsIHRydWUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lbnJvbGxCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5jYXNoZnJlZVJlc3BvbnNlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVDaGFyZ2VzID0gcmVzcG9uc2UuZGF0YS5jYXJ0O1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRoaXMuc2hvd0NoYXJnZXNUZW1wbGF0ZSwge1xuICAgICAgICAgICAgICBwYW5lbENsYXNzOiAnc2hvdy1jaGFyZ2VzLWNsYXNzJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzID09PSAnU1VDQ0VTUycpXG4gICAgICAgICAgICAgICAgdGhpcy5jb250aW51ZVBheW1lbnQocGF5bG9hZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyPy5lcnJvciA9PT0gJ0ZvcmJpZGRlbicgJiYgZXJyPy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgdGhpcy5yZXN0U2VydmljZS5nZW5lcmF0ZVRva2VuKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksIHVzZXJEZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnJvbGxCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFRva2VuKHJlcy5kYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250aW51ZVBheW1lbnQocGF5bG9hZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgfVxuICB9XG4gIGNvbnRpbnVlUGF5bWVudChwYXlsb2FkOiBhbnkpIHtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCBmYWxzZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdwYXNzYm9va09yZGVySWQnLCByZXNwb25zZS5kYXRhLm9yZGVySWQpO1xuICAgICAgICB0aGlzLm9wZW5DYXNoZnJlZVNkayhyZXNwb25zZS5kYXRhLnNlc3Npb25JZClcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHsgfVxuICAgIH0pXG4gIH1cbiAgYWxsU2NoZW1lczogYW55W10gPSBbXTtcbiAgZ2V0RW5yb2xsZWRTY2hlbWVzKCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBidXNpbmVzc0lkczogW1xuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpXG4gICAgICBdLFxuICAgICAgc3RhdHVzOiB0cnVlXG4gICAgfVxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsRW5yb2xsZWRTY2hlbWVzKHBheWxvYWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGxTY2hlbWVzID0gcmVzLmRhdGE/LmRhdGE7XG4gICAgICAgIHRoaXMuYWxsU2NoZW1lcyA9IHRoaXMuYWxsU2NoZW1lcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5vblNjaGVtZUNoYW5nZSh0aGlzLmFsbFNjaGVtZXNbMF0pO1xuICAgICAgICB0aGlzLmFsbFNjaGVtZXNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmFsbFNjaGVtZXMpXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgaW5zdGFsbG1lbnRPcHRpb25zOiBudW1iZXJbXSA9IFtdO1xuICBvcGVuQ2FzaGZyZWVTZGsoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHsgZGF0YTogeyBvcmRlclNpZ25hdHVyZTogc2Vzc2lvbklkIH0gfSlcbiAgfVxuXG4gIGdldE1ldGFsUHJpY2UoKSB7XG4gICAgbGV0IHN0b3JlSWQgPSB0aGlzLnN0b3Jlcy5sZW5ndGggPCAyID8gdGhpcy5zdG9yZXNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RvcmU/LmlkXG4gICAgaWYgKCFzdG9yZUlkKVxuICAgICAgcmV0dXJuXG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldE1ldGFsUHJpY2Uoc3RvcmVJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5tZXRhbFByaWNlID0gcmVzLmRhdGE7XG4gICAgICBmb3IgKGxldCBnb2xkIG9mIHRoaXMubWV0YWxQcmljZT8ucHJpY2VEYXRhID8/IFtdKSB7XG4gICAgICAgIGlmIChnb2xkLmthcmF0cyA9PT0gdGhpcy5lbnJvbGxlZFNjaGVtZS5rYXJhdFR5cGUpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRHb2xkUmF0ZSA9IGdvbGQucHJpY2U7XG4gICAgICAgICAgdGhpcy5wdXJjaGFzZWRHcmFtID0gTnVtYmVyKCh0aGlzLm1vbnRobHlBbW91bnQgLyB0aGlzLmN1cnJlbnRHb2xkUmF0ZSkudG9GaXhlZCgyKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcbiAgfVxuXG4gIGdvVG9UZXJtc0FuZENvbmRpdGlvbigpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zY2hlbWUtZGV0YWlsJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoZW1lSWQ6IHRoaXMuZW5yb2xsZWRTY2hlbWU/LmlkLCB0ZXJtc0FuZENvbmRpdGlvbjogdHJ1ZSB9IH0pXG4gIH1cbn1cbiIsIjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XG5cbjxkaXYgY2xhc3M9XCJ0b3RhbC1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYWluLXNlY3Rpb25cIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxuICAgICAgICBbc2ltcG9MYXlvdXRdPVwic3R5bGVzTGF5b3V0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJzIHctMTAwXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXJcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yIGJ4LXNoZCB3LTc1IG14LWF1dG8gbXktM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yLWhlYWRlciB0ZXh0LWNlbnRlciBtYi00ICB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtYi0wIGNhbGN1bGF0b3ItdGl0bGVcIj5JbnRlcmFjdGl2ZSBSZXR1cm5zIENhbGN1bGF0b3I8L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGVyIG1iLTMgcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgc3ViLWhlYWRlci10ZXh0XCI+U2VsZWN0IFlvdXIgUHJlZmVycmVkIFNjaGVtZTwvaDY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3ItYm9keS10b3AgZC1mbGV4IG1iLTQgcHgtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzY2hlbWUgb2YgYWxsU2NoZW1lc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgc2NoZW1lLW9wdGlvbiAgcC0zIGJvcmRlciByb3VuZGVkIGJvcmRlci1wcmltYXJ5IGluZC1ib3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNjaGVtZUNoYW5nZShzY2hlbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzY2hlbWVcIiBpZD1cImluZGl2aWR1YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2NoZW1lQ2hhbmdlKHNjaGVtZSlcIiBbY2hlY2tlZF09XCJzY2hlbWUuc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfkaRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY2hlbWUtaGVhZGVyIGZ3LWJvbGRcIj57e3NjaGVtZT8uc2NoZW1lTmFtZSA/IHNjaGVtZS5zY2hlbWVOYW1lIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTi9BJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWRlc2NyaXB0aW9uIHRleHQtbXV0ZWQgc21hbGxcIj5QYXkgMTAgbW9udGhzLCBnZXQgMTF0aCBtb250aCBGUkVFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb2xkLXB1cml0eVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIChzdG9yZXMubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRTdG9yZT8uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJpdHlcIiAqbmdGb3I9XCJsZXQgZ29sZCBvZiBtZXRhbFByaWNlPy5wcmljZURhdGEgPz8gWzAsMCwwXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2pld2VsbGVycy5zdGFnZS5wYXNzYm9va2FwcC5pbi9hc3NldHMvaW1hZ2VzL2dvbGQtc2NoZW1lLzE4a19nb2xkX3BpYy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiICpuZ0lmPVwiZ29sZD8ua2FyYXRzID09PSAnXzE4aydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9qZXdlbGxlcnMuc3RhZ2UucGFzc2Jvb2thcHAuaW4vYXNzZXRzL2ltYWdlcy9nb2xkLXNjaGVtZS8yNGtfZ29sZF9waWMuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIiAqbmdJZj1cImdvbGQ/LmthcmF0cyA9PT0gJ18yNGsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vamV3ZWxsZXJzLnN0YWdlLnBhc3Nib29rYXBwLmluL2Fzc2V0cy9pbWFnZXMvZ29sZC1zY2hlbWUvMjJrX2dvbGRfcGljLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgKm5nSWY9XCJnb2xkPy5rYXJhdHMgPT09ICdfMjJrJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7Z29sZD8ua2FyYXRzPy5yZXBsYWNlQWxsKCdfJywgXCJcIil9fSBHb2xkIFB1cml0eTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb2xkLXByaWNlXCI+4oK5e3tnb2xkLnByaWNlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlciBtYi0zIHB4LTMgbW9udGhseS1zY2hlbWVcIiAqbmdJZj1cIm1pbkFtb3VudCAmJiBtYXhBbW91bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMCBzdWItaGVhZGVyLXRleHRcIj5TZWxlY3QgWW91ciBNb250aGx5IEludmVzdG1lbnQgQW1vdW50PC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbnJvbGxlZC1ncmFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIChzdG9yZXMubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRTdG9yZT8uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3B1cmNoYXNlZEdyYW19fSBnbXM8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRlLXNsaWRlciBtYi00IHB4LTNcIiAqbmdJZj1cIm1pbkFtb3VudCAmJiBtYXhBbW91bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgY3VzdG9tLXJhbmdlXCIgW21pbl09XCJtaW5BbW91bnRcIiBbbWF4XT1cIm1heEFtb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwiZW5yb2xsZWRTY2hlbWU/LnZhbHVlU3RlcFwiIFsobmdNb2RlbCldPVwibW9udGhseUFtb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25BbW91bnRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1sYWJlbHMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj7igrl7e21pbkFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgZnctYm9sZCBmcy00IG1vbnRobHktYW1vdW50XCI+4oK5e3ttb250aGx5QW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+4oK5e3ttYXhBbW91bnQgfCBudW1iZXJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPk1vbnRobHkgSW52ZXN0bWVudDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmRvbV9vcGl0b25zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24gY3Vyc29yLXBvaW50ZXJcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGluc3RhbGxtZW50T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE1vbnRobHlBbW91bnQob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yLWJvdHRvbSBweC0zIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1yZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDirZAgPGg2IGNsYXNzPVwibWItMCBpbmRpdmlkdWFsLXJlc3VsdHMtdGl0bGVcIj5JbmRpdmlkdWFsIFNjaGVtZSBSZXN1bHRzPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiZW5yb2xsZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nID8gJ2NvbC02JyA6ICdjb2wtNCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIG1hdHVyaXR5Q291bnQpIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+WW91ciB7e21hdHVyaXR5Q291bnR9fS1Nb250aCBDb250cmlidXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIiAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7e2JlbmVmaXRBbW91bnQgfCBudW1iZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+U2NoZW1lIEJlbmVmaXQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCIgKm5nSWY9XCJlbnJvbGxlZFNjaGVtZT8uc2NoZW1lVHlwZSAhPT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHJlc3VsdC1jYXJkLWhpZ2hsaWdodCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbnJvbGxlZFNjaGVtZT8uYmVuZWZpdFR5cGUgIT0gJ0RJU0NPVU5UJ1wiPuKCuXt7KChtb250aGx5QW1vdW50ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXR1cml0eUNvdW50KStiZW5lZml0QW1vdW50KSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LmJlbmVmaXRUeXBlID09PSAnRElTQ09VTlQnXCI+4oK5e3soKG1vbnRobHlBbW91bnQgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHVyaXR5Q291bnQpKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHNtYWxsIG9wYWNpdHktNzVcIj5Ub3RhbCBSZWRlbXB0aW9uIFZhbHVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWQgcmVzdWx0LWNhcmQtaGlnaGxpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj57e3B1cmNoYXNlZEdyYW19fSBnbXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgIHNtYWxsIGNvbG9yLXdoaXRlXCI+R29sZCBBbGxvY2F0aW9uIFRvZGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvbnVzLW1lc3NhZ2UgdGV4dC1jZW50ZXIgbWItMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbGVkU2NoZW1lICYmIChzdG9yZXMubGVuZ3RoID49IDIgfHwgc3RhZmZNZW1iZXJzLmxlbmd0aCA+PSAyKSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVfc2VsZWN0aW9uICB3LTUwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiICpuZ0lmPVwic3RvcmVzLmxlbmd0aCA+PSAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPiA8c3Bhbj5TZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSA6IDwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLXNlbGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RvcmVEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdG9yZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImdldE1ldGFsUHJpY2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkPkNob29zZSBhIHN0b3JlLi4uPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVzO1wiIFtuZ1ZhbHVlXT1cInN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmUubmFtZX19IC0ge3tzdG9yZS5zdG9yZVJlZklkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhZmYtc2VsZWN0b3Igdy01MCAgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCIgKm5nSWY9XCJzdGFmZk1lbWJlcnMubGVuZ3RoID49IDJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCI+PHNwYW4+U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgTWVtYmVyIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RhZmZEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdGFmZlwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5DaG9vc2UgYSBzdGFmZiBtZW1iZXIuLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHN0YWZmIG9mIHN0YWZmTWVtYmVycztcIiBbbmdWYWx1ZV09XCJzdGFmZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RhZmYubmFtZX19IC0ge3tzdGFmZi5yb2xlID8gc3RhZmYucm9sZSA6ICdzdGFmZicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybXMtYW5kLWNvbmRpdGlvblwiICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJ0ZXJtc0FuZENvbmRpdGlvblwiPkkgYWdyZWUgdG8gPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9UZXJtc0FuZENvbmRpdGlvbigpXCI+VGVybXMgJiBDb25kaXRpb25zPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5yb2xsLWJ0biB3LTEwMCBweS0zIGZ3LWJvbGQgbWItMlwiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVucm9sbFNjaGVtZShlbnJvbGxlZFNjaGVtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZW5yb2xsQnV0dG9uTG9hZGVyXCI+RW5yb2xsIGluIFNjaGVtZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5yb2xsQnV0dG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PG1hdC1zcGlubmVyIGNsYXNzPVwidy0xMDAgaC0xMDBcIj48L21hdC1zcGlubmVyPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTY2hlbWUgPT09ICdncm91cCdcIiBjbGFzcz1cInNjaGVtZS1yZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4q2QIDxoNiBjbGFzcz1cIm1iLTAgZ3JvdXAtcmVzdWx0cy10aXRsZVwiPkdyb3VwIFNjaGVtZSBSZXN1bHRzPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHRleHQtbXV0ZWQgc21hbGxcIj5Zb3VyIFRvdGFsIDExLU1vbnRoIENvbnRyaWJ1dGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHJlc3VsdC1jYXJkLWdyb3VwIHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHNtYWxsIG9wYWNpdHktNzVcIj5Nb250aGx5IEx1Y2t5IERyYXcgQW1vdW50PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaWRdPVwiZGF0YT8uaWQrZ2V0QnV0dG9uSWQoMClcIiBbYnV0dG9uRGF0YV09XCJnZXRCdXR0b25EYXRhKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5yb2xsIGluIFNjaGVtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3Nob3dDaGFyZ2VzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kaWFsb2dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgyPlBheW1lbnQgRGV0YWlsczwvaDI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2VEaWFsb2coJ0ZBSUwnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkluc3RhbGxtZW50IEFtb3VudDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uaW5zdGFsbG1lbnRBbW91bnQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Db252ZW5pZW5jZSBGZWU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LmNvbnZlbmllbmNlRmVlPy52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LmNvbnZlbmllbmNlRmVlPy52YWx1ZSB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5QYXltZW50IFNlcnZpY2UgQ2hhcmdlczo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8ucGF5bWVudFNlcnZpY2VDaGFyZ2VzPy52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnBheW1lbnRTZXJ2aWNlQ2hhcmdlcz8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvdyB0b3RhbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCB0b3RhbC1sYWJlbFwiPlRvdGFsIEFtb3VudDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50IHRvdGFsLWFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnRvdGFsQW1vdW50ID9cbiAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8udG90YWxBbW91bnQgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGludWUtYnRuXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKCdTVUNDRVNTJylcIj5Db250aW51ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJucy1jYWxjdWxhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3JldHVybnMtY2FsY3VsYXRvci9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcmV0dXJucy1jYWxjdWxhdG9yL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FB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bUxDcEQ3QixnMWlCQStQTSxxME1EOU5GLFlBQVksMGVBQ1osV0FBVywwckNBQ1gsbUJBQW1CLCtCQUNuQixPQUFPLDBJQUNQLG9CQUFvQixxV0FDcEIsa0JBQWtCLHlGQUNsQixtQkFBbUIsMEdBRW5CLGNBQWMsZ0ZBQ2Qsd0JBQXdCLHNJQUN4QixtQkFBbUIsbUZBQ25CLDBCQUEwQiwyR0FDMUIsbUJBQW1CLDZJQUNuQixxQkFBcUIseUtBQ3JCLGtCQUFrQiw4S0FDbEIsV0FBVyx5V0FDWCxTQUFTLGlNQUNULGVBQWU7OzRGQU1OLDBCQUEwQjtrQkEzQnRDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsZUFBZTtxQkFDaEIsYUFDVSxDQUFDLGNBQWMsQ0FBQzswTkFLaUIsbUJBQW1CO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xuaW1wb3J0IHsgUmV0dXJuc0NhbGN1bGF0b3JNb2RlbCwgUmV0dXJuc0NhbGN1bGF0b3JTdHlsZU1vZGVsIH0gZnJvbSAnLi9yZXR1cm5zLWNhbGN1bGF0b3IubW9kZWwnO1xuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlclwiO1xuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tcmV0dXJucy1jYWxjdWxhdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcbiAgICBUb2FzdE1vZHVsZSxcbiAgICBNYXRTbGlkZXIsXG4gICAgTWF0U2xpZGVyTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JldHVybnMtY2FsY3VsYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yZXR1cm5zLWNhbGN1bGF0b3IuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUmV0dXJuc0NhbGN1bGF0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XG4gIEBWaWV3Q2hpbGQoJ3Nob3dDaGFyZ2VzJywgeyBzdGF0aWM6IHRydWUgfSkgc2hvd0NoYXJnZXNUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZGlhbG9nUmVmITogTWF0RGlhbG9nUmVmPGFueT47IC8vIHNhdmUgdGhlIGRpYWxvZyByZWZcblxuICBASW5wdXQoKSBkYXRhPzogUmV0dXJuc0NhbGN1bGF0b3JNb2RlbDtcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcbiAgc3R5bGVzPzogUmV0dXJuc0NhbGN1bGF0b3JTdHlsZU1vZGVsXG5cbiAgc2VsZWN0ZWRTY2hlbWU6IHN0cmluZyA9ICdpbmRpdmlkdWFsJztcbiAgbW9udGhseUFtb3VudDogbnVtYmVyID0gMDtcbiAgbWF4QW1vdW50OiBudW1iZXIgPSAwO1xuICBtaW5BbW91bnQ6IG51bWJlciA9IDA7XG4gIG1ldGFsUHJpY2U6IGFueTtcbiAgcHVyY2hhc2VkR3JhbTogbnVtYmVyID0gMDtcbiAgY3VycmVudEdvbGRSYXRlOiBudW1iZXIgPSAwXG4gIHRlcm1zQW5kQ29uZGl0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XG4gICAgdGhpcy5nZXRFbnJvbGxlZFNjaGVtZXMoKTtcbiAgfVxuICBtYXR1cml0eUNvdW50OiBudW1iZXIgPSAxMDtcbiAgZW5yb2xsZWRTY2hlbWU6IGFueTtcbiAgc2VsZWN0ZWRTdG9yZTogYW55O1xuICBzZWxlY3RlZFN0YWZmOiBhbnk7XG4gIHN0b3JlczogYW55W10gPSBbXTtcbiAgc3RhZmZNZW1iZXJzOiBhbnlbXSA9IFtdO1xuICBvblNjaGVtZUNoYW5nZShzY2hlbWU6IGFueSkge1xuICAgIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lKSB7XG4gICAgICB0aGlzLmVucm9sbGVkU2NoZW1lLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHNjaGVtZS5zZWxlY3RlZCA9ICFzY2hlbWU/LnNlbGVjdGVkO1xuICAgIHRoaXMubWluQW1vdW50ID0gc2NoZW1lPy5taW5JbnN0YWxsbWVudFZhbHVlID8gc2NoZW1lLm1pbkluc3RhbGxtZW50VmFsdWUgOiB0aGlzLm1pbkFtb3VudDtcbiAgICB0aGlzLm1heEFtb3VudCA9IHNjaGVtZT8ubWF4SW5zdGFsbG1lbnRWYWx1ZSA/IHNjaGVtZS5tYXhJbnN0YWxsbWVudFZhbHVlIDogdGhpcy5tYXhBbW91bnQ7XG4gICAgdGhpcy5tYXR1cml0eUNvdW50ID0gc2NoZW1lPy5tYXR1cml0eUNvdW50ID8gc2NoZW1lLm1hdHVyaXR5Q291bnQgOiB0aGlzLm1hdHVyaXR5Q291bnQ7XG4gICAgdGhpcy5tb250aGx5QW1vdW50ID0gdGhpcy5taW5BbW91bnQ7XG4gICAgLy8gdGhpcy5pbnN0YWxsbWVudE9wdGlvbnMgPSBzY2hlbWU/LnN1Z2dlc3RlZFZhbHVlcztcbiAgICB0aGlzLnN0b3JlcyA9IHNjaGVtZT8uc3RvcmVMaXN0ID8gc2NoZW1lLnN0b3JlTGlzdCA6IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRTdGFmZiA9IFwiXCI7XG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlID0ge307XG4gICAgY29uc29sZS5sb2coc2NoZW1lKTtcbiAgICB0aGlzLmVucm9sbGVkU2NoZW1lID0gc2NoZW1lO1xuICAgIHRoaXMuZW5yb2xsZWRTY2hlbWU/LnN1Z2dlc3RlZFZhbHVlcz8uZm9yRWFjaCgoc2NoZW1lOiBhbnkpID0+IHRoaXMuaW5zdGFsbG1lbnRPcHRpb25zLnB1c2goeyBzdGF0dXM6IGZhbHNlLCB2YWx1ZTogc2NoZW1lIH0pKVxuICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9IDA7XG4gICAgdGhpcy5nZXRNZXRhbFByaWNlKCk7XG4gICAgdGhpcy5vbkFtb3VudENoYW5nZSgpO1xuICAgIHRoaXMuZ2V0U3RhZmZMaXN0KCk7XG4gIH1cbiAgYmVuZWZpdEFtb3VudDogbnVtYmVyID0gMDtcbiAgb25BbW91bnRDaGFuZ2UoKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZW5yb2xsZWRTY2hlbWUuamV3ZWxsZXJCZW5lZml0KS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBPYmplY3QudmFsdWVzKHRoaXMuZW5yb2xsZWRTY2hlbWUuamV3ZWxsZXJCZW5lZml0KTtcbiAgICAgIGNvbnN0IGhpZ2hlc3RWYWx1ZSA9IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXModmFsdWVzKSk7XG4gICAgICBpZiAodGhpcy5lbnJvbGxlZFNjaGVtZS5iZW5lZml0VHlwZSA9PT0gXCJQRVJDRU5UX09OX01PTlRIXCIpIHtcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKHRoaXMubW9udGhseUFtb3VudCAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lLmJlbmVmaXRUeXBlID09PSBcIlNDSEVNRVwiKSB7XG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICgodGhpcy5tb250aGx5QW1vdW50ICogdGhpcy5tYXR1cml0eUNvdW50KSAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLmVucm9sbGVkU2NoZW1lLmJlbmVmaXRUeXBlID09PSBcIkRJU0NPVU5UXCIpIHtcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKCh0aGlzLm1vbnRobHlBbW91bnQgKiB0aGlzLm1hdHVyaXR5Q291bnQpICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wdXJjaGFzZWRHcmFtID0gTnVtYmVyKCh0aGlzLm1vbnRobHlBbW91bnQgLyB0aGlzLmN1cnJlbnRHb2xkUmF0ZSkudG9GaXhlZCgyKSlcbiAgfVxuICBnZXRTdGFmZkxpc3QoKSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTdGFmZkxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG5cbiAgICAgICAgdGhpcy5zdGFmZk1lbWJlcnMgPSByZXM/LmRhdGE/LmRhdGEgPyByZXM/LmRhdGE/LmRhdGEgOiBbXVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHNldE1vbnRobHlBbW91bnQoYW1vdW50OiBhbnkpIHtcbiAgICB0aGlzLmluc3RhbGxtZW50T3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBhbW91bnQ/LnZhbHVlKSB7XG4gICAgICAgIG9wdGlvbi5zdGF0dXMgPSB0cnVlO1xuICAgICAgICB0aGlzLm1vbnRobHlBbW91bnQgPSBhbW91bnQ/LnZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdGlvbi5zdGF0dXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMubW9udGhseUFtb3VudCA9IGFtb3VudC52YWx1ZTtcbiAgICB0aGlzLm9uQW1vdW50Q2hhbmdlKCk7XG4gIH1cbiAgZ2V0IGluZGl2aWR1YWxDb250cmlidXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tb250aGx5QW1vdW50ICogMTA7XG4gIH1cblxuICBnZXQgb3JyYUJvbnVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhseUFtb3VudDtcbiAgfVxuXG4gIGdldCB0b3RhbFJlZGVtcHRpb25WYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMTtcbiAgfVxuXG4gIGdldCBncm91cENvbnRyaWJ1dGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vbnRobHlBbW91bnQgKiAxMTtcbiAgfVxuXG4gIGdldCBsdWNreURyYXdBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tb250aGx5QW1vdW50ICogMTE7XG4gIH1cblxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3R5bGVzPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcbiAgfVxuXG4gIGdldEJ1dHRvbklkKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbaW5kZXhdPy5pZCA/PyBcIlwiO1xuICB9XG4gIGdldEJ1dHRvblN0eWxlKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbaW5kZXhdPy5zdHlsZXM7XG4gIH1cbiAgZ2V0QnV0dG9uRGF0YShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uY29udGVudDtcbiAgfVxuXG4gIHJlZGlyZWN0VG8oc2NoZW1lOiBhbnkpIHtcbiAgICAvLyBpZiAoIWRhdGE/LnBhZ2VJZCAmJiBkYXRhPy5yZWRpcmVjdGlvblVybClcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGRhdGEgfSk7XG4gIH1cbiAgY2xvc2VEaWFsb2coYWN0aW9uOiAnU1VDQ0VTUycgfCAnRkFJTCcpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShhY3Rpb24pO1xuICB9XG4gIHN0b3JlQ2hhcmdlczogYW55O1xuICBlbnJvbGxCdXR0b25Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZW5yb2xsU2NoZW1lKHNjaGVtZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLnRlcm1zQW5kQ29uZGl0aW9uKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnVGVybXMgJiBDb25kaXRpb24nLCBkZXRhaWw6ICdQbGVhc2UgYWNjZXB0IHRlcm1zICYgY29uZGl0aW9uJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICBjb25zb2xlLmxvZyh1c2VyRGV0YWlscylcbiAgICBsZXQgcGF5bG9hZCA9XG4gICAge1xuICAgICAgdXNlckJhc2ljRGV0YWlsczoge1xuICAgICAgICBjdXN0b21lcl9pZDogdXNlckRldGFpbHM/LnVzZXJJZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWUsXG4gICAgICAgIGN1c3RvbWVyX3Bob25lOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubW9iaWxlLFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogdXNlckRldGFpbHM/LmNvbnRhY3Q/LmVtYWlsLFxuICAgICAgfSxcbiAgICAgIHNjaGVtZUlkOiBzY2hlbWU/LmlkLFxuICAgICAgc2NoZW1lTmFtZTogc2NoZW1lPy5zY2hlbWVOYW1lLFxuICAgICAgZWFybHlSZWRlbXB0aW9uQ2hhcmdlOiBzY2hlbWU/LmVucm9sbG1lbnRGZWVzLFxuICAgICAgaW5zdGFsbG1lbnRBbW91bnQ6IHRoaXMubW9udGhseUFtb3VudCxcbiAgICAgIHN0b3JlUmVmSWQ6IHNjaGVtZT8uc2NoZW1lUmVwcmVzZW50YXRpdmVJZCxcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVzLmxlbmd0aCA8IDIgPyB0aGlzLnN0b3Jlc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdG9yZT8uaWQsXG4gICAgICBzdGFmZklkOiB0aGlzLnN0YWZmTWVtYmVycy5sZW5ndGggPCAyID8gdGhpcy5zdGFmZk1lbWJlcnNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RhZmY/LmlkLFxuICAgICAgc3RhZmZOYW1lOiB0aGlzLnN0YWZmTWVtYmVycy5sZW5ndGggPCAyID8gdGhpcy5zdGFmZk1lbWJlcnNbMF0ubmFtZSA6IHRoaXMuc2VsZWN0ZWRTdGFmZj8ubmFtZSxcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZXMubGVuZ3RoIDwgMiA/IHRoaXMuc3RvcmVzWzBdLm5hbWUgOiB0aGlzLnNlbGVjdGVkU3RvcmU/Lm5hbWUsXG4gICAgICBtYXR1cml0eUNvdW50OiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXG4gICAgICBqZXdlbGxlckJlbmVmaXQ6IHNjaGVtZT8uamV3ZWxsZXJCZW5lZml0LFxuICAgICAgZHVlTW9udGhzOiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXG4gICAgICBidXNpbmVzc0lkOiBzY2hlbWU/LmJ1c2luZXNzSWQsXG4gICAgICBidXNpbmVzc05hbWU6IHNjaGVtZT8uYnVzaW5lc3NOYW1lLFxuICAgICAgZW5hYmxlRWFybHlSZWRlbXB0aW9uOiBzY2hlbWU/LmVuYWJsZUVhcmx5UmVkZW1wdGlvbixcbiAgICAgIHJlZGVtcHRpb25TbGFiTGlzdDogc2NoZW1lPy5yZWRlbXB0aW9uU2xhYkxpc3QsXG4gICAgICBzY2hlbWVUeXBlOiBzY2hlbWU/LnNjaGVtZVR5cGUsXG4gICAgICBtZXRhbFR5cGU6IHNjaGVtZT8ubWV0YWxUeXBlLFxuICAgICAga2FyYXRUeXBlOiBzY2hlbWU/LmthcmF0VHlwZSxcbiAgICAgIGN1c3RvbWVyQWNjb3VudDogXCJcIlxuICAgIH1cblxuICAgIGlmICh1c2VyRGV0YWlscyAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCB0cnVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuY2FzaGZyZWVSZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRpbnVlUGF5bWVudChwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlQ2hhcmdlcyA9IHJlc3BvbnNlLmRhdGEuY2FydDtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbih0aGlzLnNob3dDaGFyZ2VzVGVtcGxhdGUsIHtcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogJ3Nob3ctY2hhcmdlcy1jbGFzcydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcyA9PT0gJ1NVQ0NFU1MnKVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGVycj8uZXJyb3IgPT09ICdGb3JiaWRkZW4nICYmIGVycj8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuZ2VuZXJhdGVUb2tlbihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpLCB1c2VyRGV0YWlscy51c2VySWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRUb2tlbihyZXMuZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIH1cbiAgfVxuICBjb250aW51ZVBheW1lbnQocGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5lbnJvbGxTY2hlbWUocGF5bG9hZCwgZmFsc2UpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc2Jvb2tPcmRlcklkJywgcmVzcG9uc2UuZGF0YS5vcmRlcklkKTtcbiAgICAgICAgdGhpcy5vcGVuQ2FzaGZyZWVTZGsocmVzcG9uc2UuZGF0YS5zZXNzaW9uSWQpXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7IH1cbiAgICB9KVxuICB9XG4gIGFsbFNjaGVtZXM6IGFueVtdID0gW107XG4gIGdldEVucm9sbGVkU2NoZW1lcygpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYnVzaW5lc3NJZHM6IFtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKVxuICAgICAgXSxcbiAgICAgIHN0YXR1czogdHJ1ZVxuICAgIH1cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbEVucm9sbGVkU2NoZW1lcyhwYXlsb2FkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxsU2NoZW1lcyA9IHJlcy5kYXRhPy5kYXRhO1xuICAgICAgICB0aGlzLmFsbFNjaGVtZXMgPSB0aGlzLmFsbFNjaGVtZXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMub25TY2hlbWVDaGFuZ2UodGhpcy5hbGxTY2hlbWVzWzBdKTtcbiAgICAgICAgdGhpcy5hbGxTY2hlbWVzWzBdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5hbGxTY2hlbWVzKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGluc3RhbGxtZW50T3B0aW9uczogYW55W10gPSBbXTtcbiAgb3BlbkNhc2hmcmVlU2RrKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7IGRhdGE6IHsgb3JkZXJTaWduYXR1cmU6IHNlc3Npb25JZCB9IH0pXG4gIH1cblxuICBnZXRNZXRhbFByaWNlKCkge1xuICAgIGxldCBzdG9yZUlkID0gdGhpcy5zdG9yZXMubGVuZ3RoIDwgMiA/IHRoaXMuc3RvcmVzWzBdLmlkIDogdGhpcy5zZWxlY3RlZFN0b3JlPy5pZFxuICAgIGlmICghc3RvcmVJZClcbiAgICAgIHJldHVyblxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRNZXRhbFByaWNlKHN0b3JlSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMubWV0YWxQcmljZSA9IHJlcy5kYXRhO1xuICAgICAgZm9yIChsZXQgZ29sZCBvZiB0aGlzLm1ldGFsUHJpY2U/LnByaWNlRGF0YSA/PyBbXSkge1xuICAgICAgICBpZiAoZ29sZC5rYXJhdHMgPT09IHRoaXMuZW5yb2xsZWRTY2hlbWUua2FyYXRUeXBlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50R29sZFJhdGUgPSBnb2xkLnByaWNlO1xuICAgICAgICAgIHRoaXMucHVyY2hhc2VkR3JhbSA9IE51bWJlcigodGhpcy5tb250aGx5QW1vdW50IC8gdGhpcy5jdXJyZW50R29sZFJhdGUpLnRvRml4ZWQoMikpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XG4gIH1cblxuICBnb1RvVGVybXNBbmRDb25kaXRpb24oKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvc2NoZW1lLWRldGFpbCddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaGVtZUlkOiB0aGlzLmVucm9sbGVkU2NoZW1lPy5pZCwgdGVybXNBbmRDb25kaXRpb246IHRydWUgfSB9KVxuICB9XG59XG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxuXG48ZGl2IGNsYXNzPVwidG90YWwtY29udGFpbmVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBbaWRdPVwiZGF0YT8uaWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1zZWN0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcbiAgICAgICAgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVycyB3LTEwMFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cbiAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvciBieC1zaGQgdy03NSBteC1hdXRvIG15LTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvci1oZWFkZXIgdGV4dC1jZW50ZXIgbWItNCAgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWItMCBjYWxjdWxhdG9yLXRpdGxlXCI+SW50ZXJhY3RpdmUgUmV0dXJucyBDYWxjdWxhdG9yPC9oMz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlciBtYi0zIHAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIHN1Yi1oZWFkZXItdGV4dFwiPlNlbGVjdCBZb3VyIFByZWZlcnJlZCBTY2hlbWU8L2g2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yLWJvZHktdG9wIGQtZmxleCBtYi00IHB4LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2NoZW1lIG9mIGFsbFNjaGVtZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHNjaGVtZS1vcHRpb24gIHAtMyBib3JkZXIgcm91bmRlZCBib3JkZXItcHJpbWFyeSBpbmQtYm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TY2hlbWVDaGFuZ2Uoc2NoZW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwic2NoZW1lXCIgaWQ9XCJpbmRpdmlkdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNjaGVtZUNoYW5nZShzY2hlbWUpXCIgW2NoZWNrZWRdPVwic2NoZW1lLnNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5GkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLWhlYWRlciBmdy1ib2xkXCI+e3tzY2hlbWU/LnNjaGVtZU5hbWUgPyBzY2hlbWUuc2NoZW1lTmFtZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ04vQSd9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1kZXNjcmlwdGlvbiB0ZXh0LW11dGVkIHNtYWxsXCI+UGF5IDEwIG1vbnRocywgZ2V0IDExdGggbW9udGggRlJFRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29sZC1wdXJpdHlcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJyAmJiAoc3RvcmVzLmxlbmd0aCA9PSAxIHx8IHNlbGVjdGVkU3RvcmU/LmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVyaXR5XCIgKm5nRm9yPVwibGV0IGdvbGQgb2YgbWV0YWxQcmljZT8ucHJpY2VEYXRhID8/IFswLDAsMF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9qZXdlbGxlcnMuc3RhZ2UucGFzc2Jvb2thcHAuaW4vYXNzZXRzL2ltYWdlcy9nb2xkLXNjaGVtZS8xOGtfZ29sZF9waWMuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIiAqbmdJZj1cImdvbGQ/LmthcmF0cyA9PT0gJ18xOGsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vamV3ZWxsZXJzLnN0YWdlLnBhc3Nib29rYXBwLmluL2Fzc2V0cy9pbWFnZXMvZ29sZC1zY2hlbWUvMjRrX2dvbGRfcGljLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgKm5nSWY9XCJnb2xkPy5rYXJhdHMgPT09ICdfMjRrJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2pld2VsbGVycy5zdGFnZS5wYXNzYm9va2FwcC5pbi9hc3NldHMvaW1hZ2VzL2dvbGQtc2NoZW1lLzIya19nb2xkX3BpYy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiICpuZ0lmPVwiZ29sZD8ua2FyYXRzID09PSAnXzIyaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2dvbGQ/LmthcmF0cz8ucmVwbGFjZUFsbCgnXycsIFwiXCIpfX0gR29sZCBQdXJpdHk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29sZC1wcmljZVwiPuKCuXt7Z29sZC5wcmljZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXIgbWItMyBweC0zIG1vbnRobHktc2NoZW1lXCIgKm5nSWY9XCJtaW5BbW91bnQgJiYgbWF4QW1vdW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgc3ViLWhlYWRlci10ZXh0XCI+U2VsZWN0IFlvdXIgTW9udGhseSBJbnZlc3RtZW50IEFtb3VudDwvaDY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW5yb2xsZWQtZ3JhbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJyAmJiAoc3RvcmVzLmxlbmd0aCA9PSAxIHx8IHNlbGVjdGVkU3RvcmU/LmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3twdXJjaGFzZWRHcmFtfX0gZ21zPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0ZS1zbGlkZXIgbWItNCBweC0zXCIgKm5nSWY9XCJtaW5BbW91bnQgJiYgbWF4QW1vdW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlciBbbWluXT1cIm1pbkFtb3VudFwiIFttYXhdPVwibWF4QW1vdW50XCIgW3N0ZXBdPVwiZW5yb2xsZWRTY2hlbWU/LnZhbHVlU3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBwYWxlLXNsaWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1oYW5kbGUtY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1mb2N1cy1oYW5kbGUtY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1ob3Zlci1oYW5kbGUtY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1hY3RpdmUtdHJhY2stY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci13aXRoLXRpY2stbWFya3MtYWN0aXZlLWNvbnRhaW5lci1jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1tYXQtc2xpZGVyLXJpcHBsZS1jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1tYXQtc2xpZGVyLXZhbHVlLWluZGljYXRvci1jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdFNsaWRlclRodW1iIFsobmdNb2RlbCldPVwibW9udGhseUFtb3VudFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW1vdW50Q2hhbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwiZm9ybS1yYW5nZSBjdXN0b20tcmFuZ2VcIiBbbWluXT1cIm1pbkFtb3VudFwiIFttYXhdPVwibWF4QW1vdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJlbnJvbGxlZFNjaGVtZT8udmFsdWVTdGVwXCIgWyhuZ01vZGVsKV09XCJtb250aGx5QW1vdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFtb3VudENoYW5nZSgpXCI+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1sYWJlbHMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj7igrl7e21pbkFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgZnctYm9sZCBmcy00IG1vbnRobHktYW1vdW50XCI+4oK5e3ttb250aGx5QW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+4oK5e3ttYXhBbW91bnQgfCBudW1iZXJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPk1vbnRobHkgSW52ZXN0bWVudDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmRvbV9vcGl0b25zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24gY3Vyc29yLXBvaW50ZXJcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGluc3RhbGxtZW50T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwib3B0aW9uLnN0YXR1cyA/IHsnYm9yZGVyJzogJzJweCBzb2xpZCBncmV5JywnZm9udC13ZWlnaHQnOidib2xkJ30gOiB7fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE1vbnRobHlBbW91bnQob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuSB7e29wdGlvbj8udmFsdWUgPyBvcHRpb24/LnZhbHVlIDogJ04vQSd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3ItYm90dG9tIHB4LTMgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKtkCA8aDYgY2xhc3M9XCJtYi0wIGluZGl2aWR1YWwtcmVzdWx0cy10aXRsZVwiPkluZGl2aWR1YWwgU2NoZW1lIFJlc3VsdHM8L2g2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJlbnJvbGxlZFNjaGVtZT8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTicgPyAnY29sLTYnIDogJ2NvbC00J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogbWF0dXJpdHlDb3VudCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHRleHQtbXV0ZWQgc21hbGxcIj5Zb3VyIHt7bWF0dXJpdHlDb3VudH19LU1vbnRoIENvbnRyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWU/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZCB0ZXh0LWNlbnRlciBwLTMgYm9yZGVyIHJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiPuKCuXt7YmVuZWZpdEFtb3VudCB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWxhYmVsIHRleHQtbXV0ZWQgc21hbGxcIj5TY2hlbWUgQmVuZWZpdDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIiAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgcmVzdWx0LWNhcmQtaGlnaGxpZ2h0IHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbGVkU2NoZW1lPy5iZW5lZml0VHlwZSAhPSAnRElTQ09VTlQnXCI+4oK5e3soKG1vbnRobHlBbW91bnQgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHVyaXR5Q291bnQpK2JlbmVmaXRBbW91bnQpIHwgbnVtYmVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbnJvbGxlZFNjaGVtZT8uYmVuZWZpdFR5cGUgPT09ICdESVNDT1VOVCdcIj7igrl7eygobW9udGhseUFtb3VudCAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0dXJpdHlDb3VudCkpIHwgbnVtYmVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPlRvdGFsIFJlZGVtcHRpb24gVmFsdWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCJlbnJvbGxlZFNjaGVtZT8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkIHRleHQtY2VudGVyIHAtMyBib3JkZXIgcm91bmRlZCByZXN1bHQtY2FyZC1oaWdobGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtYW1vdW50IGZ3LWJvbGQgZnMtNVwiPnt7cHVyY2hhc2VkR3JhbX19IGdtczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCAgc21hbGwgY29sb3Itd2hpdGVcIj5Hb2xkIEFsbG9jYXRpb24gVG9kYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9udXMtbWVzc2FnZSB0ZXh0LWNlbnRlciBtYi0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsZWRTY2hlbWUgJiYgKHN0b3Jlcy5sZW5ndGggPj0gMiB8fCBzdGFmZk1lbWJlcnMubGVuZ3RoID49IDIpIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZV9zZWxlY3Rpb24gIHctNTAgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCIgKm5nSWY9XCJzdG9yZXMubGVuZ3RoID49IDJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCI+IDxzcGFuPlNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtc2VsZWN0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdG9yZURyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN0b3JlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0TWV0YWxQcmljZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgZGlzYWJsZWQ+Q2hvb3NlIGEgc3RvcmUuLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZXM7XCIgW25nVmFsdWVdPVwic3RvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZS5uYW1lfX0gLSB7e3N0b3JlLnN0b3JlUmVmSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFmZi1zZWxlY3RvciB3LTUwICBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIiAqbmdJZj1cInN0YWZmTWVtYmVycy5sZW5ndGggPj0gMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48c3Bhbj5TZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFmZiBNZW1iZXIgOiA8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdGFmZkRyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN0YWZmXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkPkNob29zZSBhIHN0YWZmIG1lbWJlci4uLjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZNZW1iZXJzO1wiIFtuZ1ZhbHVlXT1cInN0YWZmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdGFmZi5uYW1lfX0gLSB7e3N0YWZmLnJvbGUgPyBzdGFmZi5yb2xlIDogJ3N0YWZmJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtcy1hbmQtY29uZGl0aW9uXCIgKm5nSWY9XCJlbnJvbGxlZFNjaGVtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInRlcm1zQW5kQ29uZGl0aW9uXCI+SSBhZ3JlZSB0byA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1Rlcm1zQW5kQ29uZGl0aW9uKClcIj5UZXJtcyAmIENvbmRpdGlvbnM8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaWRdPVwiZGF0YT8uaWQrZ2V0QnV0dG9uSWQoMClcIiBbYnV0dG9uRGF0YV09XCJnZXRCdXR0b25EYXRhKDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW5yb2xsU2NoZW1lKGVucm9sbGVkU2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlbnJvbGxCdXR0b25Mb2FkZXJcIj5FbnJvbGwgaW4gU2NoZW1lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnJvbGxCdXR0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48bWF0LXNwaW5uZXIgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPjwvbWF0LXNwaW5uZXI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDirZAgPGg2IGNsYXNzPVwibWItMCBncm91cC1yZXN1bHRzLXRpdGxlXCI+R3JvdXAgU2NoZW1lIFJlc3VsdHM8L2g2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogMTEpIHwgbnVtYmVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgdGV4dC1tdXRlZCBzbWFsbFwiPllvdXIgVG90YWwgMTEtTW9udGggQ29udHJpYnV0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgcmVzdWx0LWNhcmQtZ3JvdXAgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogMTEpIHwgbnVtYmVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPk1vbnRobHkgTHVja3kgRHJhdyBBbW91bnQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG4gdy0xMDAgcHktMyBmdy1ib2xkIG1iLTJcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiIFtidXR0b25EYXRhXT1cImdldEJ1dHRvbkRhdGEoMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnJvbGwgaW4gU2NoZW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0NoYXJnZXM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRpYWxvZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDI+UGF5bWVudCBEZXRhaWxzPC9oMj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbG9zZURpYWxvZygnRkFJTCcpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SW5zdGFsbG1lbnQgQW1vdW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/Lmluc3RhbGxtZW50QW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNvbnZlbmllbmNlIEZlZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlIHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlBheW1lbnQgU2VydmljZSBDaGFyZ2VzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5wYXltZW50U2VydmljZUNoYXJnZXM/LnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8ucGF5bWVudFNlcnZpY2VDaGFyZ2VzPy52YWx1ZSB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93IHRvdGFsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIHRvdGFsLWxhYmVsXCI+VG90YWwgQW1vdW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnQgdG90YWwtYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8udG90YWxBbW91bnQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy50b3RhbEFtb3VudCB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb250aW51ZS1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coJ1NVQ0NFU1MnKVwiPkNvbnRpbnVlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XG4gICAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19