@kirbydesign/designsystem 6.0.2 → 6.1.2-rc.ionic
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/esm2020/lib/components/button/button.component.mjs +2 -2
- package/esm2020/lib/components/card/card-footer/card-footer.component.mjs +2 -2
- package/esm2020/lib/components/dropdown/dropdown.component.mjs +26 -18
- package/esm2020/lib/components/fab-sheet/fab-sheet.component.mjs +3 -3
- package/esm2020/lib/components/form-field/input/input.component.mjs +2 -2
- package/esm2020/lib/components/form-field/textarea/textarea.component.mjs +2 -2
- package/esm2020/lib/components/icon/icon.component.mjs +1 -1
- package/esm2020/lib/components/item/item.component.mjs +1 -1
- package/esm2020/lib/components/list/list-item/list-item.component.mjs +2 -2
- package/esm2020/lib/components/list/list.component.mjs +2 -2
- package/esm2020/lib/components/modal/footer/modal-footer.component.mjs +14 -9
- package/esm2020/lib/components/modal/modal-wrapper/modal-elements-mover.delegate.mjs +62 -0
- package/esm2020/lib/components/modal/modal-wrapper/modal-wrapper.component.mjs +73 -123
- package/esm2020/lib/components/modal/services/action-sheet.helper.mjs +4 -1
- package/esm2020/lib/components/modal/services/modal-animation-builder.service.mjs +62 -50
- package/esm2020/lib/components/modal/services/modal.helper.mjs +12 -11
- package/esm2020/lib/components/modal/services/modal.interfaces.mjs +39 -1
- package/esm2020/lib/components/page/page.component.mjs +31 -21
- package/esm2020/lib/components/range/range.component.mjs +1 -1
- package/esm2020/lib/components/segmented-control/segmented-control.component.mjs +1 -1
- package/esm2020/lib/components/slide-button/slide-button.component.mjs +2 -2
- package/esm2020/lib/components/toggle/toggle.component.mjs +1 -1
- package/fesm2015/kirbydesign-designsystem.mjs +321 -232
- package/fesm2015/kirbydesign-designsystem.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem.mjs +314 -232
- package/fesm2020/kirbydesign-designsystem.mjs.map +1 -1
- package/lib/components/avatar/avatar.component.d.ts +1 -1
- package/lib/components/dropdown/dropdown.component.d.ts +6 -5
- package/lib/components/modal/footer/modal-footer.component.d.ts +5 -2
- package/lib/components/modal/modal-wrapper/modal-elements-mover.delegate.d.ts +14 -0
- package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +14 -16
- package/lib/components/modal/services/modal-animation-builder.service.d.ts +14 -3
- package/lib/components/modal/services/modal.interfaces.d.ts +22 -0
- package/lib/components/page/page.component.d.ts +7 -5
- package/package.json +8 -8
- package/scss/base/_link.scss +1 -0
- package/scss/interaction-state/_active.scss +1 -0
- package/scss/interaction-state/_focus.scss +1 -0
- package/scss/interaction-state/_hover.scss +1 -0
- package/scss/interaction-state/_index.scss +1 -0
- package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
- package/scss/interaction-state/_layer.scss +1 -0
- package/scss/opt-out/_index.scss +1 -0
- package/scss/opt-out/_link.scss +1 -0
- package/src/lib/components/icon/README.md +16 -0
- package/README.md +0 -7
|
@@ -7,18 +7,20 @@ import { KirbyAnimation } from '../../animation/kirby-animation';
|
|
|
7
7
|
import { WindowRef } from '../../types/window-ref';
|
|
8
8
|
import { ModalWrapperComponent } from '../modal/modal-wrapper/modal-wrapper.component';
|
|
9
9
|
import { ModalNavigationService } from '../modal/services/modal-navigation.service';
|
|
10
|
+
import { ModalElementComponent, ModalElementsAdvertiser, ModalElementType, } from '../modal/services/modal.interfaces';
|
|
10
11
|
import { selectedTabClickEvent } from '../tabs/tab-button/tab-button.events';
|
|
11
12
|
import { TabsComponent } from '../tabs/tabs.component';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "../modal/modal-wrapper/modal-wrapper.component";
|
|
14
|
-
import * as i2 from "
|
|
15
|
-
import * as i3 from "
|
|
16
|
-
import * as i4 from "
|
|
17
|
-
import * as i5 from "../
|
|
18
|
-
import * as i6 from "
|
|
19
|
-
import * as i7 from "
|
|
20
|
-
import * as i8 from "
|
|
21
|
-
import * as i9 from "
|
|
15
|
+
import * as i2 from "../modal/services/modal.interfaces";
|
|
16
|
+
import * as i3 from "@angular/router";
|
|
17
|
+
import * as i4 from "../../types/window-ref";
|
|
18
|
+
import * as i5 from "../modal/services/modal-navigation.service";
|
|
19
|
+
import * as i6 from "../tabs/tabs.component";
|
|
20
|
+
import * as i7 from "@ionic/angular";
|
|
21
|
+
import * as i8 from "../spinner/spinner.component";
|
|
22
|
+
import * as i9 from "@angular/common";
|
|
23
|
+
import * as i10 from "../../directives/fit-heading/fit-heading.directive";
|
|
22
24
|
export class PageTitleDirective {
|
|
23
25
|
}
|
|
24
26
|
/** @nocollapse */ PageTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -92,8 +94,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
92
94
|
type: Input,
|
|
93
95
|
args: ['kirbyPageContent']
|
|
94
96
|
}] } });
|
|
95
|
-
export class PageProgressComponent {
|
|
96
|
-
constructor(modalWrapper) {
|
|
97
|
+
export class PageProgressComponent extends ModalElementComponent {
|
|
98
|
+
constructor(modalWrapper, modalElementsAdvertiser, elementRef) {
|
|
99
|
+
super(ModalElementType.PAGE_PROGRESS, elementRef, modalElementsAdvertiser);
|
|
97
100
|
this.modalWrapper = modalWrapper;
|
|
98
101
|
// TODO: Find alternative implementation, which aligns with future page configuration / consumption
|
|
99
102
|
// This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario
|
|
@@ -105,8 +108,8 @@ export class PageProgressComponent {
|
|
|
105
108
|
}
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
|
-
/** @nocollapse */ PageProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageProgressComponent, deps: [{ token: i1.ModalWrapperComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
/** @nocollapse */ PageProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageProgressComponent, selector: "kirby-page-progress", host: { properties: { "attr.slot": "this.slot" } }, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, styles: [":host{display:flex}\n"] });
|
|
111
|
+
/** @nocollapse */ PageProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageProgressComponent, deps: [{ token: i1.ModalWrapperComponent, optional: true, skipSelf: true }, { token: i2.ModalElementsAdvertiser, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
+
/** @nocollapse */ PageProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageProgressComponent, selector: "kirby-page-progress", host: { properties: { "attr.slot": "this.slot" } }, usesInheritance: true, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, styles: [":host{display:flex}\n"] });
|
|
110
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageProgressComponent, decorators: [{
|
|
111
114
|
type: Component,
|
|
112
115
|
args: [{
|
|
@@ -118,21 +121,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
118
121
|
type: Optional
|
|
119
122
|
}, {
|
|
120
123
|
type: SkipSelf
|
|
121
|
-
}] }
|
|
124
|
+
}] }, { type: i2.ModalElementsAdvertiser, decorators: [{
|
|
125
|
+
type: Optional
|
|
126
|
+
}] }, { type: i0.ElementRef }]; }, propDecorators: { slot: [{
|
|
122
127
|
type: HostBinding,
|
|
123
128
|
args: ['attr.slot']
|
|
124
129
|
}] } });
|
|
125
|
-
export class PageTitleComponent {
|
|
130
|
+
export class PageTitleComponent extends ModalElementComponent {
|
|
131
|
+
constructor(elementRef, modalElementsAdvertiser) {
|
|
132
|
+
super(ModalElementType.TITLE, elementRef, modalElementsAdvertiser);
|
|
133
|
+
}
|
|
126
134
|
}
|
|
127
|
-
/** @nocollapse */ PageTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
/** @nocollapse */ PageTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageTitleComponent, selector: "kirby-page-title", ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true });
|
|
135
|
+
/** @nocollapse */ PageTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageTitleComponent, deps: [{ token: i0.ElementRef }, { token: i2.ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
/** @nocollapse */ PageTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageTitleComponent, selector: "kirby-page-title", usesInheritance: true, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true });
|
|
129
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageTitleComponent, decorators: [{
|
|
130
138
|
type: Component,
|
|
131
139
|
args: [{
|
|
132
140
|
selector: 'kirby-page-title',
|
|
133
141
|
template: ` <ng-content></ng-content> `,
|
|
134
142
|
}]
|
|
135
|
-
}] }
|
|
143
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.ModalElementsAdvertiser, decorators: [{
|
|
144
|
+
type: Optional
|
|
145
|
+
}] }]; } });
|
|
136
146
|
export class PageContentComponent {
|
|
137
147
|
}
|
|
138
148
|
/** @nocollapse */ PageContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -350,12 +360,12 @@ export class PageComponent {
|
|
|
350
360
|
this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');
|
|
351
361
|
}
|
|
352
362
|
}
|
|
353
|
-
/** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token:
|
|
354
|
-
/** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type:
|
|
363
|
+
/** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i3.Router }, { token: i0.ChangeDetectorRef }, { token: i4.WindowRef }, { token: i5.ModalNavigationService }, { token: i6.TabsComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
364
|
+
/** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type: i7.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i7.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i7.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i7.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { type: i7.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i7.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i7.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { type: i8.SpinnerComponent, selector: "kirby-spinner" }, { type: i7.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }], directives: [{ type: i7.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
355
365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, decorators: [{
|
|
356
366
|
type: Component,
|
|
357
367
|
args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"] }]
|
|
358
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type:
|
|
368
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i3.Router }, { type: i0.ChangeDetectorRef }, { type: i4.WindowRef }, { type: i5.ModalNavigationService }, { type: i6.TabsComponent, decorators: [{
|
|
359
369
|
type: Optional
|
|
360
370
|
}, {
|
|
361
371
|
type: SkipSelf
|
|
@@ -429,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
429
439
|
type: HostListener,
|
|
430
440
|
args: ['window:keyboardWillHide']
|
|
431
441
|
}] } });
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxx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RGhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUluRCxtQkFBbUI7c0JBRDFCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELDBCQUEwQjtzQkFEakMsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHcEUsMEJBQTBCO3NCQURqQyxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUc3RSxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3RFLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHekUsYUFBYTtzQkFEWixlQUFlO3VCQUFDLG9CQUFvQjtnQkFHN0IsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBOE5yQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV25ELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CYWNrQnV0dG9uRGVsZWdhdGUsIElvbkNvbnRlbnQsIElvbkZvb3RlciwgSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBGaXRIZWFkaW5nQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9maXQtaGVhZGluZy9maXQtaGVhZGluZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnLi4vLi4vdHlwZXMvd2luZG93LXJlZic7XG5pbXBvcnQgeyBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VsZWN0ZWRUYWJDbGlja0V2ZW50IH0gZnJvbSAnLi4vdGFicy90YWItYnV0dG9uL3RhYi1idXR0b24uZXZlbnRzJztcbmltcG9ydCB7IFRhYnNDb21wb25lbnQgfSBmcm9tICcuLi90YWJzL3RhYnMuY29tcG9uZW50JztcblxudHlwZSBzdGlja3lDb25maWcgPSB7IHN0aWNreTogYm9vbGVhbiB9O1xudHlwZSBmaXhlZENvbmZpZyA9IHsgZml4ZWQ6IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gXCJwdWxsLXRvLXJlZnJlc2hcIiBiZWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVsbFRvUmVmcmVzaEV2ZW50IHtcbiAgLyoqXG4gICAqIEludm9rZSB0aGlzIGNhbGxiYWNrLW1ldGhvZCB3aGVuIGFjdGlvbiB0byBwZXJmb3JtIHVwb24gXCJwdWxsLXRvLXJlZnJlc2hcIiBjb21wbGV0ZXMuXG4gICAqL1xuICBjb21wbGV0ZSgpO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVGl0bGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VTdWJ0aXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlU3VidGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRvb2xiYXJUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VBY3Rpb25zXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25zRGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VBY3Rpb25zJykgY29uZmlnOiBzdGlja3lDb25maWcgfCBmaXhlZENvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGlja3lEZWZhdWx0ID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaXhlZERlZmF1bHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzU3RpY2t5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyA/ICh0aGlzLmNvbmZpZyBhcyBzdGlja3lDb25maWcpLnN0aWNreSA6IHRoaXMuc3RpY2t5RGVmYXVsdDtcbiAgfVxuXG4gIGdldCBpc0ZpeGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyA/ICh0aGlzLmNvbmZpZyBhcyBmaXhlZENvbmZpZykuZml4ZWQgOiB0aGlzLmZpeGVkRGVmYXVsdDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlQ29udGVudF0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgna2lyYnlQYWdlQ29udGVudCcpIGNvbmZpZzogZml4ZWRDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxuXG4gIGdldCBpc0ZpeGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5maXhlZDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLXByb2dyZXNzJyxcbiAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiBgLFxuICBzdHlsZXM6IFsnOmhvc3Qge2Rpc3BsYXk6IGZsZXh9J10sXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRPRE86IEZpbmQgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsaWducyB3aXRoIGZ1dHVyZSBwYWdlIGNvbmZpZ3VyYXRpb24gLyBjb25zdW1wdGlvblxuICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIHdhcyBjaG9zZW4gb3ZlciBleHBhbmRpbmcgYG1vdmVDaGlsZGAgbWV0aG9kIGluIGNvbXBvbmVudCB3cmFwcGVyIHdpdGggeWV0IGFub3RoZXIgc2NlbmFyaW9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNsb3QnKSBzbG90ID0gJ3N0YXJ0JztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIG1vZGFsV3JhcHBlcjogTW9kYWxXcmFwcGVyQ29tcG9uZW50KSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGFsV3JhcHBlciAmJiB0aGlzLm1vZGFsV3JhcHBlci5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgdGhpcy5zbG90ID0gJ2VuZCc7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtdGl0bGUnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50Q29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtYWN0aW9ucycsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PiBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudDogSW9uQ29udGVudDtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Db250ZW50RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uSGVhZGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBpb25IZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25IZWFkZXJFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25Gb290ZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uRm9vdGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uRm9vdGVyRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZChJb25CYWNrQnV0dG9uRGVsZWdhdGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGJhY2tCdXR0b25EZWxlZ2F0ZTogSW9uQmFja0J1dHRvbkRlbGVnYXRlO1xuICBAVmlld0NoaWxkKCdwYWdlVGl0bGUnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBwYWdlVGl0bGU6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2ltcGxlVGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNpbXBsZVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIGN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21UaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21TdWJ0aXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VBY3Rpb25zRGlyZWN0aXZlKVxuICBjdXN0b21BY3Rpb25zOiBRdWVyeUxpc3Q8UGFnZUFjdGlvbnNEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VDb250ZW50RGlyZWN0aXZlKVxuICBwcml2YXRlIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxQYWdlQ29udGVudERpcmVjdGl2ZT47XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNQYWdlU3VidGl0bGU6IGJvb2xlYW47XG4gIGhhc0FjdGlvbnNJblBhZ2U6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIHRvb2xiYXJGaXhlZEFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGU6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgcHJpdmF0ZSB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhhc0VudGVyZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSxcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpLFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgdGFic0NvbXBvbmVudDogVGFic0NvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVXcmFwcGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGl0bGVNYXhMaW5lcykge1xuICAgICAgdGhpcy5maXRIZWFkaW5nQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmZpdEhlYWRpbmdDb25maWcsXG4gICAgICAgIG1heExpbmVzOiBjaGFuZ2VzLnRpdGxlTWF4TGluZXMuY3VycmVudFZhbHVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuc3VidGl0bGUgJiYgIWNoYW5nZXMuc3VidGl0bGUuaXNGaXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zdWJ0aXRsZSA9IGNoYW5nZXMudGl0bGUuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5oYXNQYWdlU3VidGl0bGUgPSB0aGlzLnN1YnRpdGxlICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF2aWdhdGlvblN0YXJ0JC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMudXJscy5pbmNsdWRlcyhldmVudC51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKGV2ZW50LnVybCkgJiZcbiAgICAgICAgIXRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5pc01vZGFsUm91dGUodGhpcy5yb3V0ZXIudXJsKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMub25MZWF2ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICBpZiAodGhpcy51cmxzLmluY2x1ZGVzKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSkge1xuICAgICAgICB0aGlzLm9uRW50ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKHNlbGVjdGVkVGFiQ2xpY2tFdmVudCwgKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uLkxPTkcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXJscy5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICB0aGlzLnVybHMucHVzaCh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihzZWxlY3RlZFRhYkNsaWNrRXZlbnQsICgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGVnYXRlUmVmcmVzaEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCh7XG4gICAgICBjb21wbGV0ZTogZXZlbnQudGFyZ2V0LmNvbXBsZXRlLmJpbmQoZXZlbnQudGFyZ2V0KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25FbnRlcigpIHtcbiAgICBpZiAodGhpcy5oYXNFbnRlcmVkKSByZXR1cm47XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICAgIGlmICh0aGlzLnBhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25MZWF2ZSgpIHtcbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYudW5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmhhc0VudGVyZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnRhYkJhckJvdHRvbUhpZGRlbiAmJiB0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpIHtcbiAgICAvLyBJbnRlcmNlcHQgYmFjay1idXR0b24gY2xpY2sgZXZlbnRzLCBkZWZhdWx0aW5nIHRvIHRoZSBidWlsdC1pbiBjbGljay1oYW5kbGVyLlxuICAgIGlmICh0aGlzLmJhY2tCdXR0b25DbGljay5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25DbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuYmFja0J1dHRvbkRlbGVnYXRlLm9uQ2xpY2suYmluZCh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpdGxlKCkge1xuICAgIC8vIEVuc3VyZXMgaW5pdGlhbGl6ZVRpdGxlKCkgd29uJ3QgcnVuLCBpZiBhbHJlYWR5IGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSByZXR1cm47XG4gICAgdGhpcy5oYXNQYWdlVGl0bGUgPSB0aGlzLnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGU7XG4gICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIXRoaXMuaGFzUGFnZVRpdGxlO1xuICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21TdWJ0aXRsZVRlbXBsYXRlO1xuXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8vIHRzbGludDpkaXNhYmxlOnByZXR0aWVyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy50b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgICBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuaGFzQWN0aW9uc0luUGFnZSA9ICEhdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlV3JhcHBlcigpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQocGFyZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Gb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgfTtcblxuICAgIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy50b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQnXSlcbiAgX29uS2V5Ym9hcmRXaWxsU2hvdyhpbmZvPzogeyBrZXlib2FyZEhlaWdodDogbnVtYmVyIH0pIHtcbiAgICBpZiAoaW5mbyAmJiBpbmZvLmtleWJvYXJkSGVpZ2h0KSB7XG4gICAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLWtleWJvYXJkLW9mZnNldCcsXG4gICAgICAgIGAke2luZm8ua2V5Ym9hcmRIZWlnaHR9cHhgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxIaWRlJylcbiAgX29uS2V5Ym9hcmRXaWxsSGlkZSgpIHtcbiAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0ta2V5Ym9hcmQtb2Zmc2V0JywgJzBweCcpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYmFjay1idXR0b25cbiAgICAgICAgdGV4dD1cIlwiXG4gICAgICAgIFtkZWZhdWx0SHJlZl09XCJkZWZhdWx0QmFja0hyZWZcIlxuICAgICAgICBpY29uPVwiYXNzZXRzL2tpcmJ5L2ljb25zL3N2Zy9hcnJvdy1iYWNrLnN2Z1wiXG4gICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVCYWNrQnV0dG9uID8gJ2hpZGRlbicgOiBudWxsXCJcbiAgICAgID48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci10aXRsZSBoaWRlXCIgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhclRpdGxlVmlzaWJsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgY2xhc3M9XCJoaWRlXCJcbiAgICAgIHNsb3Q9XCJwcmltYXJ5XCJcbiAgICAgIFtjbGFzcy5mYWRlLWluXT1cInRvb2xiYXJTdGlja3lBY3Rpb25zVmlzaWJsZSAmJiBzdGlja3lBY3Rpb25zVGVtcGxhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGlja3lBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgY2xhc3M9XCJoaWRlXCJcbiAgICAgIHNsb3Q9XCJzZWNvbmRhcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhckZpeGVkQWN0aW9uc1Zpc2libGUgJiYgZml4ZWRBY3Rpb25zVGVtcGxhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBzY3JvbGxFdmVudHM9XCJ0cnVlXCIgZm9yY2VPdmVyc2Nyb2xsPVwiZmFsc2VcIj5cbiAgPGlvbi1yZWZyZXNoZXJcbiAgICAqbmdJZj1cInJlZnJlc2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIlxuICAgIChpb25SZWZyZXNoKT1cImRlbGVnYXRlUmVmcmVzaEV2ZW50KCRldmVudClcIlxuICAgIHNsb3Q9XCJmaXhlZFwiXG4gID5cbiAgICA8a2lyYnktc3Bpbm5lcj48L2tpcmJ5LXNwaW5uZXI+XG4gIDwvaW9uLXJlZnJlc2hlcj5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicGFnZS1oZWFkZXJcIlxuICAgICAgKm5nSWY9XCJoYXNQYWdlVGl0bGVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGV4dC1jZW50ZXInOiB0aXRsZUFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgICAgICd0ZXh0LXJpZ2h0JzogdGl0bGVBbGlnbm1lbnQgPT09ICdyaWdodCdcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgI3BhZ2VUaXRsZSBjbGFzcz1cInBhZ2UtdGl0bGVcIiBbY2xhc3MuaGFzLWFjdGlvbnNdPVwiaGFzQWN0aW9uc0luUGFnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCxx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QkFBb0I7Z0JBOE5yQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV25ELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CYWNrQnV0dG9uRGVsZWdhdGUsIElvbkNvbnRlbnQsIElvbkZvb3RlciwgSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBGaXRIZWFkaW5nQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9maXQtaGVhZGluZy9maXQtaGVhZGluZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnLi4vLi4vdHlwZXMvd2luZG93LXJlZic7XG5pbXBvcnQgeyBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTW9kYWxFbGVtZW50Q29tcG9uZW50LFxuICBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcixcbiAgTW9kYWxFbGVtZW50VHlwZSxcbn0gZnJvbSAnLi4vbW9kYWwvc2VydmljZXMvbW9kYWwuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzZWxlY3RlZFRhYkNsaWNrRXZlbnQgfSBmcm9tICcuLi90YWJzL3RhYi1idXR0b24vdGFiLWJ1dHRvbi5ldmVudHMnO1xuaW1wb3J0IHsgVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3RhYnMvdGFicy5jb21wb25lbnQnO1xuXG50eXBlIHN0aWNreUNvbmZpZyA9IHsgc3RpY2t5OiBib29sZWFuIH07XG50eXBlIGZpeGVkQ29uZmlnID0geyBmaXhlZDogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG4gIHN0eWxlczogWyc6aG9zdCB7ZGlzcGxheTogZmxleH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVByb2dyZXNzQ29tcG9uZW50IGV4dGVuZHMgTW9kYWxFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVE9ETzogRmluZCBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxpZ25zIHdpdGggZnV0dXJlIHBhZ2UgY29uZmlndXJhdGlvbiAvIGNvbnN1bXB0aW9uXG4gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gd2FzIGNob3NlbiBvdmVyIGV4cGFuZGluZyBgbW92ZUNoaWxkYCBtZXRob2QgaW4gY29tcG9uZW50IHdyYXBwZXIgd2l0aCB5ZXQgYW5vdGhlciBzY2VuYXJpb1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc2xvdCcpIHNsb3QgPSAnc3RhcnQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgbW9kYWxXcmFwcGVyOiBNb2RhbFdyYXBwZXJDb21wb25lbnQsXG4gICAgQE9wdGlvbmFsKCkgbW9kYWxFbGVtZW50c0FkdmVydGlzZXI6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge1xuICAgIHN1cGVyKE1vZGFsRWxlbWVudFR5cGUuUEFHRV9QUk9HUkVTUywgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxXcmFwcGVyICYmIHRoaXMubW9kYWxXcmFwcGVyLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICB0aGlzLnNsb3QgPSAnZW5kJztcbiAgICB9XG4gIH1cbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtdGl0bGUnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCBleHRlbmRzIE1vZGFsRWxlbWVudENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLlRJVExFLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudCBzZWxlY3Q9XCJidXR0b25ba2lyYnktYnV0dG9uXVwiPjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIGRlZmF1bHRCYWNrSHJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGVNYXhMaW5lczogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3RhYkJhckJvdHRvbUhpZGRlbjogYm9vbGVhbjtcbiAgcHVibGljIGdldCB0YWJCYXJCb3R0b21IaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkJhckJvdHRvbUhpZGRlbjtcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYkJhckJvdHRvbUhpZGRlbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIC8vIGFzIHdlIGFyZSBzZXR0aW5nIGEgY2xhc3Mgb24gdGFicywgd2UgbmVlZCB0aGlzIHRvIGhhcHBlbiBpbiBhIHNlcGFyYXRlIGNkIGN5Y2xlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWUpKTtcbiAgICB9XG4gICAgdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBsZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPFB1bGxUb1JlZnJlc2hFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJhY2tCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbkRlbGVnYXRlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBiYWNrQnV0dG9uRGVsZWdhdGU6IElvbkJhY2tCdXR0b25EZWxlZ2F0ZTtcbiAgQFZpZXdDaGlsZCgncGFnZVRpdGxlJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgcGFnZVRpdGxlOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3NpbXBsZVRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBjdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY3VzdG9tVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlU3VidGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY3VzdG9tU3VidGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihQYWdlQWN0aW9uc0RpcmVjdGl2ZSlcbiAgY3VzdG9tQWN0aW9uczogUXVlcnlMaXN0PFBhZ2VBY3Rpb25zRGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZHJlbihQYWdlQ29udGVudERpcmVjdGl2ZSlcbiAgcHJpdmF0ZSBjdXN0b21Db250ZW50OiBRdWVyeUxpc3Q8UGFnZUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gIGhhc1BhZ2VUaXRsZTogYm9vbGVhbjtcbiAgaGFzUGFnZVN1YnRpdGxlOiBib29sZWFuO1xuICBoYXNBY3Rpb25zSW5QYWdlOiBib29sZWFuO1xuICB0b29sYmFyVGl0bGVWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZTogYm9vbGVhbjtcbiAgdG9vbGJhclN0aWNreUFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuXG4gIGZpdEhlYWRpbmdDb25maWc6IEZpdEhlYWRpbmdDb25maWc7XG5cbiAgdG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcGFnZUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHN0aWNreUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRBY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgcGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyID1cbiAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIHByaXZhdGUgdXJsczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBoYXNFbnRlcmVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgbmdPbkRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uU3RhcnQkOiBPYnNlcnZhYmxlPFJvdXRlckV2ZW50PiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHRha2VVbnRpbCh0aGlzLm5nT25EZXN0cm95JCksXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KVxuICApO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvbkVuZCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSxcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHRhYnNDb21wb25lbnQ6IFRhYnNDb21wb25lbnRcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlV3JhcHBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRpdGxlTWF4TGluZXMpIHtcbiAgICAgIHRoaXMuZml0SGVhZGluZ0NvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5maXRIZWFkaW5nQ29uZmlnLFxuICAgICAgICBtYXhMaW5lczogY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnN1YnRpdGxlICYmICFjaGFuZ2VzLnN1YnRpdGxlLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3VidGl0bGUgPSBjaGFuZ2VzLnRpdGxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRpb25TdGFydCQuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvblN0YXJ0KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnVybHMuaW5jbHVkZXMoZXZlbnQudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMucm91dGVyLnVybClcbiAgICAgICkge1xuICAgICAgICB0aGlzLm9uTGVhdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubmF2aWdhdGlvbkVuZCQuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgaWYgKHRoaXMudXJscy5pbmNsdWRlcyhldmVudC51cmxBZnRlclJlZGlyZWN0cykpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihzZWxlY3RlZFRhYkNsaWNrRXZlbnQsICgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaW50ZXJjZXB0QmFja0J1dHRvbkNsaWNrc1NldHVwKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVybHMuaW5jbHVkZXModGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgdGhpcy51cmxzLnB1c2godGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgIHRoaXMub25FbnRlcigpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZVRpdGxlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQWN0aW9ucygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZVJlZnJlc2hFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoe1xuICAgICAgY29tcGxldGU6IGV2ZW50LnRhcmdldC5jb21wbGV0ZS5iaW5kKGV2ZW50LnRhcmdldCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaGFzRW50ZXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuaGFzRW50ZXJlZCA9IHRydWU7XG5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG4gICAgaWYgKHRoaXMucGFnZVRpdGxlKSB7XG4gICAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLnVub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKSB7XG4gICAgLy8gSW50ZXJjZXB0IGJhY2stYnV0dG9uIGNsaWNrIGV2ZW50cywgZGVmYXVsdGluZyB0byB0aGUgYnVpbHQtaW4gY2xpY2staGFuZGxlci5cbiAgICBpZiAodGhpcy5iYWNrQnV0dG9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrLmJpbmQodGhpcy5iYWNrQnV0dG9uRGVsZWdhdGUpKTtcbiAgICB9XG4gICAgdGhpcy5iYWNrQnV0dG9uRGVsZWdhdGUub25DbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuYmFja0J1dHRvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaXRsZSgpIHtcbiAgICAvLyBFbnN1cmVzIGluaXRpYWxpemVUaXRsZSgpIHdvbid0IHJ1biwgaWYgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkgcmV0dXJuO1xuICAgIHRoaXMuaGFzUGFnZVRpdGxlID0gdGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlO1xuICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICF0aGlzLmhhc1BhZ2VUaXRsZTtcbiAgICB0aGlzLmhhc1BhZ2VTdWJ0aXRsZSA9IHRoaXMuc3VidGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tU3VidGl0bGVUZW1wbGF0ZTtcblxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRUaXRsZVRlbXBsYXRlID0gdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlIHx8IHRoaXMuc2ltcGxlVGl0bGVUZW1wbGF0ZTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpwcmV0dGllclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHRoaXMudG9vbGJhclRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlXG4gICAgICA/IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgIDogdHlwZW9mIHRoaXMudG9vbGJhclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgICAgOiBkZWZhdWx0VGl0bGVUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFjdGlvbnMoKSB7XG4gICAgdGhpcy5jdXN0b21BY3Rpb25zLmZvckVhY2goKHBhZ2VBY3Rpb24pID0+IHtcbiAgICAgIGlmIChwYWdlQWN0aW9uLmlzRml4ZWQpIHtcbiAgICAgICAgdGhpcy5maXhlZEFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICAgIHRoaXMudG9vbGJhckZpeGVkQWN0aW9uc1Zpc2libGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNTdGlja3kpIHtcbiAgICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmhhc0FjdGlvbnNJblBhZ2UgPSAhIXRoaXMucGFnZUFjdGlvbnNUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbnRlbnQoKSB7XG4gICAgdGhpcy5jdXN0b21Db250ZW50LmZvckVhY2goKGNvbnRlbnQpID0+IHtcbiAgICAgIGlmIChjb250ZW50LmlzRml4ZWQpIHtcbiAgICAgICAgdGhpcy5maXhlZENvbnRlbnRUZW1wbGF0ZSA9IGNvbnRlbnQudGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRUZW1wbGF0ZSA9IGNvbnRlbnQudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVdyYXBwZXIoKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgIH07XG5cbiAgICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMudG9vbGJhclN0aWNreUFjdGlvbnNWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsU2hvdycsIFsnJGV2ZW50J10pXG4gIF9vbktleWJvYXJkV2lsbFNob3coaW5mbz86IHsga2V5Ym9hcmRIZWlnaHQ6IG51bWJlciB9KSB7XG4gICAgaWYgKGluZm8gJiYgaW5mby5rZXlib2FyZEhlaWdodCkge1xuICAgICAgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAnLS1rZXlib2FyZC1vZmZzZXQnLFxuICAgICAgICBgJHtpbmZvLmtleWJvYXJkSGVpZ2h0fXB4YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsSGlkZScpXG4gIF9vbktleWJvYXJkV2lsbEhpZGUoKSB7XG4gICAgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWtleWJvYXJkLW9mZnNldCcsICcwcHgnKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uXG4gICAgICAgIHRleHQ9XCJcIlxuICAgICAgICBbZGVmYXVsdEhyZWZdPVwiZGVmYXVsdEJhY2tIcmVmXCJcbiAgICAgICAgaWNvbj1cImFzc2V0cy9raXJieS9pY29ucy9zdmcvYXJyb3ctYmFjay5zdmdcIlxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlQmFja0J1dHRvbiA/ICdoaWRkZW4nIDogbnVsbFwiXG4gICAgICA+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXItdGl0bGUgaGlkZVwiIFtjbGFzcy5mYWRlLWluXT1cInRvb2xiYXJUaXRsZVZpc2libGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnNcbiAgICAgIGNsYXNzPVwiaGlkZVwiXG4gICAgICBzbG90PVwicHJpbWFyeVwiXG4gICAgICBbY2xhc3MuZmFkZS1pbl09XCJ0b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGUgJiYgc3RpY2t5QWN0aW9uc1RlbXBsYXRlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5QWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnNcbiAgICAgIGNsYXNzPVwiaGlkZVwiXG4gICAgICBzbG90PVwic2Vjb25kYXJ5XCJcbiAgICAgIFtjbGFzcy5mYWRlLWluXT1cInRvb2xiYXJGaXhlZEFjdGlvbnNWaXNpYmxlICYmIGZpeGVkQWN0aW9uc1RlbXBsYXRlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZml4ZWRBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgc2Nyb2xsRXZlbnRzPVwidHJ1ZVwiIGZvcmNlT3ZlcnNjcm9sbD1cImZhbHNlXCI+XG4gIDxpb24tcmVmcmVzaGVyXG4gICAgKm5nSWY9XCJyZWZyZXNoLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAoaW9uUmVmcmVzaCk9XCJkZWxlZ2F0ZVJlZnJlc2hFdmVudCgkZXZlbnQpXCJcbiAgICBzbG90PVwiZml4ZWRcIlxuICA+XG4gICAgPGtpcmJ5LXNwaW5uZXI+PC9raXJieS1zcGlubmVyPlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgICpuZ0lmPVwiaGFzUGFnZVRpdGxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICNwYWdlVGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgW2NsYXNzLmhhcy1hY3Rpb25zXT1cImhhc0FjdGlvbnNJblBhZ2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGl0bGVUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VBY3Rpb25zVGVtcGxhdGUgfHwgZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJoYXNQYWdlU3VidGl0bGVcIiBjbGFzcz1cInBhZ2Utc3VidGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tU3VidGl0bGVUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZVN1YnRpdGxlVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29udGVudCAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0Q29udGVudFRlbXBsYXRlXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgc2xvdD1cImZpeGVkXCIgY2xhc3M9XCJmaXhlZC1jb250ZW50XCIgKm5nSWY9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWlubmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZml4ZWRDb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2lvbi1jb250ZW50PlxuXG48aW9uLWZvb3Rlcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG48L2lvbi1mb290ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VUaXRsZVRlbXBsYXRlPlxuICA8aDEgW2tpcmJ5Rml0SGVhZGluZ109XCJmaXRIZWFkaW5nQ29uZmlnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbXBsZVRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9oMT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbXBsZVN1YnRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlQWN0aW9uc1RlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWFjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtY29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVGl0bGVUZW1wbGF0ZT57eyB0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVN1YnRpdGxlVGVtcGxhdGU+e3sgc3VidGl0bGUgfX08L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZT57eyB0b29sYmFyVGl0bGUgfX08L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -70,7 +70,7 @@ export class RangeComponent {
|
|
|
70
70
|
multi: true,
|
|
71
71
|
useExisting: forwardRef((() => RangeComponent)),
|
|
72
72
|
},
|
|
73
|
-
], usesOnChanges: true, ngImport: i0, template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n", styles: [":host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-white);--knob-box-shadow: 0 5px 10px 0 rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 8%);--knob-size: 24px;--pin-color: var(--kirby-text-color-black);--pin-background: var(--kirby-semi-light);--bar-background: var(--kirby-medium);--bar-background-active: var(--kirby-dark);--bar-border-radius: 4px;--bar-height: 2px;flex:1 1 100%;padding:0}ion-range.range-disabled{--knob-background: var(--kirby-semi-light);--knob-box-shadow: none;--bar-background: var(--kirby-semi-light);--bar-background-active: var(--kirby-semi-light)}ion-range.range-disabled::part(tick){background:var(--kirby-semi-light)}ion-range.range-has-pin{padding:0 3px}ion-range::part(pin){font-size:12px;color:var(--pin-color);background-color:var(--pin-background);padding:2px 4px;border-radius:4px;min-width:40px;position:relative}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:50%;width:6px;height:6px;z-index:1;margin-inline-start:-3px}ion-range::part(tick){background:var(--kirby-medium)}label{font-size:12px;line-height:16px;color:var(--kirby-text-color-semi-dark);margin-top:-4px}\n"], components: [{ type: i1.IonRange, selector: "ion-range", inputs: ["color", "debounce", "disabled", "dualKnobs", "max", "min", "mode", "name", "pin", "snaps", "step", "ticks", "value"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
73
|
+
], usesOnChanges: true, ngImport: i0, template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n", styles: [":host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-white);--knob-box-shadow: 0 5px 10px 0 rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 8%);--knob-size: 24px;--pin-color: var(--kirby-text-color-black);--pin-background: var(--kirby-semi-light);--bar-background: var(--kirby-medium);--bar-background-active: var(--kirby-dark);--bar-border-radius: 4px;--bar-height: 2px;flex:1 1 100%;padding:0}ion-range.range-disabled{--knob-background: var(--kirby-semi-light);--knob-box-shadow: none;--bar-background: var(--kirby-semi-light);--bar-background-active: var(--kirby-semi-light)}ion-range.range-disabled::part(tick){background:var(--kirby-semi-light)}ion-range.range-has-pin{padding:0 3px}ion-range::part(pin){font-size:12px;color:var(--pin-color);background-color:var(--pin-background);padding:2px 4px;border-radius:4px;min-width:40px;position:relative}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:50%;width:6px;height:6px;z-index:1;margin-inline-start:-3px}ion-range::part(tick){background:var(--kirby-medium)}label{font-size:12px;line-height:16px;color:var(--kirby-text-color-semi-dark);margin-top:-4px}\n"], components: [{ type: i1.IonRange, selector: "ion-range", inputs: ["activeBarStart", "color", "debounce", "disabled", "dualKnobs", "max", "min", "mode", "name", "pin", "pinFormatter", "snaps", "step", "ticks", "value"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: RangeComponent, decorators: [{
|
|
75
75
|
type: Component,
|
|
76
76
|
args: [{ selector: 'kirby-range', providers: [
|
|
@@ -84,7 +84,7 @@ export class SegmentedControlComponent {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
/** @nocollapse */ SegmentedControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SegmentedControlComponent, deps: [{ token: i1.IconRegistryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
-
/** @nocollapse */ SegmentedControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SegmentedControlComponent, selector: "kirby-segmented-control", inputs: { mode: "mode", items: "items", selectedIndex: "selectedIndex", value: "value", size: "size", disableChangeOnSwipe: "disableChangeOnSwipe" }, outputs: { segmentSelect: "segmentSelect" }, host: { attributes: { "role": "group" }, properties: { "class": "this._modeCssClass", "class.sm": "this.isSmallSize" } }, ngImport: i0, template: "<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n [scrollable]=\"disableChangeOnSwipe\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n >\n <ng-container *ngIf=\"item.badge.icon; else badgeContent\">\n <kirby-icon\n *ngIf=\"item.badge.isCustomIcon; else defaultIconName\"\n [customName]=\"item.badge.icon\"\n ></kirby-icon>\n <ng-template #defaultIconName>\n <kirby-icon [name]=\"item.badge.icon\"></kirby-icon>\n </ng-template>\n </ng-container>\n <ng-template #badgeContent>\n {{ item.badge.content }}\n </ng-template>\n </kirby-badge>\n </div>\n</ion-segment>\n\n<ng-container *ngIf=\"mode === 'chip' || mode === 'compactChip'\">\n <kirby-chip\n *ngFor=\"let item of items; let index = index\"\n [text]=\"item.text\"\n [isSelected]=\"index === selectedIndex\"\n (click)=\"onSegmentSelect(item.id)\"\n role=\"button\"\n ></kirby-chip>\n</ng-container>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;--kirby-badge-elevation: 0 5px 10px -10px rgba(28, 28, 28, .3), 0 0 5px 0 rgba(28, 28, 28, .08);--kirby-badge-position: absolute;--kirby-badge-top: -8px;--kirby-badge-right: 8px;--kirby-badge-z-index: 2}:host.sm ion-segment-button{min-height:32px;font-size:12px;--padding-start: 16px;--padding-end: 16px}:host.chip-mode{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}@media (pointer: coarse){:host.chip-mode{scrollbar-width:none}:host.chip-mode::-webkit-scrollbar{display:none}}ion-segment{display:inline-flex;width:auto;overflow:visible;contain:unset;--background: var(--kirby-white);border-radius:999px}ion-segment-button{position:relative;min-height:40px;font-weight:400;font-size:14px;text-transform:none;--border-radius: 999px;--border-style: none;--background: none;--color: var(--kirby-white-contrast);--indicator-color: var(--kirby-black);--color-checked: var(--kirby-black-contrast);--color-hover: var(--kirby-black-tint);--indicator-box-shadow: none;--padding-start: 24px;--padding-end: 24px;--margin-bottom: 0;--margin-end: 0;--margin-start: 0;--margin-top: 0;margin:0}ion-segment-button:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}.segment-btn-wrapper{position:relative}:host-context(.plt-desktop) ion-segment-button:focus-within{outline-color:-webkit-focus-ring-color;outline-style:auto}\n"], components: [{ type: i2.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "swipeGesture", "value"] }, { type: i2.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { type: i3.KirbyBadge, selector: "kirby-badge", inputs: ["size", "text", "themeColor"] }, { type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { type: i5.ChipComponent, selector: "kirby-chip", inputs: ["text", "isSelected"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
87
|
+
/** @nocollapse */ SegmentedControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SegmentedControlComponent, selector: "kirby-segmented-control", inputs: { mode: "mode", items: "items", selectedIndex: "selectedIndex", value: "value", size: "size", disableChangeOnSwipe: "disableChangeOnSwipe" }, outputs: { segmentSelect: "segmentSelect" }, host: { attributes: { "role": "group" }, properties: { "class": "this._modeCssClass", "class.sm": "this.isSmallSize" } }, ngImport: i0, template: "<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n [scrollable]=\"disableChangeOnSwipe\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n >\n <ng-container *ngIf=\"item.badge.icon; else badgeContent\">\n <kirby-icon\n *ngIf=\"item.badge.isCustomIcon; else defaultIconName\"\n [customName]=\"item.badge.icon\"\n ></kirby-icon>\n <ng-template #defaultIconName>\n <kirby-icon [name]=\"item.badge.icon\"></kirby-icon>\n </ng-template>\n </ng-container>\n <ng-template #badgeContent>\n {{ item.badge.content }}\n </ng-template>\n </kirby-badge>\n </div>\n</ion-segment>\n\n<ng-container *ngIf=\"mode === 'chip' || mode === 'compactChip'\">\n <kirby-chip\n *ngFor=\"let item of items; let index = index\"\n [text]=\"item.text\"\n [isSelected]=\"index === selectedIndex\"\n (click)=\"onSegmentSelect(item.id)\"\n role=\"button\"\n ></kirby-chip>\n</ng-container>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;--kirby-badge-elevation: 0 5px 10px -10px rgba(28, 28, 28, .3), 0 0 5px 0 rgba(28, 28, 28, .08);--kirby-badge-position: absolute;--kirby-badge-top: -8px;--kirby-badge-right: 8px;--kirby-badge-z-index: 2}:host.sm ion-segment-button{min-height:32px;font-size:12px;--padding-start: 16px;--padding-end: 16px}:host.chip-mode{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}@media (pointer: coarse){:host.chip-mode{scrollbar-width:none}:host.chip-mode::-webkit-scrollbar{display:none}}ion-segment{display:inline-flex;width:auto;overflow:visible;contain:unset;--background: var(--kirby-white);border-radius:999px}ion-segment-button{position:relative;min-height:40px;font-weight:400;font-size:14px;text-transform:none;--border-radius: 999px;--border-style: none;--background: none;--color: var(--kirby-white-contrast);--indicator-color: var(--kirby-black);--color-checked: var(--kirby-black-contrast);--color-hover: var(--kirby-black-tint);--indicator-box-shadow: none;--padding-start: 24px;--padding-end: 24px;--margin-bottom: 0;--margin-end: 0;--margin-start: 0;--margin-top: 0;margin:0}ion-segment-button:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}.segment-btn-wrapper{position:relative}:host-context(.plt-desktop) ion-segment-button:focus-within{outline-color:-webkit-focus-ring-color;outline-style:auto}\n"], components: [{ type: i2.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { type: i2.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { type: i3.KirbyBadge, selector: "kirby-badge", inputs: ["size", "text", "themeColor"] }, { type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { type: i5.ChipComponent, selector: "kirby-chip", inputs: ["text", "isSelected"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
88
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SegmentedControlComponent, decorators: [{
|
|
89
89
|
type: Component,
|
|
90
90
|
args: [{ selector: 'kirby-segmented-control', host: { role: 'group' }, template: "<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n [scrollable]=\"disableChangeOnSwipe\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n >\n <ng-container *ngIf=\"item.badge.icon; else badgeContent\">\n <kirby-icon\n *ngIf=\"item.badge.isCustomIcon; else defaultIconName\"\n [customName]=\"item.badge.icon\"\n ></kirby-icon>\n <ng-template #defaultIconName>\n <kirby-icon [name]=\"item.badge.icon\"></kirby-icon>\n </ng-template>\n </ng-container>\n <ng-template #badgeContent>\n {{ item.badge.content }}\n </ng-template>\n </kirby-badge>\n </div>\n</ion-segment>\n\n<ng-container *ngIf=\"mode === 'chip' || mode === 'compactChip'\">\n <kirby-chip\n *ngFor=\"let item of items; let index = index\"\n [text]=\"item.text\"\n [isSelected]=\"index === selectedIndex\"\n (click)=\"onSegmentSelect(item.id)\"\n role=\"button\"\n ></kirby-chip>\n</ng-container>\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;--kirby-badge-elevation: 0 5px 10px -10px rgba(28, 28, 28, .3), 0 0 5px 0 rgba(28, 28, 28, .08);--kirby-badge-position: absolute;--kirby-badge-top: -8px;--kirby-badge-right: 8px;--kirby-badge-z-index: 2}:host.sm ion-segment-button{min-height:32px;font-size:12px;--padding-start: 16px;--padding-end: 16px}:host.chip-mode{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}@media (pointer: coarse){:host.chip-mode{scrollbar-width:none}:host.chip-mode::-webkit-scrollbar{display:none}}ion-segment{display:inline-flex;width:auto;overflow:visible;contain:unset;--background: var(--kirby-white);border-radius:999px}ion-segment-button{position:relative;min-height:40px;font-weight:400;font-size:14px;text-transform:none;--border-radius: 999px;--border-style: none;--background: none;--color: var(--kirby-white-contrast);--indicator-color: var(--kirby-black);--color-checked: var(--kirby-black-contrast);--color-hover: var(--kirby-black-tint);--indicator-box-shadow: none;--padding-start: 24px;--padding-end: 24px;--margin-bottom: 0;--margin-end: 0;--margin-start: 0;--margin-top: 0;margin:0}ion-segment-button:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}.segment-btn-wrapper{position:relative}:host-context(.plt-desktop) ion-segment-button:focus-within{outline-color:-webkit-focus-ring-color;outline-style:auto}\n"] }]
|
|
@@ -57,10 +57,10 @@ export class SlideButtonComponent {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
/** @nocollapse */ SlideButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SlideButtonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
/** @nocollapse */ SlideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SlideButtonComponent, selector: "kirby-slide-button", inputs: { text: "text", expand: "expand" }, outputs: { slideDone: "slideDone", slidingPercentageChanged: "slidingPercentageChanged" }, ngImport: i0, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none
|
|
60
|
+
/** @nocollapse */ SlideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SlideButtonComponent, selector: "kirby-slide-button", inputs: { text: "text", expand: "expand" }, outputs: { slideDone: "slideDone", slidingPercentageChanged: "slidingPercentageChanged" }, ngImport: i0, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
61
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SlideButtonComponent, decorators: [{
|
|
62
62
|
type: Component,
|
|
63
|
-
args: [{ selector: 'kirby-slide-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none
|
|
63
|
+
args: [{ selector: 'kirby-slide-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"] }]
|
|
64
64
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { text: [{
|
|
65
65
|
type: Input
|
|
66
66
|
}], expand: [{
|
|
@@ -13,7 +13,7 @@ export class ToggleComponent {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
/** @nocollapse */ ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
-
/** @nocollapse */ ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ToggleComponent, selector: "kirby-toggle", inputs: { checked: "checked", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [".toggle-checked{--background-checked: var(--kirby-success)}\n"], components: [{ type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "mode", "name", "value"] }], directives: [{ type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16
|
+
/** @nocollapse */ ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ToggleComponent, selector: "kirby-toggle", inputs: { checked: "checked", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [".toggle-checked{--background-checked: var(--kirby-success)}\n"], components: [{ type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "mode", "name", "value"] }], directives: [{ type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
19
|
args: [{ selector: 'kirby-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [".toggle-checked{--background-checked: var(--kirby-success)}\n"] }]
|