simpo-component-library 3.6.164 → 3.6.165
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +6 -6
- package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +259 -0
- package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +2 -0
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +42 -18
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +93 -0
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +2 -0
- package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +12 -0
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +16 -4
- package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +94 -0
- package/esm2022/lib/sections/header-section/header-section.component.mjs +8 -4
- package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
- package/esm2022/lib/services/rest.service.mjs +5 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/simpo-component-library.mjs +478 -35
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/enrollment-form/enrollment-form.component.d.ts +47 -0
- package/lib/ecommerce/sections/enrollment-form/enrollment-form.model.d.ts +29 -0
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +9 -1
- package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +30 -0
- package/lib/ecommerce/sections/returns-calculator/returns-calculator.model.d.ts +14 -0
- package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +5 -0
- package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +2 -0
- package/lib/elements/list-home-appointment/list-home-appointment.component.d.ts +27 -0
- package/lib/sections/header-section/header-section.component.d.ts +2 -0
- package/lib/services/rest.service.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/simpo-component-library-3.6.165.tgz +0 -0
- package/simpo-component-library-3.6.164.tgz +0 -0
@@ -0,0 +1,259 @@
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
2
|
+
import BaseSection from '../../../sections/BaseSection';
|
3
|
+
import { CommonModule } from '@angular/common';
|
4
|
+
import { AnimationDirective } from '../../../directive/animation-directive';
|
5
|
+
import { BackgroundDirective } from '../../../directive/background-directive';
|
6
|
+
import { CornerDirective } from '../../../directive/corner-directive';
|
7
|
+
import { SimpoComponentModule } from '../../../components/index';
|
8
|
+
import { HoverDirective } from '../../../directive/hover-element-directive';
|
9
|
+
import { ButtonDirectiveDirective } from '../../../directive/button-directive.directive';
|
10
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
11
|
+
import { MatIcon } from '@angular/material/icon';
|
12
|
+
import { ContentFitDirective } from '../../../directive/content-fit-directive';
|
13
|
+
import { SpacingHorizontalDirective } from '../../../directive/spacing-horizontal.directive';
|
14
|
+
import * as i0 from "@angular/core";
|
15
|
+
import * as i1 from "../../../services/rest.service";
|
16
|
+
import * as i2 from "@angular/router";
|
17
|
+
import * as i3 from "@angular/common";
|
18
|
+
import * as i4 from "@angular/forms";
|
19
|
+
import * as i5 from "../../../components/hover-elements/hover-elements.component";
|
20
|
+
import * as i6 from "../../../components/delete-hover-element/delete-hover-element.component";
|
21
|
+
export class EnrollmentFormComponent extends BaseSection {
|
22
|
+
constructor(restService, activeRoute) {
|
23
|
+
super();
|
24
|
+
this.restService = restService;
|
25
|
+
this.activeRoute = activeRoute;
|
26
|
+
this.edit = true;
|
27
|
+
this.page = 'ENROLLMENT';
|
28
|
+
this.enrollementPayload = {
|
29
|
+
name: "",
|
30
|
+
mailId: "",
|
31
|
+
mobileNumber: "",
|
32
|
+
dateOfBirth: "",
|
33
|
+
schemeDetails: {
|
34
|
+
schemeId: "",
|
35
|
+
schemeName: "",
|
36
|
+
schemeType: "",
|
37
|
+
pwcSchemeCode: ""
|
38
|
+
},
|
39
|
+
addressDetails: {
|
40
|
+
state: {
|
41
|
+
id: "",
|
42
|
+
name: ""
|
43
|
+
},
|
44
|
+
city: {
|
45
|
+
id: "",
|
46
|
+
name: ""
|
47
|
+
},
|
48
|
+
addressLine: "",
|
49
|
+
pinCode: 0,
|
50
|
+
},
|
51
|
+
bankDetails: {
|
52
|
+
bankName: "",
|
53
|
+
accountNumber: 0,
|
54
|
+
ifscCode: "",
|
55
|
+
accountHolderName: ""
|
56
|
+
},
|
57
|
+
nomineeDetails: {
|
58
|
+
nomineeName: "",
|
59
|
+
mobile: "",
|
60
|
+
relationShip: "",
|
61
|
+
},
|
62
|
+
custodian: {
|
63
|
+
staffId: "",
|
64
|
+
staffName: "",
|
65
|
+
mobileNumber: "",
|
66
|
+
email: "",
|
67
|
+
staffCode: "",
|
68
|
+
profileImgUrl: ""
|
69
|
+
},
|
70
|
+
storeDetails: {},
|
71
|
+
enrolledGroup: {},
|
72
|
+
monthlyInstallmentAmount: 0,
|
73
|
+
pwcStoreCode: "",
|
74
|
+
subscriptionChargeDate: new Date().getDate()
|
75
|
+
};
|
76
|
+
this.schemesData = [];
|
77
|
+
this.storeData = [];
|
78
|
+
this.staffData = [];
|
79
|
+
this.stateData = [];
|
80
|
+
this.cityData = [];
|
81
|
+
this.storeSlabs = [];
|
82
|
+
this.result = null;
|
83
|
+
this.showResult = false;
|
84
|
+
this.isProcessing = false;
|
85
|
+
}
|
86
|
+
ngOnInit() {
|
87
|
+
this.getSchemes();
|
88
|
+
this.getAllStores();
|
89
|
+
this.getAllState();
|
90
|
+
}
|
91
|
+
getSchemes() {
|
92
|
+
this.restService.getAllScheme().subscribe((res) => {
|
93
|
+
this.schemesData = res?.data || [];
|
94
|
+
this.selectedScheme = this.schemesData[0];
|
95
|
+
this.setMonthlyInstallmentAmount();
|
96
|
+
}, (error) => {
|
97
|
+
console.error("Error fetching schemes: ", error);
|
98
|
+
});
|
99
|
+
}
|
100
|
+
getAllStores() {
|
101
|
+
this.restService.getAllStoresOrra(0, 10000).subscribe((res) => {
|
102
|
+
this.storeData = res?.data?.data || [];
|
103
|
+
}, (error) => {
|
104
|
+
console.error("Error fetching stores: ", error);
|
105
|
+
});
|
106
|
+
}
|
107
|
+
getStaffById() {
|
108
|
+
this.restService.getstaffByStoreId(this.enrollementPayload.storeDetails.storeId).subscribe((res) => {
|
109
|
+
this.staffData = res?.data || [];
|
110
|
+
}, (error) => {
|
111
|
+
console.error("Error fetching staff: ", error);
|
112
|
+
});
|
113
|
+
}
|
114
|
+
getAllState() {
|
115
|
+
this.restService.getAllState().subscribe((res) => {
|
116
|
+
this.stateData = res?.data || [];
|
117
|
+
}, (error) => {
|
118
|
+
console.error("Error fetching states: ", error);
|
119
|
+
});
|
120
|
+
}
|
121
|
+
getCityByStateId() {
|
122
|
+
this.restService.getCityByStateBypaginated(this.enrollementPayload.addressDetails.state.id, 0, 10000).subscribe((res) => {
|
123
|
+
this.cityData = res?.data.data || [];
|
124
|
+
}, (error) => {
|
125
|
+
console.error("Error fetching Cities: ", error);
|
126
|
+
});
|
127
|
+
}
|
128
|
+
setMonthlyInstallmentAmount() {
|
129
|
+
if (this.selectedScheme.schemeType == 'INDIVIDUAL' && this.selectedScheme.minInstallmentAmount) {
|
130
|
+
this.enrollementPayload.monthlyInstallmentAmount = this.selectedScheme.minInstallmentAmount;
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
this.getStoreSlabs();
|
134
|
+
}
|
135
|
+
}
|
136
|
+
getStoreSlabs() {
|
137
|
+
this.restService.getStoreBySlab({ storesList: this.selectedScheme.schemeSlabs[0].slabStores }).subscribe((res) => {
|
138
|
+
this.storeSlabs = res?.data || [];
|
139
|
+
}, (error) => {
|
140
|
+
console.error("Error fetching store slabs: ", error);
|
141
|
+
});
|
142
|
+
}
|
143
|
+
createEnrollment() {
|
144
|
+
this.enrollementPayload.pwcStoreCode = this.enrollementPayload.storeDetails?.pwcStoreCode || this.selectedScheme?.pwcStoreCode;
|
145
|
+
this.enrollementPayload.schemeDetails = ['schemeId', 'schemeName', 'schemeType', 'pwcSchemeCode'].reduce((acc, key) => {
|
146
|
+
if (this.selectedScheme[key] !== undefined) {
|
147
|
+
acc[key] = this.selectedScheme[key];
|
148
|
+
}
|
149
|
+
if (key == 'pwcSchemeCode') {
|
150
|
+
acc[key] = this.selectedScheme?.pwcIndividualSchemeCode;
|
151
|
+
}
|
152
|
+
return acc;
|
153
|
+
}, {});
|
154
|
+
if (this.selectedScheme.schemeType == 'GROUP') {
|
155
|
+
this.enrollementPayload.enrolledGroup.schemeId = this.selectedScheme?.schemeId;
|
156
|
+
this.enrollementPayload.enrolledGroup.schemeName = this.selectedScheme?.schemeName;
|
157
|
+
this.enrollementPayload.enrolledGroup.storeId = this.enrollementPayload?.storeDetails?.storeId;
|
158
|
+
this.enrollementPayload.enrolledGroup.storeName = this.enrollementPayload?.storeDetails?.storeName;
|
159
|
+
this.enrollementPayload.monthlyInstallmentAmount = this.enrollementPayload?.enrolledGroup?.schemeSlab?.monthlyInstallmentAmount;
|
160
|
+
}
|
161
|
+
this.enrollementPayload.addressDetails.state = ['id', 'name'].reduce((acc, key) => {
|
162
|
+
if (this.enrollementPayload.addressDetails.state?.[key] !== undefined) {
|
163
|
+
acc[key] = this.enrollementPayload.addressDetails.state[key];
|
164
|
+
}
|
165
|
+
return acc;
|
166
|
+
}, {});
|
167
|
+
this.enrollementPayload.addressDetails.city = ['id', 'name'].reduce((acc, key) => {
|
168
|
+
if (this.enrollementPayload.addressDetails.city?.[key] !== undefined) {
|
169
|
+
acc[key] = this.enrollementPayload.addressDetails.city[key];
|
170
|
+
}
|
171
|
+
return acc;
|
172
|
+
}, {});
|
173
|
+
this.enrollementPayload.custodian = [
|
174
|
+
'staffId', 'staffName', 'mobileNumber', 'email', 'staffCode', 'profileImgUrl'
|
175
|
+
].reduce((acc, key) => {
|
176
|
+
if (this.enrollementPayload.custodian?.[key] !== undefined) {
|
177
|
+
acc[key] = this.enrollementPayload.custodian[key];
|
178
|
+
}
|
179
|
+
if (key == 'staffName')
|
180
|
+
acc[key] = this.enrollementPayload.custodian?.personalInfo?.name;
|
181
|
+
if (key == 'mobileNumber')
|
182
|
+
acc[key] = this.enrollementPayload.custodian?.contactDetails?.mobile;
|
183
|
+
if (key == 'email')
|
184
|
+
acc[key] = this.enrollementPayload.custodian?.contactDetails?.email;
|
185
|
+
if (key == 'profileImgUrl')
|
186
|
+
acc[key] = this.enrollementPayload.custodian?.personalInfo?.profileImage;
|
187
|
+
if (key == 'staffCode')
|
188
|
+
acc[key] = this.enrollementPayload.custodian?.staffWorkInfo?.staffCode;
|
189
|
+
return acc;
|
190
|
+
}, {});
|
191
|
+
this.page = 'PAYMENT';
|
192
|
+
}
|
193
|
+
success() {
|
194
|
+
this.restService.createEnrollmentScheme(this.enrollementPayload).subscribe((res) => {
|
195
|
+
console.log("Enrollment created successfully: ", res);
|
196
|
+
}, (error) => {
|
197
|
+
console.error("Error creating enrollment: ", error);
|
198
|
+
});
|
199
|
+
}
|
200
|
+
simulatePayment(type) {
|
201
|
+
this.isProcessing = true;
|
202
|
+
this.showResult = false;
|
203
|
+
this.result = null;
|
204
|
+
setTimeout(() => {
|
205
|
+
this.isProcessing = false;
|
206
|
+
if (type === 'success') {
|
207
|
+
this.result = {
|
208
|
+
type: 'success',
|
209
|
+
title: 'Payment Successful!',
|
210
|
+
message: 'Your transaction has been processed successfully.',
|
211
|
+
iconClass: 'fas fa-check-circle'
|
212
|
+
};
|
213
|
+
this.success();
|
214
|
+
}
|
215
|
+
else {
|
216
|
+
this.result = {
|
217
|
+
type: 'failure',
|
218
|
+
title: 'Payment Failed!',
|
219
|
+
message: 'There was an error processing your payment. Please try again.',
|
220
|
+
iconClass: 'fas fa-exclamation-triangle'
|
221
|
+
};
|
222
|
+
}
|
223
|
+
setTimeout(() => {
|
224
|
+
this.showResult = true;
|
225
|
+
}, 100);
|
226
|
+
}, 2000);
|
227
|
+
}
|
228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnrollmentFormComponent, deps: [{ token: i1.RestService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EnrollmentFormComponent, isStandalone: true, selector: "simpo-enrollment-form", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"container py-5\" *ngIf=\"page === 'ENROLLMENT'\">\r\n <div class=\"form-container\">\r\n <div class=\"section-title\">Customer Information</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"fullName\" class=\"form-label\">Full Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"fullName\" required\r\n [(ngModel)]=\"enrollementPayload.name\">\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"email\" class=\"form-label\">Email Address <span class=\"required\">*</span></label>\r\n <input type=\"email\" class=\"form-control custom-form-control\" id=\"email\" required\r\n [(ngModel)]=\"enrollementPayload.mailId\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"mobile\" class=\"form-label\">Mobile <span class=\"required\">*</span></label>\r\n <input type=\"tel\" class=\"form-control custom-form-control\" id=\"mobile\" required\r\n [(ngModel)]=\"enrollementPayload.mobileNumber\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"dateOfBirth\" class=\"form-label\">Date of Birth <span class=\"required\">*</span></label>\r\n <input type=\"date\" class=\"form-control custom-form-control\" id=\"dateOfBirth\" required\r\n [(ngModel)]=\"enrollementPayload.dateOfBirth\">\r\n </div>\r\n </div>\r\n\r\n <!-- Scheme Information -->\r\n <div class=\"section-title\">Scheme Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"scheme\" class=\"form-label\">Scheme <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"scheme\" required [(ngModel)]=\"selectedScheme\"\r\n (ngModelChange)=\"setMonthlyInstallmentAmount()\">\r\n <option [ngValue]=\"\">Select Scheme</option>\r\n <ng-container *ngFor=\"let scheme of schemesData\">\r\n <option [ngValue]=\"scheme\">{{scheme.schemeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"monthlyAmount\" class=\"form-label\">Monthly Amount <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"monthlyAmount\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'INDIVIDUAL'\"\r\n [(ngModel)]=\"enrollementPayload.monthlyInstallmentAmount\">\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'GROUP'\"\r\n [(ngModel)]=\"enrollementPayload.enrolledGroup.schemeSlab\">\r\n <option [ngValue]=\"\">Select Amount Plan</option>\r\n <ng-container *ngFor=\"let slab of selectedScheme.schemeSlabs\">\r\n <option [ngValue]=\"slab\">{{slab.monthlyInstallmentAmount ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Information -->\r\n <div class=\"section-title\">Store Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n [(ngModel)]=\"enrollementPayload.storeDetails\" (ngModelChange)=\"getStaffById()\">\r\n <option [ngValue]=\"\">Select Store</option>\r\n <ng-container *ngFor=\"let store of storeData\">\r\n <option [ngValue]=\"store\">{{store.storeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"subdivision\" class=\"form-label\">Custodian</label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\"\r\n [(ngModel)]=\"enrollementPayload.custodian\">\r\n <option [ngValue]=\"\">Select Custodian</option>\r\n <ng-container *ngFor=\"let staff of staffData\">\r\n <option [ngValue]=\"staff\">{{staff.personalInfo.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Enter Your Address -->\r\n <div class=\"section-title\">Enter Your Address</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"address\" class=\"form-label\">Address <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"address\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.addressLine\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"state\" class=\"form-label\">State <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.state\"\r\n (ngModelChange)=\"getCityByStateId()\">\r\n <option [ngValue]=\"\">Select State</option>\r\n <ng-container *ngFor=\"let state of stateData\">\r\n <option [ngValue]=\"state\">{{state.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"city\" class=\"form-label\">City <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.city\">\r\n <option [ngValue]=\"\">Select City</option>\r\n <ng-container *ngFor=\"let city of cityData\">\r\n <option [ngValue]=\"city\">{{city.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"pincode\" class=\"form-label\">Pincode <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"pincode\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.pinCode\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Enter Nominee Details</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"nomineeName\" class=\"form-label\">Full Name of Nominee <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"nomineeName\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.nomineeName\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"relationship\" class=\"form-label\">Select Relationship <span\r\n class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"relationship\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.relationShip\">\r\n <!-- <option value=\"\">Select Relationship</option> -->\r\n <option value=\"Spouse\">Spouse</option>\r\n <option value=\"Child\">Child</option>\r\n <option value=\"Mother\">Mother</option>\r\n <option value=\"Father\">Father</option>\r\n <option value=\"Sibling\">Sibling</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"nomineePhone\" class=\"form-label\">Mobile Number <span class=\"required\">*</span></label>\r\n\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"nomineePhone\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.mobile\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Account Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"accountHolder\" class=\"form-label\">Account Holder Name <span\r\n class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountHolder\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountHolderName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"accountNumber\" class=\"form-label\">Account Number <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountNumber\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountNumber\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"bankName\" class=\"form-label\">Bank Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"bankName\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.bankName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"ifscCode\" class=\"form-label\">IFSC Code <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"ifscCode\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.ifscCode\">\r\n </div>\r\n </div>\r\n <div class=\"d-grid mt-4\">\r\n <button type=\"submit\" class=\"btn btn-submit\" (click)=\"createEnrollment()\">Submit Enrollment</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"container-fluid d-flex justify-content-center align-items-center min-vh-100\" *ngIf=\"page === 'PAYMENT'\">\r\n <div class=\"card shadow-lg border-0 payment-card\">\r\n <div class=\"card-header bg-primary text-white text-center py-3\">\r\n <h2 class=\"card-title mb-0\">\r\n <i class=\"fas fa-credit-card me-2\"></i>\r\n Payment Simulation\r\n </h2>\r\n </div>\r\n\r\n <div class=\"card-body p-4\">\r\n <div class=\"row g-3 mb-4\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-lg w-100 payment-btn\" (click)=\"simulatePayment('success')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-check-circle me-2\"></i>\r\n <span class=\"btn-text\">Success</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-danger btn-lg w-100 payment-btn\" (click)=\"simulatePayment('failure')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-times-circle me-2\"></i>\r\n <span class=\"btn-text\">Failure</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isProcessing\" class=\"text-center mb-3\">\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"spinner-border text-primary me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\">Processing payment...</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"result\" class=\"alert alert-dismissible fade\" [ngClass]=\"{\r\n 'alert-success': result.type === 'success', \r\n 'alert-danger': result.type === 'failure',\r\n 'show': showResult\r\n }\" role=\"alert\">\r\n <i [class]=\"result.iconClass + ' me-2'\"></i>\r\n <strong>{{ result.title }}</strong> {{ result.message }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-footer bg-light text-center py-3\">\r\n <small class=\"text-muted\">\r\n <i class=\"fas fa-info-circle me-1\"></i>\r\n Click buttons to simulate payment scenarios\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.form-container{width:60%;border-radius:12px;padding:30px;margin:0 auto;box-shadow:0 2px 10px #0000001a}.section-title{font-size:18px;font-weight:600;margin-bottom:20px;margin-top:30px}.section-title:first-child{margin-top:0}.custom-form-control{border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;transition:all .2s}.custom-form-control:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-control::placeholder{color:#a0aec0;font-weight:400}.custom-form-control.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.custom-form-select{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;appearance:none}.custom-form-select:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-select.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.form-label{font-size:14px;font-weight:500;color:#718096;margin-bottom:8px}.required{color:#e53e3e}.phone-input-group{display:flex;gap:0}.phone-code{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px 0 0 8px;border-right:none;padding:12px 16px;display:flex;align-items:center;gap:8px;font-size:14px;color:#4a5568;font-weight:500}.phone-code:after{content:\"\\25bc\";color:#a0aec0;font-size:12px}.phone-input-group .custom-form-control{border-radius:0 8px 8px 0;border-left:none}.radio-group{display:flex;gap:12px;margin-top:12px}.radio-option{flex:1;background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;position:relative}.radio-option:hover{background-color:#edf2f7}.radio-option.selected{background-color:#e6fffa;border-color:#38b2ac}.radio-option input[type=radio]{position:absolute;opacity:0;cursor:pointer}.radio-option .radio-circle{width:20px;height:20px;border:2px solid #cbd5e0;border-radius:50%;position:absolute;top:16px;right:16px;background:#fff}.radio-option.selected .radio-circle{border-color:#38b2ac}.radio-option.selected .radio-circle:after{content:\"\";width:10px;height:10px;background:#38b2ac;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.radio-option label{font-size:14px;font-weight:500;color:#4a5568;cursor:pointer;display:block;margin-bottom:0;padding-right:30px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;padding:14px 30px;border-radius:8px;font-weight:600;font-size:16px;transition:transform .2s}.btn-submit:hover{transform:translateY(-1px);color:#fff}.mb-3{margin-bottom:1rem!important}.mt-4{margin-top:1.5rem!important}.payment-card{max-width:500px;width:100%;border-radius:15px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2}.card-header{background:linear-gradient(135deg,#007bff,#0056b3)!important;border-bottom:none}.payment-btn{position:relative;overflow:hidden;border:none;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .3s ease;box-shadow:0 4px 15px #0003}.payment-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.payment-btn:active:not(:disabled){transform:translateY(0)}.payment-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.btn-overlay{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.payment-btn:hover:not(:disabled) .btn-overlay{left:100%}.btn-success{background:linear-gradient(45deg,#28a745,#20c997);border-color:#28a745}.btn-success:hover:not(:disabled){background:linear-gradient(45deg,#218838,#1aa085);border-color:#1e7e34}.btn-danger{background:linear-gradient(45deg,#dc3545,#e74c3c);border-color:#dc3545}.btn-danger:hover:not(:disabled){background:linear-gradient(45deg,#c82333,#d62c1a);border-color:#bd2130}.alert{border:none;border-radius:10px;font-weight:500;box-shadow:0 4px 15px #0000001a}.alert-success{background:linear-gradient(45deg,#d4edda,#c3e6cb);color:#155724}.alert-danger{background:linear-gradient(45deg,#f8d7da,#f5c6cb);color:#721c24}.min-vh-100{min-height:100vh}.card-footer{background:#f8f9facc!important;border-top:1px solid rgba(0,0,0,.125)}body{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.alert.show{animation:fadeInUp .3s ease-out}.spinner-border{width:1.5rem;height:1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
|
230
|
+
}
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnrollmentFormComponent, decorators: [{
|
232
|
+
type: Component,
|
233
|
+
args: [{ selector: 'simpo-enrollment-form', standalone: true, imports: [
|
234
|
+
CommonModule,
|
235
|
+
FormsModule,
|
236
|
+
ReactiveFormsModule,
|
237
|
+
MatIcon,
|
238
|
+
SimpoComponentModule,
|
239
|
+
AnimationDirective,
|
240
|
+
BackgroundDirective,
|
241
|
+
CornerDirective,
|
242
|
+
HoverDirective,
|
243
|
+
ButtonDirectiveDirective,
|
244
|
+
ContentFitDirective,
|
245
|
+
SpacingHorizontalDirective,
|
246
|
+
MatIcon
|
247
|
+
], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"container py-5\" *ngIf=\"page === 'ENROLLMENT'\">\r\n <div class=\"form-container\">\r\n <div class=\"section-title\">Customer Information</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"fullName\" class=\"form-label\">Full Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"fullName\" required\r\n [(ngModel)]=\"enrollementPayload.name\">\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"email\" class=\"form-label\">Email Address <span class=\"required\">*</span></label>\r\n <input type=\"email\" class=\"form-control custom-form-control\" id=\"email\" required\r\n [(ngModel)]=\"enrollementPayload.mailId\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"mobile\" class=\"form-label\">Mobile <span class=\"required\">*</span></label>\r\n <input type=\"tel\" class=\"form-control custom-form-control\" id=\"mobile\" required\r\n [(ngModel)]=\"enrollementPayload.mobileNumber\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"dateOfBirth\" class=\"form-label\">Date of Birth <span class=\"required\">*</span></label>\r\n <input type=\"date\" class=\"form-control custom-form-control\" id=\"dateOfBirth\" required\r\n [(ngModel)]=\"enrollementPayload.dateOfBirth\">\r\n </div>\r\n </div>\r\n\r\n <!-- Scheme Information -->\r\n <div class=\"section-title\">Scheme Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"scheme\" class=\"form-label\">Scheme <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"scheme\" required [(ngModel)]=\"selectedScheme\"\r\n (ngModelChange)=\"setMonthlyInstallmentAmount()\">\r\n <option [ngValue]=\"\">Select Scheme</option>\r\n <ng-container *ngFor=\"let scheme of schemesData\">\r\n <option [ngValue]=\"scheme\">{{scheme.schemeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"monthlyAmount\" class=\"form-label\">Monthly Amount <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"monthlyAmount\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'INDIVIDUAL'\"\r\n [(ngModel)]=\"enrollementPayload.monthlyInstallmentAmount\">\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n *ngIf=\"selectedScheme?.schemeType == 'GROUP'\"\r\n [(ngModel)]=\"enrollementPayload.enrolledGroup.schemeSlab\">\r\n <option [ngValue]=\"\">Select Amount Plan</option>\r\n <ng-container *ngFor=\"let slab of selectedScheme.schemeSlabs\">\r\n <option [ngValue]=\"slab\">{{slab.monthlyInstallmentAmount ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Information -->\r\n <div class=\"section-title\">Store Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\" required\r\n [(ngModel)]=\"enrollementPayload.storeDetails\" (ngModelChange)=\"getStaffById()\">\r\n <option [ngValue]=\"\">Select Store</option>\r\n <ng-container *ngFor=\"let store of storeData\">\r\n <option [ngValue]=\"store\">{{store.storeName ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"subdivision\" class=\"form-label\">Custodian</label>\r\n <select class=\"form-select custom-form-select\" id=\"subdivision\"\r\n [(ngModel)]=\"enrollementPayload.custodian\">\r\n <option [ngValue]=\"\">Select Custodian</option>\r\n <ng-container *ngFor=\"let staff of staffData\">\r\n <option [ngValue]=\"staff\">{{staff.personalInfo.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Enter Your Address -->\r\n <div class=\"section-title\">Enter Your Address</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"address\" class=\"form-label\">Address <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"address\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.addressLine\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"state\" class=\"form-label\">State <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.state\"\r\n (ngModelChange)=\"getCityByStateId()\">\r\n <option [ngValue]=\"\">Select State</option>\r\n <ng-container *ngFor=\"let state of stateData\">\r\n <option [ngValue]=\"state\">{{state.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"city\" class=\"form-label\">City <span class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" [(ngModel)]=\"enrollementPayload.addressDetails.city\">\r\n <option [ngValue]=\"\">Select City</option>\r\n <ng-container *ngFor=\"let city of cityData\">\r\n <option [ngValue]=\"city\">{{city.name ?? \"-\"}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"pincode\" class=\"form-label\">Pincode <span class=\"required\">*</span></label>\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"pincode\" required\r\n [(ngModel)]=\"enrollementPayload.addressDetails.pinCode\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Enter Nominee Details</div>\r\n\r\n <div class=\"mb-3\">\r\n <label for=\"nomineeName\" class=\"form-label\">Full Name of Nominee <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"nomineeName\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.nomineeName\">\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"relationship\" class=\"form-label\">Select Relationship <span\r\n class=\"required\">*</span></label>\r\n <select class=\"form-select custom-form-select\" id=\"relationship\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.relationShip\">\r\n <!-- <option value=\"\">Select Relationship</option> -->\r\n <option value=\"Spouse\">Spouse</option>\r\n <option value=\"Child\">Child</option>\r\n <option value=\"Mother\">Mother</option>\r\n <option value=\"Father\">Father</option>\r\n <option value=\"Sibling\">Sibling</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"nomineePhone\" class=\"form-label\">Mobile Number <span class=\"required\">*</span></label>\r\n\r\n <input type=\"number\" class=\"form-control custom-form-control\" id=\"nomineePhone\" required\r\n [(ngModel)]=\"enrollementPayload.nomineeDetails.mobile\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">Account Information</div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"accountHolder\" class=\"form-label\">Account Holder Name <span\r\n class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountHolder\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountHolderName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"accountNumber\" class=\"form-label\">Account Number <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"accountNumber\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.accountNumber\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-md-6\">\r\n <label for=\"bankName\" class=\"form-label\">Bank Name <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"bankName\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.bankName\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <label for=\"ifscCode\" class=\"form-label\">IFSC Code <span class=\"required\">*</span></label>\r\n <input type=\"text\" class=\"form-control custom-form-control\" id=\"ifscCode\" required\r\n [(ngModel)]=\"enrollementPayload.bankDetails.ifscCode\">\r\n </div>\r\n </div>\r\n <div class=\"d-grid mt-4\">\r\n <button type=\"submit\" class=\"btn btn-submit\" (click)=\"createEnrollment()\">Submit Enrollment</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"container-fluid d-flex justify-content-center align-items-center min-vh-100\" *ngIf=\"page === 'PAYMENT'\">\r\n <div class=\"card shadow-lg border-0 payment-card\">\r\n <div class=\"card-header bg-primary text-white text-center py-3\">\r\n <h2 class=\"card-title mb-0\">\r\n <i class=\"fas fa-credit-card me-2\"></i>\r\n Payment Simulation\r\n </h2>\r\n </div>\r\n\r\n <div class=\"card-body p-4\">\r\n <div class=\"row g-3 mb-4\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-lg w-100 payment-btn\" (click)=\"simulatePayment('success')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-check-circle me-2\"></i>\r\n <span class=\"btn-text\">Success</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-danger btn-lg w-100 payment-btn\" (click)=\"simulatePayment('failure')\"\r\n [disabled]=\"isProcessing\">\r\n <i class=\"fas fa-times-circle me-2\"></i>\r\n <span class=\"btn-text\">Failure</span>\r\n <div class=\"btn-overlay\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isProcessing\" class=\"text-center mb-3\">\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"spinner-border text-primary me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n <span class=\"text-muted\">Processing payment...</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"result\" class=\"alert alert-dismissible fade\" [ngClass]=\"{\r\n 'alert-success': result.type === 'success', \r\n 'alert-danger': result.type === 'failure',\r\n 'show': showResult\r\n }\" role=\"alert\">\r\n <i [class]=\"result.iconClass + ' me-2'\"></i>\r\n <strong>{{ result.title }}</strong> {{ result.message }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-footer bg-light text-center py-3\">\r\n <small class=\"text-muted\">\r\n <i class=\"fas fa-info-circle me-1\"></i>\r\n Click buttons to simulate payment scenarios\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.form-container{width:60%;border-radius:12px;padding:30px;margin:0 auto;box-shadow:0 2px 10px #0000001a}.section-title{font-size:18px;font-weight:600;margin-bottom:20px;margin-top:30px}.section-title:first-child{margin-top:0}.custom-form-control{border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;transition:all .2s}.custom-form-control:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-control::placeholder{color:#a0aec0;font-weight:400}.custom-form-control.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.custom-form-select{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;font-size:14px;color:#2d3748;font-weight:500;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;appearance:none}.custom-form-select:focus{background-color:#f7fafc;border-color:#667eea;box-shadow:0 0 0 .2rem #667eea40}.custom-form-select.filled{background-color:#edf2f7;border-color:#cbd5e0;font-weight:600}.form-label{font-size:14px;font-weight:500;color:#718096;margin-bottom:8px}.required{color:#e53e3e}.phone-input-group{display:flex;gap:0}.phone-code{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px 0 0 8px;border-right:none;padding:12px 16px;display:flex;align-items:center;gap:8px;font-size:14px;color:#4a5568;font-weight:500}.phone-code:after{content:\"\\25bc\";color:#a0aec0;font-size:12px}.phone-input-group .custom-form-control{border-radius:0 8px 8px 0;border-left:none}.radio-group{display:flex;gap:12px;margin-top:12px}.radio-option{flex:1;background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;position:relative}.radio-option:hover{background-color:#edf2f7}.radio-option.selected{background-color:#e6fffa;border-color:#38b2ac}.radio-option input[type=radio]{position:absolute;opacity:0;cursor:pointer}.radio-option .radio-circle{width:20px;height:20px;border:2px solid #cbd5e0;border-radius:50%;position:absolute;top:16px;right:16px;background:#fff}.radio-option.selected .radio-circle{border-color:#38b2ac}.radio-option.selected .radio-circle:after{content:\"\";width:10px;height:10px;background:#38b2ac;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.radio-option label{font-size:14px;font-weight:500;color:#4a5568;cursor:pointer;display:block;margin-bottom:0;padding-right:30px}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;padding:14px 30px;border-radius:8px;font-weight:600;font-size:16px;transition:transform .2s}.btn-submit:hover{transform:translateY(-1px);color:#fff}.mb-3{margin-bottom:1rem!important}.mt-4{margin-top:1.5rem!important}.payment-card{max-width:500px;width:100%;border-radius:15px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2}.card-header{background:linear-gradient(135deg,#007bff,#0056b3)!important;border-bottom:none}.payment-btn{position:relative;overflow:hidden;border:none;border-radius:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .3s ease;box-shadow:0 4px 15px #0003}.payment-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.payment-btn:active:not(:disabled){transform:translateY(0)}.payment-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.btn-overlay{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.payment-btn:hover:not(:disabled) .btn-overlay{left:100%}.btn-success{background:linear-gradient(45deg,#28a745,#20c997);border-color:#28a745}.btn-success:hover:not(:disabled){background:linear-gradient(45deg,#218838,#1aa085);border-color:#1e7e34}.btn-danger{background:linear-gradient(45deg,#dc3545,#e74c3c);border-color:#dc3545}.btn-danger:hover:not(:disabled){background:linear-gradient(45deg,#c82333,#d62c1a);border-color:#bd2130}.alert{border:none;border-radius:10px;font-weight:500;box-shadow:0 4px 15px #0000001a}.alert-success{background:linear-gradient(45deg,#d4edda,#c3e6cb);color:#155724}.alert-danger{background:linear-gradient(45deg,#f8d7da,#f5c6cb);color:#721c24}.min-vh-100{min-height:100vh}.card-footer{background:#f8f9facc!important;border-top:1px solid rgba(0,0,0,.125)}body{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.alert.show{animation:fadeInUp .3s ease-out}.spinner-border{width:1.5rem;height:1.5rem}\n"] }]
|
248
|
+
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.ActivatedRoute }], propDecorators: { data: [{
|
249
|
+
type: Input
|
250
|
+
}], edit: [{
|
251
|
+
type: Input
|
252
|
+
}], customClass: [{
|
253
|
+
type: Input
|
254
|
+
}], delete: [{
|
255
|
+
type: Input
|
256
|
+
}], index: [{
|
257
|
+
type: Input
|
258
|
+
}] } });
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsbWVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL2Vucm9sbG1lbnQtZm9ybS9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZW5yb2xsbWVudC1mb3JtL2Vucm9sbG1lbnQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUcvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxp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QUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBNVBVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhNQ3ZDcEMsb2xkQTJQTSxnaktEck9GLFlBQVksNlZBQ1osV0FBVyx3NENBQ1gsbUJBQW1CLDhCQUVuQixvQkFBb0Isb1dBSXBCLGNBQWM7OzRGQVNMLHVCQUF1QjtrQkFyQm5DLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixPQUFPO3FCQUNSOzZHQU1RLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgTmdNb2R1bGUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEVucm9sbG1lbnRGb3JtTW9kZWwsIEVucm9sbG1lbnRGb3JtU3R5bGVNb2RlbCB9IGZyb20gJy4vZW5yb2xsbWVudC1mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgZXJyb3IgfSBmcm9tICdjb25zb2xlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tZW5yb2xsbWVudC1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9lbnJvbGxtZW50LWZvcm0uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEVucm9sbG1lbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG5cclxuICBASW5wdXQoKSBkYXRhPzogRW5yb2xsbWVudEZvcm1Nb2RlbDtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBzdHlsZXM/OiBFbnJvbGxtZW50Rm9ybVN0eWxlTW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2NoZW1lcygpO1xyXG4gICAgdGhpcy5nZXRBbGxTdG9yZXMoKTtcclxuICAgIHRoaXMuZ2V0QWxsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHBhZ2U6ICdFTlJPTExNRU5UJyB8ICdQQVlNRU5UJyA9ICdFTlJPTExNRU5UJztcclxuXHJcbiAgZW5yb2xsZW1lbnRQYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBuYW1lOiBcIlwiLFxyXG4gICAgbWFpbElkOiBcIlwiLFxyXG4gICAgbW9iaWxlTnVtYmVyOiBcIlwiLFxyXG4gICAgZGF0ZU9mQmlydGg6IFwiXCIsXHJcbiAgICBzY2hlbWVEZXRhaWxzOiB7XHJcbiAgICAgIHNjaGVtZUlkOiBcIlwiLFxyXG4gICAgICBzY2hlbWVOYW1lOiBcIlwiLFxyXG4gICAgICBzY2hlbWVUeXBlOiBcIlwiLFxyXG4gICAgICBwd2NTY2hlbWVDb2RlOiBcIlwiXHJcbiAgICB9LFxyXG4gICAgYWRkcmVzc0RldGFpbHM6IHtcclxuICAgICAgc3RhdGU6IHtcclxuICAgICAgICBpZDogXCJcIixcclxuICAgICAgICBuYW1lOiBcIlwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGNpdHk6IHtcclxuICAgICAgICBpZDogXCJcIixcclxuICAgICAgICBuYW1lOiBcIlwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZHJlc3NMaW5lOiBcIlwiLFxyXG4gICAgICBwaW5Db2RlOiAwLFxyXG4gICAgfSxcclxuICAgIGJhbmtEZXRhaWxzOiB7XHJcbiAgICAgIGJhbmtOYW1lOiBcIlwiLFxyXG4gICAgICBhY2NvdW50TnVtYmVyOiAwLFxyXG4gICAgICBpZnNjQ29kZTogXCJcIixcclxuICAgICAgYWNjb3VudEhvbGRlck5hbWU6IFwiXCJcclxuICAgIH0sXHJcbiAgICBub21pbmVlRGV0YWlsczoge1xyXG4gICAgICBub21pbmVlTmFtZTogXCJcIixcclxuICAgICAgbW9iaWxlOiBcIlwiLFxyXG4gICAgICByZWxhdGlvblNoaXA6IFwiXCIsXHJcbiAgICB9LFxyXG4gICAgY3VzdG9kaWFuOiB7XHJcbiAgICAgIHN0YWZmSWQ6IFwiXCIsXHJcbiAgICAgIHN0YWZmTmFtZTogXCJcIixcclxuICAgICAgbW9iaWxlTnVtYmVyOiBcIlwiLFxyXG4gICAgICBlbWFpbDogXCJcIixcclxuICAgICAgc3RhZmZDb2RlOiBcIlwiLFxyXG4gICAgICBwcm9maWxlSW1nVXJsOiBcIlwiXHJcbiAgICB9LFxyXG4gICAgc3RvcmVEZXRhaWxzOiB7fSxcclxuICAgIGVucm9sbGVkR3JvdXA6IHt9LFxyXG4gICAgbW9udGhseUluc3RhbGxtZW50QW1vdW50OiAwLFxyXG4gICAgcHdjU3RvcmVDb2RlOiBcIlwiLFxyXG4gICAgc3Vic2NyaXB0aW9uQ2hhcmdlRGF0ZSA6IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpXHJcbiAgfVxyXG5cclxuICBzY2hlbWVzRGF0YTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRTY2hlbWU6IGFueTtcclxuICBnZXRTY2hlbWVzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTY2hlbWUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2NoZW1lc0RhdGEgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTY2hlbWUgPSB0aGlzLnNjaGVtZXNEYXRhWzBdO1xyXG4gICAgICB0aGlzLnNldE1vbnRobHlJbnN0YWxsbWVudEFtb3VudCgpO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc2NoZW1lczogXCIsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc3RvcmVEYXRhOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlOiBhbnk7XHJcbiAgZ2V0QWxsU3RvcmVzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTdG9yZXNPcnJhKDAsIDEwMDAwKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVEYXRhID0gcmVzPy5kYXRhPy5kYXRhIHx8IFtdO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc3RvcmVzOiBcIiwgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzdGFmZkRhdGE6IGFueSA9IFtdO1xyXG4gIGdldFN0YWZmQnlJZCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0c3RhZmZCeVN0b3JlSWQodGhpcy5lbnJvbGxlbWVudFBheWxvYWQuc3RvcmVEZXRhaWxzLnN0b3JlSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdGFmZkRhdGEgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBzdGFmZjogXCIsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHN0YXRlRGF0YTogYW55ID0gW107XHJcbiAgZ2V0QWxsU3RhdGUoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbFN0YXRlKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlRGF0YSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHN0YXRlczogXCIsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGNpdHlEYXRhOiBhbnkgPSBbXTtcclxuICBnZXRDaXR5QnlTdGF0ZUlkKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRDaXR5QnlTdGF0ZUJ5cGFnaW5hdGVkKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLnN0YXRlLmlkLCAwLCAxMDAwMCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNpdHlEYXRhID0gcmVzPy5kYXRhLmRhdGEgfHwgW107XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBDaXRpZXM6IFwiLCBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXRNb250aGx5SW5zdGFsbG1lbnRBbW91bnQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNjaGVtZS5zY2hlbWVUeXBlID09ICdJTkRJVklEVUFMJyAmJiB0aGlzLnNlbGVjdGVkU2NoZW1lLm1pbkluc3RhbGxtZW50QW1vdW50KSB7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLm1vbnRobHlJbnN0YWxsbWVudEFtb3VudCA9IHRoaXMuc2VsZWN0ZWRTY2hlbWUubWluSW5zdGFsbG1lbnRBbW91bnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFN0b3JlU2xhYnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3JlU2xhYnM6IGFueSA9IFtdO1xyXG4gIGdldFN0b3JlU2xhYnMoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFN0b3JlQnlTbGFiKHsgc3RvcmVzTGlzdDogdGhpcy5zZWxlY3RlZFNjaGVtZS5zY2hlbWVTbGFic1swXS5zbGFiU3RvcmVzIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZVNsYWJzID0gcmVzPy5kYXRhIHx8IFtdO1xyXG4gICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgc3RvcmUgc2xhYnM6IFwiLCBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbnJvbGxtZW50KCkge1xyXG5cclxuICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLnB3Y1N0b3JlQ29kZSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLnN0b3JlRGV0YWlscz8ucHdjU3RvcmVDb2RlIHx8IHRoaXMuc2VsZWN0ZWRTY2hlbWU/LnB3Y1N0b3JlQ29kZTtcclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5zY2hlbWVEZXRhaWxzID0gWydzY2hlbWVJZCcsICdzY2hlbWVOYW1lJywgJ3NjaGVtZVR5cGUnLCAncHdjU2NoZW1lQ29kZSddLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZW1lW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5zZWxlY3RlZFNjaGVtZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT0gJ3B3Y1NjaGVtZUNvZGUnKSB7XHJcbiAgICAgICAgYWNjW2tleV0gPSB0aGlzLnNlbGVjdGVkU2NoZW1lPy5wd2NJbmRpdmlkdWFsU2NoZW1lQ29kZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZW1lLnNjaGVtZVR5cGUgPT0gJ0dST1VQJykge1xyXG4gICAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5lbnJvbGxlZEdyb3VwLnNjaGVtZUlkID0gdGhpcy5zZWxlY3RlZFNjaGVtZT8uc2NoZW1lSWQ7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc2NoZW1lTmFtZSA9IHRoaXMuc2VsZWN0ZWRTY2hlbWU/LnNjaGVtZU5hbWU7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc3RvcmVJZCA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkPy5zdG9yZURldGFpbHM/LnN0b3JlSWQ7XHJcbiAgICAgIHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmVucm9sbGVkR3JvdXAuc3RvcmVOYW1lID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQ/LnN0b3JlRGV0YWlscz8uc3RvcmVOYW1lO1xyXG4gICAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5tb250aGx5SW5zdGFsbG1lbnRBbW91bnQgPSB0aGlzLmVucm9sbGVtZW50UGF5bG9hZD8uZW5yb2xsZWRHcm91cD8uc2NoZW1lU2xhYj8ubW9udGhseUluc3RhbGxtZW50QW1vdW50O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5zdGF0ZSA9IFsnaWQnLCAnbmFtZSddLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5zdGF0ZT8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMuc3RhdGVba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5jaXR5ID0gWydpZCcsICduYW1lJ10ucmVkdWNlKChhY2M6IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLmNpdHk/LltrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmFkZHJlc3NEZXRhaWxzLmNpdHlba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG5cclxuXHJcbiAgICB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4gPSBbXHJcbiAgICAgICdzdGFmZklkJywgJ3N0YWZmTmFtZScsICdtb2JpbGVOdW1iZXInLCAnZW1haWwnLCAnc3RhZmZDb2RlJywgJ3Byb2ZpbGVJbWdVcmwnXHJcbiAgICBdLnJlZHVjZSgoYWNjOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4/LltrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhbltrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT0gJ3N0YWZmTmFtZScpXHJcbiAgICAgICAgYWNjW2tleV0gPSB0aGlzLmVucm9sbGVtZW50UGF5bG9hZC5jdXN0b2RpYW4/LnBlcnNvbmFsSW5mbz8ubmFtZVxyXG4gICAgICBpZiAoa2V5ID09ICdtb2JpbGVOdW1iZXInKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5jb250YWN0RGV0YWlscz8ubW9iaWxlXHJcbiAgICAgIGlmIChrZXkgPT0gJ2VtYWlsJylcclxuICAgICAgICBhY2Nba2V5XSA9IHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhbj8uY29udGFjdERldGFpbHM/LmVtYWlsXHJcbiAgICAgIGlmIChrZXkgPT0gJ3Byb2ZpbGVJbWdVcmwnKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5wZXJzb25hbEluZm8/LnByb2ZpbGVJbWFnZVxyXG4gICAgICBpZiAoa2V5ID09ICdzdGFmZkNvZGUnKVxyXG4gICAgICAgIGFjY1trZXldID0gdGhpcy5lbnJvbGxlbWVudFBheWxvYWQuY3VzdG9kaWFuPy5zdGFmZldvcmtJbmZvPy5zdGFmZkNvZGU7XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCB7fSk7XHJcbiAgICB0aGlzLnBhZ2UgPSAnUEFZTUVOVCc7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5jcmVhdGVFbnJvbGxtZW50U2NoZW1lKHRoaXMuZW5yb2xsZW1lbnRQYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRW5yb2xsbWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogXCIsIHJlcyk7XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjcmVhdGluZyBlbnJvbGxtZW50OiBcIiwgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICByZXN1bHQ6IHtcclxuICAgIHR5cGU6ICdzdWNjZXNzJyB8ICdmYWlsdXJlJyxcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBpY29uQ2xhc3M6IHN0cmluZ1xyXG4gIH0gfCBudWxsID0gbnVsbDtcclxuICBzaG93UmVzdWx0ID0gZmFsc2U7XHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gIHNpbXVsYXRlUGF5bWVudCh0eXBlOiAnc3VjY2VzcycgfCAnZmFpbHVyZScpIHtcclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXN1bHQgPSBudWxsO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICB0aXRsZTogJ1BheW1lbnQgU3VjY2Vzc2Z1bCEnLFxyXG4gICAgICAgICAgbWVzc2FnZTogJ1lvdXIgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS4nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAnZmFzIGZhLWNoZWNrLWNpcmNsZSdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc3VjY2VzcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzdWx0ID0ge1xyXG4gICAgICAgICAgdHlwZTogJ2ZhaWx1cmUnLFxyXG4gICAgICAgICAgdGl0bGU6ICdQYXltZW50IEZhaWxlZCEnLFxyXG4gICAgICAgICAgbWVzc2FnZTogJ1RoZXJlIHdhcyBhbiBlcnJvciBwcm9jZXNzaW5nIHlvdXIgcGF5bWVudC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAnZmFzIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJ1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93UmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHB5LTVcIiAqbmdJZj1cInBhZ2UgPT09ICdFTlJPTExNRU5UJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkN1c3RvbWVyIEluZm9ybWF0aW9uPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZ1bGxOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RnVsbCBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJmdWxsTmFtZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbCBBZGRyZXNzIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiZW1haWxcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLm1haWxJZFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1vYmlsZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk1vYmlsZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGVsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibW9iaWxlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkYXRlT2ZCaXJ0aFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRhdGUgb2YgQmlydGggPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJkYXRlT2ZCaXJ0aFwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmRhdGVPZkJpcnRoXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFNjaGVtZSBJbmZvcm1hdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5TY2hlbWUgSW5mb3JtYXRpb248L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlNjaGVtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBpZD1cInNjaGVtZVwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTY2hlbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRNb250aGx5SW5zdGFsbG1lbnRBbW91bnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIlwiPlNlbGVjdCBTY2hlbWU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2NoZW1lIG9mIHNjaGVtZXNEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInNjaGVtZVwiPnt7c2NoZW1lLnNjaGVtZU5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1vbnRobHlBbW91bnRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Nb250aGx5IEFtb3VudCA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibW9udGhseUFtb3VudFwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRTY2hlbWU/LnNjaGVtZVR5cGUgPT0gJ0lORElWSURVQUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubW9udGhseUluc3RhbGxtZW50QW1vdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGN1c3RvbS1mb3JtLXNlbGVjdFwiIGlkPVwic3ViZGl2aXNpb25cIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkU2NoZW1lPy5zY2hlbWVUeXBlID09ICdHUk9VUCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5lbnJvbGxlZEdyb3VwLnNjaGVtZVNsYWJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgQW1vdW50IFBsYW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xhYiBvZiBzZWxlY3RlZFNjaGVtZS5zY2hlbWVTbGFic1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJzbGFiXCI+e3tzbGFiLm1vbnRobHlJbnN0YWxsbWVudEFtb3VudCA/PyBcIi1cIn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBTdG9yZSBJbmZvcm1hdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5TdG9yZSBJbmZvcm1hdGlvbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RvcmVOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgTmFtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBpZD1cInN1YmRpdmlzaW9uXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuc3RvcmVEZXRhaWxzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0U3RhZmZCeUlkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgU3RvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0b3JlXCI+e3tzdG9yZS5zdG9yZU5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN1YmRpdmlzaW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q3VzdG9kaWFuPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgaWQ9XCJzdWJkaXZpc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmN1c3RvZGlhblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIlwiPlNlbGVjdCBDdXN0b2RpYW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0YWZmXCI+e3tzdGFmZi5wZXJzb25hbEluZm8ubmFtZSA/PyBcIi1cIn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciBZb3VyIEFkZHJlc3MgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RW50ZXIgWW91ciBBZGRyZXNzPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5hZGRyZXNzTGluZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMuc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJnZXRDaXR5QnlTdGF0ZUlkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj5TZWxlY3QgU3RhdGU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInN0YXRlXCI+e3tzdGF0ZS5uYW1lID8/IFwiLVwifX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjdXN0b20tZm9ybS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5hZGRyZXNzRGV0YWlscy5jaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+U2VsZWN0IENpdHk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2l0eSBvZiBjaXR5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJjaXR5XCI+e3tjaXR5Lm5hbWUgPz8gXCItXCJ9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbmNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW5jb2RlIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5jb2RlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQuYWRkcmVzc0RldGFpbHMucGluQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FbnRlciBOb21pbmVlIERldGFpbHM8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibm9taW5lZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5GdWxsIE5hbWUgb2YgTm9taW5lZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibm9taW5lZU5hbWVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLm5vbWluZWVEZXRhaWxzLm5vbWluZWVOYW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVsYXRpb25zaGlwXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U2VsZWN0IFJlbGF0aW9uc2hpcCA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY3VzdG9tLWZvcm0tc2VsZWN0XCIgaWQ9XCJyZWxhdGlvbnNoaXBcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5ub21pbmVlRGV0YWlscy5yZWxhdGlvblNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IFJlbGF0aW9uc2hpcDwvb3B0aW9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlNwb3VzZVwiPlNwb3VzZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ2hpbGRcIj5DaGlsZDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTW90aGVyXCI+TW90aGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGYXRoZXJcIj5GYXRoZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlNpYmxpbmdcIj5TaWJsaW5nPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJub21pbmVlUGhvbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Nb2JpbGUgTnVtYmVyIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwibm9taW5lZVBob25lXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxlbWVudFBheWxvYWQubm9taW5lZURldGFpbHMubW9iaWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkFjY291bnQgSW5mb3JtYXRpb248L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFjY291bnRIb2xkZXJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BY2NvdW50IEhvbGRlciBOYW1lIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGN1c3RvbS1mb3JtLWNvbnRyb2xcIiBpZD1cImFjY291bnRIb2xkZXJcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5iYW5rRGV0YWlscy5hY2NvdW50SG9sZGVyTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWNjb3VudE51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFjY291bnQgTnVtYmVyIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiYWNjb3VudE51bWJlclwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmJhbmtEZXRhaWxzLmFjY291bnROdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImJhbmtOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QmFuayBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWZvcm0tY29udHJvbFwiIGlkPVwiYmFua05hbWVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbGVtZW50UGF5bG9hZC5iYW5rRGV0YWlscy5iYW5rTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaWZzY0NvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5JRlNDIENvZGUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20tZm9ybS1jb250cm9sXCIgaWQ9XCJpZnNjQ29kZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsZW1lbnRQYXlsb2FkLmJhbmtEZXRhaWxzLmlmc2NDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Ym1pdFwiIChjbGljayk9XCJjcmVhdGVFbnJvbGxtZW50KClcIj5TdWJtaXQgRW5yb2xsbWVudDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWluLXZoLTEwMFwiICpuZ0lmPVwicGFnZSA9PT0gJ1BBWU1FTlQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgc2hhZG93LWxnIGJvcmRlci0wIHBheW1lbnQtY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHRleHQtY2VudGVyIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImNhcmQtdGl0bGUgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNyZWRpdC1jYXJkIG1lLTJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgUGF5bWVudCBTaW11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLWxnIHctMTAwIHBheW1lbnQtYnRuXCIgKGNsaWNrKT1cInNpbXVsYXRlUGF5bWVudCgnc3VjY2VzcycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrLWNpcmNsZSBtZS0yXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tdGV4dFwiPlN1Y2Nlc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLW92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tbGcgdy0xMDAgcGF5bWVudC1idG5cIiAoY2xpY2spPVwic2ltdWxhdGVQYXltZW50KCdmYWlsdXJlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIG1lLTJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi10ZXh0XCI+RmFpbHVyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tb3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1Byb2Nlc3NpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnkgbWUtMlwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPlByb2Nlc3NpbmcgcGF5bWVudC4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXN1bHRcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRpc21pc3NpYmxlIGZhZGVcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2FsZXJ0LXN1Y2Nlc3MnOiByZXN1bHQudHlwZSA9PT0gJ3N1Y2Nlc3MnLCBcclxuICAgICAgICAgICAgICAnYWxlcnQtZGFuZ2VyJzogcmVzdWx0LnR5cGUgPT09ICdmYWlsdXJlJyxcclxuICAgICAgICAgICAgICAnc2hvdyc6IHNob3dSZXN1bHRcclxuICAgICAgICAgICAgfVwiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJyZXN1bHQuaWNvbkNsYXNzICsgJyBtZS0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJlc3VsdC50aXRsZSB9fTwvc3Ryb25nPiB7eyByZXN1bHQubWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJnLWxpZ2h0IHRleHQtY2VudGVyIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIENsaWNrIGJ1dHRvbnMgdG8gc2ltdWxhdGUgcGF5bWVudCBzY2VuYXJpb3NcclxuICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsbWVudC1mb3JtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZW5yb2xsbWVudC1mb3JtL2Vucm9sbG1lbnQtZm9ybS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnV0dG9uLCBJbnB1dFRleHRNb2RlbCwgUG9zaXRpb25MYXlvdXRNb2RhbCwgU3R5bGVzTW9kZWwsIEltYWdlIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBCVVRUT05fU0hBUEUsIEJVVFRPTl9UWVBFLCBDT05URU5UX0JBQ0tHUk9VTkQsIElOUFVUX0ZJRUxEU19UWVBFIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy90eXBlc1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWxcIjtcclxuaW1wb3J0IHsgQ29ybmVycyB9IGZyb20gXCIuLy4uLy4uLy4uL3N0eWxlcy9pbmRleFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbnJvbGxtZW50Rm9ybU1vZGVsIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBzZWN0aW9uVHlwZTogc3RyaW5nLFxyXG4gICAgc2VjdGlvbk5hbWU6IHN0cmluZyxcclxuICAgIGNvbnRlbnQ6IEVucm9sbG1lbnRGb3JtQ29udGVudE1vZGVsO1xyXG4gICAgc3R5bGVzOiBFbnJvbGxtZW50Rm9ybVN0eWxlTW9kZWw7XHJcbiAgICBhY3Rpb246IEFjdGlvbk1vZGVsO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW5yb2xsbWVudEZvcm1TdHlsZU1vZGVsIGV4dGVuZHMgU3R5bGVzTW9kZWwge1xyXG4gICAgcG9zaXRpb25MYXlvdXQ6IFBvc2l0aW9uTGF5b3V0TW9kYWwsXHJcbiAgICBpbnB1dE9wYWNpdHk6IG51bWJlcixcclxuICAgIGNvcm5lcnM6IENvcm5lcnMsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZDoge2Rpc3BsYXk6Ym9vbGVhbiAsIHN0eWxlOkNPTlRFTlRfQkFDS0dST1VORH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVucm9sbG1lbnRGb3JtQ29udGVudE1vZGVsIHtcclxuICAgIGhlYWRpbmdUZXh0OiBzdHJpbmcsXHJcbiAgICBpbnB1dFRleHQ6IElucHV0VGV4dE1vZGVsW10sXHJcbiAgICBpbWFnZTpJbWFnZU1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlTW9kZWwgZXh0ZW5kcyBJbWFnZXtcclxuICBzaG93SW1hZ2U6Ym9vbGVhblxyXG59XHJcblxyXG4iXX0=
|