mis-crystal-design-system 18.1.21 → 18.2.0

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.
Files changed (26) hide show
  1. package/datepicker_v2/tz-datepicker.directive.d.ts +2 -2
  2. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +2 -2
  3. package/esm2022/mis-slider/index.mjs +2 -0
  4. package/esm2022/mis-slider/mis-crystal-design-system-mis-slider.mjs +5 -0
  5. package/esm2022/mis-slider/mis-slider.component.mjs +327 -0
  6. package/esm2022/mis-slider/mis-slider.module.mjs +23 -0
  7. package/esm2022/mis-slider/public_api.mjs +3 -0
  8. package/esm2022/public-api.mjs +2 -1
  9. package/esm2022/specificdatepicker/specificdatepicker.module.mjs +5 -4
  10. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +204 -110
  11. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +10 -3
  12. package/fesm2022/mis-crystal-design-system-mis-slider.mjs +353 -0
  13. package/fesm2022/mis-crystal-design-system-mis-slider.mjs.map +1 -0
  14. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +216 -114
  15. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  16. package/fesm2022/mis-crystal-design-system.mjs +1 -0
  17. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  18. package/mis-slider/README.md +30 -0
  19. package/mis-slider/index.d.ts +1 -0
  20. package/mis-slider/mis-slider.component.d.ts +64 -0
  21. package/mis-slider/mis-slider.module.d.ts +11 -0
  22. package/mis-slider/public_api.d.ts +2 -0
  23. package/package.json +13 -7
  24. package/specificdatepicker/specificdatepicker.module.d.ts +2 -1
  25. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +10 -2
  26. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +2 -2
@@ -16,6 +16,7 @@ import * as i2 from "@angular/common";
16
16
  import * as i3 from "mis-crystal-design-system/button";
17
17
  import * as i4 from "mis-crystal-design-system/radio-button";
18
18
  import * as i5 from "mis-crystal-design-system/datepicker_v2";
19
+ import * as i6 from "@angular/cdk/a11y";
19
20
  const _c0 = ["singleDatePickerElement"];
20
21
  const _c1 = a0 => ({ "display": a0 });
21
22
  const _c2 = a0 => ({ "disabled-month": a0 });
@@ -25,36 +26,39 @@ const _c5 = (a0, a1, a2, a3, a4, a5) => ({ "selected-day": a0, "disabled-day": a
25
26
  const _c6 = (a0, a1, a2, a3, a4) => ({ "margin-right": a0, "width": a1, "justify-content": a2, "padding-top": a3, "height": a4 });
26
27
  const _c7 = a0 => ({ "circular-dot": a0 });
27
28
  const _c8 = (a0, a1) => ({ "current-day": a0, "holiday-text": a1 });
28
- function TzDrpContainerComponent_div_2_Template(rf, ctx) { if (rf & 1) {
29
+ function TzDrpContainerComponent_div_3_Template(rf, ctx) { if (rf & 1) {
29
30
  const _r2 = i0.ɵɵgetCurrentView();
30
- i0.ɵɵelementStart(0, "div", 28)(1, "mis-radio", 29);
31
- i0.ɵɵlistener("valueChange", function TzDrpContainerComponent_div_2_Template_mis_radio_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changePicker($event)); });
31
+ i0.ɵɵelementStart(0, "div", 32);
32
+ i0.ɵɵlistener("keydown.enter", function TzDrpContainerComponent_div_3_Template_div_keydown_enter_0_listener() { const picker_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.changePicker(picker_r3)); });
33
+ i0.ɵɵelementStart(1, "mis-radio", 33);
34
+ i0.ɵɵlistener("valueChange", function TzDrpContainerComponent_div_3_Template_mis_radio_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.changePicker($event)); });
32
35
  i0.ɵɵelementEnd();
33
36
  i0.ɵɵelementStart(2, "span");
34
37
  i0.ɵɵtext(3);
35
38
  i0.ɵɵelementEnd()();
36
39
  } if (rf & 2) {
37
- const picker_r4 = ctx.$implicit;
38
- const ctx_r2 = i0.ɵɵnextContext();
40
+ const picker_r3 = ctx.$implicit;
41
+ const ctx_r3 = i0.ɵɵnextContext();
42
+ i0.ɵɵattribute("aria-label", (ctx_r3.formControl == null ? null : ctx_r3.formControl.value) === picker_r3 ? picker_r3 + ", selected" : picker_r3 + ", click to select");
39
43
  i0.ɵɵadvance();
40
- i0.ɵɵproperty("name", "dateSelection")("value", picker_r4)("formControl", ctx_r2.formControl);
44
+ i0.ɵɵproperty("name", "dateSelection")("value", picker_r3)("formControl", ctx_r3.formControl);
41
45
  i0.ɵɵadvance(2);
42
- i0.ɵɵtextInterpolate(picker_r4);
46
+ i0.ɵɵtextInterpolate(picker_r3);
43
47
  } }
44
- function TzDrpContainerComponent_div_15_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "div", 30)(1, "span", 31);
48
+ function TzDrpContainerComponent_div_16_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementStart(0, "div", 34)(1, "span", 35);
46
50
  i0.ɵɵtext(2);
47
51
  i0.ɵɵelementEnd()();
48
52
  } if (rf & 2) {
49
53
  const weekDay_r5 = ctx.$implicit;
50
- const ctx_r2 = i0.ɵɵnextContext();
54
+ const ctx_r3 = i0.ɵɵnextContext();
51
55
  i0.ɵɵadvance();
52
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c4, weekDay_r5.isCurrentDay && ctx_r2.currentMonthNumber() === ctx_r2.todayMonthNumber()));
56
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c4, weekDay_r5.isCurrentDay && ctx_r3.currentMonthNumber() === ctx_r3.todayMonthNumber()));
53
57
  i0.ɵɵadvance();
54
58
  i0.ɵɵtextInterpolate(weekDay_r5.label);
55
59
  } }
56
- function TzDrpContainerComponent_div_17_span_2_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵelementStart(0, "span", 31);
60
+ function TzDrpContainerComponent_div_18_span_2_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "span", 35);
58
62
  i0.ɵɵtext(1);
59
63
  i0.ɵɵelementEnd();
60
64
  } if (rf & 2) {
@@ -63,24 +67,25 @@ function TzDrpContainerComponent_div_17_span_2_Template(rf, ctx) { if (rf & 1) {
63
67
  i0.ɵɵadvance();
64
68
  i0.ɵɵtextInterpolate1(" ", day_r7.date, " ");
65
69
  } }
66
- function TzDrpContainerComponent_div_17_Template(rf, ctx) { if (rf & 1) {
70
+ function TzDrpContainerComponent_div_18_Template(rf, ctx) { if (rf & 1) {
67
71
  const _r6 = i0.ɵɵgetCurrentView();
68
- i0.ɵɵelementStart(0, "div", 32);
69
- i0.ɵɵlistener("click", function TzDrpContainerComponent_div_17_Template_div_click_0_listener() { const day_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectDay("LEFT", day_r7)); });
70
- i0.ɵɵelement(1, "div", 31);
71
- i0.ɵɵtemplate(2, TzDrpContainerComponent_div_17_span_2_Template, 2, 5, "span", 33);
72
+ i0.ɵɵelementStart(0, "div", 36);
73
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_div_18_Template_div_click_0_listener() { const day_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.selectDay("LEFT", day_r7)); })("keydown", function TzDrpContainerComponent_div_18_Template_div_keydown_0_listener($event) { const day_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.handleDayKeydown($event, "LEFT", day_r7)); });
74
+ i0.ɵɵelement(1, "div", 37);
75
+ i0.ɵɵtemplate(2, TzDrpContainerComponent_div_18_span_2_Template, 2, 5, "span", 38);
72
76
  i0.ɵɵelementEnd();
73
77
  } if (rf & 2) {
74
78
  const day_r7 = ctx.$implicit;
75
- const ctx_r2 = i0.ɵɵnextContext();
76
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction6(4, _c5, day_r7.isSelectedDay && ctx_r2.isSpecificPickerSelected(), day_r7.isDisabledDay, day_r7.isSelectedStartDay && !ctx_r2.isSpecificPickerSelected(), day_r7.isSelectedEndDay && !ctx_r2.isSpecificPickerSelected(), day_r7.inRangeDay && !ctx_r2.isSpecificPickerSelected(), day_r7.date > 0 && !ctx_r2.isSpecificPickerSelected() && !(day_r7.isSelectedStartDay && day_r7.isSelectedEndDay)))("ngStyle", i0.ɵɵpureFunction5(11, _c6, !ctx_r2.isSpecificPickerSelected() ? "0px" : "1px", !ctx_r2.isSpecificPickerSelected() ? "36px" : "35px", day_r7.isHoliday ? "flex-start" : "center", day_r7.isHoliday ? "2.8px" : "0px", day_r7.isHoliday ? "33px" : "36px"));
79
+ const ctx_r3 = i0.ɵɵnextContext();
80
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction6(8, _c5, day_r7.isSelectedDay && ctx_r3.isSpecificPickerSelected(), day_r7.isDisabledDay, day_r7.isSelectedStartDay && !ctx_r3.isSpecificPickerSelected(), day_r7.isSelectedEndDay && !ctx_r3.isSpecificPickerSelected(), day_r7.inRangeDay && !ctx_r3.isSpecificPickerSelected(), day_r7.date > 0 && !ctx_r3.isSpecificPickerSelected() && !(day_r7.isSelectedStartDay && day_r7.isSelectedEndDay)))("ngStyle", i0.ɵɵpureFunction5(15, _c6, !ctx_r3.isSpecificPickerSelected() ? "0px" : "1px", !ctx_r3.isSpecificPickerSelected() ? "36px" : "35px", day_r7.isHoliday ? "flex-start" : "center", day_r7.isHoliday ? "2.8px" : "0px", day_r7.isHoliday ? "33px" : "36px"));
81
+ i0.ɵɵattribute("data-sdp-cell", ctx_r3.getDayCellId(day_r7, "LEFT"))("tabindex", ctx_r3.getDayTabIndex(day_r7, "LEFT"))("aria-label", day_r7.date > 0 ? day_r7.date + " " + ctx_r3.currentMonth() + " " + ctx_r3.currentYearNumber() + (day_r7.isDisabledDay ? ", disabled" : "") : null)("aria-disabled", day_r7.isDisabledDay);
77
82
  i0.ɵɵadvance();
78
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(17, _c7, day_r7.isHoliday));
83
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(21, _c7, day_r7.isHoliday));
79
84
  i0.ɵɵadvance();
80
85
  i0.ɵɵproperty("ngIf", day_r7.date > 0);
81
86
  } }
82
- function TzDrpContainerComponent_div_28_Template(rf, ctx) { if (rf & 1) {
83
- i0.ɵɵelementStart(0, "div", 30)(1, "span");
87
+ function TzDrpContainerComponent_div_29_Template(rf, ctx) { if (rf & 1) {
88
+ i0.ɵɵelementStart(0, "div", 34)(1, "span");
84
89
  i0.ɵɵtext(2);
85
90
  i0.ɵɵelementEnd()();
86
91
  } if (rf & 2) {
@@ -88,42 +93,43 @@ function TzDrpContainerComponent_div_28_Template(rf, ctx) { if (rf & 1) {
88
93
  i0.ɵɵadvance(2);
89
94
  i0.ɵɵtextInterpolate(weekDay_r8.label);
90
95
  } }
91
- function TzDrpContainerComponent_div_30_span_2_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelementStart(0, "span", 31);
96
+ function TzDrpContainerComponent_div_31_span_2_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelementStart(0, "span", 35);
93
98
  i0.ɵɵtext(1);
94
99
  i0.ɵɵelementEnd();
95
100
  } if (rf & 2) {
96
101
  const day_r10 = i0.ɵɵnextContext().$implicit;
97
- const ctx_r2 = i0.ɵɵnextContext();
98
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c8, day_r10.isCurrentDay && ctx_r2.currentMonthNumber() === ctx_r2.todayMonthNumber(), day_r10.isHoliday || day_r10.isWeekOff));
102
+ const ctx_r3 = i0.ɵɵnextContext();
103
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c8, day_r10.isCurrentDay && ctx_r3.currentMonthNumber() === ctx_r3.todayMonthNumber(), day_r10.isHoliday || day_r10.isWeekOff));
99
104
  i0.ɵɵadvance();
100
105
  i0.ɵɵtextInterpolate1(" ", day_r10.date, " ");
101
106
  } }
