@progressio_resources/gravity-design-system 3.0.25 → 3.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/esm2022/lib/components/gravity-calendar/gravity-calendar.component.mjs +16 -9
  2. package/esm2022/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.mjs +12 -1
  3. package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.mjs +8 -7
  4. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.mjs +20 -17
  5. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.mjs +20 -18
  6. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.mjs +38 -13
  7. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.mjs +20 -17
  8. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.mjs +20 -18
  9. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.mjs +12 -9
  10. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.mjs +23 -15
  11. package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.mjs +15 -8
  12. package/esm2022/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.mjs +28 -0
  13. package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.mjs +74 -0
  14. package/esm2022/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.mjs +31 -14
  15. package/esm2022/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.mjs +58 -0
  16. package/esm2022/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.mjs +31 -14
  17. package/esm2022/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.mjs +2 -2
  18. package/esm2022/lib/components/gravity-icon/gravity-icon.component.mjs +58 -54
  19. package/esm2022/lib/components/gravity-link/gravity-link.component.mjs +7 -6
  20. package/esm2022/lib/components/gravity-modal/gravity-modal.component.mjs +1 -1
  21. package/esm2022/lib/components/gravity-navigation-card/gravity-navigation-card.component.mjs +43 -0
  22. package/esm2022/lib/components/gravity-status-indicator/gravity-status-indicator.component.mjs +3 -3
  23. package/esm2022/lib/gravity-design-system.module.mjs +15 -4
  24. package/esm2022/public-api.mjs +3 -1
  25. package/fesm2022/progressio_resources-gravity-design-system.mjs +479 -190
  26. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  27. package/lib/components/gravity-calendar/gravity-calendar.component.d.ts +4 -1
  28. package/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.d.ts +1 -0
  29. package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.d.ts +3 -1
  30. package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.d.ts +3 -1
  31. package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.d.ts +2 -1
  32. package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.d.ts +15 -5
  33. package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.d.ts +3 -1
  34. package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.d.ts +2 -1
  35. package/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.d.ts +3 -1
  36. package/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.d.ts +9 -5
  37. package/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.d.ts +3 -0
  38. package/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.d.ts +17 -0
  39. package/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.d.ts +13 -0
  40. package/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.d.ts +8 -2
  41. package/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.d.ts +17 -0
  42. package/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.d.ts +4 -1
  43. package/lib/components/gravity-icon/gravity-icon.component.d.ts +57 -53
  44. package/lib/components/gravity-link/gravity-link.component.d.ts +2 -2
  45. package/lib/components/gravity-navigation-card/gravity-navigation-card.component.d.ts +17 -0
  46. package/lib/components/gravity-status-indicator/gravity-status-indicator.component.d.ts +1 -1
  47. package/lib/gravity-design-system.module.d.ts +32 -29
  48. package/package.json +1 -1
  49. package/public-api.d.ts +2 -0
  50. package/src/lib/assets/icon-set/gt-icon-add-update/gt-icon-add-update-lg-24.svg +10 -0
  51. package/src/lib/assets/icon-set/gt-icon-add-update/gt-icon-add-update-md-16.svg +10 -0
  52. package/src/lib/assets/icon-set/gt-icon-add-update/gt-icon-add-update-sm-12.svg +10 -0
  53. package/src/lib/assets/icon-set/gt-icon-add-update/gt-icon-add-update-xl-32.svg +10 -0
  54. package/src/lib/assets/icon-set/gt-icon-money-in/gt-icon-money-in-lg-24.svg +10 -0
  55. package/src/lib/assets/icon-set/gt-icon-money-in/gt-icon-money-in-md-16.svg +10 -0
  56. package/src/lib/assets/icon-set/gt-icon-money-in/gt-icon-money-in-sm-12.svg +10 -0
  57. package/src/lib/assets/icon-set/gt-icon-money-in/gt-icon-money-in-xl-32.svg +10 -0
  58. package/src/lib/assets/icon-set/gt-icon-monitor/gt-icon-monitor-lg-24.svg +10 -0
  59. package/src/lib/assets/icon-set/gt-icon-monitor/gt-icon-monitor-md-16.svg +10 -0
  60. package/src/lib/assets/icon-set/gt-icon-monitor/gt-icon-monitor-sm-12.svg +10 -0
  61. package/src/lib/assets/icon-set/gt-icon-monitor/gt-icon-monitor-xl-32.svg +10 -0
  62. package/src/lib/assets/icon-set/gt-icon-right-angle-arrow/gt-icon-right-angle-arrow-lg-24.svg +10 -0
  63. package/src/lib/assets/icon-set/gt-icon-right-angle-arrow/gt-icon-right-angle-arrow-md-16.svg +10 -0
  64. package/src/lib/assets/icon-set/gt-icon-right-angle-arrow/gt-icon-right-angle-arrow-sm-12.svg +10 -0
  65. package/src/lib/assets/icon-set/gt-icon-right-angle-arrow/gt-icon-right-angle-arrow-xl-32.svg +10 -0
  66. package/src/lib/assets/json/icons.json +64 -0
  67. package/src/lib/styles/components/_datepicker-v2.scss +9 -1
  68. package/src/lib/styles/foundations/colors/themes/_hero.theme.scss +2 -2
  69. package/src/lib/assets/icon-set/gt-icon-arrow-up/gt-icon-switch-lg-24.svg +0 -10
  70. package/src/lib/assets/icon-set/gt-icon-arrow-up/gt-icon-switch-md-16.svg +0 -10
  71. package/src/lib/assets/icon-set/gt-icon-arrow-up/gt-icon-switch-sm-12.svg +0 -10
  72. package/src/lib/assets/icon-set/gt-icon-arrow-up/gt-icon-switch-xl-32.svg +0 -10
