tango-app-ui-analyse-trax 3.3.1-alpha-task.68 → 3.3.1-alpha-task.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/action-centre/action-centre.component.mjs +54 -36
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +33 -9
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +15 -8
- package/esm2022/lib/components/create-task/create-task.component.mjs +41 -14
- package/esm2022/lib/components/create-task/create-task.data.mjs +12 -12
- package/esm2022/lib/components/create-task/create-task.interface.mjs +1 -1
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +38 -71
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +3 -21
- package/esm2022/lib/services/trax.service.mjs +2 -2
- package/fesm2022/tango-app-ui-analyse-trax.mjs +188 -165
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
- package/lib/components/action-centre/action-centre.component.d.ts +13 -8
- package/lib/components/activity-log/activity-log.component.d.ts +4 -1
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +2 -1
- package/lib/components/create-task/create-task.component.d.ts +4 -1
- package/lib/components/create-task/create-task.data.d.ts +11 -11
- package/lib/components/create-task/create-task.interface.d.ts +2 -2
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -70,12 +70,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
70
70
|
.subscribe((data) => {
|
|
71
71
|
if (data) {
|
|
72
72
|
this.headerData = data;
|
|
73
|
-
// if (this.receivedData === 'Checklist') {
|
|
74
|
-
// this.getMonthlyPeformanceData();
|
|
75
|
-
// } else if (this.receivedData === 'User') {
|
|
76
|
-
// this.getMonthlyPeformanceData();
|
|
77
|
-
// } else {
|
|
78
|
-
// }
|
|
79
73
|
}
|
|
80
74
|
});
|
|
81
75
|
}
|
|
@@ -86,14 +80,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
86
80
|
fromDate: this.headerData.date.startDate,
|
|
87
81
|
toDate: this.headerData.date.endDate,
|
|
88
82
|
storeId: this.headerData.stores.filter((store) => store.checked).map((store) => store.storeId),
|
|
89
|
-
// storeId: [
|
|
90
|
-
// "11-1743",
|
|
91
|
-
// "11-178",
|
|
92
|
-
// "11-1413",
|
|
93
|
-
// "11-1833",
|
|
94
|
-
// "11-67",
|
|
95
|
-
// "11-709"
|
|
96
|
-
// ],
|
|
97
83
|
clientId: this.headerData.client,
|
|
98
84
|
groupByType: this.receivedData,
|
|
99
85
|
groupByValue: this.monthlyperformce,
|
|
@@ -122,17 +108,14 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
122
108
|
const daysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();
|
|
123
109
|
return Array.from({ length: daysInMonth }, (_, i) => i + 1);
|
|
124
110
|
}
|
|
125
|
-
// Get empty days to align the first day of the month with the correct day of the week
|
|
126
111
|
getEmptyDays() {
|
|
127
112
|
const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay();
|
|
128
113
|
return Array(firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1).fill(0);
|
|
129
114
|
}
|
|
130
|
-
// Get the class name for a given day based on the performance data
|
|
131
115
|
getDayClass(day) {
|
|
132
116
|
const predefinedDay = this.performanceData.find(d => d.date === day);
|
|
133
117
|
return predefinedDay ? predefinedDay.colorClass : '';
|
|
134
118
|
}
|
|
135
|
-
// Navigate to the previous month
|
|
136
119
|
previousMonth() {
|
|
137
120
|
if (this.currentMonth === 0) {
|
|
138
121
|
this.currentMonth = 11;
|
|
@@ -146,7 +129,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
146
129
|
// let monthlyToDate = this.currentYear+"-"+(this.currentMonth - 1) +"-"+"25"
|
|
147
130
|
this.getMonthlyPeformanceData();
|
|
148
131
|
}
|
|
149
|
-
// Navigate to the next month
|
|
150
132
|
nextMonth() {
|
|
151
133
|
if (this.currentMonth === 11) {
|
|
152
134
|
this.currentMonth = 0;
|
|
@@ -161,12 +143,12 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
161
143
|
this.getMonthlyPeformanceData();
|
|
162
144
|
}
|
|
163
145
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MonthlyperformanceDatepickerComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MonthlyperformanceDatepickerComponent, selector: "lib-monthlyperformance-datepicker", inputs: { monthlyperformce: "monthlyperformce" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container
|
|
146
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MonthlyperformanceDatepickerComponent, selector: "lib-monthlyperformance-datepicker", inputs: { monthlyperformce: "monthlyperformce" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <!-- <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n <!-- *ngIf=\"!monthlyPeformanceLoading && !monthlyPeformanceNoData\" -->\r\n <div >\r\n <div class=\"day-names\">\r\n <div *ngFor=\"let day of dayNames\">{{ day }}</div>\r\n </div>\r\n <div class=\"calendar-days\">\r\n <!-- Empty days to align the start of the month -->\r\n <div *ngFor=\"let _ of getEmptyDays()\" class=\"empty-day\"></div>\r\n <!-- Calendar days with dynamic color assignment via CSS classes -->\r\n <div *ngFor=\"let day of getDaysInMonth()\" class=\"symbol symbol-35px symbol-circle\">\r\n <span [ngClass]=\"getDayClass(day)\" class=\"symbol-label\">\r\n {{ day }}\r\n </span>\r\n </div>\r\n <!-- <div *ngFor=\"let day of getDaysInMonth()\" [ngClass]=\"getDayClass(day)\" class=\"calendar-day\">\r\n {{ day }}\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n</div>\r\n\r\n", styles: [".calendar-container{display:flex;flex-direction:column;gap:12px;border-radius:8px;background:#fff}.calendar{display:flex;flex-direction:column;align-items:center;max-height:315px;overflow-y:scroll;scrollbar-width:none}.calendar::-webkit-scrollbar{display:none}.calendar-header{display:flex;justify-content:space-between;width:100%;color:var(--Gray-700, #344054);text-align:center;font-size:16px;font-style:normal;font-weight:500;line-height:24px;position:sticky!important;top:0!important;background-color:#fff;z-index:2}.calendar-body{display:flex;flex-direction:column;width:100%}.day-names{display:grid;grid-template-columns:repeat(7,1fr);font-weight:700;margin-bottom:10px;text-align:center}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.empty-day{visibility:hidden}.calendar-days div{text-align:center;border-radius:50%;cursor:not-allowed;margin-top:10%;margin-left:19%}.selected-day{background-color:#00a3ff;color:#fff}.disabled-day{cursor:not-allowed}button{background-color:transparent;border:none;cursor:pointer;font-size:16px}.performanceheading{color:var(--Gray-900, #101828);font-size:18px;font-style:normal;font-weight:600;line-height:28px}.primary900{background-color:var(--Primary-900, #0085D2);color:#fff}.blue33B5FF{background-color:#33b5ff;color:#fff}.lightBlue6BCAFF{background-color:#6bcaff;color:#fff}.orangeF79009{background-color:#f79009;color:#fff}.redF04438{background-color:#f04438;color:#fff}.calendar-day{width:85%;height:90%}.calendar-day:hover{opacity:.8}.empty-day{width:40px;height:40px;display:inline-block}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.custom-tooltip .tooltip-container{display:flex;flex-direction:column;padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 0 10px #0000001a;width:130%!important}.tooltip{display:flex;align-items:center}.tooltip-icon{font-weight:700;margin-right:5px}.tooltip-text{font-size:14px;color:#333}.performance-box{margin-top:10px}.performance-item{display:flex;align-items:center;margin-bottom:5px}.number{display:inline-block;width:25px;height:20px;text-align:center;border-radius:50%;margin-right:10px;margin-bottom:10px}.performancetext{color:#000;text-align:center;font-size:12px;font-weight:600;line-height:20px}.no-scrollbar{overflow:hidden;padding:0;margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
165
147
|
}
|
|
166
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MonthlyperformanceDatepickerComponent, decorators: [{
|
|
167
149
|
type: Component,
|
|
168
|
-
args: [{ selector: 'lib-monthlyperformance-datepicker', template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container
|
|
150
|
+
args: [{ selector: 'lib-monthlyperformance-datepicker', template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <!-- <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n <!-- *ngIf=\"!monthlyPeformanceLoading && !monthlyPeformanceNoData\" -->\r\n <div >\r\n <div class=\"day-names\">\r\n <div *ngFor=\"let day of dayNames\">{{ day }}</div>\r\n </div>\r\n <div class=\"calendar-days\">\r\n <!-- Empty days to align the start of the month -->\r\n <div *ngFor=\"let _ of getEmptyDays()\" class=\"empty-day\"></div>\r\n <!-- Calendar days with dynamic color assignment via CSS classes -->\r\n <div *ngFor=\"let day of getDaysInMonth()\" class=\"symbol symbol-35px symbol-circle\">\r\n <span [ngClass]=\"getDayClass(day)\" class=\"symbol-label\">\r\n {{ day }}\r\n </span>\r\n </div>\r\n <!-- <div *ngFor=\"let day of getDaysInMonth()\" [ngClass]=\"getDayClass(day)\" class=\"calendar-day\">\r\n {{ day }}\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n</div>\r\n\r\n", styles: [".calendar-container{display:flex;flex-direction:column;gap:12px;border-radius:8px;background:#fff}.calendar{display:flex;flex-direction:column;align-items:center;max-height:315px;overflow-y:scroll;scrollbar-width:none}.calendar::-webkit-scrollbar{display:none}.calendar-header{display:flex;justify-content:space-between;width:100%;color:var(--Gray-700, #344054);text-align:center;font-size:16px;font-style:normal;font-weight:500;line-height:24px;position:sticky!important;top:0!important;background-color:#fff;z-index:2}.calendar-body{display:flex;flex-direction:column;width:100%}.day-names{display:grid;grid-template-columns:repeat(7,1fr);font-weight:700;margin-bottom:10px;text-align:center}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.empty-day{visibility:hidden}.calendar-days div{text-align:center;border-radius:50%;cursor:not-allowed;margin-top:10%;margin-left:19%}.selected-day{background-color:#00a3ff;color:#fff}.disabled-day{cursor:not-allowed}button{background-color:transparent;border:none;cursor:pointer;font-size:16px}.performanceheading{color:var(--Gray-900, #101828);font-size:18px;font-style:normal;font-weight:600;line-height:28px}.primary900{background-color:var(--Primary-900, #0085D2);color:#fff}.blue33B5FF{background-color:#33b5ff;color:#fff}.lightBlue6BCAFF{background-color:#6bcaff;color:#fff}.orangeF79009{background-color:#f79009;color:#fff}.redF04438{background-color:#f04438;color:#fff}.calendar-day{width:85%;height:90%}.calendar-day:hover{opacity:.8}.empty-day{width:40px;height:40px;display:inline-block}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.custom-tooltip .tooltip-container{display:flex;flex-direction:column;padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 0 10px #0000001a;width:130%!important}.tooltip{display:flex;align-items:center}.tooltip-icon{font-weight:700;margin-right:5px}.tooltip-text{font-size:14px;color:#333}.performance-box{margin-top:10px}.performance-item{display:flex;align-items:center;margin-bottom:5px}.number{display:inline-block;width:25px;height:20px;text-align:center;border-radius:50%;margin-right:10px;margin-bottom:10px}.performancetext{color:#000;text-align:center;font-size:12px;font-weight:600;line-height:20px}.no-scrollbar{overflow:hidden;padding:0;margin:0}\n"] }]
|
|
169
151
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }], propDecorators: { monthlyperformce: [{
|
|
170
152
|
type: Input
|
|
171
153
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQtaW5mby9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC1pbmZvL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWdDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFJdEYsQ0FBQztBQU9ELE1BQU0sT0FBTyxxQ0FBcUM7SUFrQjVCO0lBQStCO0lBQXVCO0lBQWdDO0lBQTJDO0lBQzNJO0lBbEJWLFdBQVcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdDLFFBQVEsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxF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Y0FBYyxLQUFLLENBQUM7UUFDNUQsNkVBQTZFO1FBQ2pGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7d0dBeEpVLHFDQUFxQzs0RkFBckMscUNBQXFDLGdKQ2JsRCx5bExBd0hBOzs0RkQzR2EscUNBQXFDO2tCQUxqRCxTQUFTOytCQUNFLG1DQUFtQzs4TkFrQnBDLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb250aGx5cGVyZm9ybWFuY2VEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBkYXlOYW1lczogc3RyaW5nW10gPSBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J107XHJcbiAgbW9udGhOYW1lczogc3RyaW5nW10gPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcblxyXG4gIHBlcmZvcm1hbmNlRGF0YTogYW55W10gPSBbXTsgLy8gVGhpcyB3aWxsIHN0b3JlIHRoZSBwZXJmb3JtYW5jZSBkYXRhIGZyb20gdGhlIEFQSSByZXNwb25zZVxyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWNlaXZlZERhdGE6IHN0cmluZyA9IFwiQ2hlY2tsaXN0XCI7XHJcbiAgc2VsZWN0ZWR2YWx1ZTogYW55O1xyXG4gIG1vbnRobHlQZWZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbW9udGhseVBlZm9ybWFuY2VOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb250aGx5cGVyZm9ybWNlOiBzdHJpbmc7XHJcbiAgbW9udGhseVRvRGF0ZTogYW55O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlckRhdGEpIHtcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhO1xyXG4gICAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlPy5xdWVyeVBhcmFtc1xyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSlcclxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLmNoZWNrbGlzdFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnQ2hlY2tsaXN0JztcclxuICAgICAgICAgIC8vIHRoaXMuaW5mb0NhcmRzRGF0YSA9IHBhcmFtcy5jaGVja2xpc3REYXRhID8gSlNPTi5wYXJzZShwYXJhbXMuY2hlY2tsaXN0RGF0YSkgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZSA9IHBhcmFtcy5zdG9yZV9pZFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnU3RvcmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICd1c2VyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLnVzZXJFbWFpbFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnVXNlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMucmVjZWl2ZWREYXRhID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgICAgICAgLy8gfSBlbHNlIGlmICh0aGlzLnJlY2VpdmVkRGF0YSA9PT0gJ1VzZXInKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcclxuICAgICAgLy8gICBcIjExLTE3NDNcIixcclxuICAgICAgLy8gICBcIjExLTE3OFwiLFxyXG4gICAgICAvLyAgIFwiMTEtMTQxM1wiLFxyXG4gICAgICAvLyAgIFwiMTEtMTgzM1wiLFxyXG4gICAgICAvLyAgIFwiMTEtNjdcIixcclxuICAgICAgLy8gICBcIjExLTcwOVwiXHJcbiAgICAgIC8vIF0sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBncm91cEJ5VHlwZTogdGhpcy5yZWNlaXZlZERhdGEsXHJcbiAgICAgIGdyb3VwQnlWYWx1ZTogdGhpcy5tb250aGx5cGVyZm9ybWNlLFxyXG4gICAgICBtb250aERhdGU6IHRoaXMubW9udGhseVRvRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IHJlc3BvbnNlLmRhdGE/Lm1vbnRobHlDaGFydERhdGEgfHwgW107XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IFtdXHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXlzSW5Nb250aCgpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGRheXNJbk1vbnRoIH0sIChfLCBpKSA9PiBpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgZW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCB3aXRoIHRoZSBjb3JyZWN0IGRheSBvZiB0aGUgd2Vla1xyXG4gIGdldEVtcHR5RGF5cygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSkuZ2V0RGF5KCk7XHJcbiAgICByZXR1cm4gQXJyYXkoZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDEpLmZpbGwoMCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGNsYXNzIG5hbWUgZm9yIGEgZ2l2ZW4gZGF5IGJhc2VkIG9uIHRoZSBwZXJmb3JtYW5jZSBkYXRhXHJcbiAgZ2V0RGF5Q2xhc3MoZGF5OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJlZGVmaW5lZERheSA9IHRoaXMucGVyZm9ybWFuY2VEYXRhLmZpbmQoZCA9PiBkLmRhdGUgPT09IGRheSk7XHJcbiAgICByZXR1cm4gcHJlZGVmaW5lZERheSA/IHByZWRlZmluZWREYXkuY29sb3JDbGFzcyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoXHJcbiAgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IDExO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aC0tO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgLy8gbGV0IG1vbnRobHlUb0RhdGUgPSB0aGlzLmN1cnJlbnRZZWFyK1wiLVwiKyh0aGlzLmN1cnJlbnRNb250aCAtIDEpICtcIi1cIitcIjI1XCJcclxuICAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgfVxyXG5cclxuICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aFxyXG4gIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAwO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCsrO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgICAgIC8vIGxldCBtb250aGx5VG9EYXRlID0gdGhpcy5jdXJyZW50WWVhcitcIi1cIisodGhpcy5jdXJyZW50TW9udGggKyAxKSArXCItXCIrXCIyNVwiXHJcbiAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRhaW5lciBwLTVcIj5cclxuICA8IS0tIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlaGVhZGluZ1wiPk1vbnRobHkgUGVyZm9ybWFuY2UgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICBbbmdiVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudFwiXHJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTYgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM3MDFfMjkxODApXCI+XHJcbiAgICAgIDxwYXRoIGQ9XCJNNy45OTg3IDExLjE2NjZWOC40OTk5Mk03Ljk5ODcgNS44MzMyNUg4LjAwNTM2TTE0LjY2NTQgOC40OTk5MkMxNC42NjU0IDEyLjE4MTggMTEuNjgwNiAxNS4xNjY2IDcuOTk4NyAxNS4xNjY2QzQuMzE2OCAxNS4xNjY2IDEuMzMyMDMgMTIuMTgxOCAxLjMzMjAzIDguNDk5OTJDMS4zMzIwMyA0LjgxODAyIDQuMzE2OCAxLjgzMzI1IDcuOTk4NyAxLjgzMzI1QzExLjY4MDYgMS44MzMyNSAxNC42NjU0IDQuODE4MDIgMTQuNjY1NCA4LjQ5OTkyWlwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICA8L2c+XHJcbiAgICAgIDxkZWZzPlxyXG4gICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzAxXzI5MTgwXCI+XHJcbiAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNSlcIi8+XHJcbiAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgIDwvZGVmcz5cclxuICAgICAgPC9zdmc+XHJcbiAgPC9zcGFuPlxyXG4gIFxyXG4gIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcENvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWJveFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBwcmltYXJ5OTAwXCI+MTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA4NiB0byAxMDAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBibHVlMzNCNUZGXCI+Mjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA3MSB0byA4NSU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWl0ZW1cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyIGxpZ2h0Qmx1ZTZCQ0FGRlwiPjM8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgNTYgdG8gNzAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBvcmFuZ2VGNzkwMDlcIj40PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJmb3JtYW5jZXRleHRcIj5PdmVyYWxsIHBlcmZvcm1hbmNlIDQxIHRvIDU1JTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgcmVkRjA0NDM4XCI+NTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSBiZWxvdyA0MCU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPC9kaXY+XHJcbiBcclxuICA8ZGl2ICBjbGFzcz1cImNhbGVuZGFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyIG15LTNcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNSAxNUw3LjUgMTBMMTIuNSA1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgbW9udGhOYW1lc1tjdXJyZW50TW9udGhdIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTcuNSAxNUwxMi41IDEwTDcuNSA1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBhZGQgbm9kYXRhIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHkgbXktNVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VMb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgbm8tc2Nyb2xsYmFyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VOb0RhdGEgJiYgIW1vbnRobHlQZWZvcm1hbmNlTG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBtYi02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgTW9udGhseSBQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhbW9udGhseVBlZm9ybWFuY2VMb2FkaW5nICYmICFtb250aGx5UGVmb3JtYW5jZU5vRGF0YVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5LW5hbWVzXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCI+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxyXG4gICAgICAgIDwhLS0gRW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IF8gb2YgZ2V0RW1wdHlEYXlzKClcIiBjbGFzcz1cImVtcHR5LWRheVwiPjwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ2FsZW5kYXIgZGF5cyB3aXRoIGR5bmFtaWMgY29sb3IgYXNzaWdubWVudCB2aWEgQ1NTIGNsYXNzZXMgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGdldERheXNJbk1vbnRoKClcIiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXREYXlDbGFzcyhkYXkpXCIgIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCIgW25nQ2xhc3NdPVwiZ2V0RGF5Q2xhc3MoZGF5KVwiIGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+XHJcbiAgICAgICAgICB7eyBkYXkgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiBcclxuIFxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQtaW5mby9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC1pbmZvL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWdDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFJdEYsQ0FBQztBQU9ELE1BQU0sT0FBTyxxQ0FBcUM7SUFrQjVCO0lBQStCO0lBQXVCO0lBQWdDO0lBQTJDO0lBQzNJO0lBbEJWLFdBQVcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdDLFFBQVEsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxF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IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb250aGx5cGVyZm9ybWFuY2VEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBkYXlOYW1lczogc3RyaW5nW10gPSBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J107XHJcbiAgbW9udGhOYW1lczogc3RyaW5nW10gPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcblxyXG4gIHBlcmZvcm1hbmNlRGF0YTogYW55W10gPSBbXTsgLy8gVGhpcyB3aWxsIHN0b3JlIHRoZSBwZXJmb3JtYW5jZSBkYXRhIGZyb20gdGhlIEFQSSByZXNwb25zZVxyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWNlaXZlZERhdGE6IHN0cmluZyA9IFwiQ2hlY2tsaXN0XCI7XHJcbiAgc2VsZWN0ZWR2YWx1ZTogYW55O1xyXG4gIG1vbnRobHlQZWZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbW9udGhseVBlZm9ybWFuY2VOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb250aGx5cGVyZm9ybWNlOiBzdHJpbmc7XHJcbiAgbW9udGhseVRvRGF0ZTogYW55O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlckRhdGEpIHtcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhO1xyXG4gICAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlPy5xdWVyeVBhcmFtc1xyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSlcclxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLmNoZWNrbGlzdFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnQ2hlY2tsaXN0JztcclxuICAgICAgICAgIC8vIHRoaXMuaW5mb0NhcmRzRGF0YSA9IHBhcmFtcy5jaGVja2xpc3REYXRhID8gSlNPTi5wYXJzZShwYXJhbXMuY2hlY2tsaXN0RGF0YSkgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZSA9IHBhcmFtcy5zdG9yZV9pZFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnU3RvcmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICd1c2VyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLnVzZXJFbWFpbFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnVXNlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBncm91cEJ5VHlwZTogdGhpcy5yZWNlaXZlZERhdGEsXHJcbiAgICAgIGdyb3VwQnlWYWx1ZTogdGhpcy5tb250aGx5cGVyZm9ybWNlLFxyXG4gICAgICBtb250aERhdGU6IHRoaXMubW9udGhseVRvRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IHJlc3BvbnNlLmRhdGE/Lm1vbnRobHlDaGFydERhdGEgfHwgW107XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IFtdXHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXlzSW5Nb250aCgpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGRheXNJbk1vbnRoIH0sIChfLCBpKSA9PiBpICsgMSk7XHJcbiAgfVxyXG4gIGdldEVtcHR5RGF5cygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSkuZ2V0RGF5KCk7XHJcbiAgICByZXR1cm4gQXJyYXkoZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDEpLmZpbGwoMCk7XHJcbiAgfVxyXG4gIGdldERheUNsYXNzKGRheTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWRlZmluZWREYXkgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5maW5kKGQgPT4gZC5kYXRlID09PSBkYXkpO1xyXG4gICAgcmV0dXJuIHByZWRlZmluZWREYXkgPyBwcmVkZWZpbmVkRGF5LmNvbG9yQ2xhc3MgOiAnJztcclxuICB9XHJcbiAgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IDExO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aC0tO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgLy8gbGV0IG1vbnRobHlUb0RhdGUgPSB0aGlzLmN1cnJlbnRZZWFyK1wiLVwiKyh0aGlzLmN1cnJlbnRNb250aCAtIDEpICtcIi1cIitcIjI1XCJcclxuICAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGggPT09IDExKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGgrKztcclxuICAgIH1cclxuICAgIGxldCBmb3JtYXR0ZWRNb250aCA9ICh0aGlzLmN1cnJlbnRNb250aCArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIHRoaXMubW9udGhseVRvRGF0ZSA9IGAke3RoaXMuY3VycmVudFllYXJ9LSR7Zm9ybWF0dGVkTW9udGh9LTI1YDtcclxuICAgICAgICAvLyBsZXQgbW9udGhseVRvRGF0ZSA9IHRoaXMuY3VycmVudFllYXIrXCItXCIrKHRoaXMuY3VycmVudE1vbnRoICsgMSkgK1wiLVwiK1wiMjVcIlxyXG4gICAgdGhpcy5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXIgcC01XCI+XHJcbiAgPCEtLSB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZWhlYWRpbmdcIj5Nb250aGx5IFBlcmZvcm1hbmNlIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgW25nYlRvb2x0aXBdPVwidG9vbHRpcENvbnRlbnRcIlxyXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE2IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNzAxXzI5MTgwKVwiPlxyXG4gICAgICA8cGF0aCBkPVwiTTcuOTk4NyAxMS4xNjY2VjguNDk5OTJNNy45OTg3IDUuODMzMjVIOC4wMDUzNk0xNC42NjU0IDguNDk5OTJDMTQuNjY1NCAxMi4xODE4IDExLjY4MDYgMTUuMTY2NiA3Ljk5ODcgMTUuMTY2NkM0LjMxNjggMTUuMTY2NiAxLjMzMjAzIDEyLjE4MTggMS4zMzIwMyA4LjQ5OTkyQzEuMzMyMDMgNC44MTgwMiA0LjMxNjggMS44MzMyNSA3Ljk5ODcgMS44MzMyNUMxMS42ODA2IDEuODMzMjUgMTQuNjY1NCA0LjgxODAyIDE0LjY2NTQgOC40OTk5MlpcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgPC9nPlxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzcwMV8yOTE4MFwiPlxyXG4gICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjUpXCIvPlxyXG4gICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICA8L2RlZnM+XHJcbiAgICAgIDwvc3ZnPlxyXG4gIDwvc3Bhbj5cclxuICBcclxuICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1ib3hcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgcHJpbWFyeTkwMFwiPjE8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgODYgdG8gMTAwJTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgYmx1ZTMzQjVGRlwiPjI8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgNzEgdG8gODUlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBsaWdodEJsdWU2QkNBRkZcIj4zPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJmb3JtYW5jZXRleHRcIj5PdmVyYWxsIHBlcmZvcm1hbmNlIDU2IHRvIDcwJTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgb3JhbmdlRjc5MDA5XCI+NDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA0MSB0byA1NSU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWl0ZW1cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyIHJlZEYwNDQzOFwiPjU8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgYmVsb3cgNDAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwvZGl2PlxyXG4gXHJcbiAgPGRpdiAgY2xhc3M9XCJjYWxlbmRhclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlciBteS0zXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEyLjUgMTVMNy41IDEwTDEyLjUgNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuPnt7IG1vbnRoTmFtZXNbY3VycmVudE1vbnRoXSB9fSB7eyBjdXJyZW50WWVhciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk03LjUgMTVMMTIuNSAxMEw3LjUgNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gYWRkIG5vZGF0YSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IG15LTVcIj5cclxuICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VMb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgbm8tc2Nyb2xsYmFyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VOb0RhdGEgJiYgIW1vbnRobHlQZWZvcm1hbmNlTG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBtYi02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgTW9udGhseSBQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSAqbmdJZj1cIiFtb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgJiYgIW1vbnRobHlQZWZvcm1hbmNlTm9EYXRhXCIgLS0+XHJcbiAgICAgIDxkaXYgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5LW5hbWVzXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCI+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxyXG4gICAgICAgIDwhLS0gRW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IF8gb2YgZ2V0RW1wdHlEYXlzKClcIiBjbGFzcz1cImVtcHR5LWRheVwiPjwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ2FsZW5kYXIgZGF5cyB3aXRoIGR5bmFtaWMgY29sb3IgYXNzaWdubWVudCB2aWEgQ1NTIGNsYXNzZXMgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGdldERheXNJbk1vbnRoKClcIiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXREYXlDbGFzcyhkYXkpXCIgIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCIgW25nQ2xhc3NdPVwiZ2V0RGF5Q2xhc3MoZGF5KVwiIGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+XHJcbiAgICAgICAgICB7eyBkYXkgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiBcclxuIFxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
@@ -338,7 +338,7 @@ export class TraxService {
|
|
|
338
338
|
return this.http.post(`${this.traxTaskUrl}/actionCenter/approvalTableV1`, data);
|
|
339
339
|
}
|
|
340
340
|
getActivityLog(data) {
|
|
341
|
-
return this.http.post(`${this.traxTaskUrl}/actionCenter/
|
|
341
|
+
return this.http.post(`${this.traxTaskUrl}/actionCenter/activityLogV1`, data);
|
|
342
342
|
}
|
|
343
343
|
getTaskDropdownList(data) {
|
|
344
344
|
return this.http.post(`${this.traxTaskUrl}/dashboard/taskDropdownListV1`, data);
|
|
@@ -358,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
358
358
|
providedIn: 'root'
|
|
359
359
|
}]
|
|
360
360
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvc2VydmljZXMvdHJheC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsR0FBYyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7O0FBRTdCLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUNoQyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFLN0IsTUFBTSxPQUFPLFdBQVc7SUFlRjtJQUEwQjtJQWQ5QyxPQUFPLENBQUs7SUFDWixRQUFRLENBQUs7SUFDYixhQUFhLENBQUs7SUFDbEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFBO0lBRXhDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEQsZ0NBQWdDO0lBQ2hDLG9CQUFvQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELFlBQVksQ0FBTTtJQUNsQixhQUFhLENBQU07SUFDbkIsV0FBVyxDQUFPO0lBRWxCLFlBQW9CLElBQWdCLEVBQVUsRUFBc0I7UUFBaEQsU0FBSSxHQUFKLElBQUks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QUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVywrQkFBK0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBQ0QsYUFBYSxDQUFFLElBQVE7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUUsSUFBUTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQy9ELENBQUM7d0dBcFpVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCBjYXRjaEVycm9yLCBtYXAsdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5cclxuY29uc3QgRVhDRUxfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JztcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gJy54bHN4JztcclxuY29uc3QgQ1NWX1RZUEUgPSAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCc7XHJcbmNvbnN0IENTVl9FWFRFTlNJT04gPSAnLmNzdic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmF4U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgdHJheFVybDphbnk7XHJcbiAgc3RvcmVVcmw6YW55O1xyXG4gIGdhbGxlcnlBcGlVcmw6YW55O1xyXG4gIGRyb3BEb3duVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKVxyXG5cclxuICBwcml2YXRlIHJlbG9hZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVsb2FkRGF0YSQgPSB0aGlzLnJlbG9hZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvLyBvcGVuZWREcm9wZG93bnM6c3RyaW5nW10gPSBbXVxyXG4gIGRyb3Bkb3duQ2xvc2VUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxyXG4gIGNsaWVudEFQaVVybDogYW55O1xyXG4gIHRyYWZmaWNBcGlVcmw6IGFueTtcclxuICB0cmF4VGFza1VybDpzdHJpbmdcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLnRyYXhVcmwgPSBlbnYudHJheFVybDtcclxuICAgICAgICB0aGlzLnN0b3JlVXJsID0gZW52LnN0b3JlQXBpVXJsXHJcbiAgICAgICAgdGhpcy5nYWxsZXJ5QXBpVXJsID0gZW52LmdhbGxlcnlBcGlVcmxcclxuICAgICAgICB0aGlzLmNsaWVudEFQaVVybCA9ICBlbnYuY2xpZW50QXBpVXJsXHJcbiAgICAgICAgdGhpcy50cmFmZmljQXBpVXJsID0gIGVudi50cmFmZmljQXBpVXJsXHJcbiAgICAgICAgdGhpcy50cmF4VGFza1VybCA9IGVudi50cmF4VGFza1VybFxyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyUmVsb2FkKCkge1xyXG4gICAgdGhpcy5yZWxvYWREYXRhU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoanNvbik7XHJcbiAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7ICdkYXRhJzogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoZXhjZWxCdWZmZXIsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuIFxyXG4gIHB1YmxpYyBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnbGlzdCcrIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG4gXHJcbiAgcHVibGljIHNhdmVBc1RlbXBsYXRlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VtbWFyeVRhYmxlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L3pvbmVTdW1tYXJ5VGFibGVfdjJgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRjaGVja2xpc3QoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9nZXRjaGVja2xpc3RgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrTGlzdCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS90YXNrRHJvcGRvd25gLCBkYXRhKVxyXG4gIH1cclxuICBnZXRRdWVzdGlvbnMoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZ2V0UXVlc3Rpb25zYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QW5zd2VycyggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9nZXRBbnN3ZXJzYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEFuc3dlcmNvdW50KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2dldEFuc3dlcm91bnRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9iVXNhZ2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vZ2V0TW9iaWxlVXNlYWdlbGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldGN1c3RvbWVydW5hdHRlbmRlZGxpc3QoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9nZXRjdXN0b21lcnVuYXR0ZW5kZWRsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgc3RvcmVPcGVuY2xvc2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vc3RvcmVPcGVuY2xvc2VsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgZ2V0U3VtbWFyeVRhYmxlRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vem9uZVN1bW1hcnlUYWJsZV92MmAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0KG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vY2hlY2tsaXN0P2xpbWl0PSR7b2JqLmxpbWl0fSZvZmZzZXQ9JHtvYmoub2Zmc2V0fSZzb3J0Q29sdW1uTmFtZT0ke29iai5zb3J0Q29sdW1ufSZzZWFyY2g9JHtvYmouc2VhcmNofSZzb3J0Qnk9JHtvYmouc29ydEJ5fSZjbGllbnRJZD0ke29iai5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgaW1hZ2V1cGxvYWQodXNlcnM6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS91cGxvYWRgLHVzZXJzKVxyXG4gIH1cclxuXHJcbiAgdGFza0ltYWdldXBsb2FkKHVzZXJzOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L3VwbG9hZEltYWdlYCx1c2VycylcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlVXNlcih1c2VyczphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L3ZhbGlkYXRlVXNlcmAsdXNlcnMpXHJcbiAgfVxyXG5cclxuICBnZXR1cGRhdGVjaGVja2xpc3QoaWQ6YW55LGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnRyYXhVcmx9L2NoZWNrbGlzdC91cGRhdGUvJHtpZH1gLGRhdGEpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVjaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2NoZWNrbGlzdC9jcmVhdGVgLCBkYXRhIClcclxuICB9XHJcblxyXG4gIGNvbmZpZ1VwZGF0ZShvYmo6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9jaGVja2xpc3RDb25maWd1cmVgLG9iailcclxuICB9XHJcblxyXG4gIGdldGNvbmZpZyhvYmo6YW55KSB7XHJcbiAgICBsZXQga2V5ID0gT2JqZWN0LmtleXMob2JqKVswXTtcclxuICAgIGxldCB2YWx1ZSA9IG9ialtPYmplY3Qua2V5cyhvYmopWzBdXTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vZ2V0Q29uZmlnRGV0YWlscz8ke2tleX09JHt2YWx1ZX0mY2xpZW50SWQ9JHtvYmpbT2JqZWN0LmtleXMob2JqKVsxXV19YClcclxuICB9XHJcblxyXG4gIHJ1bkFJSW5zZXJ0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vcnVuQUlJbnNlcnRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlY2hlY2tsaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9kdXBsaWNhdGVDaGVja2xpc3QvJHtkYXRhLmNoZWNrbGlzdElkfT9jbGllbnRJZD0ke2RhdGEuY2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIGdldFVzZXJEZXRhaWxzKG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vdXNlckRldGFpbHMvJHtvYmouaWR9P29mZnNldD0ke29iai5vZmZzZXR9JmxpbWl0PSR7b2JqLmxpbWl0fSZzZWFyY2g9JHtvYmouc2VhcmNofSZjbGllbnRJZD0ke29iai5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVMaXN0KGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZVVybH0vc3RvcmVJbmZyYUxpc3RgLGRhdGEpXHJcbiAgfVxyXG5cclxuICBkZWxldGVDaGVja2xpc3QoZGF0YTogYW55LCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy50cmF4VXJsfS9kZWxldGVDaGVja2xpc3QvJHtkYXRhLmlkfT9jbGllbnRJZD0ke2RhdGEuY2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIHB1Ymxpc2goZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnRyYXhVcmx9L3B1Ymxpc2hgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRTdG9yZXMoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L2dldC1zdG9yZXNgLCAgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RzKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9jaGVja2xpc3REcm9wZG93bmAsIGRhdGEpXHJcbiAgfVxyXG4gIHZpZXdDaGVja2xpc3RzKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS92aWV3Y2hlY2tsaXN0YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIG92ZXJhbGxGbGFnTWV0cmljcyhib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBvdmVyYWxsRmxhZ01ldHJpY3NDb21wYXJpc29uKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDb21wYXJpc29uQ2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnc1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdUYWJsZXNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBleHBvcnRGbGFnc1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdUYWJsZXNWMWAsIGJvZHksIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgZ2V0T3ZlcmFsbENhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9vdmVyYWxsQ2FyZHNWMWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RQZXJmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvY2hlY2tsaXN0UGVyZm9ybWFuY2VgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0UGVyZm9ybWFuY2VEYXRhRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdFBlcmZvcm1hbmNlYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZVBlcmZvcm1hbmNlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9zdG9yZVBlcmZvcm1hbmNlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUGVyZm9ybWFuY2VEYXRhRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3N0b3JlUGVyZm9ybWFuY2VgLCBkYXRhLCB7cmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInfSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJQZXJmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlclBlcmZvcm1hbmNlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJQZXJmb3JtYW5jZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlclBlcmZvcm1hbmNlYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3REcm9wZG93bkRhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3REcm9wRG93blYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0Q2hlY2tsaXN0RHJvcGRvd25EYXNoYm9hcmREYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdERyb3Bkb3duYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEluZm9DYXJkc0RhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvaW5mb0NhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0RmxhZ1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3RUYWJsZVYxYCwgYm9keSlcclxuICB9XHJcblxyXG4gIENyZWF0ZWNoZWNrbGlzdFRhc2soYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhUYXNrVXJsfS9jaGVja2xpc3RUYXNrYCwgYm9keSlcclxuICB9XHJcbiAgcmVkb1Rhc2tjaGVja2xpc3QoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L3JlZG9gLCBib2R5KVxyXG4gIH1cclxuICByZWRvVGFzayhib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFRhc2tVcmx9L3JlZG9gLCBib2R5KVxyXG4gIH1cclxuICBleHBvcnRDaGVja2xpc3RGbGFnVGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3RUYWJsZVYxYCwgYm9keSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICByZXBvcnRUYWJsZShib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3JlcG9ydENoZWNrbGlzdERhdGF2MWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnQ2FyZFZhbHVlcyhib2R5OmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2hlY2tsaXN0Q2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnQ2FyZFRlcmVuZChib2R5OmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2hlY2tsaXN0Q29tcGFyaXNvbkNhcmRzVjFgLCBib2R5KVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrbGlzdEluZm9EYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdEluZm9gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcmxpc3REcm9wZG93bkRhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlcmxpc3REcm9wZG93bmAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRNb250aGx5UGVmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvbW9udGhseUdyYXBoVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50VXNlciggY2xpZW50SWQ6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L3VzZXJMaXN0P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIGdldFpvbmVMaXN0KCBjbGllbnRJZDphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vem9uZUxpc3Q/Y2xpZW50SWQ9JHtjbGllbnRJZH1gKVxyXG4gIH1cclxuICBnZXRJbmZvQ29tcGFyaXNvbkNhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9pbmZvQ29tcGFyaXNvbkNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRPdmVyYWxsQ29tcGFyaXNvbkNhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9vdmVyYWxsQ29tcGFyaXNvbkNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0YWljaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vYWljaGVja2xpc3Q/Y2xpZW50SWQ9JHtkYXRhfWApXHJcbiAgfVxyXG5cclxuICByZXBvcnRUYWJsZUV4cG9ydChib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZG93bmxvYWRzL2Rvd25sb2FkSW5zZXJ0YCwgYm9keSlcclxuICB9XHJcbiAgZ2V0cHJlZGVmaW5lZGNoZWNrbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9wcmVkZWZpbmVkQ2hlY2tsaXN0P2NsaWVudElkPSR7ZGF0YX1gKVxyXG4gIH1cclxuICBnZXRjbGllbnQoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QVBpVXJsfS9kZXRhaWxlZC1jbGllbnQtY291bnQ/Y2xpZW50SWQ9JHtkYXRhLmNsaWVudElkfWApXHJcbiAgfVxyXG4gIGdldEdyb3VwcyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyR3JvdXBzX3YxYCxkYXRhKVxyXG4gIH1cclxuICBnZXRjbHVzdGVycyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyY2x1c3Rlcl92MmAsZGF0YSlcclxuICB9XHJcbiAgZ2V0U3RvcmVzbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyU3RvcmVzX3YyYCxkYXRhKVxyXG4gIH1cclxuICBnZXRPcmRlcnNCeURhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9sb2N1c29yZGVyL2dldGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBvcmRlclVwZGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2xvY3Vzb3JkZXIvdXBkYXRlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIG9yZGVyRGVsZXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vbG9jdXNvcmRlci9kZWxldGVgLCBkYXRhKVxyXG4gICAgIFxyXG4gIH1cclxuXHJcbiAgaXNMb2N1c0F1dGhvcml6ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L2xvY3Vzb3JkZXIvdXNlci1hbGxvd2VkYClcclxuICB9XHJcbiAgcmVpbml0aWF0ZUNoZWNrbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3JlaW5pdGlhdGVjaGVja2xpc3RgLGRhdGEpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0QXNDU1ZGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcsaWRlbnRpZmllcj86IGFueVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCB3b3Jrc2hlZXQ6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb24pO1xyXG5cclxuICAgIGNvbnN0IGNzdk91dHB1dDogc3RyaW5nID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya3NoZWV0KTtcclxuICAgIHRoaXMuc2F2ZUFzQ1NWRmlsZShjc3ZPdXRwdXQsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuICBwcml2YXRlIHNhdmVBc0NTVkZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBDU1ZfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgQ1NWX0VYVEVOU0lPTik7XHJcbiAgfVxyXG5cclxuICByZUluaXRpYXRlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvcmVpbml0aWF0ZWNoZWNrbGlzdGAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYXNrKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vY3JlYXRlYCwgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRUYXNrY29uZmlnKGlkOnN0cmluZywgY2xpZW50SWQ6c3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kZXRhaWxzP3Rhc2tJZD0ke2lkfSZjbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG5cclxuICBjb25maWdUYXNrKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vY29uZmlnYCwgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRUYXNrVXNlckRldGFpbHMoZGF0YTphbnkpIHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHsgZnJvbU9iamVjdDogZGF0YSB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFRhc2tVcmx9L3VzZXJEZXRhaWxzYCwge3BhcmFtc30pXHJcbiAgfVxyXG5cclxuICB1cGxvYWRUYXNrQXNzaWduZWVzKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vdXBsb2FkYCwgZGF0YSApXHJcblxyXG4gIH1cclxuXHJcbiAgXHJcbiAgZ2V0T3ZlcmFsbFRhc2tzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvb3ZlcmFsbGNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrVGFibGVEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrVGFibGVWMWAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldFRhc2tUYWJsZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZGFzaGJvYXJkL3Rhc2tUYWJsZVYxYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG4gIGdldFRhc2tJbmZvVGFibGVEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrSW5mb1RhYmxlVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrSW5mb1RhYmxlRGF0YUV4cG9ydCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0luZm9UYWJsZVYxYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG4gIGdldE92ZXJhbGxBY3Rpb25DZW50ZXJEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2FjdGlvbkNlbnRlci9vdmVyYWxsY2FyZHNWMWAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldEFwcHJvdmFsRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9hY3Rpb25DZW50ZXIvYXBwcm92YWxUYWJsZVYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2coIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vYWN0aW9uQ2VudGVyL2FjdGl2aXR5TG9nYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza0Ryb3Bkb3duTGlzdCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0Ryb3Bkb3duTGlzdFYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza0RlbGV0ZSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0RlbGV0ZVYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza1VwZGF0ZSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9yZWluaXRpYXRlYCwgZGF0YSlcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvc2VydmljZXMvdHJheC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsR0FBYyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7O0FBRTdCLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUNoQyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFLN0IsTUFBTSxPQUFPLFdBQVc7SUFlRjtJQUEwQjtJQWQ5QyxPQUFPLENBQUs7SUFDWixRQUFRLENBQUs7SUFDYixhQUFhLENBQUs7SUFDbEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFBO0lBRXhDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEQsZ0NBQWdDO0lBQ2hDLG9CQUFvQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELFlBQVksQ0FBTTtJQUNsQixhQUFhLENBQU07SUFDbkIsV0FBVyxDQUFPO0lBRWxCLFlBQW9CLElBQWdCLEVBQVUsRUFBc0I7UUFBaEQsU0FBSSxHQUFKLElBQUks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QUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVywrQkFBK0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBQ0QsYUFBYSxDQUFFLElBQVE7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUUsSUFBUTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQy9ELENBQUM7d0dBcFpVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCBjYXRjaEVycm9yLCBtYXAsdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5cclxuY29uc3QgRVhDRUxfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JztcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gJy54bHN4JztcclxuY29uc3QgQ1NWX1RZUEUgPSAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCc7XHJcbmNvbnN0IENTVl9FWFRFTlNJT04gPSAnLmNzdic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmF4U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgdHJheFVybDphbnk7XHJcbiAgc3RvcmVVcmw6YW55O1xyXG4gIGdhbGxlcnlBcGlVcmw6YW55O1xyXG4gIGRyb3BEb3duVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKVxyXG5cclxuICBwcml2YXRlIHJlbG9hZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVsb2FkRGF0YSQgPSB0aGlzLnJlbG9hZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvLyBvcGVuZWREcm9wZG93bnM6c3RyaW5nW10gPSBbXVxyXG4gIGRyb3Bkb3duQ2xvc2VUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxyXG4gIGNsaWVudEFQaVVybDogYW55O1xyXG4gIHRyYWZmaWNBcGlVcmw6IGFueTtcclxuICB0cmF4VGFza1VybDpzdHJpbmdcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLnRyYXhVcmwgPSBlbnYudHJheFVybDtcclxuICAgICAgICB0aGlzLnN0b3JlVXJsID0gZW52LnN0b3JlQXBpVXJsXHJcbiAgICAgICAgdGhpcy5nYWxsZXJ5QXBpVXJsID0gZW52LmdhbGxlcnlBcGlVcmxcclxuICAgICAgICB0aGlzLmNsaWVudEFQaVVybCA9ICBlbnYuY2xpZW50QXBpVXJsXHJcbiAgICAgICAgdGhpcy50cmFmZmljQXBpVXJsID0gIGVudi50cmFmZmljQXBpVXJsXHJcbiAgICAgICAgdGhpcy50cmF4VGFza1VybCA9IGVudi50cmF4VGFza1VybFxyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyUmVsb2FkKCkge1xyXG4gICAgdGhpcy5yZWxvYWREYXRhU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoanNvbik7XHJcbiAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7ICdkYXRhJzogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoZXhjZWxCdWZmZXIsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuIFxyXG4gIHB1YmxpYyBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnbGlzdCcrIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG4gXHJcbiAgcHVibGljIHNhdmVBc1RlbXBsYXRlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VtbWFyeVRhYmxlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L3pvbmVTdW1tYXJ5VGFibGVfdjJgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRjaGVja2xpc3QoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9nZXRjaGVja2xpc3RgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrTGlzdCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS90YXNrRHJvcGRvd25gLCBkYXRhKVxyXG4gIH1cclxuICBnZXRRdWVzdGlvbnMoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZ2V0UXVlc3Rpb25zYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QW5zd2VycyggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9nZXRBbnN3ZXJzYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEFuc3dlcmNvdW50KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2dldEFuc3dlcm91bnRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9iVXNhZ2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vZ2V0TW9iaWxlVXNlYWdlbGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldGN1c3RvbWVydW5hdHRlbmRlZGxpc3QoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9nZXRjdXN0b21lcnVuYXR0ZW5kZWRsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgc3RvcmVPcGVuY2xvc2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vc3RvcmVPcGVuY2xvc2VsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgZ2V0U3VtbWFyeVRhYmxlRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vem9uZVN1bW1hcnlUYWJsZV92MmAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0KG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vY2hlY2tsaXN0P2xpbWl0PSR7b2JqLmxpbWl0fSZvZmZzZXQ9JHtvYmoub2Zmc2V0fSZzb3J0Q29sdW1uTmFtZT0ke29iai5zb3J0Q29sdW1ufSZzZWFyY2g9JHtvYmouc2VhcmNofSZzb3J0Qnk9JHtvYmouc29ydEJ5fSZjbGllbnRJZD0ke29iai5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgaW1hZ2V1cGxvYWQodXNlcnM6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS91cGxvYWRgLHVzZXJzKVxyXG4gIH1cclxuXHJcbiAgdGFza0ltYWdldXBsb2FkKHVzZXJzOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L3VwbG9hZEltYWdlYCx1c2VycylcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlVXNlcih1c2VyczphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L3ZhbGlkYXRlVXNlcmAsdXNlcnMpXHJcbiAgfVxyXG5cclxuICBnZXR1cGRhdGVjaGVja2xpc3QoaWQ6YW55LGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnRyYXhVcmx9L2NoZWNrbGlzdC91cGRhdGUvJHtpZH1gLGRhdGEpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVjaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2NoZWNrbGlzdC9jcmVhdGVgLCBkYXRhIClcclxuICB9XHJcblxyXG4gIGNvbmZpZ1VwZGF0ZShvYmo6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9jaGVja2xpc3RDb25maWd1cmVgLG9iailcclxuICB9XHJcblxyXG4gIGdldGNvbmZpZyhvYmo6YW55KSB7XHJcbiAgICBsZXQga2V5ID0gT2JqZWN0LmtleXMob2JqKVswXTtcclxuICAgIGxldCB2YWx1ZSA9IG9ialtPYmplY3Qua2V5cyhvYmopWzBdXTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vZ2V0Q29uZmlnRGV0YWlscz8ke2tleX09JHt2YWx1ZX0mY2xpZW50SWQ9JHtvYmpbT2JqZWN0LmtleXMob2JqKVsxXV19YClcclxuICB9XHJcblxyXG4gIHJ1bkFJSW5zZXJ0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vcnVuQUlJbnNlcnRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlY2hlY2tsaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9kdXBsaWNhdGVDaGVja2xpc3QvJHtkYXRhLmNoZWNrbGlzdElkfT9jbGllbnRJZD0ke2RhdGEuY2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIGdldFVzZXJEZXRhaWxzKG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vdXNlckRldGFpbHMvJHtvYmouaWR9P29mZnNldD0ke29iai5vZmZzZXR9JmxpbWl0PSR7b2JqLmxpbWl0fSZzZWFyY2g9JHtvYmouc2VhcmNofSZjbGllbnRJZD0ke29iai5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVMaXN0KGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZVVybH0vc3RvcmVJbmZyYUxpc3RgLGRhdGEpXHJcbiAgfVxyXG5cclxuICBkZWxldGVDaGVja2xpc3QoZGF0YTogYW55LCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy50cmF4VXJsfS9kZWxldGVDaGVja2xpc3QvJHtkYXRhLmlkfT9jbGllbnRJZD0ke2RhdGEuY2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIHB1Ymxpc2goZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnRyYXhVcmx9L3B1Ymxpc2hgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRTdG9yZXMoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L2dldC1zdG9yZXNgLCAgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RzKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9jaGVja2xpc3REcm9wZG93bmAsIGRhdGEpXHJcbiAgfVxyXG4gIHZpZXdDaGVja2xpc3RzKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS92aWV3Y2hlY2tsaXN0YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIG92ZXJhbGxGbGFnTWV0cmljcyhib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBvdmVyYWxsRmxhZ01ldHJpY3NDb21wYXJpc29uKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDb21wYXJpc29uQ2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnc1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdUYWJsZXNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBleHBvcnRGbGFnc1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdUYWJsZXNWMWAsIGJvZHksIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgZ2V0T3ZlcmFsbENhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9vdmVyYWxsQ2FyZHNWMWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RQZXJmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvY2hlY2tsaXN0UGVyZm9ybWFuY2VgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0UGVyZm9ybWFuY2VEYXRhRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdFBlcmZvcm1hbmNlYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZVBlcmZvcm1hbmNlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9zdG9yZVBlcmZvcm1hbmNlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUGVyZm9ybWFuY2VEYXRhRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3N0b3JlUGVyZm9ybWFuY2VgLCBkYXRhLCB7cmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInfSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJQZXJmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlclBlcmZvcm1hbmNlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJQZXJmb3JtYW5jZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlclBlcmZvcm1hbmNlYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3REcm9wZG93bkRhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3REcm9wRG93blYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0Q2hlY2tsaXN0RHJvcGRvd25EYXNoYm9hcmREYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdERyb3Bkb3duYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEluZm9DYXJkc0RhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvaW5mb0NhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0RmxhZ1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3RUYWJsZVYxYCwgYm9keSlcclxuICB9XHJcblxyXG4gIENyZWF0ZWNoZWNrbGlzdFRhc2soYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhUYXNrVXJsfS9jaGVja2xpc3RUYXNrYCwgYm9keSlcclxuICB9XHJcbiAgcmVkb1Rhc2tjaGVja2xpc3QoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L3JlZG9gLCBib2R5KVxyXG4gIH1cclxuICByZWRvVGFzayhib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFRhc2tVcmx9L3JlZG9gLCBib2R5KVxyXG4gIH1cclxuICBleHBvcnRDaGVja2xpc3RGbGFnVGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDaGVja2xpc3RUYWJsZVYxYCwgYm9keSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICByZXBvcnRUYWJsZShib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3JlcG9ydENoZWNrbGlzdERhdGF2MWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnQ2FyZFZhbHVlcyhib2R5OmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2hlY2tsaXN0Q2FyZHNWMWAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBmbGFnQ2FyZFRlcmVuZChib2R5OmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2hlY2tsaXN0Q29tcGFyaXNvbkNhcmRzVjFgLCBib2R5KVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrbGlzdEluZm9EYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL2NoZWNrbGlzdEluZm9gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcmxpc3REcm9wZG93bkRhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvdXNlcmxpc3REcm9wZG93bmAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRNb250aGx5UGVmb3JtYW5jZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvbW9udGhseUdyYXBoVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50VXNlciggY2xpZW50SWQ6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L3VzZXJMaXN0P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIGdldFpvbmVMaXN0KCBjbGllbnRJZDphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vem9uZUxpc3Q/Y2xpZW50SWQ9JHtjbGllbnRJZH1gKVxyXG4gIH1cclxuICBnZXRJbmZvQ29tcGFyaXNvbkNhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9pbmZvQ29tcGFyaXNvbkNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRPdmVyYWxsQ29tcGFyaXNvbkNhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9vdmVyYWxsQ29tcGFyaXNvbkNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0YWljaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vYWljaGVja2xpc3Q/Y2xpZW50SWQ9JHtkYXRhfWApXHJcbiAgfVxyXG5cclxuICByZXBvcnRUYWJsZUV4cG9ydChib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZG93bmxvYWRzL2Rvd25sb2FkSW5zZXJ0YCwgYm9keSlcclxuICB9XHJcbiAgZ2V0cHJlZGVmaW5lZGNoZWNrbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9wcmVkZWZpbmVkQ2hlY2tsaXN0P2NsaWVudElkPSR7ZGF0YX1gKVxyXG4gIH1cclxuICBnZXRjbGllbnQoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QVBpVXJsfS9kZXRhaWxlZC1jbGllbnQtY291bnQ/Y2xpZW50SWQ9JHtkYXRhLmNsaWVudElkfWApXHJcbiAgfVxyXG4gIGdldEdyb3VwcyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyR3JvdXBzX3YxYCxkYXRhKVxyXG4gIH1cclxuICBnZXRjbHVzdGVycyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyY2x1c3Rlcl92MmAsZGF0YSlcclxuICB9XHJcbiAgZ2V0U3RvcmVzbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyU3RvcmVzX3YyYCxkYXRhKVxyXG4gIH1cclxuICBnZXRPcmRlcnNCeURhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9sb2N1c29yZGVyL2dldGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBvcmRlclVwZGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2xvY3Vzb3JkZXIvdXBkYXRlYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIG9yZGVyRGVsZXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vbG9jdXNvcmRlci9kZWxldGVgLCBkYXRhKVxyXG4gICAgIFxyXG4gIH1cclxuXHJcbiAgaXNMb2N1c0F1dGhvcml6ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L2xvY3Vzb3JkZXIvdXNlci1hbGxvd2VkYClcclxuICB9XHJcbiAgcmVpbml0aWF0ZUNoZWNrbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3JlaW5pdGlhdGVjaGVja2xpc3RgLGRhdGEpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0QXNDU1ZGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcsaWRlbnRpZmllcj86IGFueVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCB3b3Jrc2hlZXQ6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb24pO1xyXG5cclxuICAgIGNvbnN0IGNzdk91dHB1dDogc3RyaW5nID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya3NoZWV0KTtcclxuICAgIHRoaXMuc2F2ZUFzQ1NWRmlsZShjc3ZPdXRwdXQsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuICBwcml2YXRlIHNhdmVBc0NTVkZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBDU1ZfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgQ1NWX0VYVEVOU0lPTik7XHJcbiAgfVxyXG5cclxuICByZUluaXRpYXRlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvcmVpbml0aWF0ZWNoZWNrbGlzdGAsIGJvZHkpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYXNrKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vY3JlYXRlYCwgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRUYXNrY29uZmlnKGlkOnN0cmluZywgY2xpZW50SWQ6c3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kZXRhaWxzP3Rhc2tJZD0ke2lkfSZjbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG5cclxuICBjb25maWdUYXNrKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vY29uZmlnYCwgZGF0YSApXHJcbiAgfVxyXG5cclxuICBnZXRUYXNrVXNlckRldGFpbHMoZGF0YTphbnkpIHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHsgZnJvbU9iamVjdDogZGF0YSB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFRhc2tVcmx9L3VzZXJEZXRhaWxzYCwge3BhcmFtc30pXHJcbiAgfVxyXG5cclxuICB1cGxvYWRUYXNrQXNzaWduZWVzKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vdXBsb2FkYCwgZGF0YSApXHJcblxyXG4gIH1cclxuXHJcbiAgXHJcbiAgZ2V0T3ZlcmFsbFRhc2tzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvb3ZlcmFsbGNhcmRzVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrVGFibGVEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrVGFibGVWMWAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldFRhc2tUYWJsZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZGFzaGJvYXJkL3Rhc2tUYWJsZVYxYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG4gIGdldFRhc2tJbmZvVGFibGVEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrSW5mb1RhYmxlVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrSW5mb1RhYmxlRGF0YUV4cG9ydCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0luZm9UYWJsZVYxYCwgZGF0YSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG4gIGdldE92ZXJhbGxBY3Rpb25DZW50ZXJEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2FjdGlvbkNlbnRlci9vdmVyYWxsY2FyZHNWMWAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldEFwcHJvdmFsRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9hY3Rpb25DZW50ZXIvYXBwcm92YWxUYWJsZVYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2coIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vYWN0aW9uQ2VudGVyL2FjdGl2aXR5TG9nVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrRHJvcGRvd25MaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrRHJvcGRvd25MaXN0VjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrRGVsZXRlKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrRGVsZXRlVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrVXBkYXRlKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L3JlaW5pdGlhdGVgLCBkYXRhKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|