102
- function TzDrpContainerComponent_div_30_Template(rf, ctx) { if (rf & 1) {
107
+ function TzDrpContainerComponent_div_31_Template(rf, ctx) { if (rf & 1) {
103
108
  const _r9 = i0.ɵɵgetCurrentView();
104
- i0.ɵɵelementStart(0, "div", 34);
105
- i0.ɵɵlistener("click", function TzDrpContainerComponent_div_30_Template_div_click_0_listener() { const day_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectDay("RIGHT", day_r10)); });
106
- i0.ɵɵelement(1, "div", 31);
107
- i0.ɵɵtemplate(2, TzDrpContainerComponent_div_30_span_2_Template, 2, 5, "span", 33);
109
+ i0.ɵɵelementStart(0, "div", 39);
110
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_div_31_Template_div_click_0_listener() { const day_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.selectDay("RIGHT", day_r10)); })("keydown", function TzDrpContainerComponent_div_31_Template_div_keydown_0_listener($event) { const day_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.handleDayKeydown($event, "RIGHT", day_r10)); });
111
+ i0.ɵɵelement(1, "div", 37);
112
+ i0.ɵɵtemplate(2, TzDrpContainerComponent_div_31_span_2_Template, 2, 5, "span", 38);
108
113
  i0.ɵɵelementEnd();
109
114
  } if (rf & 2) {
110
115
  const day_r10 = ctx.$implicit;
111
- const ctx_r2 = i0.ɵɵnextContext();
112
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction6(3, _c5, day_r10.isSelectedDay && ctx_r2.isSpecificPickerSelected(), day_r10.isDisabledDay, day_r10.isSelectedStartDay && !ctx_r2.isSpecificPickerSelected(), day_r10.isSelectedEndDay && !ctx_r2.isSpecificPickerSelected(), day_r10.inRangeDay && !ctx_r2.isSpecificPickerSelected(), day_r10.date > 0 && !ctx_r2.isSpecificPickerSelected() && !(day_r10.isSelectedStartDay && day_r10.isSelectedEndDay)));
116
+ const ctx_r3 = i0.ɵɵnextContext();
117
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction6(7, _c5, day_r10.isSelectedDay && ctx_r3.isSpecificPickerSelected(), day_r10.isDisabledDay, day_r10.isSelectedStartDay && !ctx_r3.isSpecificPickerSelected(), day_r10.isSelectedEndDay && !ctx_r3.isSpecificPickerSelected(), day_r10.inRangeDay && !ctx_r3.isSpecificPickerSelected(), day_r10.date > 0 && !ctx_r3.isSpecificPickerSelected() && !(day_r10.isSelectedStartDay && day_r10.isSelectedEndDay)));
118
+ i0.ɵɵattribute("data-sdp-cell", ctx_r3.getDayCellId(day_r10, "RIGHT"))("tabindex", ctx_r3.getDayTabIndex(day_r10, "RIGHT"))("aria-label", day_r10.date > 0 ? day_r10.date + " " + ctx_r3.nextMonth() + " " + ctx_r3.nextYearNumber() + (day_r10.isDisabledDay ? ", disabled" : "") : null)("aria-disabled", day_r10.isDisabledDay);
113
119
  i0.ɵɵadvance();
114
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c7, day_r10.isHoliday));
120
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c7, day_r10.isHoliday));
115
121
  i0.ɵɵadvance();
116
122
  i0.ɵɵproperty("ngIf", day_r10.date > 0);
117
123
  } }
118
- function TzDrpContainerComponent_span_34_span_2_Template(rf, ctx) { if (rf & 1) {
124
+ function TzDrpContainerComponent_span_35_span_2_Template(rf, ctx) { if (rf & 1) {
119
125
  i0.ɵɵelementStart(0, "span");
120
126
  i0.ɵɵtext(1, ",");
121
127
  i0.ɵɵelementEnd();
122
128
  } }
123
- function TzDrpContainerComponent_span_34_Template(rf, ctx) { if (rf & 1) {
129
+ function TzDrpContainerComponent_span_35_Template(rf, ctx) { if (rf & 1) {
124
130
  i0.ɵɵelementStart(0, "span");
125
131
  i0.ɵɵtext(1);
126
- i0.ɵɵtemplate(2, TzDrpContainerComponent_span_34_span_2_Template, 2, 0, "span", 22);
132
+ i0.ɵɵtemplate(2, TzDrpContainerComponent_span_35_span_2_Template, 2, 0, "span", 26);
127
133
  i0.ɵɵelementEnd();
128
134
  } if (rf & 2) {
129
135
  const weekOff_r11 = ctx.$implicit;
@@ -133,47 +139,47 @@ function TzDrpContainerComponent_span_34_Template(rf, ctx) { if (rf & 1) {
133
139
  i0.ɵɵadvance();
134
140
  i0.ɵɵproperty("ngIf", !last_r12);
135
141
  } }
136
- function TzDrpContainerComponent_span_39_Template(rf, ctx) { if (rf & 1) {
142
+ function TzDrpContainerComponent_span_40_Template(rf, ctx) { if (rf & 1) {
137
143
  i0.ɵɵelementStart(0, "span")(1, "span");
138
144
  i0.ɵɵtext(2);
139
145
  i0.ɵɵelementEnd();
140
146
  i0.ɵɵtext(3, " day(s) selected ");
141
147
  i0.ɵɵelementEnd();
142
148
  } if (rf & 2) {
143
- const ctx_r2 = i0.ɵɵnextContext();
149
+ const ctx_r3 = i0.ɵɵnextContext();
144
150
  i0.ɵɵadvance(2);
145
- i0.ɵɵtextInterpolate(ctx_r2.localSelectedDates().length);
151
+ i0.ɵɵtextInterpolate(ctx_r3.localSelectedDates().length);
146
152
  } }
147
- function TzDrpContainerComponent_span_40_Template(rf, ctx) { if (rf & 1) {
153
+ function TzDrpContainerComponent_span_41_Template(rf, ctx) { if (rf & 1) {
148
154
  i0.ɵɵelementStart(0, "span")(1, "span");
149
155
  i0.ɵɵtext(2);
150
156
  i0.ɵɵelementEnd();
151
157
  i0.ɵɵtext(3, "day(s) selected");
152
158
  i0.ɵɵelementEnd();
153
159
  } if (rf & 2) {
154
- const ctx_r2 = i0.ɵɵnextContext();
160
+ const ctx_r3 = i0.ɵɵnextContext();
155
161
  i0.ɵɵadvance(2);
156
- i0.ɵɵtextInterpolate1("", ctx_r2.dateRangeLength() > 0 ? ctx_r2.dateRangeLength() : 0, " ");
162
+ i0.ɵɵtextInterpolate1("", ctx_r3.dateRangeLength() > 0 ? ctx_r3.dateRangeLength() : 0, " ");
157
163
  } }
158
- function TzDrpContainerComponent_button_44_Template(rf, ctx) { if (rf & 1) {
164
+ function TzDrpContainerComponent_button_46_Template(rf, ctx) { if (rf & 1) {
159
165
  const _r13 = i0.ɵɵgetCurrentView();
160
- i0.ɵɵelementStart(0, "button", 35);
161
- i0.ɵɵlistener("click", function TzDrpContainerComponent_button_44_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.applyDates()); });
166
+ i0.ɵɵelementStart(0, "button", 40);
167
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_button_46_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.applyDates()); });
162
168
  i0.ɵɵtext(1, "Apply");
163
169
  i0.ɵɵelementEnd();
164
170
  } if (rf & 2) {
165
- const ctx_r2 = i0.ɵɵnextContext();
166
- i0.ɵɵproperty("disabled", !ctx_r2.isDatesValid());
171
+ const ctx_r3 = i0.ɵɵnextContext();
172
+ i0.ɵɵproperty("disabled", !ctx_r3.isDatesValid());
167
173
  } }
168
- function TzDrpContainerComponent_button_45_Template(rf, ctx) { if (rf & 1) {
174
+ function TzDrpContainerComponent_button_47_Template(rf, ctx) { if (rf & 1) {
169
175
  const _r14 = i0.ɵɵgetCurrentView();
170
- i0.ɵɵelementStart(0, "button", 35);
171
- i0.ɵɵlistener("click", function TzDrpContainerComponent_button_45_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.applyDatesRange()); });
172
- i0.ɵɵtext(1, "Apply");
176
+ i0.ɵɵelementStart(0, "button", 40, 2);
177
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_button_47_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.applyDatesRange()); });
178
+ i0.ɵɵtext(2, "Apply");
173
179
  i0.ɵɵelementEnd();
174
180
  } if (rf & 2) {
175
- const ctx_r2 = i0.ɵɵnextContext();
176
- i0.ɵɵproperty("disabled", !ctx_r2.isDatesValid() || ctx_r2.dateRangeLength() === 0);
181
+ const ctx_r3 = i0.ɵɵnextContext();
182
+ i0.ɵɵproperty("disabled", !ctx_r3.isDatesValid() || ctx_r3.dateRangeLength() === 0);
177
183
  } }
178
184
  dayjs.extend(isBetween);
179
185
  dayjs.extend(utc);
@@ -182,9 +188,10 @@ dayjs.extend(customParseFormat);
182
188
  dayjs.extend(isSameOrAfter);
183
189
  dayjs.extend(isSameOrBefore);
184
190
  export class TzDrpContainerComponent {
185
- constructor(injectedData, toast) {
191
+ constructor(injectedData, toast, elementRef) {
186
192
  this.injectedData = injectedData;
187
193
  this.toast = toast;
194
+ this.elementRef = elementRef;
188
195
  this.data = signal(this.injectedData);
189
196
  this.dayjsInstance = computed(() => {
190
197
  const config = this.data().dpConfig;
@@ -388,6 +395,7 @@ export class TzDrpContainerComponent {
388
395
  }
389
396
  });
390
397
  }
398
+ this.scheduleFocusCell(this.getDayCellId(day, from));
391
399
  }
392
400
  applyDates() {
393
401
  this.data().dateChange(this.localSelectedDates());
@@ -412,85 +420,168 @@ export class TzDrpContainerComponent {
412
420
  // The view will simply update to reflect the active mode.
413
421
  this.formControl.setValue(event, { emitEvent: false });
414
422
  }
423
+ getDayTabIndex(day, panel) {
424
+ const dates = panel === "LEFT" ? this.currentMonthDates() : this.nextMonthDates();
425
+ if (!dates?.length)
426
+ return -1;
427
+ const firstIndex = dates.findIndex((d) => d.date > 0 && !d.isDisabledDay);
428
+ if (firstIndex < 0)
429
+ return -1;
430
+ const currentIndex = dates.findIndex((d) => d === day);
431
+ return currentIndex === firstIndex ? 0 : -1;
432
+ }
433
+ getDayCellId(day, panel) {
434
+ if (day?.date <= 0)
435
+ return "";
436
+ const month = panel === "LEFT" ? this.currentMonthNumber() : this.nextMonthNumber();
437
+ const year = panel === "LEFT" ? this.currentYearNumber() : this.nextYearNumber();
438
+ return `${panel === "LEFT" ? "L" : "R"}-${month}-${year}-${day.date}`;
439
+ }
440
+ scheduleFocusCell(cellId) {
441
+ if (!cellId)
442
+ return;
443
+ const host = this.elementRef?.nativeElement;
444
+ setTimeout(() => {
445
+ const el = host?.querySelector?.(`[data-sdp-cell="${cellId}"]`);
446
+ if (el?.focus)
447
+ el.focus();
448
+ }, 0);
449
+ }
450
+ static { this.ROW_SIZE = 7; }
451
+ getDayIndexInMonth(day, panel) {
452
+ const dates = panel === "LEFT" ? this.currentMonthDates() : this.nextMonthDates();
453
+ const idx = dates.findIndex((d) => d.date === day.date);
454
+ return idx >= 0 ? idx : -1;
455
+ }
456
+ getNextDayIndex(currentIndex, direction, panel) {
457
+ const dates = panel === "LEFT" ? this.currentMonthDates() : this.nextMonthDates();
458
+ const len = dates.length;
459
+ if (len === 0)
460
+ return -1;
461
+ let delta = 0;
462
+ if (direction === "ArrowRight")
463
+ delta = 1;
464
+ else if (direction === "ArrowLeft")
465
+ delta = -1;
466
+ else if (direction === "ArrowUp")
467
+ delta = -TzDrpContainerComponent.ROW_SIZE;
468
+ else if (direction === "ArrowDown")
469
+ delta = TzDrpContainerComponent.ROW_SIZE;
470
+ let next = currentIndex + delta;
471
+ if (next < 0 || next >= len)
472
+ return -1;
473
+ if (dates[next].date > 0 && !dates[next].isDisabledDay)
474
+ return next;
475
+ while (next >= 0 && next < len && (dates[next].date === 0 || dates[next].isDisabledDay)) {
476
+ next += delta;
477
+ }
478
+ return next >= 0 && next < len && dates[next].date > 0 && !dates[next].isDisabledDay ? next : -1;
479
+ }
480
+ handleDayKeydown(event, panel, day) {
481
+ const arrowKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"];
482
+ if (arrowKeys.includes(event.key)) {
483
+ event.preventDefault();
484
+ const currentIndex = this.getDayIndexInMonth(day, panel);
485
+ if (currentIndex < 0)
486
+ return;
487
+ const nextIndex = this.getNextDayIndex(currentIndex, event.key, panel);
488
+ if (nextIndex >= 0) {
489
+ const dates = panel === "LEFT" ? this.currentMonthDates() : this.nextMonthDates();
490
+ const nextDay = dates[nextIndex];
491
+ this.scheduleFocusCell(this.getDayCellId(nextDay, panel));
492
+ }
493
+ return;
494
+ }
495
+ if (day.date <= 0 || day.isDisabledDay)
496
+ return;
497
+ if (event.key === "Enter" || event.key === " ") {
498
+ event.preventDefault();
499
+ this.selectDay(panel, day);
500
+ }
501
+ }
415
502
  ngOnDestroy() {
416
503
  if (this.singleDatePickerElement) {
417
504
  this.singleDatePickerElement.close();
418
505
  }
419
506
  }
420
- static { this.ɵfac = function TzDrpContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TzDrpContainerComponent)(i0.ɵɵdirectiveInject(CONTAINER_DATA), i0.ɵɵdirectiveInject(i1.ToastService)); }; }
507
+ static { this.ɵfac = function TzDrpContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TzDrpContainerComponent)(i0.ɵɵdirectiveInject(CONTAINER_DATA), i0.ɵɵdirectiveInject(i1.ToastService), i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
421
508
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TzDrpContainerComponent, selectors: [["mis-tz-sdp"]], viewQuery: function TzDrpContainerComponent_Query(rf, ctx) { if (rf & 1) {
422
509
  i0.ɵɵviewQuery(_c0, 7, TzDatepickerDirective);
423
510
  } if (rf & 2) {
424
511
  let _t;
425
512
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.singleDatePickerElement = _t.first);
426
- } }, decls: 49, vars: 35, consts: [["singleDatePickerElement", ""], [1, "daterangepicker-container", 3, "ngClass"], [1, "radio-container"], ["class", "label", 4, "ngFor", "ngForOf"], [1, "specific-datepicker-container", 3, "ngStyle"], [1, "daterangepicker-container__view"], [1, "datepicker__left"], [1, "daterangepicker-container__header__prabu"], [1, "daterangepicker-container__arrow__icon", 3, "click", "ngClass"], ["width", "20", "height", "16", "viewBox", "0 0 20 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z", "fill", "#181F33"], [1, "daterangepicker-container__body"], [1, "daterangepicker-container__weekdays"], ["class", "daterangepicker-container__weekday", 4, "ngFor", "ngForOf"], [1, "daterangepicker-container__days"], ["class", "daterangepicker-container__day", 3, "ngClass", "ngStyle", "click", 4, "ngFor", "ngForOf"], [1, "datepicker__right"], ["class", "daterangepicker-container__day", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "weekOffs_holidays_container"], [4, "ngFor", "ngForOf"], [1, "circular-dot", 3, "ngStyle"], [1, "daterangepicker__footer"], [4, "ngIf"], [1, "footer_action_btn"], ["mis-button", "", "size", "md", "type", "none", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", 3, "disabled", "click", 4, "ngIf"], [1, "single-datepicker-container", 3, "ngStyle"], ["misTzDp", "", "misInput", "", "type", "text", "readonly", "", "placeholder", "Select", "positionX", "center", "positionY", "top", "offsetX", "71", "offsetY", "-1", 1, "date-input", 3, "dateChange", "dpConfig", "selectedDate", "value", "disableBoxShadow", "disableOverLay", "openElement"], [1, "label"], ["ngDefaultControl", "", 1, "input", 3, "valueChange", "name", "value", "formControl"], [1, "daterangepicker-container__weekday"], [3, "ngClass"], [1, "daterangepicker-container__day", 3, "click", "ngClass", "ngStyle"], [3, "ngClass", 4, "ngIf"], [1, "daterangepicker-container__day", 3, "click", "ngClass"], ["mis-button", "", "size", "md", "type", "primary", 3, "click", "disabled"]], template: function TzDrpContainerComponent_Template(rf, ctx) { if (rf & 1) {
513
+ } }, decls: 51, vars: 41, consts: [["cancelBtn", ""], ["singleDatePickerElement", ""], ["applyRangeBtn", ""], ["aria-label", "Choose date or date range", "cdkTrapFocus", "", 1, "daterangepicker-container", 3, "ngClass", "cdkTrapFocusAutoCapture"], ["tabindex", "-1", "cdkFocusInitial", ""], [1, "radio-container"], ["class", "label", "tabindex", "0", 3, "keydown.enter", 4, "ngFor", "ngForOf"], [1, "specific-datepicker-container", 3, "ngStyle"], [1, "daterangepicker-container__view"], [1, "datepicker__left"], [1, "daterangepicker-container__header__prabu"], ["role", "button", "aria-label", "Previous month", 1, "daterangepicker-container__arrow__icon", 3, "click", "keydown.enter", "ngClass"], ["width", "20", "height", "16", "viewBox", "0 0 20 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", "aria-hidden", "true"], ["d", "M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z", "fill", "#181F33"], [1, "daterangepicker-container__body"], [1, "daterangepicker-container__weekdays"], ["class", "daterangepicker-container__weekday", 4, "ngFor", "ngForOf"], [1, "daterangepicker-container__days"], ["class", "daterangepicker-container__day", 3, "ngClass", "ngStyle", "click", "keydown", 4, "ngFor", "ngForOf"], [1, "datepicker__right"], ["role", "button", "aria-label", "Next month", 1, "daterangepicker-container__arrow__icon", 3, "click", "keydown.enter", "ngClass"], ["class", "daterangepicker-container__day", 3, "ngClass", "click", "keydown", 4, "ngFor", "ngForOf"], ["tabindex", "0", 1, "weekOffs_holidays_container"], [4, "ngFor", "ngForOf"], [1, "circular-dot", 3, "ngStyle"], [1, "daterangepicker__footer"], [4, "ngIf"], [1, "footer_action_btn"], ["mis-button", "", "size", "md", "type", "none", "tabindex", "0", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", "tabindex", "0", 3, "disabled", "click", 4, "ngIf"], [1, "single-datepicker-container", 3, "ngStyle"], ["misTzDp", "", "misInput", "", "type", "text", "readonly", "", "placeholder", "Select", "positionX", "center", "positionY", "top", "offsetX", "71", "offsetY", "-1", 1, "date-input", 3, "dateChange", "dpConfig", "selectedDate", "value", "disableBoxShadow", "disableOverLay", "openElement"], ["tabindex", "0", 1, "label", 3, "keydown.enter"], ["ngDefaultControl", "", 1, "input", 3, "valueChange", "name", "value", "formControl"], [1, "daterangepicker-container__weekday"], [3, "ngClass"], [1, "daterangepicker-container__day", 3, "click", "keydown", "ngClass", "ngStyle"], ["aria-hidden", "true", 3, "ngClass"], [3, "ngClass", 4, "ngIf"], [1, "daterangepicker-container__day", 3, "click", "keydown", "ngClass"], ["mis-button", "", "size", "md", "type", "primary", "tabindex", "0", 3, "click", "disabled"]], template: function TzDrpContainerComponent_Template(rf, ctx) { if (rf & 1) {
427
514
  const _r1 = i0.ɵɵgetCurrentView();
428
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
429
- i0.ɵɵtemplate(2, TzDrpContainerComponent_div_2_Template, 4, 4, "div", 3);
515
+ i0.ɵɵelementStart(0, "div", 3);
516
+ i0.ɵɵelement(1, "div", 4);
517
+ i0.ɵɵelementStart(2, "div", 5);
518
+ i0.ɵɵtemplate(3, TzDrpContainerComponent_div_3_Template, 4, 5, "div", 6);
430
519
  i0.ɵɵelementEnd();
431
- i0.ɵɵelementStart(3, "div", 4)(4, "div", 5)(5, "div", 6)(6, "div", 7)(7, "div", 8);
432
- i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_div_click_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isPreviousMonthDisabled() && ctx.navigateMonth("PREVIOUS")); });
520
+ i0.ɵɵelementStart(4, "div", 7)(5, "div", 8)(6, "div", 9)(7, "div", 10)(8, "div", 11);
521
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_div_click_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isPreviousMonthDisabled() && ctx.navigateMonth("PREVIOUS")); })("keydown.enter", function TzDrpContainerComponent_Template_div_keydown_enter_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isPreviousMonthDisabled() && ctx.navigateMonth("PREVIOUS")); });
433
522
  i0.ɵɵnamespaceSVG();