@@ -2,10 +2,12 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { yearsPerCalendar } from '../../engine/format-years-calendar';
3
3
  import { BsNavigationDirection } from '../../models';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../bs-datepicker-navigation-view/bs-datepicker-navigation-view.component";
5
+ import * as i1 from "../../services/header-type.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../bs-datepicker-navigation-view/bs-datepicker-navigation-view.component";
7
8
  export class BsYearsCalendarViewComponent {
8
- constructor() {
9
+ constructor(headerTypeService) {
10
+ this.headerTypeService = headerTypeService;
9
11
  this.onNavigate = new EventEmitter();
10
12
  this.onViewMode = new EventEmitter();
11
13
  this.onSelect = new EventEmitter();
@@ -17,20 +19,25 @@ export class BsYearsCalendarViewComponent {
17
19
  }
18
20
  viewYear(year) {
19
21
  this.onSelect.emit(year);
22
+ this.headerTypeService.setCalendarType('months');
23
+ if (this.headerTypeService.getCalendarType() === 'days') {
24
+ this.headerTypeService.setHeaderType('self');
25
+ }
20
26
  }
21
27
  hoverYear(cell, isHovered) {
22
28
  this.onHover.emit({ cell, isHovered });
23
29
  }
24
30
  changeViewMode(event) {
25
31
  this.onViewMode.emit(event);
32
+ this.headerTypeService.setHeaderType('integrate');
26
33
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsYearsCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BsYearsCalendarViewComponent, selector: "bs-years-calendar-view", inputs: { calendar: "calendar", calendarIndex: "calendarIndex", showNavigationArrows: "showNavigationArrows", size: "size" }, outputs: { onNavigate: "onNavigate", onViewMode: "onViewMode", onSelect: "onSelect", onHover: "onHover" }, ngImport: i0, template: "<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\"></bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <div class=\"calendar-body\">\n <hr>\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n", styles: [".calendar-body{background-color:var(--bg-calender-primary);margin-top:8px}hr{border:2px solid var(--divider-menu-active-primary);margin:0 0 20px;opacity:1}.years{align-items:center;display:flex;justify-content:space-between}.years article{align-items:center;border:2px solid transparent;border-radius:8px;color:var(--on-bg-button-pressed-tertiary);cursor:pointer;display:flex;height:35px;justify-content:center;width:45px}.years article.disabled{color:var(--on-bg-disabled);cursor:default}.years article.today{border-color:var(--bg-number-calendar-hover-primary)}.years article.is-highlighted:not(.disabled){background-color:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary);color:var(--on-bg-button-pressed-tertiary)}.years article.selected{background-color:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-pressed-primary)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.BsDatepickerNavigationViewComponent, selector: "bs-datepicker-navigation-view", inputs: ["calendar", "calendarIndex", "showNavigationArrows", "isDisabled", "type"], outputs: ["onNavigate", "onViewMode"] }] }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsYearsCalendarViewComponent, deps: [{ token: i1.HeaderTypeService }], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BsYearsCalendarViewComponent, selector: "bs-years-calendar-view", inputs: { calendar: "calendar", calendarIndex: "calendarIndex", showNavigationArrows: "showNavigationArrows", size: "size" }, outputs: { onNavigate: "onNavigate", onViewMode: "onViewMode", onSelect: "onSelect", onHover: "onHover" }, ngImport: i0, template: "<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <hr>\n <div class=\"calendar-body\">\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n", styles: [".calendar-body{display:grid;margin-top:8px;background-color:var(--bg-calender-primary);gap:var(--height-gap) var(--width-gap)}hr{margin-bottom:var(--gravity-spacing-sm);border:1px solid var(--divider-menu-active-primary)}.years{display:flex;align-items:center;justify-content:space-between}.years article{display:flex;cursor:pointer;border-radius:8px;align-items:center;justify-content:center;border:2px solid transparent;width:var(--month-article-width);height:var(--month-article-height);color:var(--on-bg-button-pressed-tertiary)}.years article.disabled{cursor:default;color:var(--on-bg-disabled)}.years article.today{border-color:var(--bg-number-calendar-hover-primary)}.years article.is-highlighted:not(.disabled){background-color:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary);color:var(--on-bg-button-pressed-tertiary)}.years article.selected{background-color:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-pressed-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.BsDatepickerNavigationViewComponent, selector: "bs-datepicker-navigation-view", inputs: ["calendarIndex", "isDisabled", "calendar", "type", "showNavigationArrows"], outputs: ["onNavigate", "onViewMode"] }] }); }
29
36
  }
30
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BsYearsCalendarViewComponent, decorators: [{
31
38
  type: Component,
32
- args: [{ selector: 'bs-years-calendar-view', template: "<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\"></bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <div class=\"calendar-body\">\n <hr>\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n", styles: [".calendar-body{background-color:var(--bg-calender-primary);margin-top:8px}hr{border:2px solid var(--divider-menu-active-primary);margin:0 0 20px;opacity:1}.years{align-items:center;display:flex;justify-content:space-between}.years article{align-items:center;border:2px solid transparent;border-radius:8px;color:var(--on-bg-button-pressed-tertiary);cursor:pointer;display:flex;height:35px;justify-content:center;width:45px}.years article.disabled{color:var(--on-bg-disabled);cursor:default}.years article.today{border-color:var(--bg-number-calendar-hover-primary)}.years article.is-highlighted:not(.disabled){background-color:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary);color:var(--on-bg-button-pressed-tertiary)}.years article.selected{background-color:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-pressed-primary)}\n"] }]
33
- }], propDecorators: { calendar: [{
39
+ args: [{ selector: 'bs-years-calendar-view', template: "<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <hr>\n <div class=\"calendar-body\">\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n", styles: [".calendar-body{display:grid;margin-top:8px;background-color:var(--bg-calender-primary);gap:var(--height-gap) var(--width-gap)}hr{margin-bottom:var(--gravity-spacing-sm);border:1px solid var(--divider-menu-active-primary)}.years{display:flex;align-items:center;justify-content:space-between}.years article{display:flex;cursor:pointer;border-radius:8px;align-items:center;justify-content:center;border:2px solid transparent;width:var(--month-article-width);height:var(--month-article-height);color:var(--on-bg-button-pressed-tertiary)}.years article.disabled{cursor:default;color:var(--on-bg-disabled)}.years article.today{border-color:var(--bg-number-calendar-hover-primary)}.years article.is-highlighted:not(.disabled){background-color:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary);color:var(--on-bg-button-pressed-tertiary)}.years article.selected{background-color:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-pressed-primary)}\n"] }]
40
+ }], ctorParameters: function () { return [{ type: i1.HeaderTypeService }]; }, propDecorators: { calendar: [{
34
41
  type: Input
35
42
  }], calendarIndex: [{
36
43
  type: Input
@@ -47,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
47
54
  }], onHover: [{
48
55
  type: Output
49
56
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItdjIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcvYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItdjIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcvYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxxQkFBcUIsRUFLdEIsTUFBTSxjQUFjLENBQUM7Ozs7QUFPdEIsTUFBTSxPQUFPLDRCQUE0QjtJQUx6QztRQVdZLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNuRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFdEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ3JELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztLQWtCeEQ7SUFoQkMsVUFBVSxDQUFDLEtBQTRCO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLGdCQUFnQixFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBMkI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUEyQixFQUFFLFNBQWtCO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEyQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQTNCVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qix1U0NoQnpDLDJoQ0F3QkE7OzRGRFJhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx3QkFBd0I7OEJBS3pCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7eWVhcnNQZXJDYWxlbmRhcn0gZnJvbSAnLi4vLi4vZW5naW5lL2Zvcm1hdC15ZWFycy1jYWxlbmRhcic7XG5pbXBvcnQge1xuICBCc0RhdGVwaWNrZXJWaWV3TW9kZSxcbiAgQnNOYXZpZ2F0aW9uRGlyZWN0aW9uLFxuICBCc05hdmlnYXRpb25FdmVudCxcbiAgQ2FsZW5kYXJDZWxsVmlld01vZGVsLFxuICBDZWxsSG92ZXJFdmVudCxcbiAgWWVhcnNDYWxlbmRhclZpZXdNb2RlbFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy15ZWFycy1jYWxlbmRhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icy15ZWFycy1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNZZWFyc0NhbGVuZGFyVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNhbGVuZGFyITogWWVhcnNDYWxlbmRhclZpZXdNb2RlbDtcbiAgQElucHV0KCkgY2FsZW5kYXJJbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd05hdmlnYXRpb25BcnJvd3MhOiBib29sZWFuO1xuICBASW5wdXQoKSBzaXplITogJ3NtJyB8ICdtZCcgfCAnJztcblxuICBAT3V0cHV0KCkgb25OYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8QnNOYXZpZ2F0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblZpZXdNb2RlID0gbmV3IEV2ZW50RW1pdHRlcjxCc0RhdGVwaWNrZXJWaWV3TW9kZT4oKTtcblxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyQ2VsbFZpZXdNb2RlbD4oKTtcbiAgQE91dHB1dCgpIG9uSG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxIb3ZlckV2ZW50PigpO1xuXG4gIG5hdmlnYXRlVG8oZXZlbnQ6IEJzTmF2aWdhdGlvbkRpcmVjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSBCc05hdmlnYXRpb25EaXJlY3Rpb24uRE9XTiA9PT0gZXZlbnQgPyAtMSA6IDE7XG4gICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe3N0ZXA6IHt5ZWFyOiBzdGVwICogeWVhcnNQZXJDYWxlbmRhcn19KTtcbiAgfVxuXG4gIHZpZXdZZWFyKHllYXI6IENhbGVuZGFyQ2VsbFZpZXdNb2RlbCkge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdCh5ZWFyKTtcbiAgfVxuXG4gIGhvdmVyWWVhcihjZWxsOiBDYWxlbmRhckNlbGxWaWV3TW9kZWwsIGlzSG92ZXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMub25Ib3Zlci5lbWl0KHtjZWxsLCBpc0hvdmVyZWR9KTtcbiAgfVxuXG4gIGNoYW5nZVZpZXdNb2RlKGV2ZW50OiBCc0RhdGVwaWNrZXJWaWV3TW9kZSk6IHZvaWQge1xuICAgIHRoaXMub25WaWV3TW9kZS5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPCEtLW5hdmlnYXRpb24tLT5cbjxkaXYgY2xhc3M9XCJndC1jYWxlbmRhci12aWV3LWhlYWRcIj5cbiAgPGJzLWRhdGVwaWNrZXItbmF2aWdhdGlvbi12aWV3IFtjYWxlbmRhcl09XCJjYWxlbmRhclwiIFtjYWxlbmRhckluZGV4XT1cImNhbGVuZGFySW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uQXJyb3dzXT1cInNob3dOYXZpZ2F0aW9uQXJyb3dzXCIgKG9uTmF2aWdhdGUpPVwibmF2aWdhdGVUbygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZpZXdNb2RlKT1cImNoYW5nZVZpZXdNb2RlKCRldmVudClcIiBbdHlwZV09XCIneWVhcnMnXCI+PC9icy1kYXRlcGlja2VyLW5hdmlnYXRpb24tdmlldz5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZ3QtY2FsZW5kYXItdmlldy1ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XG4gICAgPGhyPlxuICAgIDxkaXYgY2xhc3M9XCJ5ZWFyc1wiICpuZ0Zvcj1cImxldCByb3cgb2YgY2FsZW5kYXI/LnllYXJzXCI+XG4gICAgICA8YXJ0aWNsZSBjbGFzcz1cImhyLWJvZHkgc20tcmVndWxhclwiXG4gICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwieWVhci5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5pcy1oaWdobGlnaHRlZF09XCJ5ZWFyLmlzSG92ZXJlZFwiXG4gICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwieWVhci5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy50b2RheV09XCJ5ZWFyLmlzVG9kYXlcIlxuXG4gICAgICAgICAgICAgICAoY2xpY2spPVwidmlld1llYXIoeWVhcilcIiAqbmdGb3I9XCJsZXQgeWVhciBvZiByb3dcIlxuICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJZZWFyKHllYXIsIHRydWUpXCIgKG1vdXNlbGVhdmUpPVwiaG92ZXJZZWFyKHllYXIsIGZhbHNlKVwiPlxuICAgICAgICB7eyB5ZWFyLmxhYmVsIH19XG4gICAgICA8L2FydGljbGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItdjIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcvYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItdjIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcvYnMteWVhcnMtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxxQkFBcUIsRUFLdEIsTUFBTSxjQUFjLENBQUM7Ozs7O0FBUXRCLE1BQU0sT0FBTyw0QkFBNEI7SUFZdkMsWUFBcUIsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFOL0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ25ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUV0RCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDckQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBRUksQ0FBQztJQUU1RCxVQUFVLENBQUMsS0FBNEI7UUFDckMsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsZ0JBQWdCLEVBQUMsRUFBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUEyQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUEyQixFQUFFLFNBQWtCO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEyQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbENVLDRCQUE0QjttR0FBNUIsNEJBQTRCLHVTQ2pCekMsbWlDQXlCQTs7NEZEUmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLHdCQUF3Qjt3R0FLekIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt5ZWFyc1BlckNhbGVuZGFyfSBmcm9tICcuLi8uLi9lbmdpbmUvZm9ybWF0LXllYXJzLWNhbGVuZGFyJztcbmltcG9ydCB7XG4gIEJzRGF0ZXBpY2tlclZpZXdNb2RlLFxuICBCc05hdmlnYXRpb25EaXJlY3Rpb24sXG4gIEJzTmF2aWdhdGlvbkV2ZW50LFxuICBDYWxlbmRhckNlbGxWaWV3TW9kZWwsXG4gIENlbGxIb3ZlckV2ZW50LFxuICBZZWFyc0NhbGVuZGFyVmlld01vZGVsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0hlYWRlclR5cGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaGVhZGVyLXR5cGUuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy15ZWFycy1jYWxlbmRhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JzLXllYXJzLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icy15ZWFycy1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNZZWFyc0NhbGVuZGFyVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNhbGVuZGFyITogWWVhcnNDYWxlbmRhclZpZXdNb2RlbDtcbiAgQElucHV0KCkgY2FsZW5kYXJJbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgc2hvd05hdmlnYXRpb25BcnJvd3MhOiBib29sZWFuO1xuICBASW5wdXQoKSBzaXplITogJ3NtJyB8ICdtZCcgfCAnJztcblxuICBAT3V0cHV0KCkgb25OYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8QnNOYXZpZ2F0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblZpZXdNb2RlID0gbmV3IEV2ZW50RW1pdHRlcjxCc0RhdGVwaWNrZXJWaWV3TW9kZT4oKTtcblxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyQ2VsbFZpZXdNb2RlbD4oKTtcbiAgQE91dHB1dCgpIG9uSG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxIb3ZlckV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yIChwcml2YXRlIGhlYWRlclR5cGVTZXJ2aWNlOiBIZWFkZXJUeXBlU2VydmljZSl7fVxuXG4gIG5hdmlnYXRlVG8oZXZlbnQ6IEJzTmF2aWdhdGlvbkRpcmVjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSBCc05hdmlnYXRpb25EaXJlY3Rpb24uRE9XTiA9PT0gZXZlbnQgPyAtMSA6IDE7XG4gICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe3N0ZXA6IHt5ZWFyOiBzdGVwICogeWVhcnNQZXJDYWxlbmRhcn19KTtcbiAgfVxuXG4gIHZpZXdZZWFyKHllYXI6IENhbGVuZGFyQ2VsbFZpZXdNb2RlbCkge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdCh5ZWFyKTtcbiAgICB0aGlzLmhlYWRlclR5cGVTZXJ2aWNlLnNldENhbGVuZGFyVHlwZSgnbW9udGhzJyk7XG4gICAgaWYodGhpcy5oZWFkZXJUeXBlU2VydmljZS5nZXRDYWxlbmRhclR5cGUoKSA9PT0gJ2RheXMnKSB7XG4gICAgICB0aGlzLmhlYWRlclR5cGVTZXJ2aWNlLnNldEhlYWRlclR5cGUoJ3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBob3ZlclllYXIoY2VsbDogQ2FsZW5kYXJDZWxsVmlld01vZGVsLCBpc0hvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uSG92ZXIuZW1pdCh7Y2VsbCwgaXNIb3ZlcmVkfSk7XG4gIH1cblxuICBjaGFuZ2VWaWV3TW9kZShldmVudDogQnNEYXRlcGlja2VyVmlld01vZGUpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmlld01vZGUuZW1pdChldmVudCk7XG4gICAgdGhpcy5oZWFkZXJUeXBlU2VydmljZS5zZXRIZWFkZXJUeXBlKCdpbnRlZ3JhdGUnKTtcbiAgfVxufVxuIiwiPCEtLW5hdmlnYXRpb24tLT5cbjxkaXYgY2xhc3M9XCJndC1jYWxlbmRhci12aWV3LWhlYWRcIj5cbiAgPGJzLWRhdGVwaWNrZXItbmF2aWdhdGlvbi12aWV3IFtjYWxlbmRhcl09XCJjYWxlbmRhclwiIFtjYWxlbmRhckluZGV4XT1cImNhbGVuZGFySW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uQXJyb3dzXT1cInNob3dOYXZpZ2F0aW9uQXJyb3dzXCIgKG9uTmF2aWdhdGUpPVwibmF2aWdhdGVUbygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZpZXdNb2RlKT1cImNoYW5nZVZpZXdNb2RlKCRldmVudClcIiBbdHlwZV09XCIneWVhcnMnXCI+XG4gIDwvYnMtZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXZpZXc+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImd0LWNhbGVuZGFyLXZpZXctYm9keVwiPlxuICAgIDxocj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ5ZWFyc1wiICpuZ0Zvcj1cImxldCByb3cgb2YgY2FsZW5kYXI/LnllYXJzXCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiaHItYm9keSBzbS1yZWd1bGFyXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ5ZWFyLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgW2NsYXNzLmlzLWhpZ2hsaWdodGVkXT1cInllYXIuaXNIb3ZlcmVkXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJ5ZWFyLmlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cInllYXIuaXNUb2RheVwiXG5cbiAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3WWVhcih5ZWFyKVwiICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHJvd1wiXG4gICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlclllYXIoeWVhciwgdHJ1ZSlcIiAobW91c2VsZWF2ZSk9XCJob3ZlclllYXIoeWVhciwgZmFsc2UpXCI+XG4gICAgICAgIHt7IHllYXIubGFiZWwgfX1cbiAgICAgIDwvYXJ0aWNsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class HeaderTypeService {
5
+ constructor() {
6
+ this.isMobileSubject = new BehaviorSubject(false);
7
+ this.calendarTypeSubject = new BehaviorSubject('days');
8
+ this.headerTypeSubject = new BehaviorSubject('self');
9
+ }
10
+ getCalendarType$() { return this.calendarTypeSubject.asObservable(); }
11
+ setCalendarType(value) { this.calendarTypeSubject.next(value); }
12
+ getCalendarType() { return this.calendarTypeSubject.value; }
13
+ getHeaderType$() { return this.headerTypeSubject.asObservable(); }
14
+ setHeaderType(value) { this.headerTypeSubject.next(value); }
15
+ getHeaderType() { return this.headerTypeSubject.value; }
16
+ getIsMobile$() { return this.isMobileSubject.asObservable(); }
17
+ setIsMobile(value) { this.isMobileSubject.next(value); }
18
+ getIsMobile() { return this.isMobileSubject.value; }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderTypeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderTypeService, providedIn: 'root' }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderTypeService, decorators: [{
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root'
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXR5cGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci12Mi9kYXRlcGlja2VyL3NlcnZpY2VzL2hlYWRlci10eXBlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBS1Usb0JBQWUsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEYsd0JBQW1CLEdBQTRCLElBQUksZUFBZSxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ25GLHNCQUFpQixHQUEwQyxJQUFJLGVBQWUsQ0FBUyxNQUFNLENBQUMsQ0FBQztLQVd4RztJQVRDLGdCQUFnQixLQUFJLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUEsQ0FBQztJQUNwRSxlQUFlLENBQUMsS0FBYSxJQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFDO0lBQ3RFLGVBQWUsS0FBWSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDO0lBQ2xFLGNBQWMsS0FBSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBLENBQUM7SUFDaEUsYUFBYSxDQUFDLEtBQTJCLElBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUM7SUFDaEYsYUFBYSxLQUEwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDO0lBQzVFLFlBQVksS0FBSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQSxDQUFDO0lBQzVELFdBQVcsQ0FBQyxLQUFjLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFDO0lBQy9ELFdBQVcsS0FBYSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQzsrR0FkaEQsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJUeXBlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBpc01vYmlsZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGNhbGVuZGFyVHlwZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdkYXlzJyk7XG4gIHByaXZhdGUgaGVhZGVyVHlwZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDwnc2VsZicgfCAnaW50ZWdyYXRlJz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdzZWxmJz4oJ3NlbGYnKTtcblxuICBnZXRDYWxlbmRhclR5cGUkKCkge3JldHVybiB0aGlzLmNhbGVuZGFyVHlwZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7fVxuICBzZXRDYWxlbmRhclR5cGUodmFsdWU6IHN0cmluZykge3RoaXMuY2FsZW5kYXJUeXBlU3ViamVjdC5uZXh0KHZhbHVlKTt9XG4gIGdldENhbGVuZGFyVHlwZSgpOiBzdHJpbmcge3JldHVybiB0aGlzLmNhbGVuZGFyVHlwZVN1YmplY3QudmFsdWU7fVxuICBnZXRIZWFkZXJUeXBlJCgpIHtyZXR1cm4gdGhpcy5oZWFkZXJUeXBlU3ViamVjdC5hc09ic2VydmFibGUoKTt9XG4gIHNldEhlYWRlclR5cGUodmFsdWU6ICdzZWxmJyB8ICdpbnRlZ3JhdGUnKSB7dGhpcy5oZWFkZXJUeXBlU3ViamVjdC5uZXh0KHZhbHVlKTt9XG4gIGdldEhlYWRlclR5cGUoKTogJ3NlbGYnIHwgJ2ludGVncmF0ZScge3JldHVybiB0aGlzLmhlYWRlclR5cGVTdWJqZWN0LnZhbHVlO31cbiAgZ2V0SXNNb2JpbGUkKCkge3JldHVybiB0aGlzLmlzTW9iaWxlU3ViamVjdC5hc09ic2VydmFibGUoKTt9XG4gIHNldElzTW9iaWxlKHZhbHVlOiBib29sZWFuKSB7dGhpcy5pc01vYmlsZVN1YmplY3QubmV4dCh2YWx1ZSk7fVxuICBnZXRJc01vYmlsZSgpOiBib29sZWFuIHtyZXR1cm4gdGhpcy5pc01vYmlsZVN1YmplY3QudmFsdWU7fVxufVxuIl19
@@ -0,0 +1,74 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DateAbbreviationPipe {
4
+ constructor() {
5
+ // Define month abbreviations for different languages
6
+ this.monthAbbreviations = {
7
+ 'en': {
8
+ 'January': 'Jan', 'February': 'Feb', 'March': 'Mar', 'April': 'Apr', 'May': 'May', 'June': 'Jun',
9
+ 'July': 'Jul', 'August': 'Aug', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dec'
10
+ },
11
+ 'es': {
12
+ 'January': 'Ene', 'February': 'Feb', 'March': 'Mar', 'April': 'Abr', 'May': 'May', 'June': 'Jun',
13
+ 'July': 'Jul', 'August': 'Ago', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dic'
14
+ }
15
+ };
16
+ }
17
+ transform(date, lang = 'en', monthAbbreviation = true) {
18
+ if (!date)
19
+ return '';
20
+ // Check if it's a range of dates
21
+ if (date.includes(' - ')) {
22
+ const [startDate, endDate] = date.split(' - ');
23
+ return `${this.formatDate(startDate, lang, monthAbbreviation)} - ${this.formatDate(endDate, lang, monthAbbreviation)}`;
24
+ }
25
+ // If it's a single date
26
+ return this.formatDate(date, lang, monthAbbreviation);
27
+ }
28
+ formatDate(date, lang, monthAbbreviation) {
29
+ let parsedDate;
30
+ // Only year
31
+ if (date.length === 4 && !isNaN(Number(date))) {
32
+ return `${date}`;
33
+ }
34
+ // Only month
35
+ if (this.monthAbbreviations[lang] && this.monthAbbreviations[lang][date]) {
36
+ return monthAbbreviation ? this.monthAbbreviations[lang][date] : date;
37
+ }
38
+ // Convert the date string into a Date object
39
+ parsedDate = new Date(date);
40
+ // If the date is not valid
41
+ if (isNaN(parsedDate.getTime())) {
42
+ const parts = date.split('/');
43
+ if (parts.length === 2) {
44
+ const month = parseInt(parts[0], 10) - 1;
45
+ const year = parseInt(parts[1], 10);
46
+ parsedDate = new Date(year, month, 1);
47
+ }
48
+ }
49
+ // If the date is still invalid, return an empty string
50
+ if (isNaN(parsedDate.getTime())) {
51
+ return '';
52
+ }
53
+ // Get the full month name from the Date object
54
+ const monthName = parsedDate.toLocaleString('en', { month: 'long' });
55
+ const abbreviatedMonth = monthAbbreviation ? this.monthAbbreviations[lang]?.[monthName] : monthName;
56
+ const day = parsedDate.getDate();
57
+ const year = parsedDate.getFullYear();
58
+ // Month and year
59
+ if (date.indexOf('/') !== -1 && date.split('/').length === 2) {
60
+ return monthAbbreviation ? `${abbreviatedMonth}, ${year}` : `${abbreviatedMonth} ${year}`;
61
+ }
62
+ // Day, month, and year
63
+ return `${abbreviatedMonth} ${day}, ${year}`;
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateAbbreviationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
66
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DateAbbreviationPipe, name: "dateFormating" }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateAbbreviationPipe, decorators: [{
69
+ type: Pipe,
70
+ args: [{
71
+ name: 'dateFormating'
72
+ }]
73
+ }] });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hYmJyZXZpYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci12Mi9kYXRlcGlja2VyL3V0aWxzL2RhdGUtYWJicmV2aWF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxvQkFBb0I7SUFIakM7UUFLRSxxREFBcUQ7UUFDckQsdUJBQWtCLEdBQWlEO1lBQ2pFLElBQUksRUFBRTtnQkFDSixTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUs7Z0JBQ2hHLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSzthQUMzRztZQUNELElBQUksRUFBRTtnQkFDSixTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUs7Z0JBQ2hHLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSzthQUMzRztTQUNGLENBQUM7S0E2REg7SUEzREMsU0FBUyxDQUFD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QUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1RCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1NBQzNGO1FBRUQsdUJBQXVCO1FBQ3ZCLE9BQU8sR0FBRyxnQkFBZ0IsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQzsrR0F4RVUsb0JBQW9COzZHQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSGhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGVBQWU7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdkYXRlRm9ybWF0aW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlQWJicmV2aWF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIC8vIERlZmluZSBtb250aCBhYmJyZXZpYXRpb25zIGZvciBkaWZmZXJlbnQgbGFuZ3VhZ2VzXG4gIG1vbnRoQWJicmV2aWF0aW9uczogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7XG4gICAgJ2VuJzoge1xuICAgICAgJ0phbnVhcnknOiAnSmFuJywgJ0ZlYnJ1YXJ5JzogJ0ZlYicsICdNYXJjaCc6ICdNYXInLCAnQXByaWwnOiAnQXByJywgJ01heSc6ICdNYXknLCAnSnVuZSc6ICdKdW4nLFxuICAgICAgJ0p1bHknOiAnSnVsJywgJ0F1Z3VzdCc6ICdBdWcnLCAnU2VwdGVtYmVyJzogJ1NlcCcsICdPY3RvYmVyJzogJ09jdCcsICdOb3ZlbWJlcic6ICdOb3YnLCAnRGVjZW1iZXInOiAnRGVjJ1xuICAgIH0sXG4gICAgJ2VzJzoge1xuICAgICAgJ0phbnVhcnknOiAnRW5lJywgJ0ZlYnJ1YXJ5JzogJ0ZlYicsICdNYXJjaCc6ICdNYXInLCAnQXByaWwnOiAnQWJyJywgJ01heSc6ICdNYXknLCAnSnVuZSc6ICdKdW4nLFxuICAgICAgJ0p1bHknOiAnSnVsJywgJ0F1Z3VzdCc6ICdBZ28nLCAnU2VwdGVtYmVyJzogJ1NlcCcsICdPY3RvYmVyJzogJ09jdCcsICdOb3ZlbWJlcic6ICdOb3YnLCAnRGVjZW1iZXInOiAnRGljJ1xuICAgIH1cbiAgfTtcblxuICB0cmFuc2Zvcm0oZGF0ZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcgPSAnZW4nLCBtb250aEFiYnJldmlhdGlvbjogYm9vbGVhbiA9IHRydWUpOiBzdHJpbmcge1xuXG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJyc7XG5cbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgcmFuZ2Ugb2YgZGF0ZXNcbiAgICBpZiAoZGF0ZS5pbmNsdWRlcygnIC0gJykpIHtcbiAgICAgIGNvbnN0IFtzdGFydERhdGUsIGVuZERhdGVdID0gZGF0ZS5zcGxpdCgnIC0gJyk7XG4gICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXREYXRlKHN0YXJ0RGF0ZSwgbGFuZywgbW9udGhBYmJyZXZpYXRpb24pfSAtICR7dGhpcy5mb3JtYXREYXRlKGVuZERhdGUsIGxhbmcsIG1vbnRoQWJicmV2aWF0aW9uKX1gO1xuICAgIH1cblxuICAgIC8vIElmIGl0J3MgYSBzaW5nbGUgZGF0ZVxuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUoZGF0ZSwgbGFuZywgbW9udGhBYmJyZXZpYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IHN0cmluZywgbGFuZzogc3RyaW5nLCBtb250aEFiYnJldmlhdGlvbjogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgbGV0IHBhcnNlZERhdGU6IERhdGU7XG5cbiAgICAvLyBPbmx5IHllYXJcbiAgICBpZiAoZGF0ZS5sZW5ndGggPT09IDQgJiYgIWlzTmFOKE51bWJlcihkYXRlKSkpIHtcbiAgICAgIHJldHVybiBgJHtkYXRlfWA7XG4gICAgfVxuXG4gICAgLy8gT25seSBtb250aFxuICAgIGlmICh0aGlzLm1vbnRoQWJicmV2aWF0aW9uc1tsYW5nXSAmJiB0aGlzLm1vbnRoQWJicmV2aWF0aW9uc1tsYW5nXVtkYXRlXSkge1xuICAgICAgcmV0dXJuIG1vbnRoQWJicmV2aWF0aW9uID8gdGhpcy5tb250aEFiYnJldmlhdGlvbnNbbGFuZ11bZGF0ZV0gOiBkYXRlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdGhlIGRhdGUgc3RyaW5nIGludG8gYSBEYXRlIG9iamVjdFxuICAgIHBhcnNlZERhdGUgPSBuZXcgRGF0ZShkYXRlKTtcblxuICAgIC8vIElmIHRoZSBkYXRlIGlzIG5vdCB2YWxpZFxuICAgIGlmIChpc05hTihwYXJzZWREYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0ZS5zcGxpdCgnLycpO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCkgLSAxO1xuICAgICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcbiAgICAgICAgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGF0ZSBpcyBzdGlsbCBpbnZhbGlkLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXG4gICAgaWYgKGlzTmFOKHBhcnNlZERhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgZnVsbCBtb250aCBuYW1lIGZyb20gdGhlIERhdGUgb2JqZWN0XG4gICAgY29uc3QgbW9udGhOYW1lID0gcGFyc2VkRGF0ZS50b0xvY2FsZVN0cmluZygnZW4nLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgY29uc3QgYWJicmV2aWF0ZWRNb250aCA9IG1vbnRoQWJicmV2aWF0aW9uID8gdGhpcy5tb250aEFiYnJldmlhdGlvbnNbbGFuZ10/Llttb250aE5hbWVdIDogbW9udGhOYW1lO1xuICAgIGNvbnN0IGRheSA9IHBhcnNlZERhdGUuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IHllYXIgPSBwYXJzZWREYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAvLyBNb250aCBhbmQgeWVhclxuICAgIGlmIChkYXRlLmluZGV4T2YoJy8nKSAhPT0gLTEgJiYgZGF0ZS5zcGxpdCgnLycpLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIG1vbnRoQWJicmV2aWF0aW9uID8gYCR7YWJicmV2aWF0ZWRNb250aH0sICR7eWVhcn1gIDogYCR7YWJicmV2aWF0ZWRNb250aH0gJHt5ZWFyfWA7XG4gICAgfVxuXG4gICAgLy8gRGF5LCBtb250aCwgYW5kIHllYXJcbiAgICByZXR1cm4gYCR7YWJicmV2aWF0ZWRNb250aH0gJHtkYXl9LCAke3llYXJ9YDtcbiAgfVxufVxuIl19