@fundamental-ngx/core 0.46.2-rc.1 → 0.46.2-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/calendar-directives.d.ts +5 -9
- package/calendar/calendar-header/calendar-header.component.d.ts +7 -25
- package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -20
- package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +6 -44
- package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +2 -21
- package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +3 -22
- package/calendar/calendar.component.d.ts +9 -9
- package/calendar/i18n/calendar-i18n-labels.d.ts +20 -22
- package/calendar/patch-deprecated-i18n-labels.d.ts +6 -0
- package/esm2022/calendar/calendar-directives.mjs +10 -18
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +30 -60
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +10 -35
- package/esm2022/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +13 -65
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +11 -36
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +12 -37
- package/esm2022/calendar/calendar.component.mjs +20 -10
- package/esm2022/calendar/i18n/calendar-i18n-labels.mjs +22 -28
- package/esm2022/calendar/patch-deprecated-i18n-labels.mjs +21 -0
- package/fesm2022/fundamental-ngx-core-calendar.mjs +150 -288
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.2-rc.3.tgz +0 -0
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/fundamental-ngx-core-v0.46.2-rc.1.tgz +0 -0
|
@@ -2,16 +2,18 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Even
|
|
|
2
2
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
3
|
import { Subscription } from 'rxjs';
|
|
4
4
|
import { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/datetime';
|
|
5
|
-
import {
|
|
5
|
+
import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';
|
|
6
|
+
import { ContentDensityModule, ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
7
|
+
import { FD_LANGUAGE } from '@fundamental-ngx/i18n';
|
|
8
|
+
import { createMissingDateImplementationError } from './calendar-errors';
|
|
9
|
+
import { CalendarHeaderComponent } from './calendar-header/calendar-header.component';
|
|
10
|
+
import { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';
|
|
6
11
|
import { CalendarDayViewComponent } from './calendar-views/calendar-day-view/calendar-day-view.component';
|
|
7
|
-
import { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';
|
|
8
12
|
import { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';
|
|
9
|
-
import {
|
|
13
|
+
import { CalendarYearViewComponent } from './calendar-views/calendar-year-view/calendar-year-view.component';
|
|
10
14
|
import { CalendarService } from './calendar.service';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { ContentDensityModule, ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
14
|
-
import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';
|
|
15
|
+
import { DateRange } from './models/date-range';
|
|
16
|
+
import { patchDeprecatedI18nLabels } from './patch-deprecated-i18n-labels';
|
|
15
17
|
import * as i0 from "@angular/core";
|
|
16
18
|
import * as i1 from "@fundamental-ngx/core/content-density";
|
|
17
19
|
import * as i2 from "@fundamental-ngx/core/datetime";
|
|
@@ -497,7 +499,11 @@ export class CalendarComponent {
|
|
|
497
499
|
multi: true
|
|
498
500
|
},
|
|
499
501
|
CalendarService,
|
|
500
|
-
contentDensityObserverProviders()
|
|
502
|
+
contentDensityObserverProviders(),
|
|
503
|
+
{
|
|
504
|
+
provide: FD_LANGUAGE,
|
|
505
|
+
useFactory: patchDeprecatedI18nLabels
|
|
506
|
+
}
|
|
501
507
|
], viewQueries: [{ propertyName: "_dayViewComponent", first: true, predicate: CalendarDayViewComponent, descendants: true }, { propertyName: "_monthViewComponent", first: true, predicate: CalendarMonthViewComponent, descendants: true }, { propertyName: "_yearViewComponent", first: true, predicate: CalendarYearViewComponent, descendants: true }, { propertyName: "_aggregatedYearViewComponent", first: true, predicate: CalendarAggregatedYearViewComponent, descendants: true }, { propertyName: "_calendarHeaderComponent", first: true, predicate: CalendarHeaderComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<fd-calendar-header\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [activeView]=\"activeView\"\n [id]=\"id\"\n [calendarYearGrid]=\"yearGrid\"\n (closeClicked)=\"closeClicked.emit()\"\n (nextClicked)=\"handleNextArrowClick()\"\n (previousClicked)=\"handlePreviousArrowClick()\"\n [previousButtonDisabled]=\"previousButtonDisabled\"\n [nextButtonDisabled]=\"nextButtonDisabled\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n></fd-calendar-header>\n<ng-container [ngSwitch]=\"activeView\" *ngIf=\"_currentlyDisplayed\">\n <fd-calendar-day-view\n *ngSwitchCase=\"'day'\"\n [selectedDate]=\"selectedDate\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [markWeekends]=\"markWeekends\"\n (selectedDateChange)=\"selectedDateChanged($event)\"\n [selectedRangeDate]=\"selectedRangeDate\"\n (selectedRangeDateChange)=\"selectedRangeDateChanged($event)\"\n [currentlyDisplayed]=\"_currentlyDisplayed\"\n [startingDayOfWeek]=\"getWeekStartDay()\"\n [disableFunction]=\"disableFunction\"\n [disableRangeEndFunction]=\"disableRangeEndFunction\"\n [disableRangeStartFunction]=\"disableRangeStartFunction\"\n [calType]=\"calType\"\n [id]=\"id\"\n [rangeHoverEffect]=\"rangeHoverEffect\"\n [specialDaysRules]=\"specialDaysRules\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (nextMonthSelect)=\"displayNextMonth()\"\n (previousMonthSelect)=\"displayPreviousMonth()\"\n ></fd-calendar-day-view>\n <fd-calendar-month-view\n *ngSwitchCase=\"'month'\"\n [monthSelected]=\"_currentlyDisplayed.month\"\n [year]=\"_currentlyDisplayed.year\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (monthClicked)=\"handleMonthViewChange($event)\"\n ></fd-calendar-month-view>\n <fd-calendar-year-view\n *ngSwitchCase=\"'year'\"\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n (yearClicked)=\"selectedYear($event)\"\n >\n </fd-calendar-year-view>\n <fd-calendar-aggregated-year-view\n *ngSwitchCase=\"'aggregatedYear'\"\n (yearsClicked)=\"selectedYears($event)\"\n [yearSelected]=\"_currentlyDisplayed.year\"\n [yearViewGrid]=\"yearGrid\"\n [aggregatedYearsViewGrid]=\"aggregatedYearGrid\"\n [id]=\"id\"\n [focusEscapeFunction]=\"escapeFocusFunction\"\n >\n </fd-calendar-aggregated-year-view>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-calendar .fd-calendar__my-item,.fd-calendar__item{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 1 calc(var(--fdCalendar_Item_Current_Border_Width) * 2 + var(--fdCalendar_Item_Spacing) * 2);background-color:var(--fdCalendar_Item_Background);border:0;border:var(--fdCalendar_Item_Border);border-radius:var(--fdCalendar_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:inline-block;flex:1 1 calc(var(--fdCalendar_Item_Current_Border_Width) * 2 + var(--fdCalendar_Item_Spacing) * 2);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCalendar_Item_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdCalendar_Item_Spacing);min-width:var(--fdCalendar_Item_Width);overflow:hidden;padding:0;position:relative}.fd-calendar .fd-calendar__my-item:after,.fd-calendar .fd-calendar__my-item:before,.fd-calendar__item:after,.fd-calendar__item:before{box-sizing:inherit;font-size:inherit}[class*=fd-calendar__item--legend-]:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{border-bottom:none;border-top:var(--fdCalendar_Item_Legend_Top_Border);bottom:0;content:\"\";height:.3125rem;left:0;position:absolute;right:0;width:100%}[class*=fd-calendar__item--legend-]:not(.fd-calendar__item--today).is-focus,[class*=fd-calendar__item--legend-]:not(.fd-calendar__item--today):focus{z-index:5}[class*=fd-calendar__item--legend-]:not(.fd-calendar__item--today).is-focus .fd-calendar__text-wrapper:after,[class*=fd-calendar__item--legend-]:not(.fd-calendar__item--today):focus .fd-calendar__text-wrapper:after{z-index:var(--fdCalendar_Text_Wrapper_After_Z)}.fd-calendar__item--today[class*=fd-calendar__item--legend-].is-focus,.fd-calendar__item--today[class*=fd-calendar__item--legend-]:focus{z-index:5}.fd-calendar__item--today[class*=fd-calendar__item--legend-].is-focus .fd-calendar__text-wrapper:after,.fd-calendar__item--today[class*=fd-calendar__item--legend-]:focus .fd-calendar__text-wrapper:after{border-bottom:none}.fd-calendar__item--today[class*=fd-calendar__item--legend-].is-focus .fd-calendar__text:after,.fd-calendar__item--today[class*=fd-calendar__item--legend-]:focus .fd-calendar__text:after{bottom:0;content:\"\";height:.1875rem;left:0;position:absolute;right:0;width:100%}.fd-calendar__item--today[class*=fd-calendar__item--legend-] .fd-calendar__text-wrapper:after{border-radius:.3125rem;bottom:.0625rem;content:\"\";height:.5rem;left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today[class*=fd-calendar__item--legend-][dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today[class*=fd-calendar__item--legend-] .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-1:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor1)}.fd-calendar__item--legend-1:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-1:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-1.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-1:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-1.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-1:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor1)}.fd-calendar__item--today.fd-calendar__item--legend-1 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor1);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-1[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-1 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-2:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor2)}.fd-calendar__item--legend-2:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-2:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-2.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-2:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-2.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-2:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor2)}.fd-calendar__item--today.fd-calendar__item--legend-2 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor2);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-2[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-2 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-3:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor3)}.fd-calendar__item--legend-3:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-3:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-3.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-3:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-3.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-3:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor3)}.fd-calendar__item--today.fd-calendar__item--legend-3 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor3);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-3[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-3 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-4:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor4)}.fd-calendar__item--legend-4:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-4:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-4.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-4:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-4.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-4:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor4)}.fd-calendar__item--today.fd-calendar__item--legend-4 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor4);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-4[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-4 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-5:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor5)}.fd-calendar__item--legend-5:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-5:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-5.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-5:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-5.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-5:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor5)}.fd-calendar__item--today.fd-calendar__item--legend-5 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor5);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-5[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-5 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-6:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor6)}.fd-calendar__item--legend-6:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-6:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-6.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-6:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-6.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-6:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor6)}.fd-calendar__item--today.fd-calendar__item--legend-6 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor6);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-6[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-6 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-7:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor7)}.fd-calendar__item--legend-7:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-7:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-7.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-7:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-7.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-7:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor7)}.fd-calendar__item--today.fd-calendar__item--legend-7 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor7);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-7[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-7 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-8:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor8)}.fd-calendar__item--legend-8:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-8:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-8.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-8:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-8.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-8:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor8)}.fd-calendar__item--today.fd-calendar__item--legend-8 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor8);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-8[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-8 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-9:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor9)}.fd-calendar__item--legend-9:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-9:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-9.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-9:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-9.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-9:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor9)}.fd-calendar__item--today.fd-calendar__item--legend-9 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor9);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-9[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-9 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-10:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor10)}.fd-calendar__item--legend-10:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-10:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-10.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-10:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-10.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-10:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor10)}.fd-calendar__item--today.fd-calendar__item--legend-10 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor10);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-10[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-10 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-11:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor11)}.fd-calendar__item--legend-11:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-11:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-11.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-11:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-11.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-11:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor11)}.fd-calendar__item--today.fd-calendar__item--legend-11 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor11);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-11[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-11 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-12:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor12)}.fd-calendar__item--legend-12:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-12:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-12.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-12:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-12.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-12:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor12)}.fd-calendar__item--today.fd-calendar__item--legend-12 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor12);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-12[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-12 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-13:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor13)}.fd-calendar__item--legend-13:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-13:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-13.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-13:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-13.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-13:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor13)}.fd-calendar__item--today.fd-calendar__item--legend-13 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor13);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-13[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-13 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-14:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor14)}.fd-calendar__item--legend-14:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-14:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-14.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-14:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-14.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-14:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor14)}.fd-calendar__item--today.fd-calendar__item--legend-14 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor14);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-14[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-14 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-15:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor15)}.fd-calendar__item--legend-15:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-15:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-15.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-15:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-15.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-15:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor15)}.fd-calendar__item--today.fd-calendar__item--legend-15 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor15);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-15[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-15 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-16:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor16)}.fd-calendar__item--legend-16:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-16:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-16.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-16:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-16.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-16:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor16)}.fd-calendar__item--today.fd-calendar__item--legend-16 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor16);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-16[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-16 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-17:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor17)}.fd-calendar__item--legend-17:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-17:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-17.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-17:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-17.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-17:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor17)}.fd-calendar__item--today.fd-calendar__item--legend-17 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor17);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-17[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-17 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-18:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor18)}.fd-calendar__item--legend-18:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-18:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-18.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-18:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-18.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-18:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor18)}.fd-calendar__item--today.fd-calendar__item--legend-18 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor18);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-18[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-18 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-19:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor19)}.fd-calendar__item--legend-19:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-19:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-19.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-19:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-19.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-19:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor19)}.fd-calendar__item--today.fd-calendar__item--legend-19 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor19);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-19[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-19 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar__item--legend-20:not(.fd-calendar__item--today) .fd-calendar__text-wrapper:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor20)}.fd-calendar__item--legend-20:not(.fd-calendar__item--today).fd-calendar__item--range .fd-calendar__text-wrapper:after,.fd-calendar__item--legend-20:not(.fd-calendar__item--today).fd-calendar__item--selected .fd-calendar__text-wrapper:after{height:var(--fdCalendar_Item_Selected_Legend_Height)}.fd-calendar__item--today.fd-calendar__item--legend-20.is-focus,.fd-calendar__item--today.fd-calendar__item--legend-20:focus{z-index:5}.fd-calendar__item--today.fd-calendar__item--legend-20.is-focus .fd-calendar__text:after,.fd-calendar__item--today.fd-calendar__item--legend-20:focus .fd-calendar__text:after{box-shadow:inset 0 calc(var(--fdCalendar_Special_Day_Marker_Height) * -1) 0 var(--sapLegendColor20)}.fd-calendar__item--today.fd-calendar__item--legend-20 .fd-calendar__text-wrapper:after{border-bottom:.25rem solid var(--sapLegendColor20);border-bottom-left-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-bottom-right-radius:var(--fdCalendar_Item_Legend_Bottom_Border_Radius);border-top:var(--fdCalendar_Item_Legend_Top_Border);border-top-left-radius:0;border-top-right-radius:0;bottom:.0625rem;content:\"\";height:var(--fdCalendar_Item_Text_Wrapper_Height);left:.0625rem;position:absolute;right:0;width:calc(100% - .125rem)}.fd-calendar__item--today.fd-calendar__item--legend-20[dir=rtl] .fd-calendar__text-wrapper:after,[dir=rtl] .fd-calendar__item--today.fd-calendar__item--legend-20 .fd-calendar__text-wrapper:after{left:0;right:.0625rem}.fd-calendar{--fdCalendar_Item_Width:2rem;--fdCalendar_Item_Height:2.75rem;--fdCalendar_Padding:.5rem;--fdCalendar_Background:var(--sapList_Background);--fdCalendar_Width:calc(var(--fdCalendar_Item_Width)*8 + var(--fdCalendar_Padding)*2 + var(--fdCalendar_Item_Spacing)*16);--fdCalendar_Action_Padding:.25rem;--fdCalendar_Action_Width:auto;--fdCalendar_Button_Horizontal_Space:.25rem;--fdCalendar_Item_Spacing:.0625rem;--fdCalendar_Item_Background:var(--sapLegend_WorkingBackground);--fdCalendar_Item_Helper_Height:1.875rem;--fdCalendar_Item_Font_Size:var(--sapFontSize);--fdCalendar_Item_Border:0;--fdCalendar_Item_Current_Border_Width:.125rem;--fdCalendar_Item_Text_Color:var(--sapTextColor);--fdCalendar_Item_Text_Height:2.125rem;-webkit-box-sizing:border-box;background-color:var(--fdCalendar_Background);border:0;border-radius:var(--fdCalendar_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding:var(--fdCalendar_Padding);width:var(--fdCalendar_Width)}.fd-calendar:after,.fd-calendar:before{box-sizing:inherit;font-size:inherit}.fd-calendar__navigation{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding-bottom:var(--fdCalendar_Button_Horizontal_Space);padding-top:var(--fdCalendar_Button_Horizontal_Space);position:relative;width:100%}.fd-calendar__navigation:after,.fd-calendar__navigation:before{box-sizing:inherit;font-size:inherit}.fd-calendar__action{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;border:0;box-sizing:border-box;color:var(--sapTextColor);flex-grow:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-calendar__action:after,.fd-calendar__action:before{box-sizing:inherit;font-size:inherit}.fd-calendar__action:not(:last-child):not(:first-child){margin-left:var(--fdCalendar_Action_Padding);margin-right:var(--fdCalendar_Action_Padding)}.fd-calendar__action:first-child{margin-right:var(--fdCalendar_Action_Padding)}.fd-calendar__action:last-child{margin-left:var(--fdCalendar_Action_Padding)}.fd-calendar__action>[type=button]{width:100%}.fd-calendar__action--arrow-left,.fd-calendar__action--arrow-right{flex-grow:0;width:var(--fdCalendar_Action_Width)}.fd-calendar__action--arrow-left+.fd-calendar__action--arrow-right{margin-left:auto}.fd-calendar__action--arrow-left+.fd-calendar__action--arrow-right[dir=rtl],[dir=rtl] .fd-calendar__action--arrow-left+.fd-calendar__action--arrow-right{margin-left:0;margin-right:auto}.fd-calendar__action [class*=sap-icon][dir=rtl],[dir=rtl] .fd-calendar__action [class*=sap-icon]{transform:scaleX(-1)}.fd-calendar__text-wrapper{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-calendar__text-wrapper:after,.fd-calendar__text-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-calendar__item.is-hover,.fd-calendar__item:hover{--fdCalendar_Item_Background:var(--sapList_Hover_Background)}.fd-calendar__item.is-disabled,.fd-calendar__item:disabled,.fd-calendar__item[aria-disabled=true]{opacity:.4;pointer-events:none}.fd-calendar__item--weekend{--fdCalendar_Item_Background:var(--sapLegend_NonWorkingBackground)}.fd-calendar__item--weekend.is-hover,.fd-calendar__item--weekend:hover{--fdCalendar_Item_Background:var(--sapList_Hover_Background);filter:brightness(1.05)}.fd-calendar__item--other{--fdCalendar_Item_Background:var(--fdCalendar_Background)}.fd-calendar__item--other.is-hover,.fd-calendar__item--other:hover{--fdCalendar_Item_Background:var(--sapList_Hover_Background)}.fd-calendar__item--other .fd-calendar__text{--fdCalendar_Item_Text_Color:var(--sapContent_LabelColor)}.fd-calendar__item--selected{--fdCalendar_Item_Background:var(--sapContent_Selected_Background);--fdCalendar_Item_Border:var(--fdCalendar_Active_Item_Border)}.fd-calendar__item--selected.is-hover,.fd-calendar__item--selected:hover{--fdCalendar_Item_Background:var(--fdCalendar_Item_Active_Background_Hover)}.fd-calendar__item--selected .fd-calendar__text{--fdCalendar_Item_Text_Color:var(--sapContent_Selected_TextColor);font-family:var(--fdCalendar_Active_Item_Font_Weight)}.fd-calendar__item--range{--fdCalendar_Item_Border:var(--fdCalendar_Active_Item_Border);--fdCalendar_Item_Background:var(--sapList_SelectionBackgroundColor)}.fd-calendar__item--range.is-hover,.fd-calendar__item--range:hover{--fdCalendar_Item_Background:var(--sapList_Hover_SelectionBackground)}.fd-calendar__item--today.fd-calendar__item--range:after,.fd-calendar__item--today.fd-calendar__item--selected:after{border:.0625rem solid var(--sapList_SelectionBorderColor);border-radius:var(--fdCalendar_Item_Today_Selected_Bottom_Radius);bottom:.0625rem;content:\"\";height:calc(100% - .125rem);left:.0625rem;position:absolute;top:.0625rem;width:calc(100% - .125rem)}.fd-calendar__item--today{--fdCalendar_Item_Border:solid .125rem var(--sapLegend_CurrentDateTime);box-shadow:0 0 0 .0625rem var(--sapList_Background) inset;position:relative}.fd-calendar__item--today:after{border-radius:.3125rem;bottom:.0625rem;content:\"\";height:calc(100% - .125rem);left:.0625rem;position:absolute;top:.0625rem;width:calc(100% - .125rem)}.fd-calendar__item.fd-calendar__item--selected.is-focus,.fd-calendar__item.fd-calendar__item--selected:focus{z-index:5}.fd-calendar__item.fd-calendar__item--selected.is-focus .fd-calendar__text-wrapper,.fd-calendar__item.fd-calendar__item--selected:focus .fd-calendar__text-wrapper{border:var(--fdCalendar_Item_Text_Active_Focus)}.fd-calendar__item:focus-visible{outline:none}.fd-calendar__item.is-focus,.fd-calendar__item:focus{z-index:5}.fd-calendar__item.is-focus .fd-calendar__text-wrapper,.fd-calendar__item:focus .fd-calendar__text-wrapper{-webkit-box-sizing:var(--fdCalendar_Text_Wrapper_Box_Sizing);border:var(--fdCalendar_Text_Wrapper_Border);box-sizing:var(--fdCalendar_Text_Wrapper_Box_Sizing);height:var(--fdCalendar_Text_Wrapper_Height);margin:var(--fdCalendar_Text_Wrapper_Margin)}.fd-calendar__item.is-focus .fd-calendar__text,.fd-calendar__item:focus .fd-calendar__text{border:var(--fdCalendar_Text_Border_Focus)}.fd-calendar__item--side-helper{-ms-flex-item-align:center;--fdCalendar_Item_Height:var(--fdCalendar_Item_Side_Helper,var(--fdCalendar_Item_Helper_Height));--fdCalendar_Item_Background:var(--sapList_Background);align-self:center;pointer-events:none}.fd-calendar__item--side-helper .fd-calendar__text{--fdCalendar_Item_Text_Color:var(--sapContent_LabelColor);--fdCalendar_Item_Font_Size:var(--sapFontSmallSize)}.fd-calendar .fd-calendar__my-item{max-height:var(--fdCalendar_Item_Height)}.fd-calendar .fd-calendar__my-item-button{min-height:100%;min-width:100%;padding:0}.fd-calendar .fd-calendar__my-item .fd-calendar__text{color:inherit}.fd-calendar__content{-webkit-box-sizing:border-box;border:0;border-spacing:0;box-sizing:border-box;color:var(--sapTextColor);display:table;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:100%}.fd-calendar__content:after,.fd-calendar__content:before{box-sizing:inherit;font-size:inherit}.fd-calendar__content--months,.fd-calendar__content--years{--fdCalendar_Item_Background:transparent;padding-top:var(--fdCalendar_Item_Helper_Height)}.fd-calendar__content--screen-reader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fd-calendar__group{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:table-row-group;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-calendar__group:after,.fd-calendar__group:before{box-sizing:inherit;font-size:inherit}.fd-calendar__row{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-calendar__row:after,.fd-calendar__row:before{box-sizing:inherit;font-size:inherit}.fd-calendar__text{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-flex:1;-ms-flex-positive:1;align-items:center;border:0;border-radius:.1875rem;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdCalendar_Item_Text_Color);display:flex;flex-grow:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--fdCalendar_Item_Font_Size);font-weight:400;forced-color-adjust:none;height:var(--fdCalendar_Item_Text_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-width:calc(100% - .7rem);min-width:1.375rem;padding:0;position:relative;text-shadow:var(--fdCalendar_Text_Shadow)}.fd-calendar__text:after,.fd-calendar__text:before{box-sizing:inherit;font-size:inherit}.fd-calendar__text.is-focus,.fd-calendar__text:focus{border:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);z-index:5}.fd-calendar[class*=-compact],.fd-calendar[class*=-condensed],[class*=-compact] .fd-calendar:not([class*=-cozy]),[class*=-condensed] .fd-calendar:not([class*=-cozy]){--fdCalendar_Width:calc(var(--fdCalendar_Action_Width)*8 + var(--fdCalendar_Padding)*2 + var(--fdCalendar_Item_Spacing)*16);--fdCalendar_Padding:.5rem;--fdCalendar_Item_Text_Height:1.375rem;--fdCalendar_Item_Height:2rem;--fdCalendar_Button_Horizontal_Space:.1875rem;--fdCalendar_Action_Width:2rem;--fdCalendar_Item_Width:var(--fdCalendar_Action_Width)}.fd-calendar--mobile-landscape,.fd-calendar--mobile-portrait{height:100%;width:100%}.fd-calendar--mobile-landscape{--fdCalendar_Padding:0;--fdCalendar_Item_Side_Helper:1.625rem}.fd-calendar--mobile-landscape .fd-calendar__navigation--main{max-width:20rem}.fd-calendar--mobile-portrait{--fdCalendar_Padding:1rem 0 0 0}.fd-has-display-block{display:block}.fd-calendar__text{max-width:calc(100% - .375rem)}\n"], dependencies: [{ kind: "ngmodule", type: ContentDensityModule }, { kind: "component", type: CalendarHeaderComponent, selector: "fd-calendar-header", inputs: ["activeView", "currentlyDisplayed", "previousButtonDisabled", "nextButtonDisabled", "calendarYearGrid", "id", "mobileLandscape"], outputs: ["activeViewChange", "previousClicked", "nextClicked"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CalendarDayViewComponent, selector: "fd-calendar-day-view", inputs: ["disableFunction", "disableRangeStartFunction", "disableRangeEndFunction", "currentlyDisplayed", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "calType", "id", "rangeHoverEffect", "markWeekends", "showWeekNumbers", "focusEscapeFunction", "specialDaysRules"], outputs: ["selectedRangeDateChange", "nextMonthSelect", "previousMonthSelect", "selectedDateChange"] }, { kind: "component", type: CalendarMonthViewComponent, selector: "fd-calendar-month-view", inputs: ["id", "monthSelected", "focusEscapeFunction", "year"], outputs: ["monthClicked"] }, { kind: "component", type: CalendarYearViewComponent, selector: "fd-calendar-year-view", inputs: ["id", "focusEscapeFunction", "yearSelected", "yearViewGrid"], outputs: ["yearClicked"] }, { kind: "component", type: CalendarAggregatedYearViewComponent, selector: "fd-calendar-aggregated-year-view", inputs: ["id", "focusEscapeFunction", "yearSelected", "aggregatedYearsViewGrid", "yearViewGrid"], outputs: ["yearsClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
502
508
|
}
|
|
503
509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
@@ -514,7 +520,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
514
520
|
multi: true
|
|
515
521
|
},
|
|
516
522
|
CalendarService,
|
|
517
|
-
contentDensityObserverProviders()
|
|
523
|
+
contentDensityObserverProviders(),
|
|
524
|
+
{
|
|
525
|
+
provide: FD_LANGUAGE,
|
|
526
|
+
useFactory: patchDeprecatedI18nLabels
|
|
527
|
+
}
|
|
518
528
|
], host: {
|
|
519
529
|
'(focusout)': '_focusOut($event)',
|
|
520
530
|
'[attr.id]': 'id',
|
|
@@ -611,4 +621,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
611
621
|
}], disableRangeEndFunction: [{
|
|
612
622
|
type: Input
|
|
613
623
|
}] } });
|
|
614
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDN0csT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDaEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdGQUF3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QkFBdUI7c0JBRC9CLE1BQU07Z0JBS0UsaUJBQWlCO3NCQUR6QixNQUFNO2dCQUtFLGFBQWE7c0JBRHJCLE1BQU07Z0JBS0UsWUFBWTtzQkFEcEIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsd0JBQXdCO2dCQUtuQyxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMsMEJBQTBCO2dCQUtyQyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMseUJBQXlCO2dCQUtwQyw0QkFBNEI7c0JBRDNCLFNBQVM7dUJBQUMsbUNBQW1DO2dCQUs5Qyx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsdUJBQXVCO2dCQVVsQyw2QkFBNkI7c0JBRDVCLEtBQUs7Z0JBVU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQThDTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBV04sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFRTix1QkFBdUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEQVRFX1RJTUVfRk9STUFUUywgRGF0ZXRpbWVBZGFwdGVyLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgU3BlY2lhbERheVJ1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi9tb2RlbHMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuL21vZGVscy9jYWxlbmRhci1jdXJyZW50JztcbmltcG9ydCB7IENhbGVuZGFyWWVhckdyaWQgfSBmcm9tICcuL21vZGVscy9jYWxlbmRhci15ZWFyLWdyaWQnO1xuaW1wb3J0IHsgQWdncmVnYXRlZFllYXIgfSBmcm9tICcuL21vZGVscy9hZ2dyZWdhdGVkLXllYXInO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci12aWV3cy9jYWxlbmRhci1kYXktdmlldy9jYWxlbmRhci1kYXktdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJZZWFyVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItdmlld3MvY2FsZW5kYXIteWVhci12aWV3L2NhbGVuZGFyLXllYXItdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb250aFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLXZpZXdzL2NhbGVuZGFyLW1vbnRoLXZpZXcvY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2NhbGVuZGFyLWVycm9ycyc7XG5pbXBvcnQgeyBDYWxlbmRhckFnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItdmlld3MvY2FsZW5kYXItYWdncmVnYXRlZC15ZWFyLXZpZXcvY2FsZW5kYXItYWdncmVnYXRlZC15ZWFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IERpc2FibGVEYXRlRnVuY3Rpb24sIEVzY2FwZUZvY3VzRnVuY3Rpb24sIEZvY3VzYWJsZUNhbGVuZGFyVmlldyB9IGZyb20gJy4vbW9kZWxzL2NvbW1vbic7XG5pbXBvcnQgeyBDYWxlbmRhclR5cGUsIERheXNPZldlZWssIEZkQ2FsZW5kYXJWaWV3LCBOYXZpZ2F0aW9uQnV0dG9uRGlzYWJsZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLFxuICAgIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVyc1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmxldCBjYWxlbmRhclVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBNb250aHM6IDEgPSBKYW51YXJ5LCAxMiA9IGRlY2VtYmVyLlxuICogRGF5czogMSA9IFN1bmRheSwgNyA9IFNhdHVyZGF5XG4gKlxuICogQ2FsZW5kYXIgY29tcG9uZW50IHVzZWQgZm9yIHNlbGVjdGluZyBkYXRlcywgdHlwaWNhbGx5IHVzZWQgYnkgdGhlIERhdGVQaWNrZXIgYW5kIERhdGVUaW1lUGlja2VyIGNvbXBvbmVudHMuXG4gKiBTdXBwb3J0cyB0aGUgQW5ndWxhciBmb3JtcyBtb2R1bGUsIGVuYWJsaW5nIGZvcm0gdmFsaWRpdHksIG5nTW9kZWwsIGV0Yy5cbiAqIGBgYGh0bWxcbiAqIDxmZC1jYWxlbmRhcj48L2ZkLWNhbGVuZGFyPlxuICogYGBgXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDYWxlbmRhckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2FsZW5kYXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ2FsZW5kYXJTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c291dCknOiAnX2ZvY3VzT3V0KCRldmVudCknLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgY2xhc3M6ICdmZC1jYWxlbmRhciBmZC1oYXMtZGlzcGxheS1ibG9jaydcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICAgICAgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nU3dpdGNoLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIENhbGVuZGFyRGF5Vmlld0NvbXBvbmVudCxcbiAgICAgICAgQ2FsZW5kYXJNb250aFZpZXdDb21wb25lbnQsXG4gICAgICAgIENhbGVuZGFyWWVhclZpZXdDb21wb25lbnQsXG4gICAgICAgIENhbGVuZGFyQWdncmVnYXRlZFllYXJWaWV3Q29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgbW9kZWwgaW4gc2luZ2xlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZERhdGU6IE51bGxhYmxlPEQ+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIG1hcmsgc3VuZGF5L3NhdHVyZGF5IHdpdGggYGZkLWNhbGVuZGFyX19pdGVtLS13ZWVrZW5kYCBjbGFzc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWFya1dlZWtlbmRzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byBzaG93IHdlZWsgbnVtYmVycyBuZXh0IHRvIGRheXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgY2FsZW5kYXIgaXMgdXNlZCBpbnNpZGUgbW9iaWxlIGluIGxhbmRzY2FwZSBtb2RlLCBpdCBhbHNvIGFkZHMgY2xvc2UgYnV0dG9uIG9uIHJpZ2h0IHNpZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtY2FsZW5kYXItLW1vYmlsZS1sYW5kc2NhcGUnKVxuICAgIG1vYmlsZUxhbmRzY2FwZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgY2FsZW5kYXIgaXMgdXNlZCBpbnNpZGUgbW9iaWxlIGluIHBvcnRyYWl0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtY2FsZW5kYXItLW1vYmlsZS1wb3J0cmFpdCcpXG4gICAgbW9iaWxlUG9ydHJhaXQgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIEZkRGF0ZXMgbW9kZWwgc3RhcnQgYW5kIGVuZCBpbiByYW5nZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRSYW5nZURhdGU6IERhdGVSYW5nZTxEPjtcblxuICAgIC8qKiBBY3R1YWxseSBzaG93biBhY3RpdmUgdmlldyBvbmUgb2YgJ2RheScgfCAnbW9udGgnIHwgJ3llYXInICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmVWaWV3OiBGZENhbGVuZGFyVmlldyA9ICdkYXknO1xuXG4gICAgLyoqIFRoZSBkYXkgb2YgdGhlIHdlZWsgdGhlIGNhbGVuZGFyIHNob3VsZCBzdGFydCBvbi4gMSByZXByZXNlbnRzIFN1bmRheSwgMiBpcyBNb25kYXksIDMgaXMgVHVlc2RheSwgYW5kIHNvIG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRpbmdEYXlPZldlZWs6IERheXNPZldlZWs7XG5cbiAgICAvKiogVGhlIHR5cGUgb2YgY2FsZW5kYXIsICdzaW5nbGUnIGZvciBzaW5nbGUgZGF0ZSBzZWxlY3Rpb24gb3IgJ3JhbmdlJyBmb3IgYSByYW5nZSBvZiBkYXRlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbFR5cGU6IENhbGVuZGFyVHlwZSA9ICdzaW5nbGUnO1xuXG4gICAgLyoqIElkIG9mIHRoZSBjYWxlbmRhci4gSWYgbm9uZSBpcyBwcm92aWRlZCwgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSAnZmQtY2FsZW5kYXItJyArIGNhbGVuZGFyVW5pcXVlSWQrKztcblxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgZGF5cyBtYXJrLCBpdCBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGFycmF5IG9mIG9iamVjdCB3aXRoXG4gICAgICogU3BlY2lhbCBkYXkgbnVtYmVyLCBsaXN0IDEtMjAgW2NsYXNzOmBmZC1jYWxlbmRhcl9faXRlbS0tbGVnZW5kLXt7bnVtYmVyfX1gXSBpcyBhdmFpbGFibGUgdGhlcmU6XG4gICAgICogaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2Z1bmRhbWVudGFsLXN0eWxlcy9jb21wb25lbnRzL2NhbGVuZGFyLmh0bWwgY2FsZW5kYXIgc3BlY2lhbCBkYXlzIHNlY3Rpb25cbiAgICAgKiBSdWxlIGFjY2VwdHMgbWV0aG9kIHdpdGggRCBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuIGV4OlxuICAgICAqIGBydWxlOiAoZmREYXRlOiBEKSA9PiBmZERhdGUuZ2V0RGF5KCkgPT09IDFgLCB3aGljaCB3aWxsIG1hcmsgYWxsIHN1bmRheXMgYXMgc3BlY2lhbCBkYXkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzcGVjaWFsRGF5c1J1bGVzOiBTcGVjaWFsRGF5UnVsZTxEPltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIHllYXIgZ3JpZCxcbiAgICAgKiBSb3csIENvbHVtbnMgYW5kIG1ldGhvZCB0byBkaXNwbGF5IHllYXIgY2FuIGJlIG1vZGlmaWVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB5ZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCA9IHtcbiAgICAgICAgcm93czogNCxcbiAgICAgICAgY29sczogNVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIGFnZ3JlZ2F0ZWQgeWVhciBncmlkLFxuICAgICAqIFJvdywgQ29sdW1ucyBhbmQgbWV0aG9kIHRvIGRpc3BsYXkgeWVhciBjYW4gYmUgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFnZ3JlZ2F0ZWRZZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCA9IHtcbiAgICAgICAgcm93czogNCxcbiAgICAgICAgY29sczogM1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHVzZXIgd2FudHMgdG8gbWFyayBkYXkgY2VsbHMgb24gaG92ZXIuXG4gICAgICogV29ya3Mgb25seSBvbiByYW5nZSBtb2RlLCB3aGVuIHN0YXJ0IGRhdGUgaXMgc2VsZWN0ZWQgb24gRGF5IFZpZXcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByYW5nZUhvdmVyRWZmZWN0ID0gZmFsc2U7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIGV2ZXJ5IHRpbWUgYWN0aXZlIHZpZXcgaXMgY2hhbmdlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biBldmVyeSB0aW1lIHNlbGVjdGVkIGRhdGUgaW4gc2luZ2xlIG1vZGUgaXMgY2hhbmdlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biBldmVyeSB0aW1lIHNlbGVjdGVkIGZpcnN0IG9yIGxhc3QgZGF0ZSBpbiByYW5nZSBtb2RlIGlzIGNoYW5nZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWxlY3RlZFJhbmdlRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGVSYW5nZTxEPj4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVSYW5nZTxEPj4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gZXZlcnkgdGltZSB3aGVuIHZhbHVlIGlzIG92ZXJ3cml0dGVuIGZyb20gb3V0c2lkZSBhbmQgdGhyb3cgYmFjayBpc1ZhbGlkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXNWYWxpZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gZXZlcnkgdGltZSB3aGVuIGNhbGVuZGFyIHNob3VsZCBiZSBjbG9zZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBjbG9zZUNhbGVuZGFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIGNsb3NlIGJ1dHRvbiBpcyBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2xvc2VDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJEYXlWaWV3Q29tcG9uZW50KVxuICAgIF9kYXlWaWV3Q29tcG9uZW50OiBDYWxlbmRhckRheVZpZXdDb21wb25lbnQ8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJNb250aFZpZXdDb21wb25lbnQpXG4gICAgX21vbnRoVmlld0NvbXBvbmVudDogQ2FsZW5kYXJNb250aFZpZXdDb21wb25lbnQ8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJZZWFyVmlld0NvbXBvbmVudClcbiAgICBfeWVhclZpZXdDb21wb25lbnQ6IENhbGVuZGFyWWVhclZpZXdDb21wb25lbnQ8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJBZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQpXG4gICAgX2FnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudDogQ2FsZW5kYXJBZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQ8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQpXG4gICAgX2NhbGVuZGFySGVhZGVyQ29tcG9uZW50OiBDYWxlbmRhckhlYWRlckNvbXBvbmVudDxEPjtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGlzYWJsZSBwcmV2aW91cyBidXR0b24gaW4gdGhlIGNhbGVuZGFyIGhlYWRlci5cbiAgICAgKiBAcGFyYW0gZGF0ZSBzZWxlY3RlZCBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJlbnRseURpc3BsYXllZERhdGUgY3VycmVudGx5IGRpc3BsYXllZCBkYXRlXG4gICAgICogQHBhcmFtIGFjdGl2ZVZpZXcgY3VycmVudCB2aWV3IG9mIGNhbGVuZGFyXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcmV2aW91c0J1dHRvbkRpc2FibGVGdW5jdGlvbjogTmF2aWdhdGlvbkJ1dHRvbkRpc2FibGVGdW5jdGlvbjxEPjtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGlzYWJsZSBuZXh0IGJ1dHRvbiBpbiB0aGUgY2FsZW5kYXIgaGVhZGVyLlxuICAgICAqIEBwYXJhbSBkYXRlIHNlbGVjdGVkIGRhdGVcbiAgICAgKiBAcGFyYW0gY3VycmVudGx5RGlzcGxheWVkRGF0ZSBjdXJyZW50bHkgZGlzcGxheWVkIGRhdGVcbiAgICAgKiBAcGFyYW0gYWN0aXZlVmlldyBjdXJyZW50IHZpZXcgb2YgY2FsZW5kYXJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5leHRCdXR0b25EaXNhYmxlRnVuY3Rpb246IE5hdmlnYXRpb25CdXR0b25EaXNhYmxlRnVuY3Rpb248RD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VycmVudGx5IGRpc3BsYXllZCBkYXlzIGRlcGVuZGluZyBvbiBtb250aCBhbmQgeWVhclxuICAgICAqL1xuICAgIF9jdXJyZW50bHlEaXNwbGF5ZWQ6IENhbGVuZGFyQ3VycmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJldmlvdXNCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hZGFwdGVyU3RhcnRpbmdEYXlPZldlZWs6IERheXNPZldlZWs7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICAvLyBVc2UgQE9wdGlvbmFsIHRvIGF2b2lkIGFuZ3VsYXIgaW5qZWN0aW9uIGVycm9yIG1lc3NhZ2UgYW5kIHRocm93IG91ciBvd24gd2hpY2ggaXMgbW9yZSBwcmVjaXNlIG9uZVxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHNcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlVGltZUFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvcignRGF0ZVRpbWVBZGFwdGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlVGltZUZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvcignREFURV9USU1FX0ZPUk1BVFMnKTtcbiAgICAgICAgfVxuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVcbiAgICAgICAgdGhpcy5fYWRhcHRlclN0YXJ0aW5nRGF5T2ZXZWVrID0gKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRGaXJzdERheU9mV2VlaygpICsgMSkgYXMgRGF5c09mV2VlaztcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIudG9kYXkoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvTG9jYWxlQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBUaGF0IGFsbG93cyB0byBkZWZpbmUgZnVuY3Rpb24gdGhhdCBzaG91bGQgaGFwcGVuLCB3aGVuIGZvY3VzIHNob3VsZCBub3JtYWxseSBlc2NhcGUgb2YgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBlc2NhcGVGb2N1c0Z1bmN0aW9uOiBFc2NhcGVGb2N1c0Z1bmN0aW9uID0gKGV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJIZWFkZXJDb21wb25lbnQ/LmZvY3VzKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGlzYWJsZSBjZXJ0YWluIGRhdGVzIGluIHRoZSBjYWxlbmRhci5cbiAgICAgKiBAcGFyYW0gZGF0ZSBkYXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlRnVuY3Rpb246IERpc2FibGVEYXRlRnVuY3Rpb248RD4gPSAoKSA9PiBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGlzYWJsZSBjZXJ0YWluIGRhdGVzIGluIHRoZSBjYWxlbmRhciBmb3IgdGhlIHJhbmdlIHN0YXJ0IHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZGF0ZSBkYXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlUmFuZ2VTdGFydEZ1bmN0aW9uOiBEaXNhYmxlRGF0ZUZ1bmN0aW9uPEQ+ID0gKCkgPT4gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRpc2FibGUgY2VydGFpbiBkYXRlcyBpbiB0aGUgY2FsZW5kYXIgZm9yIHRoZSByYW5nZSBlbmQgc2VsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBkYXRlIGRhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVSYW5nZUVuZEZ1bmN0aW9uOiBEaXNhYmxlRGF0ZUZ1bmN0aW9uPEQ+ID0gKCkgPT4gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAoXzogRCB8IERhdGVSYW5nZTxEPikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVEaXNwbGF5ZWRWaWV3KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICduZXh0QnV0dG9uRGlzYWJsZUZ1bmN0aW9uJyBpbiBjaGFuZ2VzIHx8XG4gICAgICAgICAgICAncHJldmlvdXNCdXR0b25EaXNhYmxlRnVuY3Rpb24nIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdfY3VycmVudGx5RGlzcGxheWVkJyBpbiBjaGFuZ2VzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fc2V0TmF2aWdhdGlvbkJ1dHRvbnNTdGF0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0V2Vla1N0YXJ0RGF5KCk6IERheXNPZldlZWsge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydGluZ0RheU9mV2VlayA9PT0gdW5kZWZpbmVkID8gdGhpcy5fYWRhcHRlclN0YXJ0aW5nRGF5T2ZXZWVrIDogdGhpcy5zdGFydGluZ0RheU9mV2VlaztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgdGhhdCBhbGxvd3MgdG8gdXNlIFsobmdNb2RlbCldIG9yIGZvcm1zLlxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUoc2VsZWN0ZWQ6IERhdGVSYW5nZTxEPiB8IEQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5jYWxUeXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSA8RD5zZWxlY3RlZDtcblxuICAgICAgICAgICAgdmFsaWQgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZChzZWxlY3RlZCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gc2VsZWN0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jYWxUeXBlID09PSAncmFuZ2UnICYmIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IDxEYXRlUmFuZ2U8RD4+c2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoc2VsZWN0ZWQuc3RhcnQpIHx8ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZChzZWxlY3RlZC5lbmQpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBzdGFydDogc2VsZWN0ZWQuc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBzZWxlY3RlZC5lbmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVEaXNwbGF5ZWRWaWV3KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5pc1ZhbGlkRGF0ZUNoYW5nZS5lbWl0KHZhbGlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIFZhbGlkYXRvciBJbnRlcmZhY2UsIGFkZHMgdmFsaWRhdGlvbiBzdXBwb3J0IGZvciBmb3Jtc1xuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2RlbFZhbGlkKClcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBkYXRlVmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBoYW5kbGUgYWN0aXZlIHZpZXcgY2hhbmdlIGFuZCB0aHJvd3MgZXZlbnQuXG4gICAgICpcbiAgICAgKiBGaXJlZCBieSBjYWxlbmRhciBoZWFkZXIgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UoYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGFjdGl2ZVZpZXcgPT09IHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gYWN0aXZlVmlldztcblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2UuZW1pdChhY3RpdmVWaWV3KTtcblxuICAgICAgICBpZiAoYWN0aXZlVmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgICAgICAgdGhpcy5vbk1vbnRoVmlld1NlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGl2ZVZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgdGhpcy5vblllYXJWaWV3U2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aXZlVmlldyA9PT0gJ2FnZ3JlZ2F0ZWRZZWFyJykge1xuICAgICAgICAgICAgdGhpcy5vblllYXJzUmFuZ2VWaWV3U2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHRyaWdnZXJlZCBieSBldmVudHMgZnJvbSBkYXkgdmlldyBjb21wb25lbnQsIHdoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgc2luZ2xlIGRhdGUgY2hhbmdlZFxuICAgICAqL1xuICAgIHNlbGVjdGVkRGF0ZUNoYW5nZWQoZGF0ZTogRCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoZGF0ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQoZGF0ZSk7XG4gICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhci5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHRyaWdnZXJlZCBieSBldmVudHMgZnJvbSBkYXkgdmlldyBjb21wb25lbnQsIHdoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgcmFuZ2UgZGF0ZSBjaGFuZ2VkXG4gICAgICovXG4gICAgc2VsZWN0ZWRSYW5nZURhdGVDaGFuZ2VkKGRhdGVzOiBEYXRlUmFuZ2U8RD4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRhdGVzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlID0geyBzdGFydDogZGF0ZXMuc3RhcnQsIGVuZDogZGF0ZXMuZW5kIH07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGhhbmRsZXMgbmV4dCBhcnJvdyBpY29uIGNsaWNrLCBkZXBlbmRpbmcgb24gY3VycmVudCB2aWV3IGl0IGNoYW5nZXMgbW9udGgsIHllYXIgb3IgbGlzdCBvZiB5ZWFycyAqL1xuICAgIGhhbmRsZU5leHRBcnJvd0NsaWNrKCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0WWVhcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmV4dFllYXJMaXN0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZ2dyZWdhdGVkWWVhcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmV4dFllYXJzTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBwcmV2aW91cyBhcnJvdyBpY29uIGNsaWNrLCBkZXBlbmRpbmcgb24gY3VycmVudCB2aWV3IGl0IGNoYW5nZXMgbW9udGgsIHllYXIgb3IgbGlzdCBvZiB5ZWFycyAqL1xuICAgIGhhbmRsZVByZXZpb3VzQXJyb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzWWVhcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNZZWFyTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWdncmVnYXRlZFllYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzWWVhcnNMaXN0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0TmF2aWdhdGlvbkJ1dHRvbnNTdGF0ZXMoKTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbCB2aWV3IHRvIG5leHQgbW9udGggKi9cbiAgICBkaXNwbGF5TmV4dE1vbnRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudGx5RGlzcGxheWVkLm1vbnRoID09PSAxMikge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0geyB5ZWFyOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhciArIDEsIG1vbnRoOiAxIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIsXG4gICAgICAgICAgICAgICAgbW9udGg6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCArIDFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbCB2aWV3IHRvIHByZXZpb3VzIG1vbnRoICovXG4gICAgZGlzcGxheVByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggPD0gMSkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0geyB5ZWFyOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhciAtIDEsIG1vbnRoOiAxMiB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC55ZWFyLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggLSAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWwgdmlldyB0byBuZXh0IHllYXIgKi9cbiAgICBkaXNwbGF5TmV4dFllYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHsgbW9udGg6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCwgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIgKyAxIH07XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWwgdmlldyB0byBwcmV2aW91cyB5ZWFyICovXG4gICAgZGlzcGxheVByZXZpb3VzWWVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0geyBtb250aDogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLm1vbnRoLCB5ZWFyOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhciAtIDEgfTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbGx5IGRpc3BsYXllZCBsaXN0IG9mIHllYXIgdG8gbmV4dCB5ZWFyIGxpc3QqL1xuICAgIGRpc3BsYXlOZXh0WWVhckxpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3llYXJWaWV3Q29tcG9uZW50LmxvYWROZXh0WWVhckxpc3QoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgbW9udGg6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCxcbiAgICAgICAgICAgIHllYXI6IHRoaXMuX3llYXJWaWV3Q29tcG9uZW50Ll9maXJzdFllYXJJbkxpc3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbGx5IGRpc3BsYXllZCBsaXN0IG9mIHllYXIgdG8gcHJldmlvdXMgeWVhciBsaXN0Ki9cbiAgICBkaXNwbGF5UHJldmlvdXNZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5feWVhclZpZXdDb21wb25lbnQubG9hZFByZXZpb3VzWWVhckxpc3QoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgbW9udGg6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCxcbiAgICAgICAgICAgIHllYXI6IHRoaXMuX3llYXJWaWV3Q29tcG9uZW50Ll9maXJzdFllYXJJbkxpc3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbGx5IGRpc3BsYXllZCBsaXN0IG9mIHllYXIgdG8gbmV4dCB5ZWFyIGxpc3QqL1xuICAgIGRpc3BsYXlOZXh0WWVhcnNMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQubG9hZE5leHRZZWFyc0xpc3QoKTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gc3dpdGNoIGFjdHVhbGx5IGRpc3BsYXllZCBsaXN0IG9mIHllYXIgdG8gcHJldmlvdXMgeWVhciBsaXN0Ki9cbiAgICBkaXNwbGF5UHJldmlvdXNZZWFyc0xpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudC5sb2FkUHJldmlvdXNZZWFyc0xpc3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0aGF0IGFsbG93cyB0byBjaGFuZ2UgY3VycmVudGx5IGRpc3BsYXllZCBtb250aC95ZWFyIGNvbmZpZ3VyYXRpb24sXG4gICAgICogd2hpY2ggYXJlIGNvbm5lY3RlZCB0byBkYXlzIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHNldEN1cnJlbnRseURpc3BsYXllZChkYXRlOiBOdWxsYWJsZTxEPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgICAgICBtb250aDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoKGRhdGUhKSxcbiAgICAgICAgICAgICAgICB5ZWFyOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcihkYXRlISlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5pdGlhbCBmb2N1cyBvbiBvbmUgb2YgdGhlIGNhbGVuZGFyJ3MgZWxlbWVudFxuICAgICAqL1xuICAgIGluaXRpYWxGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2V0QWN0aXZlRm9jdXNhYmxlVmlldygpPy5zZXRGb2N1c09uQ2VsbCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IGhhbmRsZXMgY2hhbmdlcyBmcm9tIG1vbnRoIHZpZXcgY2hpbGQgY29tcG9uZW50LCBjaGFuZ2VzIGFjdHVhbCB2aWV3IGFuZCBjaGFuZ2VzIGN1cnJlbnRseSBkaXNwbGF5ZWQgbW9udGhcbiAgICAgKi9cbiAgICBoYW5kbGVNb250aFZpZXdDaGFuZ2UobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7IG1vbnRoLCB5ZWFyOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhciB9O1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5JztcbiAgICAgICAgdGhpcy5vbkRheXNWaWV3U2VsZWN0ZWQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3Q2hhbmdlLmVtaXQodGhpcy5hY3RpdmVWaWV3KTtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0IHllYXIgKi9cbiAgICBzZWxlY3RlZFllYXIoeWVhclNlbGVjdGVkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheSc7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC55ZWFyID0geWVhclNlbGVjdGVkO1xuICAgICAgICB0aGlzLm9uRGF5c1ZpZXdTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3QgeWVhciByYW5nZSAqL1xuICAgIHNlbGVjdGVkWWVhcnMoeWVhcnNTZWxlY3RlZDogQWdncmVnYXRlZFllYXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXInO1xuICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQsXG4gICAgICAgICAgICB5ZWFyOiB5ZWFyc1NlbGVjdGVkLnN0YXJ0WWVhclxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uWWVhclZpZXdTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXlzVmlld1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX2RheVZpZXdDb21wb25lbnQ/LnNldEZvY3VzT25DZWxsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbk1vbnRoVmlld1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX21vbnRoVmlld0NvbXBvbmVudD8uc2V0Rm9jdXNPbkNlbGwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uWWVhclZpZXdTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl95ZWFyVmlld0NvbXBvbmVudD8uc2V0Rm9jdXNPbkNlbGwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uWWVhcnNSYW5nZVZpZXdTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQ/LnNldEZvY3VzT25DZWxsKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGlmIG1vZGVsIHNlbGVjdGVkIGRhdGUvZGF0ZXMgaGF2ZSBwcm9wZXJseSB0eXBlcyBhbmQgYXJlIHZhbGlkICovXG4gICAgaXNNb2RlbFZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5jYWxUeXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jYWxUeXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlLnN0YXJ0KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUuZW5kKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmxvY2FsZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGFwdGVyU3RhcnRpbmdEYXlPZldlZWsgPSAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldEZpcnN0RGF5T2ZXZWVrKCkgKyAxKSBhcyBEYXlzT2ZXZWVrO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgc2V0cyB1cCB0aGUgY3VycmVudGx5IGRpc3BsYXllZCB2YXJpYWJsZXMsIGxpa2Ugc2hvd24gbW9udGggYW5kIHllYXIuXG4gICAgICogRGF5IGdyaWQgaXMgYmFzZWQgb24gY3VycmVudGx5IGRpc3BsYXllZCBtb250aCBhbmQgeWVhclxuICAgICAqL1xuICAgIHByaXZhdGUgX3ByZXBhcmVEaXNwbGF5ZWRWaWV3KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jYWxUeXBlID09PSAnc2luZ2xlJyAmJiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLnNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcih0aGlzLnNlbGVjdGVkRGF0ZSksXG4gICAgICAgICAgICAgICAgbW9udGg6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0aGlzLnNlbGVjdGVkRGF0ZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlLnN0YXJ0KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5zdGFydCksXG4gICAgICAgICAgICAgICAgbW9udGg6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlLnN0YXJ0KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlICYmIHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUuZW5kKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5lbmQpLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5lbmQpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9kYXkgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIudG9kYXkoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcih0b2RheSksXG4gICAgICAgICAgICAgICAgbW9udGg6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0b2RheSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEFjdGl2ZUZvY3VzYWJsZVZpZXcoKTogRm9jdXNhYmxlQ2FsZW5kYXJWaWV3IHwgbnVsbCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmVWaWV3KSB7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXlWaWV3Q29tcG9uZW50O1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aFZpZXdDb21wb25lbnQ7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5feWVhclZpZXdDb21wb25lbnQ7XG4gICAgICAgICAgICBjYXNlICdhZ2dyZWdhdGVkWWVhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpb3VzQnV0dG9uRGlzYWJsZWQgPVxuICAgICAgICAgICAgdHlwZW9mIHRoaXMucHJldmlvdXNCdXR0b25EaXNhYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNCdXR0b25EaXNhYmxlRnVuY3Rpb24odGhpcy5zZWxlY3RlZERhdGUsIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCwgdGhpcy5hY3RpdmVWaWV3KTtcbiAgICAgICAgdGhpcy5uZXh0QnV0dG9uRGlzYWJsZWQgPVxuICAgICAgICAgICAgdHlwZW9mIHRoaXMubmV4dEJ1dHRvbkRpc2FibGVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgdGhpcy5uZXh0QnV0dG9uRGlzYWJsZUZ1bmN0aW9uKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQsIHRoaXMuYWN0aXZlVmlldyk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZmQtY2FsZW5kYXItaGVhZGVyXG4gICAgW2N1cnJlbnRseURpc3BsYXllZF09XCJfY3VycmVudGx5RGlzcGxheWVkXCJcbiAgICBbYWN0aXZlVmlld109XCJhY3RpdmVWaWV3XCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtjYWxlbmRhclllYXJHcmlkXT1cInllYXJHcmlkXCJcbiAgICAoY2xvc2VDbGlja2VkKT1cImNsb3NlQ2xpY2tlZC5lbWl0KClcIlxuICAgIChuZXh0Q2xpY2tlZCk9XCJoYW5kbGVOZXh0QXJyb3dDbGljaygpXCJcbiAgICAocHJldmlvdXNDbGlja2VkKT1cImhhbmRsZVByZXZpb3VzQXJyb3dDbGljaygpXCJcbiAgICBbcHJldmlvdXNCdXR0b25EaXNhYmxlZF09XCJwcmV2aW91c0J1dHRvbkRpc2FibGVkXCJcbiAgICBbbmV4dEJ1dHRvbkRpc2FibGVkXT1cIm5leHRCdXR0b25EaXNhYmxlZFwiXG4gICAgKGFjdGl2ZVZpZXdDaGFuZ2UpPVwiaGFuZGxlQWN0aXZlVmlld0NoYW5nZSgkZXZlbnQpXCJcbj48L2ZkLWNhbGVuZGFyLWhlYWRlcj5cbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjdGl2ZVZpZXdcIiAqbmdJZj1cIl9jdXJyZW50bHlEaXNwbGF5ZWRcIj5cbiAgICA8ZmQtY2FsZW5kYXItZGF5LXZpZXdcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXknXCJcbiAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVcIlxuICAgICAgICBbc2hvd1dlZWtOdW1iZXJzXT1cInNob3dXZWVrTnVtYmVyc1wiXG4gICAgICAgIFttYXJrV2Vla2VuZHNdPVwibWFya1dlZWtlbmRzXCJcbiAgICAgICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJzZWxlY3RlZERhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWRSYW5nZURhdGVdPVwic2VsZWN0ZWRSYW5nZURhdGVcIlxuICAgICAgICAoc2VsZWN0ZWRSYW5nZURhdGVDaGFuZ2UpPVwic2VsZWN0ZWRSYW5nZURhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbY3VycmVudGx5RGlzcGxheWVkXT1cIl9jdXJyZW50bHlEaXNwbGF5ZWRcIlxuICAgICAgICBbc3RhcnRpbmdEYXlPZldlZWtdPVwiZ2V0V2Vla1N0YXJ0RGF5KClcIlxuICAgICAgICBbZGlzYWJsZUZ1bmN0aW9uXT1cImRpc2FibGVGdW5jdGlvblwiXG4gICAgICAgIFtkaXNhYmxlUmFuZ2VFbmRGdW5jdGlvbl09XCJkaXNhYmxlUmFuZ2VFbmRGdW5jdGlvblwiXG4gICAgICAgIFtkaXNhYmxlUmFuZ2VTdGFydEZ1bmN0aW9uXT1cImRpc2FibGVSYW5nZVN0YXJ0RnVuY3Rpb25cIlxuICAgICAgICBbY2FsVHlwZV09XCJjYWxUeXBlXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW3JhbmdlSG92ZXJFZmZlY3RdPVwicmFuZ2VIb3ZlckVmZmVjdFwiXG4gICAgICAgIFtzcGVjaWFsRGF5c1J1bGVzXT1cInNwZWNpYWxEYXlzUnVsZXNcIlxuICAgICAgICBbZm9jdXNFc2NhcGVGdW5jdGlvbl09XCJlc2NhcGVGb2N1c0Z1bmN0aW9uXCJcbiAgICAgICAgKG5leHRNb250aFNlbGVjdCk9XCJkaXNwbGF5TmV4dE1vbnRoKClcIlxuICAgICAgICAocHJldmlvdXNNb250aFNlbGVjdCk9XCJkaXNwbGF5UHJldmlvdXNNb250aCgpXCJcbiAgICA+PC9mZC1jYWxlbmRhci1kYXktdmlldz5cbiAgICA8ZmQtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRoJ1wiXG4gICAgICAgIFttb250aFNlbGVjdGVkXT1cIl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGhcIlxuICAgICAgICBbeWVhcl09XCJfY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICBbZm9jdXNFc2NhcGVGdW5jdGlvbl09XCJlc2NhcGVGb2N1c0Z1bmN0aW9uXCJcbiAgICAgICAgKG1vbnRoQ2xpY2tlZCk9XCJoYW5kbGVNb250aFZpZXdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvZmQtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8ZmQtY2FsZW5kYXIteWVhci12aWV3XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIlxuICAgICAgICBbeWVhclNlbGVjdGVkXT1cIl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhclwiXG4gICAgICAgIFt5ZWFyVmlld0dyaWRdPVwieWVhckdyaWRcIlxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICBbZm9jdXNFc2NhcGVGdW5jdGlvbl09XCJlc2NhcGVGb2N1c0Z1bmN0aW9uXCJcbiAgICAgICAgKHllYXJDbGlja2VkKT1cInNlbGVjdGVkWWVhcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9mZC1jYWxlbmRhci15ZWFyLXZpZXc+XG4gICAgPGZkLWNhbGVuZGFyLWFnZ3JlZ2F0ZWQteWVhci12aWV3XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInYWdncmVnYXRlZFllYXInXCJcbiAgICAgICAgKHllYXJzQ2xpY2tlZCk9XCJzZWxlY3RlZFllYXJzKCRldmVudClcIlxuICAgICAgICBbeWVhclNlbGVjdGVkXT1cIl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhclwiXG4gICAgICAgIFt5ZWFyVmlld0dyaWRdPVwieWVhckdyaWRcIlxuICAgICAgICBbYWdncmVnYXRlZFllYXJzVmlld0dyaWRdPVwiYWdncmVnYXRlZFllYXJHcmlkXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW2ZvY3VzRXNjYXBlRnVuY3Rpb25dPVwiZXNjYXBlRm9jdXNGdW5jdGlvblwiXG4gICAgPlxuICAgIDwvZmQtY2FsZW5kYXItYWdncmVnYXRlZC15ZWFyLXZpZXc+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
624
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdyRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDbEMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0ZBQXdGLENBQUM7QUFDN0ksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VB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LEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLEVBQUU7c0JBREQsS0FBSztnQkFXTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBV04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtHLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLRSxrQkFBa0I7c0JBRDFCLE1BQU07Z0JBS0UsdUJBQXVCO3NCQUQvQixNQUFNO2dCQUtFLGlCQUFpQjtzQkFEekIsTUFBTTtnQkFLRSxhQUFhO3NCQURyQixNQUFNO2dCQUtFLFlBQVk7c0JBRHBCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLHdCQUF3QjtnQkFLbkMsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLDBCQUEwQjtnQkFLckMsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLHlCQUF5QjtnQkFLcEMsNEJBQTRCO3NCQUQzQixTQUFTO3VCQUFDLG1DQUFtQztnQkFLOUMsd0JBQXdCO3NCQUR2QixTQUFTO3VCQUFDLHVCQUF1QjtnQkFVbEMsNkJBQTZCO3NCQUQ1QixLQUFLO2dCQVVOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkE4Q04sbUJBQW1CO3NCQURsQixLQUFLO2dCQVdOLGVBQWU7c0JBRGQsS0FBSztnQkFRTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBUU4sdUJBQXVCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgREFURV9USU1FX0ZPUk1BVFMsIERhdGV0aW1lQWRhcHRlciwgRGF0ZVRpbWVGb3JtYXRzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IFNwZWNpYWxEYXlSdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7IE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLFxuICAgIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVyc1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZEX0xBTkdVQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvciB9IGZyb20gJy4vY2FsZW5kYXItZXJyb3JzJztcbmltcG9ydCB7IENhbGVuZGFySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1oZWFkZXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckFnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItdmlld3MvY2FsZW5kYXItYWdncmVnYXRlZC15ZWFyLXZpZXcvY2FsZW5kYXItYWdncmVnYXRlZC15ZWFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyRGF5Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItdmlld3MvY2FsZW5kYXItZGF5LXZpZXcvY2FsZW5kYXItZGF5LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyTW9udGhWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci12aWV3cy9jYWxlbmRhci1tb250aC12aWV3L2NhbGVuZGFyLW1vbnRoLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyWWVhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLXZpZXdzL2NhbGVuZGFyLXllYXItdmlldy9jYWxlbmRhci15ZWFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBBZ2dyZWdhdGVkWWVhciB9IGZyb20gJy4vbW9kZWxzL2FnZ3JlZ2F0ZWQteWVhcic7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuL21vZGVscy9jYWxlbmRhci1jdXJyZW50JztcbmltcG9ydCB7IENhbGVuZGFyWWVhckdyaWQgfSBmcm9tICcuL21vZGVscy9jYWxlbmRhci15ZWFyLWdyaWQnO1xuaW1wb3J0IHsgRGlzYWJsZURhdGVGdW5jdGlvbiwgRXNjYXBlRm9jdXNGdW5jdGlvbiwgRm9jdXNhYmxlQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi9tb2RlbHMvY29tbW9uJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vbW9kZWxzL2RhdGUtcmFuZ2UnO1xuaW1wb3J0IHsgcGF0Y2hEZXByZWNhdGVkSTE4bkxhYmVscyB9IGZyb20gJy4vcGF0Y2gtZGVwcmVjYXRlZC1pMThuLWxhYmVscyc7XG5pbXBvcnQgeyBDYWxlbmRhclR5cGUsIERheXNPZldlZWssIEZkQ2FsZW5kYXJWaWV3LCBOYXZpZ2F0aW9uQnV0dG9uRGlzYWJsZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmxldCBjYWxlbmRhclVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBNb250aHM6IDEgPSBKYW51YXJ5LCAxMiA9IGRlY2VtYmVyLlxuICogRGF5czogMSA9IFN1bmRheSwgNyA9IFNhdHVyZGF5XG4gKlxuICogQ2FsZW5kYXIgY29tcG9uZW50IHVzZWQgZm9yIHNlbGVjdGluZyBkYXRlcywgdHlwaWNhbGx5IHVzZWQgYnkgdGhlIERhdGVQaWNrZXIgYW5kIERhdGVUaW1lUGlja2VyIGNvbXBvbmVudHMuXG4gKiBTdXBwb3J0cyB0aGUgQW5ndWxhciBmb3JtcyBtb2R1bGUsIGVuYWJsaW5nIGZvcm0gdmFsaWRpdHksIG5nTW9kZWwsIGV0Yy5cbiAqIGBgYGh0bWxcbiAqIDxmZC1jYWxlbmRhcj48L2ZkLWNhbGVuZGFyPlxuICogYGBgXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDYWxlbmRhckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2FsZW5kYXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ2FsZW5kYXJTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0xBTkdVQUdFLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogcGF0Y2hEZXByZWNhdGVkSTE4bkxhYmVsc1xuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZm9jdXNvdXQpJzogJ19mb2N1c091dCgkZXZlbnQpJyxcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgICAgIGNsYXNzOiAnZmQtY2FsZW5kYXIgZmQtaGFzLWRpc3BsYXktYmxvY2snXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29udGVudERlbnNpdHlNb2R1bGUsXG4gICAgICAgIENhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBDYWxlbmRhckRheVZpZXdDb21wb25lbnQsXG4gICAgICAgIENhbGVuZGFyTW9udGhWaWV3Q29tcG9uZW50LFxuICAgICAgICBDYWxlbmRhclllYXJWaWV3Q29tcG9uZW50LFxuICAgICAgICBDYWxlbmRhckFnZ3JlZ2F0ZWRZZWFyVmlld0NvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95IHtcbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlIG1vZGVsIGluIHNpbmdsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWREYXRlOiBOdWxsYWJsZTxEPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byBtYXJrIHN1bmRheS9zYXR1cmRheSB3aXRoIGBmZC1jYWxlbmRhcl9faXRlbS0td2Vla2VuZGAgY2xhc3NcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1hcmtXZWVrZW5kcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHVzZXIgd2FudHMgdG8gc2hvdyB3ZWVrIG51bWJlcnMgbmV4dCB0byBkYXlzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93V2Vla051bWJlcnMgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGNhbGVuZGFyIGlzIHVzZWQgaW5zaWRlIG1vYmlsZSBpbiBsYW5kc2NhcGUgbW9kZSwgaXQgYWxzbyBhZGRzIGNsb3NlIGJ1dHRvbiBvbiByaWdodCBzaWRlICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWNhbGVuZGFyLS1tb2JpbGUtbGFuZHNjYXBlJylcbiAgICBtb2JpbGVMYW5kc2NhcGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGNhbGVuZGFyIGlzIHVzZWQgaW5zaWRlIG1vYmlsZSBpbiBwb3J0cmFpdCBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWNhbGVuZGFyLS1tb2JpbGUtcG9ydHJhaXQnKVxuICAgIG1vYmlsZVBvcnRyYWl0ID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBGZERhdGVzIG1vZGVsIHN0YXJ0IGFuZCBlbmQgaW4gcmFuZ2UgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkUmFuZ2VEYXRlOiBEYXRlUmFuZ2U8RD47XG5cbiAgICAvKiogQWN0dWFsbHkgc2hvd24gYWN0aXZlIHZpZXcgb25lIG9mICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICAgIC8qKiBUaGUgZGF5IG9mIHRoZSB3ZWVrIHRoZSBjYWxlbmRhciBzaG91bGQgc3RhcnQgb24uIDEgcmVwcmVzZW50cyBTdW5kYXksIDIgaXMgTW9uZGF5LCAzIGlzIFR1ZXNkYXksIGFuZCBzbyBvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXJ0aW5nRGF5T2ZXZWVrOiBEYXlzT2ZXZWVrO1xuXG4gICAgLyoqIFRoZSB0eXBlIG9mIGNhbGVuZGFyLCAnc2luZ2xlJyBmb3Igc2luZ2xlIGRhdGUgc2VsZWN0aW9uIG9yICdyYW5nZScgZm9yIGEgcmFuZ2Ugb2YgZGF0ZXMuICovXG4gICAgQElucHV0KClcbiAgICBjYWxUeXBlOiBDYWxlbmRhclR5cGUgPSAnc2luZ2xlJztcblxuICAgIC8qKiBJZCBvZiB0aGUgY2FsZW5kYXIuIElmIG5vbmUgaXMgcHJvdmlkZWQsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkID0gJ2ZkLWNhbGVuZGFyLScgKyBjYWxlbmRhclVuaXF1ZUlkKys7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWFsIGRheXMgbWFyaywgaXQgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhcnJheSBvZiBvYmplY3Qgd2l0aFxuICAgICAqIFNwZWNpYWwgZGF5IG51bWJlciwgbGlzdCAxLTIwIFtjbGFzczpgZmQtY2FsZW5kYXJfX2l0ZW0tLWxlZ2VuZC17e251bWJlcn19YF0gaXMgYXZhaWxhYmxlIHRoZXJlOlxuICAgICAqIGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9mdW5kYW1lbnRhbC1zdHlsZXMvY29tcG9uZW50cy9jYWxlbmRhci5odG1sIGNhbGVuZGFyIHNwZWNpYWwgZGF5cyBzZWN0aW9uXG4gICAgICogUnVsZSBhY2NlcHRzIG1ldGhvZCB3aXRoIEQgb2JqZWN0IGFzIGEgcGFyYW1ldGVyLiBleDpcbiAgICAgKiBgcnVsZTogKGZkRGF0ZTogRCkgPT4gZmREYXRlLmdldERheSgpID09PSAxYCwgd2hpY2ggd2lsbCBtYXJrIGFsbCBzdW5kYXlzIGFzIHNwZWNpYWwgZGF5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3BlY2lhbERheXNSdWxlczogU3BlY2lhbERheVJ1bGU8RD5bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSB5ZWFyIGdyaWQsXG4gICAgICogUm93LCBDb2x1bW5zIGFuZCBtZXRob2QgdG8gZGlzcGxheSB5ZWFyIGNhbiBiZSBtb2RpZmllZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQgPSB7XG4gICAgICAgIHJvd3M6IDQsXG4gICAgICAgIGNvbHM6IDVcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSBhZ2dyZWdhdGVkIHllYXIgZ3JpZCxcbiAgICAgKiBSb3csIENvbHVtbnMgYW5kIG1ldGhvZCB0byBkaXNwbGF5IHllYXIgY2FuIGJlIG1vZGlmaWVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhZ2dyZWdhdGVkWWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQgPSB7XG4gICAgICAgIHJvd3M6IDQsXG4gICAgICAgIGNvbHM6IDNcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIG1hcmsgZGF5IGNlbGxzIG9uIGhvdmVyLlxuICAgICAqIFdvcmtzIG9ubHkgb24gcmFuZ2UgbW9kZSwgd2hlbiBzdGFydCBkYXRlIGlzIHNlbGVjdGVkIG9uIERheSBWaWV3LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmFuZ2VIb3ZlckVmZmVjdCA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biBldmVyeSB0aW1lIGFjdGl2ZSB2aWV3IGlzIGNoYW5nZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhY3RpdmVWaWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gZXZlcnkgdGltZSBzZWxlY3RlZCBkYXRlIGluIHNpbmdsZSBtb2RlIGlzIGNoYW5nZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWxlY3RlZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEPiA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gZXZlcnkgdGltZSBzZWxlY3RlZCBmaXJzdCBvciBsYXN0IGRhdGUgaW4gcmFuZ2UgbW9kZSBpcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VsZWN0ZWRSYW5nZURhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2U8RD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2U8RD4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIGV2ZXJ5IHRpbWUgd2hlbiB2YWx1ZSBpcyBvdmVyd3JpdHRlbiBmcm9tIG91dHNpZGUgYW5kIHRocm93IGJhY2sgaXNWYWxpZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGlzVmFsaWREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIGV2ZXJ5IHRpbWUgd2hlbiBjYWxlbmRhciBzaG91bGQgYmUgY2xvc2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2xvc2VDYWxlbmRhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biwgd2hlbiBjbG9zZSBidXR0b24gaXMgY2xpY2tlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNsb3NlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhbGVuZGFyRGF5Vmlld0NvbXBvbmVudClcbiAgICBfZGF5Vmlld0NvbXBvbmVudDogQ2FsZW5kYXJEYXlWaWV3Q29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhbGVuZGFyTW9udGhWaWV3Q29tcG9uZW50KVxuICAgIF9tb250aFZpZXdDb21wb25lbnQ6IENhbGVuZGFyTW9udGhWaWV3Q29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhbGVuZGFyWWVhclZpZXdDb21wb25lbnQpXG4gICAgX3llYXJWaWV3Q29tcG9uZW50OiBDYWxlbmRhclllYXJWaWV3Q29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhbGVuZGFyQWdncmVnYXRlZFllYXJWaWV3Q29tcG9uZW50KVxuICAgIF9hZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQ6IENhbGVuZGFyQWdncmVnYXRlZFllYXJWaWV3Q29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhbGVuZGFySGVhZGVyQ29tcG9uZW50KVxuICAgIF9jYWxlbmRhckhlYWRlckNvbXBvbmVudDogQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD47XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRpc2FibGUgcHJldmlvdXMgYnV0dG9uIGluIHRoZSBjYWxlbmRhciBoZWFkZXIuXG4gICAgICogQHBhcmFtIGRhdGUgc2VsZWN0ZWQgZGF0ZVxuICAgICAqIEBwYXJhbSBjdXJyZW50bHlEaXNwbGF5ZWREYXRlIGN1cnJlbnRseSBkaXNwbGF5ZWQgZGF0ZVxuICAgICAqIEBwYXJhbSBhY3RpdmVWaWV3IGN1cnJlbnQgdmlldyBvZiBjYWxlbmRhclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJldmlvdXNCdXR0b25EaXNhYmxlRnVuY3Rpb246IE5hdmlnYXRpb25CdXR0b25EaXNhYmxlRnVuY3Rpb248RD47XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRpc2FibGUgbmV4dCBidXR0b24gaW4gdGhlIGNhbGVuZGFyIGhlYWRlci5cbiAgICAgKiBAcGFyYW0gZGF0ZSBzZWxlY3RlZCBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJlbnRseURpc3BsYXllZERhdGUgY3VycmVudGx5IGRpc3BsYXllZCBkYXRlXG4gICAgICogQHBhcmFtIGFjdGl2ZVZpZXcgY3VycmVudCB2aWV3IG9mIGNhbGVuZGFyXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuZXh0QnV0dG9uRGlzYWJsZUZ1bmN0aW9uOiBOYXZpZ2F0aW9uQnV0dG9uRGlzYWJsZUZ1bmN0aW9uPEQ+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEN1cnJlbnRseSBkaXNwbGF5ZWQgZGF5cyBkZXBlbmRpbmcgb24gbW9udGggYW5kIHllYXJcbiAgICAgKi9cbiAgICBfY3VycmVudGx5RGlzcGxheWVkOiBDYWxlbmRhckN1cnJlbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByZXZpb3VzQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5leHRCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRhcHRlclN0YXJ0aW5nRGF5T2ZXZWVrOiBEYXlzT2ZXZWVrO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgLy8gVXNlIEBPcHRpb25hbCB0byBhdm9pZCBhbmd1bGFyIGluamVjdGlvbiBlcnJvciBtZXNzYWdlIGFuZCB0aHJvdyBvdXIgb3duIHdoaWNoIGlzIG1vcmUgcHJlY2lzZSBvbmVcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RBVEVfVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgICAgIC8vIHNldCBkZWZhdWx0IHZhbHVlXG4gICAgICAgIHRoaXMuX2FkYXB0ZXJTdGFydGluZ0RheU9mV2VlayA9ICh0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0Rmlyc3REYXlPZldlZWsoKSArIDEpIGFzIERheXNPZldlZWs7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnRvZGF5KCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogVGhhdCBhbGxvd3MgdG8gZGVmaW5lIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGhhcHBlbiwgd2hlbiBmb2N1cyBzaG91bGQgbm9ybWFsbHkgZXNjYXBlIG9mIGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXNjYXBlRm9jdXNGdW5jdGlvbjogRXNjYXBlRm9jdXNGdW5jdGlvbiA9IChldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFySGVhZGVyQ29tcG9uZW50Py5mb2N1cygpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRpc2FibGUgY2VydGFpbiBkYXRlcyBpbiB0aGUgY2FsZW5kYXIuXG4gICAgICogQHBhcmFtIGRhdGUgZGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZUZ1bmN0aW9uOiBEaXNhYmxlRGF0ZUZ1bmN0aW9uPEQ+ID0gKCkgPT4gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRpc2FibGUgY2VydGFpbiBkYXRlcyBpbiB0aGUgY2FsZW5kYXIgZm9yIHRoZSByYW5nZSBzdGFydCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIGRhdGUgZGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVJhbmdlU3RhcnRGdW5jdGlvbjogRGlzYWJsZURhdGVGdW5jdGlvbjxEPiA9ICgpID0+IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdXNlZCB0byBkaXNhYmxlIGNlcnRhaW4gZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIGZvciB0aGUgcmFuZ2UgZW5kIHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZGF0ZSBkYXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlUmFuZ2VFbmRGdW5jdGlvbjogRGlzYWJsZURhdGVGdW5jdGlvbjxEPiA9ICgpID0+IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKF86IEQgfCBEYXRlUmFuZ2U8RD4pID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmVwYXJlRGlzcGxheWVkVmlldygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAnbmV4dEJ1dHRvbkRpc2FibGVGdW5jdGlvbicgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ3ByZXZpb3VzQnV0dG9uRGlzYWJsZUZ1bmN0aW9uJyBpbiBjaGFuZ2VzIHx8XG4gICAgICAgICAgICAnX2N1cnJlbnRseURpc3BsYXllZCcgaW4gY2hhbmdlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFdlZWtTdGFydERheSgpOiBEYXlzT2ZXZWVrIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRpbmdEYXlPZldlZWsgPT09IHVuZGVmaW5lZCA/IHRoaXMuX2FkYXB0ZXJTdGFydGluZ0RheU9mV2VlayA6IHRoaXMuc3RhcnRpbmdEYXlPZldlZWs7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHRoYXQgYWxsb3dzIHRvIHVzZSBbKG5nTW9kZWwpXSBvciBmb3Jtcy5cbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHNlbGVjdGVkOiBEYXRlUmFuZ2U8RD4gfCBEKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FsVHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gPEQ+c2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIHZhbGlkID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoc2VsZWN0ZWQpO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2FsVHlwZSA9PT0gJ3JhbmdlJyAmJiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSA8RGF0ZVJhbmdlPEQ+PnNlbGVjdGVkO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHNlbGVjdGVkLnN0YXJ0KSB8fCAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQoc2VsZWN0ZWQuZW5kKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUgPSB7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IHNlbGVjdGVkLnN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogc2VsZWN0ZWQuZW5kXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlRGlzcGxheWVkVmlldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuaXNWYWxpZERhdGVDaGFuZ2UuZW1pdCh2YWxpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBWYWxpZGF0b3IgSW50ZXJmYWNlLCBhZGRzIHZhbGlkYXRpb24gc3VwcG9ydCBmb3IgZm9ybXNcbiAgICAgKi9cbiAgICB2YWxpZGF0ZSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTW9kZWxWYWxpZCgpXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgZGF0ZVZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgaGFuZGxlIGFjdGl2ZSB2aWV3IGNoYW5nZSBhbmQgdGhyb3dzIGV2ZW50LlxuICAgICAqXG4gICAgICogRmlyZWQgYnkgY2FsZW5kYXIgaGVhZGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlKGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgICAgIGlmIChhY3RpdmVWaWV3ID09PSB0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IGFjdGl2ZVZpZXc7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3Q2hhbmdlLmVtaXQoYWN0aXZlVmlldyk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb250aFZpZXdTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpdmVWaWV3ID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIHRoaXMub25ZZWFyVmlld1NlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGl2ZVZpZXcgPT09ICdhZ2dyZWdhdGVkWWVhcicpIHtcbiAgICAgICAgICAgIHRoaXMub25ZZWFyc1JhbmdlVmlld1NlbGVjdGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXROYXZpZ2F0aW9uQnV0dG9uc1N0YXRlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgZXZlbnRzIGZyb20gZGF5IHZpZXcgY29tcG9uZW50LCB3aGVuIHRoZXJlIGlzIHNlbGVjdGVkIHNpbmdsZSBkYXRlIGNoYW5nZWRcbiAgICAgKi9cbiAgICBzZWxlY3RlZERhdGVDaGFuZ2VkKGRhdGU6IEQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLl9zZXROYXZpZ2F0aW9uQnV0dG9uc1N0YXRlcygpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgZXZlbnRzIGZyb20gZGF5IHZpZXcgY29tcG9uZW50LCB3aGVuIHRoZXJlIGlzIHNlbGVjdGVkIHJhbmdlIGRhdGUgY2hhbmdlZFxuICAgICAqL1xuICAgIHNlbGVjdGVkUmFuZ2VEYXRlQ2hhbmdlZChkYXRlczogRGF0ZVJhbmdlPEQ+KTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRlcykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRGF0ZSA9IHsgc3RhcnQ6IGRhdGVzLnN0YXJ0LCBlbmQ6IGRhdGVzLmVuZCB9O1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhci5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBoYW5kbGVzIG5leHQgYXJyb3cgaWNvbiBjbGljaywgZGVwZW5kaW5nIG9uIGN1cnJlbnQgdmlldyBpdCBjaGFuZ2VzIG1vbnRoLCB5ZWFyIG9yIGxpc3Qgb2YgeWVhcnMgKi9cbiAgICBoYW5kbGVOZXh0QXJyb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmV4dE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmV4dFllYXIoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU5leHRZZWFyTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWdncmVnYXRlZFllYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU5leHRZZWFyc0xpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXROYXZpZ2F0aW9uQnV0dG9uc1N0YXRlcygpO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGhhbmRsZXMgcHJldmlvdXMgYXJyb3cgaWNvbiBjbGljaywgZGVwZW5kaW5nIG9uIGN1cnJlbnQgdmlldyBpdCBjaGFuZ2VzIG1vbnRoLCB5ZWFyIG9yIGxpc3Qgb2YgeWVhcnMgKi9cbiAgICBoYW5kbGVQcmV2aW91c0Fycm93Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmVWaWV3KSB7XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzTW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c1llYXIoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVByZXZpb3VzWWVhckxpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FnZ3JlZ2F0ZWRZZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c1llYXJzTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25CdXR0b25zU3RhdGVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWwgdmlldyB0byBuZXh0IG1vbnRoICovXG4gICAgZGlzcGxheU5leHRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCA9PT0gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHsgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIgKyAxLCBtb250aDogMSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC55ZWFyLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggKyAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWwgdmlldyB0byBwcmV2aW91cyBtb250aCAqL1xuICAgIGRpc3BsYXlQcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudGx5RGlzcGxheWVkLm1vbnRoIDw9IDEpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHsgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIgLSAxLCBtb250aDogMTIgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhcixcbiAgICAgICAgICAgICAgICBtb250aDogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLm1vbnRoIC0gMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGFsbG93cyB0byBzd2l0Y2ggYWN0dWFsIHZpZXcgdG8gbmV4dCB5ZWFyICovXG4gICAgZGlzcGxheU5leHRZZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7IG1vbnRoOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGgsIHllYXI6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC55ZWFyICsgMSB9O1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGFsbG93cyB0byBzd2l0Y2ggYWN0dWFsIHZpZXcgdG8gcHJldmlvdXMgeWVhciAqL1xuICAgIGRpc3BsYXlQcmV2aW91c1llYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHsgbW9udGg6IHRoaXMuX2N1cnJlbnRseURpc3BsYXllZC5tb250aCwgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIgLSAxIH07XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWxseSBkaXNwbGF5ZWQgbGlzdCBvZiB5ZWFyIHRvIG5leHQgeWVhciBsaXN0Ki9cbiAgICBkaXNwbGF5TmV4dFllYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl95ZWFyVmlld0NvbXBvbmVudC5sb2FkTmV4dFllYXJMaXN0KCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGgsXG4gICAgICAgICAgICB5ZWFyOiB0aGlzLl95ZWFyVmlld0NvbXBvbmVudC5fZmlyc3RZZWFySW5MaXN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWxseSBkaXNwbGF5ZWQgbGlzdCBvZiB5ZWFyIHRvIHByZXZpb3VzIHllYXIgbGlzdCovXG4gICAgZGlzcGxheVByZXZpb3VzWWVhckxpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3llYXJWaWV3Q29tcG9uZW50LmxvYWRQcmV2aW91c1llYXJMaXN0KCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRseURpc3BsYXllZCA9IHtcbiAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQubW9udGgsXG4gICAgICAgICAgICB5ZWFyOiB0aGlzLl95ZWFyVmlld0NvbXBvbmVudC5fZmlyc3RZZWFySW5MaXN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWxseSBkaXNwbGF5ZWQgbGlzdCBvZiB5ZWFyIHRvIG5leHQgeWVhciBsaXN0Ki9cbiAgICBkaXNwbGF5TmV4dFllYXJzTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWdncmVnYXRlZFllYXJWaWV3Q29tcG9uZW50LmxvYWROZXh0WWVhcnNMaXN0KCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRvIHN3aXRjaCBhY3R1YWxseSBkaXNwbGF5ZWQgbGlzdCBvZiB5ZWFyIHRvIHByZXZpb3VzIHllYXIgbGlzdCovXG4gICAgZGlzcGxheVByZXZpb3VzWWVhcnNMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQubG9hZFByZXZpb3VzWWVhcnNMaXN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdGhhdCBhbGxvd3MgdG8gY2hhbmdlIGN1cnJlbnRseSBkaXNwbGF5ZWQgbW9udGgveWVhciBjb25maWd1cmF0aW9uLFxuICAgICAqIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gZGF5cyBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBzZXRDdXJyZW50bHlEaXNwbGF5ZWQoZGF0ZTogTnVsbGFibGU8RD4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgbW9udGg6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aChkYXRlISksXG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIoZGF0ZSEpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGluaXRpYWwgZm9jdXMgb24gb25lIG9mIHRoZSBjYWxlbmRhcidzIGVsZW1lbnRcbiAgICAgKi9cbiAgICBpbml0aWFsRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dldEFjdGl2ZUZvY3VzYWJsZVZpZXcoKT8uc2V0Rm9jdXNPbkNlbGwoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBoYW5kbGVzIGNoYW5nZXMgZnJvbSBtb250aCB2aWV3IGNoaWxkIGNvbXBvbmVudCwgY2hhbmdlcyBhY3R1YWwgdmlldyBhbmQgY2hhbmdlcyBjdXJyZW50bHkgZGlzcGxheWVkIG1vbnRoXG4gICAgICovXG4gICAgaGFuZGxlTW9udGhWaWV3Q2hhbmdlKG1vbnRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0geyBtb250aCwgeWVhcjogdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLnllYXIgfTtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheSc7XG4gICAgICAgIHRoaXMub25EYXlzVmlld1NlbGVjdGVkKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIFNlbGVjdCB5ZWFyICovXG4gICAgc2VsZWN0ZWRZZWFyKHllYXJTZWxlY3RlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdkYXknO1xuICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQueWVhciA9IHllYXJTZWxlY3RlZDtcbiAgICAgICAgdGhpcy5vbkRheXNWaWV3U2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0IHllYXIgcmFuZ2UgKi9cbiAgICBzZWxlY3RlZFllYXJzKHllYXJzU2VsZWN0ZWQ6IEFnZ3JlZ2F0ZWRZZWFyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICd5ZWFyJztcbiAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fY3VycmVudGx5RGlzcGxheWVkLFxuICAgICAgICAgICAgeWVhcjogeWVhcnNTZWxlY3RlZC5zdGFydFllYXJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblllYXJWaWV3U2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uRGF5c1ZpZXdTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9kYXlWaWV3Q29tcG9uZW50Py5zZXRGb2N1c09uQ2VsbCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Nb250aFZpZXdTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9tb250aFZpZXdDb21wb25lbnQ/LnNldEZvY3VzT25DZWxsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblllYXJWaWV3U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5feWVhclZpZXdDb21wb25lbnQ/LnNldEZvY3VzT25DZWxsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblllYXJzUmFuZ2VWaWV3U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fYWdncmVnYXRlZFllYXJWaWV3Q29tcG9uZW50Py5zZXRGb2N1c09uQ2VsbCgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBpZiBtb2RlbCBzZWxlY3RlZCBkYXRlL2RhdGVzIGhhdmUgcHJvcGVybHkgdHlwZXMgYW5kIGFyZSB2YWxpZCAqL1xuICAgIGlzTW9kZWxWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsVHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2FsVHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5zdGFydCkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlLmVuZClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlclN0YXJ0aW5nRGF5T2ZXZWVrID0gKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRGaXJzdERheU9mV2VlaygpICsgMSkgYXMgRGF5c09mV2VlaztcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHNldHMgdXAgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgdmFyaWFibGVzLCBsaWtlIHNob3duIG1vbnRoIGFuZCB5ZWFyLlxuICAgICAqIERheSBncmlkIGlzIGJhc2VkIG9uIGN1cnJlbnRseSBkaXNwbGF5ZWQgbW9udGggYW5kIHllYXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9wcmVwYXJlRGlzcGxheWVkVmlldygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsVHlwZSA9PT0gJ3NpbmdsZScgJiYgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGhpcy5zZWxlY3RlZERhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5zZWxlY3RlZERhdGUpLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodGhpcy5zZWxlY3RlZERhdGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUgJiYgdGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5zdGFydCkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUuc3RhcnQpLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZS5zdGFydClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhbmdlRGF0ZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VEYXRlLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUuZW5kKSxcbiAgICAgICAgICAgICAgICBtb250aDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoKHRoaXMuc2VsZWN0ZWRSYW5nZURhdGUuZW5kKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnRvZGF5KCk7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodG9kYXkpLFxuICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodG9kYXkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRBY3RpdmVGb2N1c2FibGVWaWV3KCk6IEZvY3VzYWJsZUNhbGVuZGFyVmlldyB8IG51bGwge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF5Vmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhWaWV3Q29tcG9uZW50O1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3llYXJWaWV3Q29tcG9uZW50O1xuICAgICAgICAgICAgY2FzZSAnYWdncmVnYXRlZFllYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZ2dyZWdhdGVkWWVhclZpZXdDb21wb25lbnQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXROYXZpZ2F0aW9uQnV0dG9uc1N0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0J1dHRvbkRpc2FibGVkID1cbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLnByZXZpb3VzQnV0dG9uRGlzYWJsZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzQnV0dG9uRGlzYWJsZUZ1bmN0aW9uKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLl9jdXJyZW50bHlEaXNwbGF5ZWQsIHRoaXMuYWN0aXZlVmlldyk7XG4gICAgICAgIHRoaXMubmV4dEJ1dHRvbkRpc2FibGVkID1cbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLm5leHRCdXR0b25EaXNhYmxlRnVuY3Rpb24gPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgIHRoaXMubmV4dEJ1dHRvbkRpc2FibGVGdW5jdGlvbih0aGlzLnNlbGVjdGVkRGF0ZSwgdGhpcy5fY3VycmVudGx5RGlzcGxheWVkLCB0aGlzLmFjdGl2ZVZpZXcpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZkLWNhbGVuZGFyLWhlYWRlclxuICAgIFtjdXJyZW50bHlEaXNwbGF5ZWRdPVwiX2N1cnJlbnRseURpc3BsYXllZFwiXG4gICAgW2FjdGl2ZVZpZXddPVwiYWN0aXZlVmlld1wiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbY2FsZW5kYXJZZWFyR3JpZF09XCJ5ZWFyR3JpZFwiXG4gICAgKGNsb3NlQ2xpY2tlZCk9XCJjbG9zZUNsaWNrZWQuZW1pdCgpXCJcbiAgICAobmV4dENsaWNrZWQpPVwiaGFuZGxlTmV4dEFycm93Q2xpY2soKVwiXG4gICAgKHByZXZpb3VzQ2xpY2tlZCk9XCJoYW5kbGVQcmV2aW91c0Fycm93Q2xpY2soKVwiXG4gICAgW3ByZXZpb3VzQnV0dG9uRGlzYWJsZWRdPVwicHJldmlvdXNCdXR0b25EaXNhYmxlZFwiXG4gICAgW25leHRCdXR0b25EaXNhYmxlZF09XCJuZXh0QnV0dG9uRGlzYWJsZWRcIlxuICAgIChhY3RpdmVWaWV3Q2hhbmdlKT1cImhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UoJGV2ZW50KVwiXG4+PC9mZC1jYWxlbmRhci1oZWFkZXI+XG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCIgKm5nSWY9XCJfY3VycmVudGx5RGlzcGxheWVkXCI+XG4gICAgPGZkLWNhbGVuZGFyLWRheS12aWV3XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiXG4gICAgICAgIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlXCJcbiAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJzaG93V2Vla051bWJlcnNcIlxuICAgICAgICBbbWFya1dlZWtlbmRzXT1cIm1hcmtXZWVrZW5kc1wiXG4gICAgICAgIChzZWxlY3RlZERhdGVDaGFuZ2UpPVwic2VsZWN0ZWREYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3NlbGVjdGVkUmFuZ2VEYXRlXT1cInNlbGVjdGVkUmFuZ2VEYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkUmFuZ2VEYXRlQ2hhbmdlKT1cInNlbGVjdGVkUmFuZ2VEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2N1cnJlbnRseURpc3BsYXllZF09XCJfY3VycmVudGx5RGlzcGxheWVkXCJcbiAgICAgICAgW3N0YXJ0aW5nRGF5T2ZXZWVrXT1cImdldFdlZWtTdGFydERheSgpXCJcbiAgICAgICAgW2Rpc2FibGVGdW5jdGlvbl09XCJkaXNhYmxlRnVuY3Rpb25cIlxuICAgICAgICBbZGlzYWJsZVJhbmdlRW5kRnVuY3Rpb25dPVwiZGlzYWJsZVJhbmdlRW5kRnVuY3Rpb25cIlxuICAgICAgICBbZGlzYWJsZVJhbmdlU3RhcnRGdW5jdGlvbl09XCJkaXNhYmxlUmFuZ2VTdGFydEZ1bmN0aW9uXCJcbiAgICAgICAgW2NhbFR5cGVdPVwiY2FsVHlwZVwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtyYW5nZUhvdmVyRWZmZWN0XT1cInJhbmdlSG92ZXJFZmZlY3RcIlxuICAgICAgICBbc3BlY2lhbERheXNSdWxlc109XCJzcGVjaWFsRGF5c1J1bGVzXCJcbiAgICAgICAgW2ZvY3VzRXNjYXBlRnVuY3Rpb25dPVwiZXNjYXBlRm9jdXNGdW5jdGlvblwiXG4gICAgICAgIChuZXh0TW9udGhTZWxlY3QpPVwiZGlzcGxheU5leHRNb250aCgpXCJcbiAgICAgICAgKHByZXZpb3VzTW9udGhTZWxlY3QpPVwiZGlzcGxheVByZXZpb3VzTW9udGgoKVwiXG4gICAgPjwvZmQtY2FsZW5kYXItZGF5LXZpZXc+XG4gICAgPGZkLWNhbGVuZGFyLW1vbnRoLXZpZXdcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIlxuICAgICAgICBbbW9udGhTZWxlY3RlZF09XCJfY3VycmVudGx5RGlzcGxheWVkLm1vbnRoXCJcbiAgICAgICAgW3llYXJdPVwiX2N1cnJlbnRseURpc3BsYXllZC55ZWFyXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW2ZvY3VzRXNjYXBlRnVuY3Rpb25dPVwiZXNjYXBlRm9jdXNGdW5jdGlvblwiXG4gICAgICAgIChtb250aENsaWNrZWQpPVwiaGFuZGxlTW9udGhWaWV3Q2hhbmdlKCRldmVudClcIlxuICAgID48L2ZkLWNhbGVuZGFyLW1vbnRoLXZpZXc+XG4gICAgPGZkLWNhbGVuZGFyLXllYXItdmlld1xuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCJcbiAgICAgICAgW3llYXJTZWxlY3RlZF09XCJfY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICBbeWVhclZpZXdHcmlkXT1cInllYXJHcmlkXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW2ZvY3VzRXNjYXBlRnVuY3Rpb25dPVwiZXNjYXBlRm9jdXNGdW5jdGlvblwiXG4gICAgICAgICh5ZWFyQ2xpY2tlZCk9XCJzZWxlY3RlZFllYXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvZmQtY2FsZW5kYXIteWVhci12aWV3PlxuICAgIDxmZC1jYWxlbmRhci1hZ2dyZWdhdGVkLXllYXItdmlld1xuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2FnZ3JlZ2F0ZWRZZWFyJ1wiXG4gICAgICAgICh5ZWFyc0NsaWNrZWQpPVwic2VsZWN0ZWRZZWFycygkZXZlbnQpXCJcbiAgICAgICAgW3llYXJTZWxlY3RlZF09XCJfY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICBbeWVhclZpZXdHcmlkXT1cInllYXJHcmlkXCJcbiAgICAgICAgW2FnZ3JlZ2F0ZWRZZWFyc1ZpZXdHcmlkXT1cImFnZ3JlZ2F0ZWRZZWFyR3JpZFwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtmb2N1c0VzY2FwZUZ1bmN0aW9uXT1cImVzY2FwZUZvY3VzRnVuY3Rpb25cIlxuICAgID5cbiAgICA8L2ZkLWNhbGVuZGFyLWFnZ3JlZ2F0ZWQteWVhci12aWV3PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,57 +1,51 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FD_LANGUAGE_ENGLISH } from '@fundamental-ngx/i18n';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
3
|
/**
|
|
5
4
|
* Provides i18n support for labels inside the calendar component.
|
|
5
|
+
* @deprecated use i18n `coreCalendar` key instead
|
|
6
6
|
*/
|
|
7
7
|
export class CalendarI18nLabels {
|
|
8
8
|
constructor() {
|
|
9
9
|
/** This is event that should be called, when labels are changed, to let component detect an changes. */
|
|
10
10
|
this.labelsChange = new Subject();
|
|
11
11
|
/** Year selection aria label. Used on the button to navigate to the years view. */
|
|
12
|
-
this.yearSelectionLabel =
|
|
12
|
+
this.yearSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearSelectionLabel;
|
|
13
13
|
/** Years range selection aria label. Used on the button to navigate to the years range view. */
|
|
14
|
-
this.yearsRangeSelectionLabel =
|
|
14
|
+
this.yearsRangeSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.yearsRangeSelectionLabel;
|
|
15
15
|
/** Month selection aria label. Used on the button to navigate to the months view. */
|
|
16
|
-
this.monthSelectionLabel =
|
|
16
|
+
this.monthSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.monthSelectionLabel;
|
|
17
17
|
/** Day selection aria label. Used on the button to navigate to the day view. */
|
|
18
|
-
this.dateSelectionLabel =
|
|
18
|
+
this.dateSelectionLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectionLabel;
|
|
19
19
|
/** Previous year aria label. Used on the button to switch to a previous year in the years view. */
|
|
20
|
-
this.previousYearLabel =
|
|
20
|
+
this.previousYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousYearLabel;
|
|
21
21
|
/** Next year aria label. Used on the button to switch to a next year in the years view. */
|
|
22
|
-
this.nextYearLabel =
|
|
22
|
+
this.nextYearLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextYearLabel;
|
|
23
23
|
/** Previous month aria label. Used on the button to switch to a previous month in the months view. */
|
|
24
|
-
this.previousMonthLabel =
|
|
24
|
+
this.previousMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.previousMonthLabel;
|
|
25
25
|
/** Next month aria label. Used on the button to switch to a next month in the months view. */
|
|
26
|
-
this.nextMonthLabel =
|
|
26
|
+
this.nextMonthLabel = FD_LANGUAGE_ENGLISH.coreCalendar.nextMonthLabel;
|
|
27
27
|
/** Week number column label */
|
|
28
|
-
this.weekColumnLabel =
|
|
28
|
+
this.weekColumnLabel = FD_LANGUAGE_ENGLISH.coreCalendar.weekColumnLabel;
|
|
29
29
|
/** Selected date label. Used on the selected day/month/year cell. */
|
|
30
|
-
this.dateSelectedLabel =
|
|
30
|
+
this.dateSelectedLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dateSelectedLabel;
|
|
31
31
|
/** Is used to describe present date */
|
|
32
|
-
this.todayLabel =
|
|
32
|
+
this.todayLabel = FD_LANGUAGE_ENGLISH.coreCalendar.todayLabel;
|
|
33
33
|
/** Range start label. Used for date range selection */
|
|
34
|
-
this.rangeStartLabel =
|
|
34
|
+
this.rangeStartLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeStartLabel;
|
|
35
35
|
/** Range end label. Used for date range selection */
|
|
36
|
-
this.rangeEndLabel =
|
|
36
|
+
this.rangeEndLabel = FD_LANGUAGE_ENGLISH.coreCalendar.rangeEndLabel;
|
|
37
37
|
/** Past days aria label. Used when days in the past are accessed */
|
|
38
|
-
this.dayInPastLabel =
|
|
38
|
+
this.dayInPastLabel = FD_LANGUAGE_ENGLISH.coreCalendar.dayInPastLabel;
|
|
39
39
|
/** Past days aria label. Used when days in the past are accessed */
|
|
40
|
-
this.closeCalendarLabel =
|
|
40
|
+
this.closeCalendarLabel = FD_LANGUAGE_ENGLISH.coreCalendar.closeCalendarLabel;
|
|
41
41
|
/** Calendar day view aria role description. */
|
|
42
|
-
this.calendarDayViewDescription =
|
|
42
|
+
this.calendarDayViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarDayViewDescription;
|
|
43
43
|
/** Calendar month view aria role description. */
|
|
44
|
-
this.calendarMonthViewDescription =
|
|
44
|
+
this.calendarMonthViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarMonthViewDescription;
|
|
45
45
|
/** Calendar years view aria role description. */
|
|
46
|
-
this.calendarYearsViewDescription =
|
|
46
|
+
this.calendarYearsViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsViewDescription;
|
|
47
47
|
/** Calendar years range view aria role description. */
|
|
48
|
-
this.calendarYearsRangeViewDescription =
|
|
48
|
+
this.calendarYearsRangeViewDescription = FD_LANGUAGE_ENGLISH.coreCalendar.calendarYearsRangeViewDescription;
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CalendarI18nLabels, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CalendarI18nLabels, providedIn: 'root' }); }
|
|
52
50
|
}
|
|
53
|
-
|
|
54
|
-
type: Injectable,
|
|
55
|
-
args: [{ providedIn: 'root' }]
|
|
56
|
-
}] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaTE4bi1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jYWxlbmRhci9pMThuL2NhbGVuZGFyLWkxOG4tbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFL0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRUksd0dBQXdHO1FBQy9GLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFM0QsbUZBQW1GO1FBQ25GLHVCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUVuQyxnR0FBZ0c7UUFDaEcsNkJBQXdCLEdBQUcsb0JBQW9CLENBQUM7UUFFaEQscUZBQXFGO1FBQ3JGLHdCQUFtQixHQUFHLGNBQWMsQ0FBQztRQUVyQyxnRkFBZ0Y7UUFDaEYsdUJBQWtCLEdBQUcsYUFBYSxDQUFDO1FBRW5DLG1HQUFtRztRQUNuRyxzQkFBaUIsR0FBRyxlQUFlLENBQUM7UUFFcEMsMkZBQTJGO1FBQzNGLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBRTVCLHNHQUFzRztRQUN0Ryx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUV0Qyw4RkFBOEY7UUFDOUYsbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFOUIsK0JBQStCO1FBQy9CLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRWxDLHFFQUFxRTtRQUNyRSxzQkFBaUIsR0FBRyxlQUFlLENBQUM7UUFFcEMsdUNBQXVDO1FBQ3ZDLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFFckIsdURBQXVEO1FBQ3ZELG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBRWhDLHFEQUFxRDtRQUNyRCxrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQUU1QixvRUFBb0U7UUFDcEUsbUJBQWMsR0FBRyxXQUFXLENBQUM7UUFFN0Isb0VBQW9FO1FBQ3BFLHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBRXRDLCtDQUErQztRQUMvQywrQkFBMEIsR0FBRyxVQUFVLENBQUM7UUFFeEMsaURBQWlEO1FBQ2pELGlDQUE0QixHQUFHLGNBQWMsQ0FBQztRQUU5QyxpREFBaUQ7UUFDakQsaUNBQTRCLEdBQUcsYUFBYSxDQUFDO1FBRTdDLHVEQUF1RDtRQUN2RCxzQ0FBaUMsR0FBRyxvQkFBb0IsQ0FBQztLQUM1RDs4R0E1RFksa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBQcm92aWRlcyBpMThuIHN1cHBvcnQgZm9yIGxhYmVscyBpbnNpZGUgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckkxOG5MYWJlbHMge1xuICAgIC8qKiBUaGlzIGlzIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgd2hlbiBsYWJlbHMgYXJlIGNoYW5nZWQsIHRvIGxldCBjb21wb25lbnQgZGV0ZWN0IGFuIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgbGFiZWxzQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBZZWFyIHNlbGVjdGlvbiBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gbmF2aWdhdGUgdG8gdGhlIHllYXJzIHZpZXcuICovXG4gICAgeWVhclNlbGVjdGlvbkxhYmVsID0gJ1NlbGVjdCB5ZWFyJztcblxuICAgIC8qKiBZZWFycyByYW5nZSBzZWxlY3Rpb24gYXJpYSBsYWJlbC4gVXNlZCBvbiB0aGUgYnV0dG9uIHRvIG5hdmlnYXRlIHRvIHRoZSB5ZWFycyByYW5nZSB2aWV3LiAqL1xuICAgIHllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbCA9ICdTZWxlY3QgeWVhcnMgcmFuZ2UnO1xuXG4gICAgLyoqIE1vbnRoIHNlbGVjdGlvbiBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gbmF2aWdhdGUgdG8gdGhlIG1vbnRocyB2aWV3LiAqL1xuICAgIG1vbnRoU2VsZWN0aW9uTGFiZWwgPSAnU2VsZWN0IG1vbnRoJztcblxuICAgIC8qKiBEYXkgc2VsZWN0aW9uIGFyaWEgbGFiZWwuIFVzZWQgb24gdGhlIGJ1dHRvbiB0byBuYXZpZ2F0ZSB0byB0aGUgZGF5IHZpZXcuICovXG4gICAgZGF0ZVNlbGVjdGlvbkxhYmVsID0gJ1NlbGVjdCBkYXRlJztcblxuICAgIC8qKiBQcmV2aW91cyB5ZWFyIGFyaWEgbGFiZWwuIFVzZWQgb24gdGhlIGJ1dHRvbiB0byBzd2l0Y2ggdG8gYSBwcmV2aW91cyB5ZWFyIGluIHRoZSB5ZWFycyB2aWV3LiAqL1xuICAgIHByZXZpb3VzWWVhckxhYmVsID0gJ1ByZXZpb3VzIHllYXInO1xuXG4gICAgLyoqIE5leHQgeWVhciBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gc3dpdGNoIHRvIGEgbmV4dCB5ZWFyIGluIHRoZSB5ZWFycyB2aWV3LiAqL1xuICAgIG5leHRZZWFyTGFiZWwgPSAnTmV4dCB5ZWFyJztcblxuICAgIC8qKiBQcmV2aW91cyBtb250aCBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gc3dpdGNoIHRvIGEgcHJldmlvdXMgbW9udGggaW4gdGhlIG1vbnRocyB2aWV3LiAqL1xuICAgIHByZXZpb3VzTW9udGhMYWJlbCA9ICdQcmV2aW91cyBtb250aCc7XG5cbiAgICAvKiogTmV4dCBtb250aCBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gc3dpdGNoIHRvIGEgbmV4dCBtb250aCBpbiB0aGUgbW9udGhzIHZpZXcuICovXG4gICAgbmV4dE1vbnRoTGFiZWwgPSAnTmV4dCBtb250aCc7XG5cbiAgICAvKiogV2VlayBudW1iZXIgY29sdW1uIGxhYmVsICovXG4gICAgd2Vla0NvbHVtbkxhYmVsID0gJ0NhbGVuZGFyIHdlZWsnO1xuXG4gICAgLyoqIFNlbGVjdGVkIGRhdGUgbGFiZWwuIFVzZWQgb24gdGhlIHNlbGVjdGVkIGRheS9tb250aC95ZWFyIGNlbGwuICovXG4gICAgZGF0ZVNlbGVjdGVkTGFiZWwgPSAnU2VsZWN0ZWQgZGF0ZSc7XG5cbiAgICAvKiogSXMgdXNlZCB0byBkZXNjcmliZSBwcmVzZW50IGRhdGUgKi9cbiAgICB0b2RheUxhYmVsID0gJ1RvZGF5JztcblxuICAgIC8qKiBSYW5nZSBzdGFydCBsYWJlbC4gVXNlZCBmb3IgZGF0ZSByYW5nZSBzZWxlY3Rpb24gKi9cbiAgICByYW5nZVN0YXJ0TGFiZWwgPSAnUmFuZ2Ugc3RhcnQnO1xuXG4gICAgLyoqIFJhbmdlIGVuZCBsYWJlbC4gVXNlZCBmb3IgZGF0ZSByYW5nZSBzZWxlY3Rpb24gKi9cbiAgICByYW5nZUVuZExhYmVsID0gJ1JhbmdlIGVuZCc7XG5cbiAgICAvKiogUGFzdCBkYXlzIGFyaWEgbGFiZWwuIFVzZWQgd2hlbiBkYXlzIGluIHRoZSBwYXN0IGFyZSBhY2Nlc3NlZCAqL1xuICAgIGRheUluUGFzdExhYmVsID0gJ1Bhc3QgZGF5cyc7XG5cbiAgICAvKiogUGFzdCBkYXlzIGFyaWEgbGFiZWwuIFVzZWQgd2hlbiBkYXlzIGluIHRoZSBwYXN0IGFyZSBhY2Nlc3NlZCAqL1xuICAgIGNsb3NlQ2FsZW5kYXJMYWJlbCA9ICdDbG9zZSBjYWxlbmRhcic7XG5cbiAgICAvKiogQ2FsZW5kYXIgZGF5IHZpZXcgYXJpYSByb2xlIGRlc2NyaXB0aW9uLiAqL1xuICAgIGNhbGVuZGFyRGF5Vmlld0Rlc2NyaXB0aW9uID0gJ0NhbGVuZGFyJztcblxuICAgIC8qKiBDYWxlbmRhciBtb250aCB2aWV3IGFyaWEgcm9sZSBkZXNjcmlwdGlvbi4gKi9cbiAgICBjYWxlbmRhck1vbnRoVmlld0Rlc2NyaXB0aW9uID0gJ01vbnRoIHBpY2tlcic7XG5cbiAgICAvKiogQ2FsZW5kYXIgeWVhcnMgdmlldyBhcmlhIHJvbGUgZGVzY3JpcHRpb24uICovXG4gICAgY2FsZW5kYXJZZWFyc1ZpZXdEZXNjcmlwdGlvbiA9ICdZZWFyIHBpY2tlcic7XG5cbiAgICAvKiogQ2FsZW5kYXIgeWVhcnMgcmFuZ2UgdmlldyBhcmlhIHJvbGUgZGVzY3JpcHRpb24uICovXG4gICAgY2FsZW5kYXJZZWFyc1JhbmdlVmlld0Rlc2NyaXB0aW9uID0gJ1llYXJzIHJhbmdlIHBpY2tlcic7XG59XG4iXX0=
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaTE4bi1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jYWxlbmRhci9pMThuL2NhbGVuZGFyLWkxOG4tbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0I7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNJLHdHQUF3RztRQUMvRixpQkFBWSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXJELG1GQUFtRjtRQUNuRix1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFFekUsZ0dBQWdHO1FBQ2hHLDZCQUF3QixHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztRQUVyRixxRkFBcUY7UUFDckYsd0JBQW1CLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO1FBRTNFLGdGQUFnRjtRQUNoRix1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFFekUsbUdBQW1HO1FBQ25HLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUV2RSwyRkFBMkY7UUFDM0Ysa0JBQWEsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBRS9ELHNHQUFzRztRQUN0Ryx1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFFekUsOEZBQThGO1FBQzlGLG1CQUFjLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUVqRSwrQkFBK0I7UUFDL0Isb0JBQWUsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBRW5FLHFFQUFxRTtRQUNyRSxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFFdkUsdUNBQXVDO1FBQ3ZDLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBRXpELHVEQUF1RDtRQUN2RCxvQkFBZSxHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFFbkUscURBQXFEO1FBQ3JELGtCQUFhLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUUvRCxvRUFBb0U7UUFDcEUsbUJBQWMsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBRWpFLG9FQUFvRTtRQUNwRSx1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFFekUsK0NBQStDO1FBQy9DLCtCQUEwQixHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQztRQUV6RixpREFBaUQ7UUFDakQsaUNBQTRCLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDO1FBRTdGLGlEQUFpRDtRQUNqRCxpQ0FBNEIsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUM7UUFFN0YsdURBQXVEO1FBQ3ZELHNDQUFpQyxHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxpQ0FBaUMsQ0FBQztJQUMzRyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGRF9MQU5HVUFHRV9FTkdMSVNIIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBQcm92aWRlcyBpMThuIHN1cHBvcnQgZm9yIGxhYmVscyBpbnNpZGUgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC5cbiAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGBjb3JlQ2FsZW5kYXJgIGtleSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWxlbmRhckkxOG5MYWJlbHMge1xuICAgIC8qKiBUaGlzIGlzIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgd2hlbiBsYWJlbHMgYXJlIGNoYW5nZWQsIHRvIGxldCBjb21wb25lbnQgZGV0ZWN0IGFuIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgbGFiZWxzQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKiBZZWFyIHNlbGVjdGlvbiBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gbmF2aWdhdGUgdG8gdGhlIHllYXJzIHZpZXcuICovXG4gICAgeWVhclNlbGVjdGlvbkxhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIueWVhclNlbGVjdGlvbkxhYmVsO1xuXG4gICAgLyoqIFllYXJzIHJhbmdlIHNlbGVjdGlvbiBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gbmF2aWdhdGUgdG8gdGhlIHllYXJzIHJhbmdlIHZpZXcuICovXG4gICAgeWVhcnNSYW5nZVNlbGVjdGlvbkxhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIueWVhcnNSYW5nZVNlbGVjdGlvbkxhYmVsO1xuXG4gICAgLyoqIE1vbnRoIHNlbGVjdGlvbiBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gbmF2aWdhdGUgdG8gdGhlIG1vbnRocyB2aWV3LiAqL1xuICAgIG1vbnRoU2VsZWN0aW9uTGFiZWwgPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5tb250aFNlbGVjdGlvbkxhYmVsO1xuXG4gICAgLyoqIERheSBzZWxlY3Rpb24gYXJpYSBsYWJlbC4gVXNlZCBvbiB0aGUgYnV0dG9uIHRvIG5hdmlnYXRlIHRvIHRoZSBkYXkgdmlldy4gKi9cbiAgICBkYXRlU2VsZWN0aW9uTGFiZWwgPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWw7XG5cbiAgICAvKiogUHJldmlvdXMgeWVhciBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gc3dpdGNoIHRvIGEgcHJldmlvdXMgeWVhciBpbiB0aGUgeWVhcnMgdmlldy4gKi9cbiAgICBwcmV2aW91c1llYXJMYWJlbCA9IEZEX0xBTkdVQUdFX0VOR0xJU0guY29yZUNhbGVuZGFyLnByZXZpb3VzWWVhckxhYmVsO1xuXG4gICAgLyoqIE5leHQgeWVhciBhcmlhIGxhYmVsLiBVc2VkIG9uIHRoZSBidXR0b24gdG8gc3dpdGNoIHRvIGEgbmV4dCB5ZWFyIGluIHRoZSB5ZWFycyB2aWV3LiAqL1xuICAgIG5leHRZZWFyTGFiZWwgPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5uZXh0WWVhckxhYmVsO1xuXG4gICAgLyoqIFByZXZpb3VzIG1vbnRoIGFyaWEgbGFiZWwuIFVzZWQgb24gdGhlIGJ1dHRvbiB0byBzd2l0Y2ggdG8gYSBwcmV2aW91cyBtb250aCBpbiB0aGUgbW9udGhzIHZpZXcuICovXG4gICAgcHJldmlvdXNNb250aExhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIucHJldmlvdXNNb250aExhYmVsO1xuXG4gICAgLyoqIE5leHQgbW9udGggYXJpYSBsYWJlbC4gVXNlZCBvbiB0aGUgYnV0dG9uIHRvIHN3aXRjaCB0byBhIG5leHQgbW9udGggaW4gdGhlIG1vbnRocyB2aWV3LiAqL1xuICAgIG5leHRNb250aExhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIubmV4dE1vbnRoTGFiZWw7XG5cbiAgICAvKiogV2VlayBudW1iZXIgY29sdW1uIGxhYmVsICovXG4gICAgd2Vla0NvbHVtbkxhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIud2Vla0NvbHVtbkxhYmVsO1xuXG4gICAgLyoqIFNlbGVjdGVkIGRhdGUgbGFiZWwuIFVzZWQgb24gdGhlIHNlbGVjdGVkIGRheS9tb250aC95ZWFyIGNlbGwuICovXG4gICAgZGF0ZVNlbGVjdGVkTGFiZWwgPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5kYXRlU2VsZWN0ZWRMYWJlbDtcblxuICAgIC8qKiBJcyB1c2VkIHRvIGRlc2NyaWJlIHByZXNlbnQgZGF0ZSAqL1xuICAgIHRvZGF5TGFiZWwgPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci50b2RheUxhYmVsO1xuXG4gICAgLyoqIFJhbmdlIHN0YXJ0IGxhYmVsLiBVc2VkIGZvciBkYXRlIHJhbmdlIHNlbGVjdGlvbiAqL1xuICAgIHJhbmdlU3RhcnRMYWJlbCA9IEZEX0xBTkdVQUdFX0VOR0xJU0guY29yZUNhbGVuZGFyLnJhbmdlU3RhcnRMYWJlbDtcblxuICAgIC8qKiBSYW5nZSBlbmQgbGFiZWwuIFVzZWQgZm9yIGRhdGUgcmFuZ2Ugc2VsZWN0aW9uICovXG4gICAgcmFuZ2VFbmRMYWJlbCA9IEZEX0xBTkdVQUdFX0VOR0xJU0guY29yZUNhbGVuZGFyLnJhbmdlRW5kTGFiZWw7XG5cbiAgICAvKiogUGFzdCBkYXlzIGFyaWEgbGFiZWwuIFVzZWQgd2hlbiBkYXlzIGluIHRoZSBwYXN0IGFyZSBhY2Nlc3NlZCAqL1xuICAgIGRheUluUGFzdExhYmVsID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIuZGF5SW5QYXN0TGFiZWw7XG5cbiAgICAvKiogUGFzdCBkYXlzIGFyaWEgbGFiZWwuIFVzZWQgd2hlbiBkYXlzIGluIHRoZSBwYXN0IGFyZSBhY2Nlc3NlZCAqL1xuICAgIGNsb3NlQ2FsZW5kYXJMYWJlbCA9IEZEX0xBTkdVQUdFX0VOR0xJU0guY29yZUNhbGVuZGFyLmNsb3NlQ2FsZW5kYXJMYWJlbDtcblxuICAgIC8qKiBDYWxlbmRhciBkYXkgdmlldyBhcmlhIHJvbGUgZGVzY3JpcHRpb24uICovXG4gICAgY2FsZW5kYXJEYXlWaWV3RGVzY3JpcHRpb24gPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5jYWxlbmRhckRheVZpZXdEZXNjcmlwdGlvbjtcblxuICAgIC8qKiBDYWxlbmRhciBtb250aCB2aWV3IGFyaWEgcm9sZSBkZXNjcmlwdGlvbi4gKi9cbiAgICBjYWxlbmRhck1vbnRoVmlld0Rlc2NyaXB0aW9uID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIuY2FsZW5kYXJNb250aFZpZXdEZXNjcmlwdGlvbjtcblxuICAgIC8qKiBDYWxlbmRhciB5ZWFycyB2aWV3IGFyaWEgcm9sZSBkZXNjcmlwdGlvbi4gKi9cbiAgICBjYWxlbmRhclllYXJzVmlld0Rlc2NyaXB0aW9uID0gRkRfTEFOR1VBR0VfRU5HTElTSC5jb3JlQ2FsZW5kYXIuY2FsZW5kYXJZZWFyc1ZpZXdEZXNjcmlwdGlvbjtcblxuICAgIC8qKiBDYWxlbmRhciB5ZWFycyByYW5nZSB2aWV3IGFyaWEgcm9sZSBkZXNjcmlwdGlvbi4gKi9cbiAgICBjYWxlbmRhclllYXJzUmFuZ2VWaWV3RGVzY3JpcHRpb24gPSBGRF9MQU5HVUFHRV9FTkdMSVNILmNvcmVDYWxlbmRhci5jYWxlbmRhclllYXJzUmFuZ2VWaWV3RGVzY3JpcHRpb247XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { FD_LANGUAGE } from '@fundamental-ngx/i18n';
|
|
3
|
+
import { map, startWith, switchMap } from 'rxjs';
|
|
4
|
+
import { CalendarI18nLabels } from './i18n/calendar-i18n-labels';
|
|
5
|
+
/**
|
|
6
|
+
* Use deprecated `CalendarI18nLabels` to patch `FD_LANGUAGE` observable
|
|
7
|
+
*/
|
|
8
|
+
export function patchDeprecatedI18nLabels() {
|
|
9
|
+
const deprecatedSymbol = inject(CalendarI18nLabels, { optional: true });
|
|
10
|
+
if (deprecatedSymbol) {
|
|
11
|
+
return inject(FD_LANGUAGE, { skipSelf: true }).pipe(switchMap((existingLang) => deprecatedSymbol.labelsChange.pipe(startWith(null), map(() => existingLang))), map((existingLang) => ({
|
|
12
|
+
...existingLang,
|
|
13
|
+
coreCalendar: {
|
|
14
|
+
...existingLang.coreCalendar,
|
|
15
|
+
...deprecatedSymbol
|
|
16
|
+
}
|
|
17
|
+
})));
|
|
18
|
+
}
|
|
19
|
+
return inject(FD_LANGUAGE, { skipSelf: true });
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtZGVwcmVjYXRlZC1pMThuLWxhYmVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL3BhdGNoLWRlcHJlY2F0ZWQtaTE4bi1sYWJlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFjLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QjtJQUNyQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUksZ0JBQWdCLEVBQUU7UUFDbEIsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUN2QixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUMxQixDQUNKLEVBQ0QsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLEdBQUcsWUFBWTtZQUNmLFlBQVksRUFBRTtnQkFDVixHQUFHLFlBQVksQ0FBQyxZQUFZO2dCQUM1QixHQUFHLGdCQUFnQjthQUN0QjtTQUNKLENBQUMsQ0FBQyxDQUNOLENBQUM7S0FDTDtJQUNELE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZEX0xBTkdVQUdFLCBGZExhbmd1YWdlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4vaTE4bi9jYWxlbmRhci1pMThuLWxhYmVscyc7XG5cbi8qKlxuICogVXNlIGRlcHJlY2F0ZWQgYENhbGVuZGFySTE4bkxhYmVsc2AgdG8gcGF0Y2ggYEZEX0xBTkdVQUdFYCBvYnNlcnZhYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaERlcHJlY2F0ZWRJMThuTGFiZWxzKCk6IE9ic2VydmFibGU8RmRMYW5ndWFnZT4ge1xuICAgIGNvbnN0IGRlcHJlY2F0ZWRTeW1ib2wgPSBpbmplY3QoQ2FsZW5kYXJJMThuTGFiZWxzLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIGlmIChkZXByZWNhdGVkU3ltYm9sKSB7XG4gICAgICAgIHJldHVybiBpbmplY3QoRkRfTEFOR1VBR0UsIHsgc2tpcFNlbGY6IHRydWUgfSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZXhpc3RpbmdMYW5nKSA9PlxuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWRTeW1ib2wubGFiZWxzQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IGV4aXN0aW5nTGFuZylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKChleGlzdGluZ0xhbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdMYW5nLFxuICAgICAgICAgICAgICAgIGNvcmVDYWxlbmRhcjoge1xuICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ0xhbmcuY29yZUNhbGVuZGFyLFxuICAgICAgICAgICAgICAgICAgICAuLi5kZXByZWNhdGVkU3ltYm9sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3QoRkRfTEFOR1VBR0UsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG59XG4iXX0=
|