434
- i0.ɵɵelementStart(8, "svg", 9);
435
- i0.ɵɵelement(9, "path", 10);
523
+ i0.ɵɵelementStart(9, "svg", 12);
524
+ i0.ɵɵelement(10, "path", 13);
436
525
  i0.ɵɵelementEnd()();
437
526
  i0.ɵɵnamespaceHTML();
438
- i0.ɵɵelementStart(10, "span");
439
- i0.ɵɵtext(11);
527
+ i0.ɵɵelementStart(11, "span");
528
+ i0.ɵɵtext(12);
440
529
  i0.ɵɵelementEnd();
441
- i0.ɵɵelement(12, "div");
530
+ i0.ɵɵelement(13, "div");
442
531
  i0.ɵɵelementEnd();
443
- i0.ɵɵelementStart(13, "div", 11)(14, "div", 12);
444
- i0.ɵɵtemplate(15, TzDrpContainerComponent_div_15_Template, 3, 4, "div", 13);
532
+ i0.ɵɵelementStart(14, "div", 14)(15, "div", 15);
533
+ i0.ɵɵtemplate(16, TzDrpContainerComponent_div_16_Template, 3, 4, "div", 16);
445
534
  i0.ɵɵelementEnd();
446
- i0.ɵɵelementStart(16, "div", 14);
447
- i0.ɵɵtemplate(17, TzDrpContainerComponent_div_17_Template, 3, 19, "div", 15);
535
+ i0.ɵɵelementStart(17, "div", 17);
536
+ i0.ɵɵtemplate(18, TzDrpContainerComponent_div_18_Template, 3, 23, "div", 18);
448
537
  i0.ɵɵelementEnd()()();
449
- i0.ɵɵelementStart(18, "div", 16)(19, "div", 7);
450
- i0.ɵɵelement(20, "div");
451
- i0.ɵɵelementStart(21, "span");
452
- i0.ɵɵtext(22);
538
+ i0.ɵɵelementStart(19, "div", 19)(20, "div", 10);
539
+ i0.ɵɵelement(21, "div");
540
+ i0.ɵɵelementStart(22, "span");
541
+ i0.ɵɵtext(23);
453
542
  i0.ɵɵelementEnd();
454
- i0.ɵɵelementStart(23, "div", 8);
455
- i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_div_click_23_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isNextMonthDisabled() && ctx.navigateMonth("NEXT")); });
543
+ i0.ɵɵelementStart(24, "div", 20);
544
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_div_click_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isNextMonthDisabled() && ctx.navigateMonth("NEXT")); })("keydown.enter", function TzDrpContainerComponent_Template_div_keydown_enter_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(!ctx.isNextMonthDisabled() && ctx.navigateMonth("NEXT")); });
456
545
  i0.ɵɵnamespaceSVG();
457
- i0.ɵɵelementStart(24, "svg", 9);
458
- i0.ɵɵelement(25, "path", 10);
546
+ i0.ɵɵelementStart(25, "svg", 12);
547
+ i0.ɵɵelement(26, "path", 13);
459
548
  i0.ɵɵelementEnd()()();
460
549
  i0.ɵɵnamespaceHTML();
461
- i0.ɵɵelementStart(26, "div", 11)(27, "div", 12);
462
- i0.ɵɵtemplate(28, TzDrpContainerComponent_div_28_Template, 3, 1, "div", 13);
550
+ i0.ɵɵelementStart(27, "div", 14)(28, "div", 15);
551
+ i0.ɵɵtemplate(29, TzDrpContainerComponent_div_29_Template, 3, 1, "div", 16);
463
552
  i0.ɵɵelementEnd();
464
- i0.ɵɵelementStart(29, "div", 14);
465
- i0.ɵɵtemplate(30, TzDrpContainerComponent_div_30_Template, 3, 12, "div", 17);
553
+ i0.ɵɵelementStart(30, "div", 17);
554
+ i0.ɵɵtemplate(31, TzDrpContainerComponent_div_31_Template, 3, 16, "div", 21);
466
555
  i0.ɵɵelementEnd()()()();
467
- i0.ɵɵelementStart(31, "div", 18)(32, "span");
468
- i0.ɵɵtext(33, "Weekly offs: ");
469
- i0.ɵɵtemplate(34, TzDrpContainerComponent_span_34_Template, 3, 2, "span", 19);
556
+ i0.ɵɵelementStart(32, "div", 22)(33, "span");
557
+ i0.ɵɵtext(34, "Weekly offs: ");
558
+ i0.ɵɵtemplate(35, TzDrpContainerComponent_span_35_Template, 3, 2, "span", 23);
470
559
  i0.ɵɵelementEnd();
471
- i0.ɵɵelementStart(35, "span");
472
- i0.ɵɵtext(36, "Holidays ");
473
- i0.ɵɵelement(37, "span", 20);
560
+ i0.ɵɵelementStart(36, "span");
561
+ i0.ɵɵtext(37, "Holidays ");
562
+ i0.ɵɵelement(38, "span", 24);
474
563
  i0.ɵɵelementEnd()();
475
- i0.ɵɵelementStart(38, "div", 21);
476
- i0.ɵɵtemplate(39, TzDrpContainerComponent_span_39_Template, 4, 1, "span", 22)(40, TzDrpContainerComponent_span_40_Template, 4, 1, "span", 22);
477
- i0.ɵɵelementStart(41, "div", 23)(42, "button", 24);
478
- i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.cancelDatePicker()); });
479
- i0.ɵɵtext(43, "Cancel");
564
+ i0.ɵɵelementStart(39, "div", 25);
565
+ i0.ɵɵtemplate(40, TzDrpContainerComponent_span_40_Template, 4, 1, "span", 26)(41, TzDrpContainerComponent_span_41_Template, 4, 1, "span", 26);
566
+ i0.ɵɵelementStart(42, "div", 27)(43, "button", 28, 0);
567
+ i0.ɵɵlistener("click", function TzDrpContainerComponent_Template_button_click_43_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.cancelDatePicker()); });
568
+ i0.ɵɵtext(45, "Cancel");
480
569
  i0.ɵɵelementEnd();
481
- i0.ɵɵtemplate(44, TzDrpContainerComponent_button_44_Template, 2, 1, "button", 25)(45, TzDrpContainerComponent_button_45_Template, 2, 1, "button", 25);
570
+ i0.ɵɵtemplate(46, TzDrpContainerComponent_button_46_Template, 2, 1, "button", 29)(47, TzDrpContainerComponent_button_47_Template, 3, 1, "button", 29);
482
571
  i0.ɵɵelementEnd()()();
483
- i0.ɵɵelementStart(46, "div", 26)(47, "input", 27, 0);
484
- i0.ɵɵlistener("dateChange", function TzDrpContainerComponent_Template_input_dateChange_47_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSingleDateChange($event)); });
572
+ i0.ɵɵelementStart(48, "div", 30)(49, "input", 31, 1);
573
+ i0.ɵɵlistener("dateChange", function TzDrpContainerComponent_Template_input_dateChange_49_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSingleDateChange($event)); });
485
574
  i0.ɵɵelementEnd()()();
486
575
  } if (rf & 2) {
487
- i0.ɵɵproperty("ngClass", ctx.data().isSingleDatePickerEnable ? "single-date-picker-enabled" : "");
488
- i0.ɵɵadvance(2);
576
+ let tmp_18_0;
577
+ i0.ɵɵproperty("ngClass", ctx.data().isSingleDatePickerEnable ? "single-date-picker-enabled" : "")("cdkTrapFocusAutoCapture", true);
578
+ i0.ɵɵadvance(3);
489
579
  i0.ɵɵproperty("ngForOf", ctx.datePickerValue());
490
580
  i0.ɵɵadvance();
491
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(26, _c1, ctx.singleDatePickerSelected() ? "none" : ""));
581
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(32, _c1, ctx.singleDatePickerSelected() ? "none" : ""));
492
582
  i0.ɵɵadvance(4);
493
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(28, _c2, ctx.isPreviousMonthDisabled()));
583
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(34, _c2, ctx.isPreviousMonthDisabled()));
584
+ i0.ɵɵattribute("tabindex", ctx.isPreviousMonthDisabled() ? -1 : 0)("aria-disabled", ctx.isPreviousMonthDisabled());
494
585
  i0.ɵɵadvance(4);
495
586
  i0.ɵɵtextInterpolate2(" ", ctx.currentMonth(), " ", ctx.currentYearNumber(), " ");
496
587
  i0.ɵɵadvance(4);
@@ -500,38 +591,41 @@ export class TzDrpContainerComponent {
500
591
  i0.ɵɵadvance(5);
501
592
  i0.ɵɵtextInterpolate2(" ", ctx.nextMonth(), " ", ctx.nextYearNumber(), " ");
502
593
  i0.ɵɵadvance();
503
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(30, _c2, ctx.isNextMonthDisabled()));
594
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(36, _c2, ctx.isNextMonthDisabled()));
595
+ i0.ɵɵattribute("tabindex", ctx.isNextMonthDisabled() ? -1 : 0)("aria-disabled", ctx.isNextMonthDisabled());
504
596
  i0.ɵɵadvance(5);
505
597
  i0.ɵɵproperty("ngForOf", ctx.weekDays());
506
598
  i0.ɵɵadvance(2);
507
599
  i0.ɵɵproperty("ngForOf", ctx.nextMonthDates());
508
- i0.ɵɵadvance(4);
600
+ i0.ɵɵadvance();
601
+ i0.ɵɵattribute("aria-label", "Weekly offs: " + (((tmp_18_0 = ctx.data().weekOffs) == null ? null : tmp_18_0.length) ? ctx.data().weekOffs.join(", ") : "None") + ". Holidays marked with a dot on the calendar.");
602
+ i0.ɵɵadvance(3);
509
603
  i0.ɵɵproperty("ngForOf", ctx.data().weekOffs);
510
604
  i0.ɵɵadvance(3);
511
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(32, _c3));
605
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(38, _c3));
512
606
  i0.ɵɵadvance(2);
513
607
  i0.ɵɵproperty("ngIf", ctx.isSpecificPickerSelected());
514
608
  i0.ɵɵadvance();
515
609
  i0.ɵɵproperty("ngIf", !ctx.isSpecificPickerSelected());
516
- i0.ɵɵadvance(4);
610
+ i0.ɵɵadvance(5);
517
611
  i0.ɵɵproperty("ngIf", ctx.isSpecificPickerSelected());
518
612
  i0.ɵɵadvance();
519
613
  i0.ɵɵproperty("ngIf", !ctx.isSpecificPickerSelected());
520
614
  i0.ɵɵadvance();
521
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(33, _c1, !ctx.singleDatePickerSelected() ? "none" : "block"));
615
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(39, _c1, !ctx.singleDatePickerSelected() ? "none" : "block"));
522
616
  i0.ɵɵadvance();
523
617
  i0.ɵɵproperty("dpConfig", ctx.data().dpConfig)("selectedDate", ctx.singleDateSelectedValue())("value", ctx.singleDateSelectedValue())("disableBoxShadow", true)("disableOverLay", true)("openElement", ctx.openElement());
524
- } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgStyle, i3.ButtonDirective, i4.RadioButtonComponent, i5.TzDatepickerDirective], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container[_ngcontent-%COMP%]{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%]{flex-direction:row}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;align-items:center}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{margin-right:8px;width:20px;height:20px}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:nth-child(2){padding-left:0}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%]{display:flex;gap:24px;padding:16px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .datepicker__left[_ngcontent-%COMP%], .daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .datepicker__right[_ngcontent-%COMP%]{display:flex;flex-direction:column}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%]{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon.disabled-month[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]:nth-child(1){transform:rotate(180deg)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%]{height:100%;width:252px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%]{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%]{width:36px;height:18px;text-align:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%]{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%]:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%]{cursor:default}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%]:hover{background-color:transparent}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.selected-day[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.disabled-day[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-start-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-start-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day.selected-start-day[_ngcontent-%COMP%]{border-radius:50%!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .in-range-day[_ngcontent-%COMP%]:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%]{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{margin-right:16px}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:700}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] .footer_action_btn[_ngcontent-%COMP%]{display:flex}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot[_ngcontent-%COMP%]{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)!important}.display-none[_ngcontent-%COMP%]{display:none!important}.single-datepicker-container[_ngcontent-%COMP%]{width:291px}"] }); }
618
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgStyle, i3.ButtonDirective, i4.RadioButtonComponent, i5.TzDatepickerDirective, i6.CdkTrapFocus], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container[_ngcontent-%COMP%]{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%]{flex-direction:row}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;align-items:center}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{margin-right:8px;width:20px;height:20px}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled[_ngcontent-%COMP%] .radio-container[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:nth-child(2){padding-left:0}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%]{display:flex;gap:24px;padding:16px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .datepicker__left[_ngcontent-%COMP%], .daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .datepicker__right[_ngcontent-%COMP%]{display:flex;flex-direction:column}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%]{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon.disabled-month[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__header__prabu[_ngcontent-%COMP%] .daterangepicker-container__arrow__icon[_ngcontent-%COMP%]:nth-child(1){transform:rotate(180deg)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%]{height:100%;width:252px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%]{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%]{width:36px;height:18px;text-align:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__weekdays[_ngcontent-%COMP%] .daterangepicker-container__weekday[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%]{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%]:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%]{cursor:default}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%]:hover{background-color:transparent}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.disabled-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.selected-day[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .daterangepicker-container__day[_ngcontent-%COMP%] span.disabled-day[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-start-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-start-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-end-day.selected-start-day[_ngcontent-%COMP%]{border-radius:50%!important}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .in-range-day[_ngcontent-%COMP%]:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker-container__view[_ngcontent-%COMP%] .daterangepicker-container__body[_ngcontent-%COMP%] .daterangepicker-container__days[_ngcontent-%COMP%] .selected-day[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%]{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{margin-right:16px}.daterangepicker-container[_ngcontent-%COMP%] .weekOffs_holidays_container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:var(--text-primary, #181F33)}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:700}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] .footer_action_btn[_ngcontent-%COMP%]{display:flex}.daterangepicker-container[_ngcontent-%COMP%] .daterangepicker__footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot[_ngcontent-%COMP%]{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)!important}.display-none[_ngcontent-%COMP%]{display:none!important}.single-datepicker-container[_ngcontent-%COMP%]{width:291px}"] }); }
525
619
  }
526
620
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TzDrpContainerComponent, [{
527
621
  type: Component,
528
- args: [{ selector: "mis-tz-sdp", template: "<div class=\"daterangepicker-container\" [ngClass]=\"data().isSingleDatePickerEnable?'single-date-picker-enabled':''\">\n <div class=\"radio-container\">\n <div class=\"label\" *ngFor=\"let picker of datePickerValue()\">\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n </div>\n </div>\n <div class=\"specific-datepicker-container\" [ngStyle]=\"{'display': singleDatePickerSelected() ? 'none' : ''}\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{ 'margin-right': !isSpecificPickerSelected() ? '0px' : '1px','width': !isSpecificPickerSelected() ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '2.8px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\" >\n <span >{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n >\n <div [ngClass]=\"{\n 'circular-dot': day.isHoliday\n }\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{\n 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()),\n 'holiday-text': day.isHoliday || day.isWeekOff\n }\" >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"weekOffs_holidays_container\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\">\n <span>{{localSelectedDates().length}}</span> day(s) selected\n </span>\n <span *ngIf=\"!isSpecificPickerSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button mis-button size=\"md\" type=\"none\" (click)=\"cancelDatePicker()\" >Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\" >Apply</button>\n <button *ngIf=\"!isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\" >Apply</button>\n </div>\n </div>\n </div>\n <div class=\"single-datepicker-container\" [ngStyle]=\"{'display': !singleDatePickerSelected() ? 'none' : 'block'}\">\n <input\n misTzDp\n misInput\n type=\"text\"\n readonly\n class=\"date-input\"\n [dpConfig]=\"data().dpConfig\"\n placeholder=\"Select\"\n (dateChange)=\"onSingleDateChange($event)\"\n [selectedDate]=\"singleDateSelectedValue()\"\n positionX=\"center\"\n positionY=\"top\"\n offsetX = 71\n offsetY = -1\n [value]=\"singleDateSelectedValue()\"\n [disableBoxShadow]=\"true\"\n [disableOverLay]=\"true\"\n [openElement]=\"openElement()\"\n #singleDatePickerElement\n />\n </div>\n\n</div>\n\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled{flex-direction:row}.daterangepicker-container .radio-container{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container .radio-container .label{display:flex;align-items:center}.daterangepicker-container .radio-container .label .input{margin-right:8px;width:20px;height:20px}.daterangepicker-container .radio-container .label:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container .radio-container .label:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled .radio-container{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled .radio-container .label:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled .radio-container .label:nth-child(2){padding-left:0}.daterangepicker-container .daterangepicker-container__view{display:flex;gap:24px;padding:16px}.daterangepicker-container .daterangepicker-container__view .datepicker__left,.daterangepicker-container .daterangepicker-container__view .datepicker__right{display:flex;flex-direction:column}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body{height:100%;width:252px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday{width:36px;height:18px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days{display:flex;flex-wrap:wrap}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day{cursor:default}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day:hover{background-color:transparent}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day>span{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.selected-day{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.disabled-day{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day.selected-start-day{border-radius:50%!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .in-range-day:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .weekOffs_holidays_container{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container .weekOffs_holidays_container>span{margin-right:16px}.daterangepicker-container .weekOffs_holidays_container>span>span{color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker__footer{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container .daterangepicker__footer span{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container .daterangepicker__footer span span{font-weight:700}.daterangepicker-container .daterangepicker__footer .footer_action_btn{display:flex}.daterangepicker-container .daterangepicker__footer button{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text{color:var(--text-secondary, #6A737D)!important}.display-none{display:none!important}.single-datepicker-container{width:291px}\n"] }]
622
+ args: [{ selector: "mis-tz-sdp", template: "<div class=\"daterangepicker-container\" [ngClass]=\"data().isSingleDatePickerEnable?'single-date-picker-enabled':''\" aria-label=\"Choose date or date range\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"radio-container\">\n<div\n class=\"label\"\n tabindex=\"0\"\n (keydown.enter)=\"changePicker(picker)\"\n [attr.aria-label]=\"(formControl?.value === picker) ? (picker + ', selected') : (picker + ', click to select')\"\n *ngFor=\"let picker of datePickerValue(); let i = index\"\n>\n <mis-radio class=\"input\" [name]=\"'dateSelection'\" [value]=\"picker\" (valueChange)=\"changePicker($event)\" ngDefaultControl [formControl]=\"formControl\"></mis-radio>\n <span>{{picker}}</span>\n</div>\n</div>\n <div class=\"specific-datepicker-container\" [ngStyle]=\"{'display': singleDatePickerSelected() ? 'none' : ''}\">\n <div class=\"daterangepicker-container__view\">\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isPreviousMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isPreviousMonthDisabled()\"\n aria-label=\"Previous month\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n (keydown.enter)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{ 'disabled-month': isPreviousMonthDisabled() }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span [ngClass]=\"{\n 'current-day': weekDay.isCurrentDay && (currentMonthNumber() === todayMonthNumber())\n }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'LEFT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'LEFT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + currentMonth() + ' ' + currentYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n [ngStyle]=\"{ 'margin-right': !isSpecificPickerSelected() ? '0px' : '1px','width': !isSpecificPickerSelected() ? '36px' : '35px','justify-content': day.isHoliday ? 'flex-start' : 'center','padding-top': day.isHoliday ? '2.8px' : '0px','height': day.isHoliday ? '33px' : '36px'}\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT',day)\"\n (keydown)=\"handleDayKeydown($event, 'LEFT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay, 'holiday-text': day.isHoliday || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon\"\n role=\"button\"\n [attr.tabindex]=\"isNextMonthDisabled() ? -1 : 0\"\n [attr.aria-disabled]=\"isNextMonthDisabled()\"\n aria-label=\"Next month\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keydown.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [attr.data-sdp-cell]=\"getDayCellId(day, 'RIGHT')\"\n [attr.tabindex]=\"getDayTabIndex(day, 'RIGHT')\"\n [attr.aria-label]=\"day.date > 0 ? (day.date + ' ' + nextMonth() + ' ' + nextYearNumber() + (day.isDisabledDay ? ', disabled' : '')) : null\"\n [attr.aria-disabled]=\"day.isDisabledDay\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay && isSpecificPickerSelected(),\n 'disabled-day': day.isDisabledDay,\n 'selected-start-day': day.isSelectedStartDay && !isSpecificPickerSelected(),\n 'selected-end-day': day.isSelectedEndDay && !isSpecificPickerSelected(),\n 'in-range-day': day.inRangeDay && !isSpecificPickerSelected(),\n 'is-valid-date': day.date > 0 && !isSpecificPickerSelected() && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT',day)\"\n (keydown)=\"handleDayKeydown($event, 'RIGHT', day)\"\n >\n <div [ngClass]=\"{ 'circular-dot': day.isHoliday }\" aria-hidden=\"true\"></div>\n <span *ngIf=\"day.date > 0\" [ngClass]=\"{ 'current-day': day.isCurrentDay && (currentMonthNumber() === todayMonthNumber()), 'holiday-text': day.isHoliday || day.isWeekOff }\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"weekOffs_holidays_container\" tabindex=\"0\" [attr.aria-label]=\"'Weekly offs: ' + (data().weekOffs?.length ? data().weekOffs.join(', ') : 'None') + '. Holidays marked with a dot on the calendar.'\">\n <span>Weekly offs: <span *ngFor=\"let weekOff of data().weekOffs; let last = last\">{{weekOff}} <span *ngIf=\"!last\">,</span></span></span>\n <span >Holidays <span class=\"circular-dot\" [ngStyle]=\"{ display: 'inline-block', 'margin-left': '10px' }\"></span></span>\n </div>\n <div class=\"daterangepicker__footer\">\n <span *ngIf=\"isSpecificPickerSelected()\">\n <span>{{localSelectedDates().length}}</span> day(s) selected\n </span>\n <span *ngIf=\"!isSpecificPickerSelected()\"><span>{{dateRangeLength() > 0 ? dateRangeLength() : 0 }} </span>day(s) selected</span>\n <div class=\"footer_action_btn\">\n <button #cancelBtn mis-button size=\"md\" type=\"none\" tabindex=\"0\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button *ngIf=\"isSpecificPickerSelected()\" mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\">Apply</button>\n <button *ngIf=\"!isSpecificPickerSelected()\" #applyRangeBtn mis-button size=\"md\" type=\"primary\" tabindex=\"0\" (click)=\"applyDatesRange()\" [disabled]=\"!isDatesValid() || (dateRangeLength() === 0)\">Apply</button>\n </div>\n </div>\n </div>\n <div class=\"single-datepicker-container\" [ngStyle]=\"{'display': !singleDatePickerSelected() ? 'none' : 'block'}\">\n <input\n misTzDp\n misInput\n type=\"text\"\n readonly\n class=\"date-input\"\n [dpConfig]=\"data().dpConfig\"\n placeholder=\"Select\"\n (dateChange)=\"onSingleDateChange($event)\"\n [selectedDate]=\"singleDateSelectedValue()\"\n positionX=\"center\"\n positionY=\"top\"\n offsetX = 71\n offsetY = -1\n [value]=\"singleDateSelectedValue()\"\n [disableBoxShadow]=\"true\"\n [disableOverLay]=\"true\"\n [openElement]=\"openElement()\"\n #singleDatePickerElement\n />\n </div>\n\n</div>\n\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.daterangepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;overflow:hidden;-webkit-user-select:none;user-select:none}.daterangepicker-container.single-date-picker-enabled{flex-direction:row}.daterangepicker-container .radio-container{display:flex;align-items:center;height:48px;padding:8px 0;justify-content:center;border-radius:12px 12px 0 0;border-bottom:1px solid var(--border-primary, #E0E0E0);background:var(--bg-primary, #FFFFFF)}.daterangepicker-container .radio-container .label{display:flex;align-items:center}.daterangepicker-container .radio-container .label .input{margin-right:8px;width:20px;height:20px}.daterangepicker-container .radio-container .label:first-child{padding-right:16px;border-right:1px solid var(--border-primary, #E0E0E0)}.daterangepicker-container .radio-container .label:nth-child(2){padding-left:16px}.daterangepicker-container.single-date-picker-enabled .radio-container{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:16px;height:288px;padding:20px;border-right:1px solid var(--border-primary, #E0E0E0)!important;border-radius:0}.daterangepicker-container.single-date-picker-enabled .radio-container .label:first-child{padding-right:0;border-right:0px}.daterangepicker-container.single-date-picker-enabled .radio-container .label:nth-child(2){padding-left:0}.daterangepicker-container .daterangepicker-container__view{display:flex;gap:24px;padding:16px}.daterangepicker-container .daterangepicker-container__view .datepicker__left,.daterangepicker-container .daterangepicker-container__view .datepicker__right{display:flex;flex-direction:column}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%;padding-bottom:16px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__header__prabu .daterangepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body{height:100%;width:252px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday{width:36px;height:18px;text-align:center}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__weekdays .daterangepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days{display:flex;flex-wrap:wrap}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day{flex-direction:column;width:35px;height:36px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day:not(.in-range-day):not(.selected-start-day):not(.selected-end-day){border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day{cursor:default}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day:hover{background-color:transparent}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.disabled-day>span{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-start-day):not(.selected-end-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px;color:var(--brand-primary, #0937B2)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.selected-day{color:var(--bg-primary, #FFFFFF)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .daterangepicker-container__day span.disabled-day{color:var(--text-secondary, #6A737D)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day{background-color:var(--brand-primary, #0937B2);border-radius:20px 4px 4px 20px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-start-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day{background-color:var(--brand-primary, #0937B2);border-radius:0 20px 20px 0}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-end-day.selected-start-day{border-radius:50%!important}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .in-range-day:not(.disabled-day){background-color:var(--brand-primary-lightest, #CBDDFB)}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day{background-color:var(--brand-primary, #0937B2);border-radius:4px}.daterangepicker-container .daterangepicker-container__view .daterangepicker-container__body .daterangepicker-container__days .selected-day>span{color:var(--bg-primary, #FFFFFF)!important}.daterangepicker-container .weekOffs_holidays_container{font-size:12px;color:var(--text-secondary, #6A737D);padding:8px 24px 12px}.daterangepicker-container .weekOffs_holidays_container>span{margin-right:16px}.daterangepicker-container .weekOffs_holidays_container>span>span{color:var(--text-primary, #181F33)}.daterangepicker-container .daterangepicker__footer{display:flex;justify-content:space-between;border-top:1px solid var(--border-primary, #E0E0E0);padding:16px 24px;word-spacing:4px}.daterangepicker-container .daterangepicker__footer span{font-family:Lato;font-size:15px;font-weight:400;align-self:center}.daterangepicker-container .daterangepicker__footer span span{font-weight:700}.daterangepicker-container .daterangepicker__footer .footer_action_btn{display:flex}.daterangepicker-container .daterangepicker__footer button{width:104px;height:44px;border-radius:8px;margin-left:24px;font-weight:700}.circular-dot{width:5px;height:5px;background-color:var(--brand-warning, #FF9D00);border-radius:50%}.holiday-text{color:var(--text-secondary, #6A737D)!important}.display-none{display:none!important}.single-datepicker-container{width:291px}\n"] }]
529
623
  }], () => [{ type: undefined, decorators: [{
530
624
  type: Inject,
531
625
  args: [CONTAINER_DATA]
532
- }] }, { type: i1.ToastService }], { singleDatePickerElement: [{
626
+ }] }, { type: i1.ToastService }, { type: i0.ElementRef }], { singleDatePickerElement: [{
533
627
  type: ViewChild,
534
628
  args: ['singleDatePickerElement', { static: true, read: TzDatepickerDirective }]
535
629
  }] }); })();
536
630
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDrpContainerComponent, { className: "TzDrpContainerComponent" }); })();
537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1Z6QyxBQURGLCtCQUE0RCxvQkFDMkY7SUFBbEYsd01BQWUsMkJBQW9CLEtBQUM7SUFBOEMsaUJB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QUNGLGtDQUNNOzs7aUZENUh4Qix1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxZQUFZOztzQkF5RlQsTUFBTTt1QkFBQyxjQUFjO2dEQUZtRCx1QkFBdUI7a0JBQTNHLFNBQVM7bUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTs7a0ZBbkZ4RSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvc2RwLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0TW9udGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3RvYXN0XCI7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFR6RGF0ZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjJcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcblxuZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10ei1zZHBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBkYXRhID0gc2lnbmFsPElEYXRlUGlja2VyRGF0YT4odGhpcy5pbmplY3RlZERhdGEpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRhdGEoKS5kcENvbmZpZztcbiAgICBpZiAoY29uZmlnPy50aW1lem9uZSkge1xuICAgICAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIHRpbWV6b25lLWF3YXJlIGRheWpzIGluc3RhbmNlXG4gICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKS50eihjb25maWcudGltZXpvbmUpO1xuICAgIH1cbiAgICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgc3RhbmRhcmQgZGF5anMgaW5zdGFuY2VcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByYXdXZWVrRGF5czogc3RyaW5nW10gPSBbXCJTVU5cIiwgXCJNT05cIiwgXCJUVUVcIiwgXCJXRURcIiwgXCJUSFVcIiwgXCJGUklcIiwgXCJTQVRcIl07XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlcyA9IHNpZ25hbDxJU1NlbGVjdGVkRGF0ZXNDb25maWdbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UgPSBzaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPih7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGF0ZXNWYWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gVmFsaWQgaWYgYXQgbGVhc3Qgb25lIHNwZWNpZmljIGRhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIC8vIFZhbGlkIGlmIGJvdGggc3RhcnQgYW5kIGVuZCBkYXRlIG9mIHRoZSByYW5nZSBhcmUgc2V0XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgcmV0dXJuICEhKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpO1xuICB9KTtcblxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlbkVsZW1lbnQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUgPSBzaWduYWwoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uU3RhcnRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJ1NwZWNpZmljIERhdGUocyknKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVQaWNrZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmdbXT4oWydTcGVjaWZpYyBEYXRlKHMpJywnRGF0ZSBSYW5nZSddKTtcbiAgXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkubW9udGgoKSA6IGRheWpzKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS55ZWFyKCkgOiBkYXlqcygpLnllYXIoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSA6IGRheWpzKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkgOiBkYXlqcygpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIFxuXG4gIHB1YmxpYyByZWFkb25seSB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yYXdXZWVrRGF5cy5tYXAoKGRheSwgaW5kZXgpID0+ICh7XG4gICAgICBsYWJlbDogYCR7ZGF5WzBdfSR7ZGF5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGlzQ3VycmVudERheTogdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5uZXh0TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9kYXlNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgaWYgKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2Uuc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2UuZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGlmIChzdGFydC5pc1ZhbGlkKCkgJiYgZW5kLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsICdkYXknKSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJldmlvdXNNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWluRGF0ZS5pc1ZhbGlkKCkgJiYgbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRNb250aERhdGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIoKSwgdGhpcy5uZXh0WWVhck51bWJlcigpKTtcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZCgnc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0pIHNpbmdsZURhdGVQaWNrZXJFbGVtZW50ITogVHpEYXRlcGlja2VyRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSkge1xuICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnNldCh0aGlzLmRhdGEoKS5kYXRlcyk7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS5zZXQodGhpcy5pbmplY3RlZERhdGEuZGF0ZXNSYW5nZSB8fCB7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG4gICAgdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU1BpY2tlclNlbGVjdGVkKTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldCghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy5zaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkU3RhcnREYXRlOiBEYXlqcztcbiAgICAgIGlmICghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpPy5bMF0/LnNlbGVjdGVkRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxlY3RlZFN0YXJ0RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUueWVhcigpKTtcbiAgICAgICAgdGhpcy5uZXh0WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmdldChcIm1vbnRoXCIpKTtcbiAgICAgICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgICAgfVxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGUpIHtcbiAgICAgICAgY29uc3QgcGlja2VyVmFsdWUgPSAnU2luZ2xlIERhdGUnO1xuICAgICAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlclZhbHVlKCkuaW5jbHVkZXMocGlja2VyVmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5kYXRlUGlja2VyVmFsdWUudXBkYXRlKGN1cnJlbnRWYWx1ZSA9PiBbcGlja2VyVmFsdWUsIC4uLmN1cnJlbnRWYWx1ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUocGlja2VyVmFsdWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVTZWxlY3RlZFZhbHVlLnNldCh0aGlzLmRhdGEoKS5kYXRlc1swXT8uc2VsZWN0ZWREYXRlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhKCk/LmRwQ29uZmlnPy5mb3JtYXQpIHtcbiAgICAgIHRoaXMuZGF0YSgpLmRwQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRhdGEoKS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0ZXMobW9udGg6IG51bWJlciwgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcik6IElDdXJyZW50TW9udGhEYXRlc1tdIHtcbiAgICBjb25zdCBkYXRlczogSUN1cnJlbnRNb250aERhdGVzW10gPSBbXTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgXG4gICAgZm9yIChsZXQgY3VycmVudERhdGUgPSAxOyBjdXJyZW50RGF0ZSA8PSBkYXlzSW5Nb250aDsgY3VycmVudERhdGUrKykge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpO1xuICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhKCkuZGF0ZXNEaXNhYmxlZC5zb21lKGQgPT4gZCA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBtaW5EYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1pbkRhdGUuaXNBZnRlcihkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWF4RGF0ZS5pc0JlZm9yZShkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNDdXJyZW50RGF5ID0gZGF0ZS5pc1NhbWUodGhpcy5kYXlqc0luc3RhbmNlKCkoKSwgJ2RheScpO1xuICAgICAgbGV0IGlzU2VsZWN0ZWREYXkgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLnNvbWUoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkU3RhcnREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZEVuZERheSA9ICEhdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZTtcbiAgICAgIGNvbnN0IGluUmFuZ2VEYXkgPSAhISh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS5pc0JldHdlZW4odGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgJ2RheScsICcoKScpO1xuXG4gICAgICBjb25zdCBpc0hvbGlkYXkgPSB0aGlzLmRhdGEoKS5ob2xpZGF5cy5pbmNsdWRlcyhkYXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IGlzV2Vla09mZiA9IHRoaXMuZGF0YSgpLndlZWtPZmZzLmluY2x1ZGVzKGRhdGUuZm9ybWF0KCdkZGQnKSk7XG5cbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIGlzSG9saWRheSxcbiAgICAgICAgaXNXZWVrT2ZmLFxuICAgICAgICB0b2FzdE1lc3NhZ2U6IHRoaXMuZGF0YSgpLm1lc3NhZ2VzLmZpbmQocSA9PiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSBxLmRhdGUpPy5tZXNzYWdlIHx8IFwiXCIsXG4gICAgICAgIGlzRGlzYWJsZWREYXlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBkYXRlc1swXT8ud2Vla0RheSB8fCAwOyBpID4gMDsgaS0tKSB7XG4gICAgICBkYXRlcy51bnNoaWZ0KHsgZGF0ZTogMCwgd2Vla0RheTogaSAtIDEgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGxldCB0aGlzTW9udGg6IERheWpzID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGgubW9udGgoKSk7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQodGhpc01vbnRoLnllYXIoKSk7XG4gICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIH1cblxuICBzZWxlY3REYXkoZnJvbTogXCJMRUZUXCIgfCBcIlJJR0hUXCIsIGRheTogSUN1cnJlbnRNb250aERhdGVzKTogdm9pZCB7XG4gICAgaWYgKGRheS5kYXRlIDw9IDAgfHwgZGF5LmlzRGlzYWJsZWREYXkpIHtcbiAgICAgIGlmIChkYXkudG9hc3RNZXNzYWdlKSB0aGlzLnRvYXN0LmRpc3BsYXlNc2coZGF5LnRvYXN0TWVzc2FnZSwgNDAwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpXG4gICAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgICAgLmRhdGUoZGF5LmRhdGUpLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudC5maW5kSW5kZXgoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIFxuICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudC5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gZXhpc3RpbmdJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5jdXJyZW50LCB7IHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvbiB9XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXlqc0RheSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKClcbiAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAuZGF0ZShkYXkuZGF0ZSk7XG4gICAgICBcbiAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydGVkKCkpIHtcbiAgICAgICAgICBpZiAoZGF5anNEYXkuaXNCZWZvcmUodGhpcy5kYXlqc0luc3RhbmNlKCkoY3VycmVudC5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIFwiZGF5XCIpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50LCBlbmREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhcHBseURhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKSk7XG4gIH1cblxuICBhcHBseURhdGVzUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKSk7XG4gIH1cblxuICBvblNpbmdsZURhdGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0YTogSVNTZWxlY3RlZERhdGVzQ29uZmlnID0geyBzZWxlY3RlZERhdGU6IGV2ZW50IH07XG4gICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UoW3NlbGVjdGVkRGF0YV0pO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5vcGVuRWxlbWVudC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiRGF0ZSBSYW5nZVwiKTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU3BlY2lmaWMgRGF0ZShzKVwiKTtcbiAgICBcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGV2ZW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCI+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpXCI+XG4gICAgICA8bWlzLXJhZGlvIGNsYXNzPVwiaW5wdXRcIiBbbmFtZV09XCInZGF0ZVNlbGVjdGlvbidcIiBbdmFsdWVdPVwicGlja2VyXCIgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVBpY2tlcigkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj48L21pcy1yYWRpbz5cbiAgICAgIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSA/ICdub25lJyA6ICcnfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIiA+XG4gICAgICAgICAgICA8c3BhbiA+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIj5cbiAgICA8c3Bhbj5XZWVrbHkgb2ZmczogPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtPZmYgb2YgZGF0YSgpLndlZWtPZmZzOyBsZXQgbGFzdCA9IGxhc3RcIj57e3dlZWtPZmZ9fSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuID5Ib2xpZGF5cyA8c3BhbiBjbGFzcz1cImNpcmN1bGFyLWRvdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj5cbiAgICAgIDxzcGFuPnt7bG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RofX08L3NwYW4+IGRheShzKSBzZWxlY3RlZFxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiPjxzcGFuPnt7ZGF0ZVJhbmdlTGVuZ3RoKCkgPiAwID8gZGF0ZVJhbmdlTGVuZ3RoKCkgOiAwIH19IDwvc3Bhbj5kYXkocykgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9hY3Rpb25fYnRuXCI+XG4gICAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCIgPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCIgPkFwcGx5PC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiID5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=
631
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNWL0MsK0JBTUM7SUFIQyw0TkFBaUIsOEJBQW9CLEtBQUM7SUFJdEMscUNBQXFKO0lBQWxGLHdN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aUdBQTJFLGlDQUFxRjtZQVFsTCxlQUFzQjtZQUF0QiwrQ0FBc0I7WUFNRSxjQUFpRTtZQUFqRSxtR0FBaUU7WUFZcEcsZUFBMkQ7WUFBM0Qsb0ZBQTJEOztZQVN0RCxlQUErQztZQUEvQyxpRkFBK0M7WUFLZ0IsZUFBYTtZQUFiLHdDQUFhO1lBc0IvRCxlQUFzQjtZQUF0QixpREFBc0I7WUFlbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBUzlDLGNBQXVEO1lBQXZELGdGQUF1RDs7WUFZYSxlQUFhO1lBQWIsd0NBQWE7WUFtQi9ELGVBQW1CO1lBQW5CLDhDQUFtQjtZQWFTLGNBQXVKOztZQUM5SixlQUFvQjtZQUFwQiw2Q0FBb0I7WUFDdEIsZUFBOEQ7WUFBOUQscURBQThEO1lBR2xHLGVBQWdDO1lBQWhDLHFEQUFnQztZQUdoQyxjQUFpQztZQUFqQyxzREFBaUM7WUFHN0IsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQWlDO1lBQWpDLHNEQUFpQztZQUlMLGNBQXVFO1lBQXZFLHlHQUF1RTtZQU8xRyxjQUE0QjtZQVc1QixBQURBLEFBREEsQUFEQSxBQUxBLEFBSEEsOENBQTRCLCtDQUdjLHdDQUtQLDBCQUNWLHdCQUNGLGtDQUNNOzs7aUZEekl4Qix1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxZQUFZOztzQkF5RlQsTUFBTTt1QkFBQyxjQUFjO3lFQUZtRCx1QkFBdUI7a0JBQTNHLFNBQVM7bUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTs7a0ZBbkZ4RSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXJhbmdlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvc2RwLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgZ2V0TW9udGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3RvYXN0XCI7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFR6RGF0ZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjJcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcblxuZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpO1xuZGF5anMuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10ei1zZHBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFR6RHJwQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSBkYXRhID0gc2lnbmFsPElEYXRlUGlja2VyRGF0YT4odGhpcy5pbmplY3RlZERhdGEpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRhdGEoKS5kcENvbmZpZztcbiAgICBpZiAoY29uZmlnPy50aW1lem9uZSkge1xuICAgICAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIHRpbWV6b25lLWF3YXJlIGRheWpzIGluc3RhbmNlXG4gICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKS50eihjb25maWcudGltZXpvbmUpO1xuICAgIH1cbiAgICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgc3RhbmRhcmQgZGF5anMgaW5zdGFuY2VcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByYXdXZWVrRGF5czogc3RyaW5nW10gPSBbXCJTVU5cIiwgXCJNT05cIiwgXCJUVUVcIiwgXCJXRURcIiwgXCJUSFVcIiwgXCJGUklcIiwgXCJTQVRcIl07XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlcyA9IHNpZ25hbDxJU1NlbGVjdGVkRGF0ZXNDb25maWdbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UgPSBzaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPih7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGF0ZXNWYWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gVmFsaWQgaWYgYXQgbGVhc3Qgb25lIHNwZWNpZmljIGRhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIC8vIFZhbGlkIGlmIGJvdGggc3RhcnQgYW5kIGVuZCBkYXRlIG9mIHRoZSByYW5nZSBhcmUgc2V0XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgcmV0dXJuICEhKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpO1xuICB9KTtcblxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlbkVsZW1lbnQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUgPSBzaWduYWwoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uU3RhcnRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJ1NwZWNpZmljIERhdGUocyknKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVQaWNrZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmdbXT4oWydTcGVjaWZpYyBEYXRlKHMpJywnRGF0ZSBSYW5nZSddKTtcbiAgXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkubW9udGgoKSA6IGRheWpzKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS55ZWFyKCkgOiBkYXlqcygpLnllYXIoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGhOdW1iZXIgPSBzaWduYWwodGhpcy5pbmplY3RlZERhdGEuZHBDb25maWc/LnRpbWV6b25lID8gZGF5anMoKS50eih0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZy50aW1lem9uZSkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSA6IGRheWpzKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmluamVjdGVkRGF0YS5kcENvbmZpZz8udGltZXpvbmUgPyBkYXlqcygpLnR6KHRoaXMuaW5qZWN0ZWREYXRhLmRwQ29uZmlnLnRpbWV6b25lKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkgOiBkYXlqcygpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIFxuXG4gIHB1YmxpYyByZWFkb25seSB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yYXdXZWVrRGF5cy5tYXAoKGRheSwgaW5kZXgpID0+ICh7XG4gICAgICBsYWJlbDogYCR7ZGF5WzBdfSR7ZGF5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIGlzQ3VycmVudERheTogdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gZ2V0TW9udGgodGhpcy5uZXh0TW9udGhOdW1iZXIoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9kYXlNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk7XG4gICAgaWYgKHJhbmdlPy5zdGFydERhdGUgJiYgcmFuZ2U/LmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2Uuc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgY29uc3QgZW5kID0gdGhpcy5kYXlqc0luc3RhbmNlKCkocmFuZ2UuZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIGlmIChzdGFydC5pc1ZhbGlkKCkgJiYgZW5kLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsICdkYXknKSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJldmlvdXNNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWluRGF0ZS5pc1ZhbGlkKCkgJiYgbWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBpc05leHRNb250aERpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICByZXR1cm4gbWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbWF4RGF0ZS5pc1NhbWVPckJlZm9yZShjdXJyZW50SW5zdGFuY2UsIFwibW9udGhcIik7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IG5leHRNb250aERhdGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5uZXh0TW9udGhOdW1iZXIoKSwgdGhpcy5uZXh0WWVhck51bWJlcigpKTtcbiAgfSk7XG5cbiAgQFZpZXdDaGlsZCgnc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0pIHNpbmdsZURhdGVQaWNrZXJFbGVtZW50ITogVHpEYXRlcGlja2VyRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIHByaXZhdGUgaW5qZWN0ZWREYXRhOiBJRGF0ZVBpY2tlckRhdGEsIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzLnNldCh0aGlzLmRhdGEoKS5kYXRlcyk7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS5zZXQodGhpcy5pbmplY3RlZERhdGEuZGF0ZXNSYW5nZSB8fCB7c3RhcnREYXRlOiBudWxsLCBlbmREYXRlOiBudWxsfSk7XG4gICAgdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU1BpY2tlclNlbGVjdGVkKTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldCghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy5zaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQuc2V0KHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkU3RhcnREYXRlOiBEYXlqcztcbiAgICAgIGlmICghdGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpPy5bMF0/LnNlbGVjdGVkRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxlY3RlZFN0YXJ0RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUueWVhcigpKTtcbiAgICAgICAgdGhpcy5uZXh0WWVhck51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikueWVhcigpKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmdldChcIm1vbnRoXCIpKTtcbiAgICAgICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHNlbGVjdGVkU3RhcnREYXRlLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgICAgfVxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGEoKS5pc1NpbmdsZURhdGVQaWNrZXJFbmFibGUpIHtcbiAgICAgICAgY29uc3QgcGlja2VyVmFsdWUgPSAnU2luZ2xlIERhdGUnO1xuICAgICAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlclZhbHVlKCkuaW5jbHVkZXMocGlja2VyVmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5kYXRlUGlja2VyVmFsdWUudXBkYXRlKGN1cnJlbnRWYWx1ZSA9PiBbcGlja2VyVmFsdWUsIC4uLmN1cnJlbnRWYWx1ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUocGlja2VyVmFsdWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnNpbmdsZURhdGVTZWxlY3RlZFZhbHVlLnNldCh0aGlzLmRhdGEoKS5kYXRlc1swXT8uc2VsZWN0ZWREYXRlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhKCk/LmRwQ29uZmlnPy5mb3JtYXQpIHtcbiAgICAgIHRoaXMuZGF0YSgpLmRwQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRhdGEoKS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0ZXMobW9udGg6IG51bWJlciwgY3VycmVudFllYXJOdW1iZXI6IG51bWJlcik6IElDdXJyZW50TW9udGhEYXRlc1tdIHtcbiAgICBjb25zdCBkYXRlczogSUN1cnJlbnRNb250aERhdGVzW10gPSBbXTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgXG4gICAgZm9yIChsZXQgY3VycmVudERhdGUgPSAxOyBjdXJyZW50RGF0ZSA8PSBkYXlzSW5Nb250aDsgY3VycmVudERhdGUrKykge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRhdGUoY3VycmVudERhdGUpO1xuICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG5cbiAgICAgIGxldCBpc0Rpc2FibGVkRGF5ID0gdGhpcy5kYXRhKCkuZGF0ZXNEaXNhYmxlZC5zb21lKGQgPT4gZCA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBtaW5EYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWluRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1pbkRhdGUuaXNBZnRlcihkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUgPyB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpIDogZGF5anMoJ2ludmFsaWQnKTtcbiAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICBpc0Rpc2FibGVkRGF5ID0gbWF4RGF0ZS5pc0JlZm9yZShkYXRlLCBcImRheVwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNDdXJyZW50RGF5ID0gZGF0ZS5pc1NhbWUodGhpcy5kYXlqc0luc3RhbmNlKCkoKSwgJ2RheScpO1xuICAgICAgbGV0IGlzU2VsZWN0ZWREYXkgPSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpLnNvbWUoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkU3RhcnREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZEVuZERheSA9ICEhdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlICYmIGRhdGUuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgPT09IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZTtcbiAgICAgIGNvbnN0IGluUmFuZ2VEYXkgPSAhISh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS5pc0JldHdlZW4odGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgJ2RheScsICcoKScpO1xuXG4gICAgICBjb25zdCBpc0hvbGlkYXkgPSB0aGlzLmRhdGEoKS5ob2xpZGF5cy5pbmNsdWRlcyhkYXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IGlzV2Vla09mZiA9IHRoaXMuZGF0YSgpLndlZWtPZmZzLmluY2x1ZGVzKGRhdGUuZm9ybWF0KCdkZGQnKSk7XG5cbiAgICAgIGRhdGVzLnB1c2goe1xuICAgICAgICBkYXRlOiBjdXJyZW50RGF0ZSxcbiAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICBpc1NlbGVjdGVkU3RhcnREYXksXG4gICAgICAgIGlzU2VsZWN0ZWRFbmREYXksXG4gICAgICAgIGluUmFuZ2VEYXksXG4gICAgICAgIGlzSG9saWRheSxcbiAgICAgICAgaXNXZWVrT2ZmLFxuICAgICAgICB0b2FzdE1lc3NhZ2U6IHRoaXMuZGF0YSgpLm1lc3NhZ2VzLmZpbmQocSA9PiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSBxLmRhdGUpPy5tZXNzYWdlIHx8IFwiXCIsXG4gICAgICAgIGlzRGlzYWJsZWREYXlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBkYXRlc1swXT8ud2Vla0RheSB8fCAwOyBpID4gMDsgaS0tKSB7XG4gICAgICBkYXRlcy51bnNoaWZ0KHsgZGF0ZTogMCwgd2Vla0RheTogaSAtIDEgfSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGxldCB0aGlzTW9udGg6IERheWpzID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGgubW9udGgoKSk7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlci5zZXQodGhpc01vbnRoLnllYXIoKSk7XG4gICAgdGhpcy5uZXh0TW9udGhOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLm1vbnRoKCkpO1xuICAgIHRoaXMubmV4dFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC5jbG9uZSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG4gIH1cblxuICBzZWxlY3REYXkoZnJvbTogXCJMRUZUXCIgfCBcIlJJR0hUXCIsIGRheTogSUN1cnJlbnRNb250aERhdGVzKTogdm9pZCB7XG4gICAgaWYgKGRheS5kYXRlIDw9IDAgfHwgZGF5LmlzRGlzYWJsZWREYXkpIHtcbiAgICAgIGlmIChkYXkudG9hc3RNZXNzYWdlKSB0aGlzLnRvYXN0LmRpc3BsYXlNc2coZGF5LnRvYXN0TWVzc2FnZSwgNDAwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpXG4gICAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgICAgLmRhdGUoZGF5LmRhdGUpLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudC5maW5kSW5kZXgoZCA9PiBkLnNlbGVjdGVkRGF0ZSA9PT0gY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIFxuICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudC5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gZXhpc3RpbmdJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5jdXJyZW50LCB7IHNlbGVjdGVkRGF0ZTogY3VycmVudFNlbGVjdGlvbiB9XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXlqc0RheSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKClcbiAgICAgICAgLnllYXIoZnJvbSA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkgOiB0aGlzLm5leHRZZWFyTnVtYmVyKCkpXG4gICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAuZGF0ZShkYXkuZGF0ZSk7XG4gICAgICBcbiAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydGVkKCkpIHtcbiAgICAgICAgICBpZiAoZGF5anNEYXkuaXNCZWZvcmUodGhpcy5kYXlqc0luc3RhbmNlKCkoY3VycmVudC5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksIFwiZGF5XCIpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50LCBlbmREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZUZvY3VzQ2VsbCh0aGlzLmdldERheUNlbGxJZChkYXksIGZyb20pKTtcbiAgfVxuXG4gIGFwcGx5RGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlcygpKTtcbiAgfVxuXG4gIGFwcGx5RGF0ZXNSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5kYXRlQ2hhbmdlUmFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpKTtcbiAgfVxuXG4gIG9uU2luZ2xlRGF0ZUNoYW5nZShldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRhOiBJU1NlbGVjdGVkRGF0ZXNDb25maWcgPSB7IHNlbGVjdGVkRGF0ZTogZXZlbnQgfTtcbiAgICB0aGlzLnNpbmdsZURhdGVTZWxlY3RlZFZhbHVlLnNldChldmVudCk7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZShbc2VsZWN0ZWREYXRhXSk7XG4gIH1cblxuICBjYW5jZWxEYXRlUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmNsb3NlKCk7XG4gIH1cblxuICBjaGFuZ2VQaWNrZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkLnNldChldmVudCA9PT0gXCJTaW5nbGUgRGF0ZVwiKTtcbiAgICB0aGlzLm9wZW5FbGVtZW50LnNldChldmVudCA9PT0gXCJTaW5nbGUgRGF0ZVwiKTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldChldmVudCA9PT0gXCJEYXRlIFJhbmdlXCIpO1xuICAgIHRoaXMuaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkLnNldChldmVudCA9PT0gXCJTcGVjaWZpYyBEYXRlKHMpXCIpO1xuICAgIFxuICAgIC8vIEFzIGRpc2N1c3NlZCwgc3RhdGUgaXMgcmV0YWluZWQgd2hlbiBzd2l0Y2hpbmcgbW9kZXMuXG4gICAgLy8gVGhlIHZpZXcgd2lsbCBzaW1wbHkgdXBkYXRlIHRvIHJlZmxlY3QgdGhlIGFjdGl2ZSBtb2RlLlxuICAgIFxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZXZlbnQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuICBcblxuICBnZXREYXlUYWJJbmRleChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBpZiAoIWRhdGVzPy5sZW5ndGgpIHJldHVybiAtMTtcbiAgICBjb25zdCBmaXJzdEluZGV4ID0gZGF0ZXMuZmluZEluZGV4KChkKSA9PiBkLmRhdGUgPiAwICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgIGlmIChmaXJzdEluZGV4IDwgMCkgcmV0dXJuIC0xO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRhdGVzLmZpbmRJbmRleCgoZCkgPT4gZCA9PT0gZGF5KTtcbiAgICByZXR1cm4gY3VycmVudEluZGV4ID09PSBmaXJzdEluZGV4ID8gMCA6IC0xO1xuICB9XG5cbiAgZ2V0RGF5Q2VsbElkKGRheTogSUN1cnJlbnRNb250aERhdGVzLCBwYW5lbDogXCJMRUZUXCIgfCBcIlJJR0hUXCIpOiBzdHJpbmcge1xuICAgIGlmIChkYXk/LmRhdGUgPD0gMCkgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgbW9udGggPSBwYW5lbCA9PT0gXCJMRUZUXCIgPyB0aGlzLmN1cnJlbnRNb250aE51bWJlcigpIDogdGhpcy5uZXh0TW9udGhOdW1iZXIoKTtcbiAgICBjb25zdCB5ZWFyID0gcGFuZWwgPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpO1xuICAgIHJldHVybiBgJHtwYW5lbCA9PT0gXCJMRUZUXCIgPyBcIkxcIiA6IFwiUlwifS0ke21vbnRofS0ke3llYXJ9LSR7ZGF5LmRhdGV9YDtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVGb2N1c0NlbGwoY2VsbElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWNlbGxJZCkgcmV0dXJuO1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhvc3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MRWxlbWVudD4oYFtkYXRhLXNkcC1jZWxsPVwiJHtjZWxsSWR9XCJdYCk7XG4gICAgICBpZiAoZWw/LmZvY3VzKSBlbC5mb2N1cygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUk9XX1NJWkUgPSA3O1xuXG4gIGdldERheUluZGV4SW5Nb250aChkYXk6IElDdXJyZW50TW9udGhEYXRlcywgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBpZHggPSBkYXRlcy5maW5kSW5kZXgoKGQpID0+IGQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCA6IC0xO1xuICB9XG5cbiAgZ2V0TmV4dERheUluZGV4KGN1cnJlbnRJbmRleDogbnVtYmVyLCBkaXJlY3Rpb246IFwiQXJyb3dMZWZ0XCIgfCBcIkFycm93UmlnaHRcIiB8IFwiQXJyb3dVcFwiIHwgXCJBcnJvd0Rvd25cIiwgcGFuZWw6IFwiTEVGVFwiIHwgXCJSSUdIVFwiKTogbnVtYmVyIHtcbiAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICBjb25zdCBsZW4gPSBkYXRlcy5sZW5ndGg7XG4gICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGxldCBkZWx0YSA9IDA7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJBcnJvd1JpZ2h0XCIpIGRlbHRhID0gMTtcbiAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiQXJyb3dMZWZ0XCIpIGRlbHRhID0gLTE7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93VXBcIikgZGVsdGEgPSAtVHpEcnBDb250YWluZXJDb21wb25lbnQuUk9XX1NJWkU7XG4gICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcIkFycm93RG93blwiKSBkZWx0YSA9IFR6RHJwQ29udGFpbmVyQ29tcG9uZW50LlJPV19TSVpFO1xuICAgIGxldCBuZXh0ID0gY3VycmVudEluZGV4ICsgZGVsdGE7XG4gICAgaWYgKG5leHQgPCAwIHx8IG5leHQgPj0gbGVuKSByZXR1cm4gLTE7XG4gICAgaWYgKGRhdGVzW25leHRdLmRhdGUgPiAwICYmICFkYXRlc1tuZXh0XS5pc0Rpc2FibGVkRGF5KSByZXR1cm4gbmV4dDtcbiAgICB3aGlsZSAobmV4dCA+PSAwICYmIG5leHQgPCBsZW4gJiYgKGRhdGVzW25leHRdLmRhdGUgPT09IDAgfHwgZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSkpIHtcbiAgICAgIG5leHQgKz0gZGVsdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXh0ID49IDAgJiYgbmV4dCA8IGxlbiAmJiBkYXRlc1tuZXh0XS5kYXRlID4gMCAmJiAhZGF0ZXNbbmV4dF0uaXNEaXNhYmxlZERheSA/IG5leHQgOiAtMTtcbiAgfVxuXG4gIGhhbmRsZURheUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHBhbmVsOiBcIkxFRlRcIiB8IFwiUklHSFRcIiwgZGF5OiBJQ3VycmVudE1vbnRoRGF0ZXMpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJvd0tleXMgPSBbXCJBcnJvd0xlZnRcIiwgXCJBcnJvd1JpZ2h0XCIsIFwiQXJyb3dVcFwiLCBcIkFycm93RG93blwiXTtcbiAgICBpZiAoYXJyb3dLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldERheUluZGV4SW5Nb250aChkYXksIHBhbmVsKTtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPCAwKSByZXR1cm47XG4gICAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLmdldE5leHREYXlJbmRleChjdXJyZW50SW5kZXgsIGV2ZW50LmtleSBhcyBcIkFycm93TGVmdFwiIHwgXCJBcnJvd1JpZ2h0XCIgfCBcIkFycm93VXBcIiB8IFwiQXJyb3dEb3duXCIsIHBhbmVsKTtcbiAgICAgIGlmIChuZXh0SW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBkYXRlcyA9IHBhbmVsID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoRGF0ZXMoKSA6IHRoaXMubmV4dE1vbnRoRGF0ZXMoKTtcbiAgICAgICAgY29uc3QgbmV4dERheSA9IGRhdGVzW25leHRJbmRleF07XG4gICAgICAgIHRoaXMuc2NoZWR1bGVGb2N1c0NlbGwodGhpcy5nZXREYXlDZWxsSWQobmV4dERheSwgcGFuZWwpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRheS5kYXRlIDw9IDAgfHwgZGF5LmlzRGlzYWJsZWREYXkpIHJldHVybjtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2VsZWN0RGF5KHBhbmVsLCBkYXkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCIgYXJpYS1sYWJlbD1cIkNob29zZSBkYXRlIG9yIGRhdGUgcmFuZ2VcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cbiAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCI+XG48ZGl2XG4gIGNsYXNzPVwibGFiZWxcIlxuICB0YWJpbmRleD1cIjBcIlxuICAoa2V5ZG93bi5lbnRlcik9XCJjaGFuZ2VQaWNrZXIocGlja2VyKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiKGZvcm1Db250cm9sPy52YWx1ZSA9PT0gcGlja2VyKSA/IChwaWNrZXIgKyAnLCBzZWxlY3RlZCcpIDogKHBpY2tlciArICcsIGNsaWNrIHRvIHNlbGVjdCcpXCJcbiAgKm5nRm9yPVwibGV0IHBpY2tlciBvZiBkYXRlUGlja2VyVmFsdWUoKTsgbGV0IGkgPSBpbmRleFwiXG4+XG4gIDxtaXMtcmFkaW8gY2xhc3M9XCJpbnB1dFwiIFtuYW1lXT1cIidkYXRlU2VsZWN0aW9uJ1wiIFt2YWx1ZV09XCJwaWNrZXJcIiAodmFsdWVDaGFuZ2UpPVwiY2hhbmdlUGlja2VyKCRldmVudClcIiBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiPjwvbWlzLXJhZGlvPlxuICA8c3Bhbj57e3BpY2tlcn19PC9zcGFuPlxuPC9kaXY+XG48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNwZWNpZmljLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5Jzogc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkKCkgPyAnbm9uZScgOiAnJ31cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fdmlld1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyX19sZWZ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSA/IC0xIDogMFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIlxuICAgICAgICAgIChjbGljayk9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIhaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSAmJiBuYXZpZ2F0ZU1vbnRoKCdQUkVWSU9VUycpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXNkcC1jZWxsXT1cImdldERheUNlbGxJZChkYXksICdMRUZUJylcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZ2V0RGF5VGFiSW5kZXgoZGF5LCAnTEVGVCcpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5LmRhdGUgPiAwID8gKGRheS5kYXRlICsgJyAnICsgY3VycmVudE1vbnRoKCkgKyAnICcgKyBjdXJyZW50WWVhck51bWJlcigpICsgKGRheS5pc0Rpc2FibGVkRGF5ID8gJywgZGlzYWJsZWQnIDogJycpKSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXkuaXNEaXNhYmxlZERheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZURheUtleWRvd24oJGV2ZW50LCAnTEVGVCcsIGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheSB9XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheS5kYXRlID4gMFwiIFtuZ0NsYXNzXT1cInsgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSwgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZiB9XCI+XG4gICAgICAgICAgICAgIHt7IGRheS5kYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJfX3JpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgbmV4dE1vbnRoKCkgfX0ge3sgbmV4dFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpc05leHRNb250aERpc2FibGVkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZCgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFpc05leHRNb250aERpc2FibGVkKCkgJiYgbmF2aWdhdGVNb250aCgnTkVYVCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtbW9udGgnOiBpc05leHRNb250aERpc2FibGVkKCkgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHdlZWtEYXkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5c1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fZGF5XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc2RwLWNlbGxdPVwiZ2V0RGF5Q2VsbElkKGRheSwgJ1JJR0hUJylcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZ2V0RGF5VGFiSW5kZXgoZGF5LCAnUklHSFQnKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRheS5kYXRlID4gMCA/IChkYXkuZGF0ZSArICcgJyArIG5leHRNb250aCgpICsgJyAnICsgbmV4dFllYXJOdW1iZXIoKSArIChkYXkuaXNEaXNhYmxlZERheSA/ICcsIGRpc2FibGVkJyA6ICcnKSkgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGF5LmlzRGlzYWJsZWREYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZURheUtleWRvd24oJGV2ZW50LCAnUklHSFQnLCBkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NpcmN1bGFyLWRvdCc6IGRheS5pc0hvbGlkYXkgfVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIiBbbmdDbGFzc109XCJ7ICdjdXJyZW50LWRheSc6IGRheS5pc0N1cnJlbnREYXkgJiYgKGN1cnJlbnRNb250aE51bWJlcigpID09PSB0b2RheU1vbnRoTnVtYmVyKCkpLCAnaG9saWRheS10ZXh0JzogZGF5LmlzSG9saWRheSB8fCBkYXkuaXNXZWVrT2ZmIH1cIj5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIiB0YWJpbmRleD1cIjBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidXZWVrbHkgb2ZmczogJyArIChkYXRhKCkud2Vla09mZnM/Lmxlbmd0aCA/IGRhdGEoKS53ZWVrT2Zmcy5qb2luKCcsICcpIDogJ05vbmUnKSArICcuIEhvbGlkYXlzIG1hcmtlZCB3aXRoIGEgZG90IG9uIHRoZSBjYWxlbmRhci4nXCI+XG4gICAgPHNwYW4+V2Vla2x5IG9mZnM6IDxzcGFuICpuZ0Zvcj1cImxldCB3ZWVrT2ZmIG9mIGRhdGEoKS53ZWVrT2ZmczsgbGV0IGxhc3QgPSBsYXN0XCI+e3t3ZWVrT2ZmfX0gPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiw8L3NwYW4+PC9zcGFuPjwvc3Bhbj5cbiAgICA8c3BhbiA+SG9saWRheXMgPHNwYW4gY2xhc3M9XCJjaXJjdWxhci1kb3RcIiBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCAnbWFyZ2luLWxlZnQnOiAnMTBweCcgfVwiPjwvc3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyX19mb290ZXJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCI+XG4gICAgICA8c3Bhbj57e2xvY2FsU2VsZWN0ZWREYXRlcygpLmxlbmd0aH19PC9zcGFuPiBkYXkocykgc2VsZWN0ZWRcbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj48c3Bhbj57e2RhdGVSYW5nZUxlbmd0aCgpID4gMCA/IGRhdGVSYW5nZUxlbmd0aCgpIDogMCB9fSA8L3NwYW4+ZGF5KHMpIHNlbGVjdGVkPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXJfYWN0aW9uX2J0blwiPlxuICAgICAgPGJ1dHRvbiAjY2FuY2VsQnRuIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIiBtaXMtYnV0dG9uIHNpemU9XCJtZFwiIHR5cGU9XCJwcmltYXJ5XCIgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cImFwcGx5RGF0ZXMoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKClcIj5BcHBseTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiICNhcHBseVJhbmdlQnRuIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cInByaW1hcnlcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwiYXBwbHlEYXRlc1JhbmdlKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpIHx8IChkYXRlUmFuZ2VMZW5ndGgoKSA9PT0gMClcIj5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=