@carefirst/library 4.0.1 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. package/esm2022/lib/components/alert/alert.component.mjs +6 -6
  2. package/esm2022/lib/components/badge/badge.component.mjs +7 -6
  3. package/esm2022/lib/components/button/button.component.mjs +10 -9
  4. package/esm2022/lib/components/calendar/calendar.component.mjs +4 -4
  5. package/esm2022/lib/components/chat-bubble/chat-bubble.component.mjs +3 -3
  6. package/esm2022/lib/components/form-input/form-input.component.mjs +6 -6
  7. package/esm2022/lib/components/form-input-select/form-input-select.component.mjs +6 -6
  8. package/esm2022/lib/components/form-input-text-area/form-input-text-area.component.mjs +6 -6
  9. package/esm2022/lib/components/form-validation/form-validation.component.mjs +3 -3
  10. package/esm2022/lib/components/icon/icon.component.mjs +3 -3
  11. package/esm2022/lib/components/logo/logo.component.mjs +3 -3
  12. package/esm2022/lib/components/mix-p/mix-p.component.mjs +3 -3
  13. package/esm2022/lib/components/notification/notification.component.mjs +5 -5
  14. package/esm2022/lib/components/page/page.component.mjs +6 -5
  15. package/esm2022/lib/components/spacer/spacer.component.mjs +3 -3
  16. package/esm2022/lib/components/spinner/spinner.component.mjs +3 -3
  17. package/esm2022/lib/components/verification-code/verification-code.component.mjs +6 -6
  18. package/esm2022/lib/directives/button-loader.directive.mjs +6 -6
  19. package/esm2022/lib/library.module.mjs +8 -107
  20. package/fesm2022/carefirst-library.mjs +69 -168
  21. package/fesm2022/carefirst-library.mjs.map +1 -1
  22. package/lib/components/alert/alert.component.d.ts +1 -1
  23. package/lib/components/verification-code/verification-code.component.d.ts +1 -1
  24. package/lib/library.module.d.ts +4 -4
  25. package/package.json +4 -4
@@ -24,10 +24,10 @@ export class MixPComponent {
24
24
  updateClass() {
25
25
  this.pClass = (this.getScreenWidth < 768 ? this.inputMobile : this.inputDesktop) || 'body-standard';
26
26
  }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MixPComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MixPComponent, selector: "cf-mix-p", inputs: { mobile: "mobile", desktop: "desktop" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Desktop -->\n<p [ngClass]=\"pClass\"><ng-content></ng-content></p>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MixPComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: MixPComponent, selector: "cf-mix-p", inputs: { mobile: "mobile", desktop: "desktop" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Desktop -->\n<p [ngClass]=\"pClass\"><ng-content></ng-content></p>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MixPComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MixPComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: 'cf-mix-p', template: "<!-- Desktop -->\n<p [ngClass]=\"pClass\"><ng-content></ng-content></p>\n" }]
33
33
  }], propDecorators: { mobile: [{
@@ -1,7 +1,7 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@ionic/angular/standalone";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@angular/common";
5
5
  import * as i3 from "../button/button.component";
6
6
  import * as i4 from "../spacer/spacer.component";
7
7
  import * as i5 from "../icon/icon.component";
@@ -9,10 +9,10 @@ export class NotificationComponent {
9
9
  data;
10
10
  dataChange = new EventEmitter();
11
11
  buttonClick = new EventEmitter();
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: NotificationComponent, selector: "cf-notification", inputs: { data: "data" }, outputs: { dataChange: "dataChange", buttonClick: "buttonClick" }, ngImport: i0, template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"24\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon\n icon=\"close\"\n *ngIf=\"data.canClose\"\n (click)=\"data = undefined; dataChange.emit(data)\"\n [height]=\"10\"\n [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px;margin-inline:auto;max-width:640px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.ButtonComponent, selector: "cf-btn", inputs: ["type", "disabled", "alert", "action", "white", "snug", "accent", "fontSize", "iconStart", "iconEnd", "loading", "loadingText", "customColor"] }, { kind: "component", type: i4.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i5.IconComponent, selector: "cf-icon", inputs: ["icon", "height", "heightMobile", "heightDesktop", "iconColor"] }] });
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: NotificationComponent, selector: "cf-notification", inputs: { data: "data" }, outputs: { dataChange: "dataChange", buttonClick: "buttonClick" }, ngImport: i0, template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"24\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon\n icon=\"close\"\n *ngIf=\"data.canClose\"\n (click)=\"data = undefined; dataChange.emit(data)\"\n [height]=\"10\"\n [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px;margin-inline:auto;max-width:640px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "cf-btn", inputs: ["type", "disabled", "alert", "action", "white", "snug", "accent", "fontSize", "iconStart", "iconEnd", "loading", "loadingText", "customColor"] }, { kind: "component", type: i4.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i5.IconComponent, selector: "cf-icon", inputs: ["icon", "height", "heightMobile", "heightDesktop", "iconColor"] }] });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NotificationComponent, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: NotificationComponent, decorators: [{
16
16
  type: Component,
17
17
  args: [{ selector: 'cf-notification', template: "<div *ngIf=\"data\">\n <cf-spacer mobile=\"16\" desktop=\"24\"></cf-spacer>\n <ion-grid>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"12\">\n <div [ngClass]=\"data.status\" id=\"notification-container\">\n <ion-grid>\n <ion-row>\n <ion-col class=\"ion-align-self-center ion-text-start\">\n <p class=\"body-medium bold\">{{ data.heading }}</p>\n </ion-col>\n <ion-col size=\"auto\">\n <cf-icon\n icon=\"close\"\n *ngIf=\"data.canClose\"\n (click)=\"data = undefined; dataChange.emit(data)\"\n [height]=\"10\"\n [iconColor]=\"data.status\"></cf-icon>\n </ion-col>\n <ion-col *ngIf=\"data.message\" size=\"12\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-small\">{{ data.message }}</p>\n </ion-col>\n <ion-col *ngIf=\"data.button?.buttonHeading\">\n <cf-spacer default=\"8\"></cf-spacer>\n <p class=\"body-medium bold\">{{ data.button?.buttonHeading }}</p>\n </ion-col>\n <ion-col size=\"12\">\n <ng-content></ng-content>\n </ion-col>\n <ion-col size=\"12\" *ngIf=\"data.button\">\n <cf-spacer default=\"8\"></cf-spacer>\n <cf-btn type=\"primary\" fontSize=\"large\" action snug (click)=\"buttonClick.emit(data.button.buttonClickIdentifier)\">{{\n data.button.buttonText\n }}</cf-btn>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n", styles: ["#notification-container{border-radius:4px;text-align:start;padding:12px;margin-inline:auto;max-width:640px}#notification-container.success{border:1.5px solid var(--cf-app-system-color-success);background-color:var(--cf-app-system-color-light-success)}#notification-container.warning{border:1.5px solid var(--cf-app-system-color-warning);background-color:var(--cf-app-system-color-light-warning)}#notification-container.error{border:1.5px solid var(--cf-app-system-color-error);background-color:var(--cf-app-system-color-light-error)}\n"] }]
18
18
  }], propDecorators: { data: [{
@@ -1,7 +1,8 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { checkTruthAttribute } from '../../utils/attribute.util';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
4
+ import * as i1 from "@ionic/angular";
5
+ import * as i2 from "@angular/common";
5
6
  export class PageComponent {
6
7
  centerH;
7
8
  centerV;
@@ -30,10 +31,10 @@ export class PageComponent {
30
31
  this.inputNoStickyButtonFade = checkTruthAttribute(changes, 'noStickyButtonFade', this.inputNoStickyButtonFade);
31
32
  this.inputStickyButtonOn = checkTruthAttribute(changes, 'stickyButtonOn', this.inputStickyButtonOn);
32
33
  }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: PageComponent, selector: "cf-page", inputs: { centerH: "centerH", centerV: "centerV", dark: "dark", noScroll: "noScroll", devMode: "devMode", buttonsVertical: "buttonsVertical", stickyButtonOn: "stickyButtonOn", noStickyButtonFade: "noStickyButtonFade" }, outputs: { scrollEvent: "scrollEvent" }, usesOnChanges: true, ngImport: i0, template: "<ion-content\n scrollEvents=\"true\"\n class=\"ion-page cf-page\"\n [ngClass]=\"{ 'bg-dark': inputDark, 'no-scroll': inputNoScroll, 'dev-mode': inputDevMode }\"\n (ionScroll)=\"scrollEvent.emit($event)\">\n <div id=\"page-setup\" [ngClass]=\"{ 'center-v': inputCenterV }\">\n <!-- Header -->\n <div id=\"header\" class=\"ion-no-border\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-header]\"></ng-content>\n </div>\n </div>\n <!-- Content and Buttons -->\n <div id=\"device-spacing\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div id=\"page-buttons\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n <!-- Footer -->\n <div id=\"footer\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-footer]\"></ng-content>\n </div>\n </div>\n <!-- Sticky-buttons -->\n <div id=\"sticky-buttons\" *ngIf=\"inputStickyButtonOn\">\n <div id=\"overlay\" [ngClass]=\"{ off: inputNoStickyButtonFade }\"> </div>\n <div id=\"buttons-container-background\">\n <div id=\"buttons-container\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-sticky-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page{--page-background-color: var(--cf-page-main-bg-color, var(--cf-app-background-light))}ion-content.cf-page.bg-dark{--page-background-color: var(--cf-app-background-dark)}ion-content.cf-page::part(scroll){background-color:var(--page-background-color);-ms-overflow-style:none;scrollbar-width:none}ion-content.cf-page::part(scroll)::-webkit-scrollbar{display:none}ion-content.cf-page.no-scroll::part(scroll){overflow:hidden}ion-content.cf-page{--main-page-block-padding: 24px}@media (min-width: 768px){ion-content.cf-page{--main-page-block-padding: 48px}}ion-content.cf-page #page-setup{position:relative;width:100%;min-height:100%;height:fit-content;flex-direction:column;display:flex}ion-content.cf-page #page-setup>*{width:100%;padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup>*{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup .content{display:flex;flex-direction:column;width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup .content{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup .content>*{max-width:100%}ion-content.cf-page #page-setup #header{display:flex;flex-direction:column;align-items:center;position:sticky;top:0;z-index:10;background-color:var(--page-background-color)}ion-content.cf-page #page-setup #device-spacing{flex-grow:1;display:flex;flex-direction:column}ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:1;width:min(var(--cf-page-content-mobile-max-width, 100%),100%)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:0;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}ion-content.cf-page #page-setup #device-spacing #page-buttons{width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content.vertical-buttons{flex-direction:column;align-items:center}}ion-content.cf-page #page-setup #device-spacing.center-h,ion-content.cf-page #page-setup #device-spacing.center-h>.content{align-items:center;text-align:center}ion-content.cf-page #page-setup #device-spacing.center-v,ion-content.cf-page #page-setup #device-spacing.center-v>.content{justify-content:center}ion-content.cf-page #page-setup #footer{display:flex;flex-direction:column;align-items:center;background-color:var(--cf-page-footer-bg-color, transparent)}ion-content.cf-page #page-setup #sticky-buttons{--fade-height: var(--cf-page-sticky-button-fade-height, 48px);display:flex;flex-direction:column;align-items:center;position:sticky;bottom:0;z-index:10;background-color:transparent;margin-inline:auto;padding-inline:0px}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{background-color:var(--page-background-color);width:100%;display:flex;flex-direction:column;align-items:center;margin-top:var(--fade-height);padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{width:100%;max-width:var(--cf-page-mobile-max-width, 358px);padding-top:12px}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content.vertical-buttons{flex-direction:column;align-items:center}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{padding-top:24px}}ion-content.cf-page #page-setup #sticky-buttons #overlay{width:100%;height:var(--fade-height);position:absolute;background-image:linear-gradient(to bottom,transparent,var(--page-background-color) 80%)}ion-content.cf-page #page-setup #sticky-buttons #overlay.off{background-color:var(--page-background-color)}#page-setup.center-v{justify-content:center}ion-content.cf-page.dev-mode #page-setup{background-color:#0ff}ion-content.cf-page.dev-mode #page-setup #header{background-color:#00f}ion-content.cf-page.dev-mode #page-setup .content{background-color:green}ion-content.cf-page.dev-mode #page-setup #page-buttons>.content{background-color:tomato}ion-content.cf-page.dev-mode #page-setup #footer{background-color:brown}ion-content.cf-page.dev-mode #page-setup #sticky-buttons #buttons-container-background{background-color:#7fff00}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PageComponent, selector: "cf-page", inputs: { centerH: "centerH", centerV: "centerV", dark: "dark", noScroll: "noScroll", devMode: "devMode", buttonsVertical: "buttonsVertical", stickyButtonOn: "stickyButtonOn", noStickyButtonFade: "noStickyButtonFade" }, outputs: { scrollEvent: "scrollEvent" }, usesOnChanges: true, ngImport: i0, template: "<ion-content\n scrollEvents=\"true\"\n class=\"ion-page cf-page\"\n [ngClass]=\"{ 'bg-dark': inputDark, 'no-scroll': inputNoScroll, 'dev-mode': inputDevMode }\"\n (ionScroll)=\"scrollEvent.emit($event)\">\n <div id=\"page-setup\" [ngClass]=\"{ 'center-v': inputCenterV }\">\n <!-- Header -->\n <div id=\"header\" class=\"ion-no-border\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-header]\"></ng-content>\n </div>\n </div>\n <!-- Content and Buttons -->\n <div id=\"device-spacing\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div id=\"page-buttons\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n <!-- Footer -->\n <div id=\"footer\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-footer]\"></ng-content>\n </div>\n </div>\n <!-- Sticky-buttons -->\n <div id=\"sticky-buttons\" *ngIf=\"inputStickyButtonOn\">\n <div id=\"overlay\" [ngClass]=\"{ off: inputNoStickyButtonFade }\"> </div>\n <div id=\"buttons-container-background\">\n <div id=\"buttons-container\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-sticky-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page{--page-background-color: var(--cf-page-main-bg-color, var(--cf-app-background-light))}ion-content.cf-page.bg-dark{--page-background-color: var(--cf-app-background-dark)}ion-content.cf-page::part(scroll){background-color:var(--page-background-color);-ms-overflow-style:none;scrollbar-width:none}ion-content.cf-page::part(scroll)::-webkit-scrollbar{display:none}ion-content.cf-page.no-scroll::part(scroll){overflow:hidden}ion-content.cf-page{--main-page-block-padding: 24px}@media (min-width: 768px){ion-content.cf-page{--main-page-block-padding: 48px}}ion-content.cf-page #page-setup{position:relative;width:100%;min-height:100%;height:fit-content;flex-direction:column;display:flex}ion-content.cf-page #page-setup>*{width:100%;padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup>*{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup .content{display:flex;flex-direction:column;width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup .content{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup .content>*{max-width:100%}ion-content.cf-page #page-setup #header{display:flex;flex-direction:column;align-items:center;position:sticky;top:0;z-index:10;background-color:var(--page-background-color)}ion-content.cf-page #page-setup #device-spacing{flex-grow:1;display:flex;flex-direction:column}ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:1;width:min(var(--cf-page-content-mobile-max-width, 100%),100%)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:0;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}ion-content.cf-page #page-setup #device-spacing #page-buttons{width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content.vertical-buttons{flex-direction:column;align-items:center}}ion-content.cf-page #page-setup #device-spacing.center-h,ion-content.cf-page #page-setup #device-spacing.center-h>.content{align-items:center;text-align:center}ion-content.cf-page #page-setup #device-spacing.center-v,ion-content.cf-page #page-setup #device-spacing.center-v>.content{justify-content:center}ion-content.cf-page #page-setup #footer{display:flex;flex-direction:column;align-items:center;background-color:var(--cf-page-footer-bg-color, transparent)}ion-content.cf-page #page-setup #sticky-buttons{--fade-height: var(--cf-page-sticky-button-fade-height, 48px);display:flex;flex-direction:column;align-items:center;position:sticky;bottom:0;z-index:10;background-color:transparent;margin-inline:auto;padding-inline:0px}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{background-color:var(--page-background-color);width:100%;display:flex;flex-direction:column;align-items:center;margin-top:var(--fade-height);padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{width:100%;max-width:var(--cf-page-mobile-max-width, 358px);padding-top:12px}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content.vertical-buttons{flex-direction:column;align-items:center}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{padding-top:24px}}ion-content.cf-page #page-setup #sticky-buttons #overlay{width:100%;height:var(--fade-height);position:absolute;background-image:linear-gradient(to bottom,transparent,var(--page-background-color) 80%)}ion-content.cf-page #page-setup #sticky-buttons #overlay.off{background-color:var(--page-background-color)}#page-setup.center-v{justify-content:center}ion-content.cf-page.dev-mode #page-setup{background-color:#0ff}ion-content.cf-page.dev-mode #page-setup #header{background-color:#00f}ion-content.cf-page.dev-mode #page-setup .content{background-color:green}ion-content.cf-page.dev-mode #page-setup #page-buttons>.content{background-color:tomato}ion-content.cf-page.dev-mode #page-setup #footer{background-color:brown}ion-content.cf-page.dev-mode #page-setup #sticky-buttons #buttons-container-background{background-color:#7fff00}\n"], dependencies: [{ kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
35
36
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: PageComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PageComponent, decorators: [{
37
38
  type: Component,
38
39
  args: [{ selector: 'cf-page', template: "<ion-content\n scrollEvents=\"true\"\n class=\"ion-page cf-page\"\n [ngClass]=\"{ 'bg-dark': inputDark, 'no-scroll': inputNoScroll, 'dev-mode': inputDevMode }\"\n (ionScroll)=\"scrollEvent.emit($event)\">\n <div id=\"page-setup\" [ngClass]=\"{ 'center-v': inputCenterV }\">\n <!-- Header -->\n <div id=\"header\" class=\"ion-no-border\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-header]\"></ng-content>\n </div>\n </div>\n <!-- Content and Buttons -->\n <div id=\"device-spacing\" [ngClass]=\"{ 'center-h': inputCenterH, 'center-v': inputCenterV }\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n <div id=\"page-buttons\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n <!-- Footer -->\n <div id=\"footer\">\n <div class=\"content\">\n <ng-content select=\"[cf-page-footer]\"></ng-content>\n </div>\n </div>\n <!-- Sticky-buttons -->\n <div id=\"sticky-buttons\" *ngIf=\"inputStickyButtonOn\">\n <div id=\"overlay\" [ngClass]=\"{ off: inputNoStickyButtonFade }\"> </div>\n <div id=\"buttons-container-background\">\n <div id=\"buttons-container\">\n <div class=\"content\" [ngClass]=\"{ 'vertical-buttons': inputButtonsVertical }\">\n <ng-content select=\"[cf-page-sticky-buttons]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ion-content>\n", styles: ["ion-content.cf-page{--page-background-color: var(--cf-page-main-bg-color, var(--cf-app-background-light))}ion-content.cf-page.bg-dark{--page-background-color: var(--cf-app-background-dark)}ion-content.cf-page::part(scroll){background-color:var(--page-background-color);-ms-overflow-style:none;scrollbar-width:none}ion-content.cf-page::part(scroll)::-webkit-scrollbar{display:none}ion-content.cf-page.no-scroll::part(scroll){overflow:hidden}ion-content.cf-page{--main-page-block-padding: 24px}@media (min-width: 768px){ion-content.cf-page{--main-page-block-padding: 48px}}ion-content.cf-page #page-setup{position:relative;width:100%;min-height:100%;height:fit-content;flex-direction:column;display:flex}ion-content.cf-page #page-setup>*{width:100%;padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup>*{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup .content{display:flex;flex-direction:column;width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup .content{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup .content>*{max-width:100%}ion-content.cf-page #page-setup #header{display:flex;flex-direction:column;align-items:center;position:sticky;top:0;z-index:10;background-color:var(--page-background-color)}ion-content.cf-page #page-setup #device-spacing{flex-grow:1;display:flex;flex-direction:column}ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:1;width:min(var(--cf-page-content-mobile-max-width, 100%),100%)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing>.content:first-child{flex-grow:0;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}ion-content.cf-page #page-setup #device-spacing #page-buttons{width:100%;max-width:var(--cf-page-mobile-max-width, 358px)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #device-spacing #page-buttons>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #device-spacing #page-buttons>.content.vertical-buttons{flex-direction:column;align-items:center}}ion-content.cf-page #page-setup #device-spacing.center-h,ion-content.cf-page #page-setup #device-spacing.center-h>.content{align-items:center;text-align:center}ion-content.cf-page #page-setup #device-spacing.center-v,ion-content.cf-page #page-setup #device-spacing.center-v>.content{justify-content:center}ion-content.cf-page #page-setup #footer{display:flex;flex-direction:column;align-items:center;background-color:var(--cf-page-footer-bg-color, transparent)}ion-content.cf-page #page-setup #sticky-buttons{--fade-height: var(--cf-page-sticky-button-fade-height, 48px);display:flex;flex-direction:column;align-items:center;position:sticky;bottom:0;z-index:10;background-color:transparent;margin-inline:auto;padding-inline:0px}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{background-color:var(--page-background-color);width:100%;display:flex;flex-direction:column;align-items:center;margin-top:var(--fade-height);padding-inline:var(--cf-page-inline-padding, 16px)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background{padding-inline:var(--cf-page-inline-padding, 72px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{width:100%;max-width:var(--cf-page-mobile-max-width, 358px);padding-top:12px}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{max-width:var(--cf-page-desktop-max-width, 1300px)}}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{justify-content:center;flex-wrap:nowrap;gap:16px;width:min(var(--cf-page-content-mobile-max-width, 100%),100%);margin-inline:auto}ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content:not(:empty){padding-bottom:var(--main-page-block-padding)}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content{flex-direction:row;width:min(var(--cf-page-content-desktop-max-width, 100%),100%)}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container>.content.vertical-buttons{flex-direction:column;align-items:center}}@media (min-width: 768px){ion-content.cf-page #page-setup #sticky-buttons #buttons-container-background #buttons-container{padding-top:24px}}ion-content.cf-page #page-setup #sticky-buttons #overlay{width:100%;height:var(--fade-height);position:absolute;background-image:linear-gradient(to bottom,transparent,var(--page-background-color) 80%)}ion-content.cf-page #page-setup #sticky-buttons #overlay.off{background-color:var(--page-background-color)}#page-setup.center-v{justify-content:center}ion-content.cf-page.dev-mode #page-setup{background-color:#0ff}ion-content.cf-page.dev-mode #page-setup #header{background-color:#00f}ion-content.cf-page.dev-mode #page-setup .content{background-color:green}ion-content.cf-page.dev-mode #page-setup #page-buttons>.content{background-color:tomato}ion-content.cf-page.dev-mode #page-setup #footer{background-color:brown}ion-content.cf-page.dev-mode #page-setup #sticky-buttons #buttons-container-background{background-color:#7fff00}\n"] }]
39
40
  }], propDecorators: { centerH: [{
@@ -55,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
55
56
  }], scrollEvent: [{
56
57
  type: Output
57
58
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0NBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFPakUsTUFBTSxPQUFPLGFBQWE7SUFDZixPQUFPLENBQWdDO0lBQ3ZDLE9BQU8sQ0FBZ0M7SUFDdkMsSUFBSSxDQUFnQztJQUNwQyxRQUFRLENBQWdDO0lBQ3hDLE9BQU8sQ0FBZ0M7SUFDdkMsZUFBZSxDQUFnQztJQUMvQyxjQUFjLENBQWdDO0lBQzlDLGtCQUFrQixDQUFnQztJQUVqRCxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUd4RCxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUM1Qix1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFPaEMsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxhQUFhLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXZHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFaEgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0RyxDQUFDO3VHQTVDVSxhQUFhOzJGQUFiLGFBQWEseVVDMUMxQixxa0RBMENBOzsyRkRBYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7OEJBS1YsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXJlRmlyc3QgTGlicmFyeSAtIFBhZ2VcbiAqXG4gKiBAZmlsZSAgICAgICAgICBwYWdlLmNvbXBvbmVudFxuICogQGRlc2NyaXB0aW9uICAgQ29udGFpbnMgYWxsIHRoZSBsb2dpYyBmb3IgZ2VuZXJhdGluZyBhIGJhc2ljIENhcmVGaXJzdCBQYWdlIHN0cnVjdHVyZVxuICogQGF1dGhvciAgICAgICAgSmFjcXVlcyBDb2V0emVlXG4gKiBAc2luY2UgICAgICAgICAyMDIzIC0gMTEgLSAwN1xuICogQHVzYWdlICAgICAgICAgPGNmLXBhZ2VcbiAqICAgICAgICAgICAgICAgICAgICAlY2VudGVySCVcbiAqICAgICAgICAgICAgICAgICAgICAlY2VudGVyViVcbiAqICAgICAgICAgICAgICAgICAgICAlZGFyayVcbiAqICAgICAgICAgICAgICAgICAgICAlbm9TY3JvbGwlXG4gKiAgICAgICAgICAgICAgICAgICAgJWRldk1vZGUlXG4gKiAgICAgICAgICAgICAgICAgICAgJWJ1dHRvbnNWZXJ0aWNhbCVcbiAqICAgICAgICAgICAgICAgICAgICAlc3RpY2t5QnV0dG9uT24lXG4gKiAgICAgICAgICAgICAgICAgICAgJW5vU3RpY2t5QnV0dG9uRmFkZSVcbiAqICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtbWFpbi1iZy1jb2xvcjogbGlnaHQ7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtaW5saW5lLXBhZGRpbmc6IDE2cHg7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtbW9iaWxlLW1heC13aWR0aDogMzU4cHg7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtZGVza3RvcC1tYXgtd2lkdGg6IDEyOTZweDslXG4gKiAgICAgICAgICAgICAgICAgICAgICAgJS0tY2YtcGFnZS1jb250ZW50LW1vYmlsZS1tYXgtd2lkdGg6IDEwMCU7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtY29udGVudC1kZXNrdG9wLW1heC13aWR0aDogMTAwJTslXG4gKiAgICAgICAgICAgICAgICAgICAgICAgJS0tY2YtcGFnZS1mb290ZXItYmctY29sb3I6IHRyYW5zcGFyZW50OyVcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLXN0aWNreS1idXR0b24tZmFkZS1oZWlnaHQ6IDI0cHg7JVxuICogICAgICAgICAgICAgICAgICAgIFwiPlxuICogICAgICAgICAgICAgICAgICBDT05URU5UXG4gKiAgICAgICAgICAgICAgICAgICU8bmctY29udGFpbmVyIGNmLXBhZ2UtaGVhZGVyPjwvbmctY29udGFpbmVyPiVcbiAqICAgICAgICAgICAgICAgICAgJTxuZy1jb250YWluZXIgY2YtcGFnZS1idXR0b25zPjwvbmctY29udGFpbmVyPiVcbiAqICAgICAgICAgICAgICAgICAgJTxuZy1jb250YWluZXIgY2YtcGFnZS1mb290ZXI+PC9uZy1jb250YWluZXI+JVxuICogICAgICAgICAgICAgICAgICAlPG5nLWNvbnRhaW5lciBjZi1wYWdlLXN0aWNreS1idXR0b25zPjwvbmctY29udGFpbmVyPiVcbiAqICAgICAgICAgICAgICAgIDwvY2YtcGFnZT5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIHR5cGUgT25DaGFuZ2VzLCB0eXBlIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2hlY2tUcnV0aEF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2F0dHJpYnV0ZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2YtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY2VudGVySD86IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGNlbnRlclY/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBkYXJrPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbm9TY3JvbGw/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBkZXZNb2RlPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYnV0dG9uc1ZlcnRpY2FsPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc3RpY2t5QnV0dG9uT24/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub1N0aWNreUJ1dHRvbkZhZGU/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBzY3JvbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cbiAgLy8tLS0gTG9jYWwgdmFyaWFibGVzXG4gIGlucHV0Q2VudGVySCA9IGZhbHNlO1xuICBpbnB1dENlbnRlclYgPSBmYWxzZTtcbiAgaW5wdXREYXJrID0gZmFsc2U7XG4gIGlucHV0Tm9TY3JvbGwgPSBmYWxzZTtcbiAgaW5wdXREZXZNb2RlID0gZmFsc2U7XG4gIGlucHV0QnV0dG9uc1ZlcnRpY2FsID0gZmFsc2U7XG4gIGlucHV0U3RpY2t5QnV0dG9uT24gPSBmYWxzZTtcbiAgaW5wdXROb1N0aWNreUJ1dHRvbkZhZGUgPSBmYWxzZTtcblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIG5nT25DaGFuZ2VzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVwZGF0ZSB2YXJpb3VzIHZhbHVlcyBvbiBpbnB1dCBjaGFuZ2VzXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vLS0tIENlbnRlciBIXG4gICAgdGhpcy5pbnB1dENlbnRlckggPSBjaGVja1RydXRoQXR0cmlidXRlKGNoYW5nZXMsICdjZW50ZXJIJywgdGhpcy5pbnB1dENlbnRlckgpO1xuICAgIC8vLS0tIENlbnRlciBWXG4gICAgdGhpcy5pbnB1dENlbnRlclYgPSBjaGVja1RydXRoQXR0cmlidXRlKGNoYW5nZXMsICdjZW50ZXJWJywgdGhpcy5pbnB1dENlbnRlclYpO1xuICAgIC8vLS0tIERhcmtcbiAgICB0aGlzLmlucHV0RGFyayA9IGNoZWNrVHJ1dGhBdHRyaWJ1dGUoY2hhbmdlcywgJ2RhcmsnLCB0aGlzLmlucHV0RGFyayk7XG4gICAgLy8tLS0gTm8gU2Nyb2xsXG4gICAgdGhpcy5pbnB1dE5vU2Nyb2xsID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnbm9TY3JvbGwnLCB0aGlzLmlucHV0Tm9TY3JvbGwpO1xuICAgIC8vLS0tIERldiBNb2RlXG4gICAgdGhpcy5pbnB1dERldk1vZGUgPSBjaGVja1RydXRoQXR0cmlidXRlKGNoYW5nZXMsICdkZXZNb2RlJywgdGhpcy5pbnB1dERldk1vZGUpO1xuICAgIC8vLS0tIFBhZ2UgQnV0dG9ucyBWZXJ0aWNhbFxuICAgIHRoaXMuaW5wdXRCdXR0b25zVmVydGljYWwgPSBjaGVja1RydXRoQXR0cmlidXRlKGNoYW5nZXMsICdidXR0b25zVmVydGljYWwnLCB0aGlzLmlucHV0QnV0dG9uc1ZlcnRpY2FsKTtcbiAgICAvLy0tLSBObyBTdGlja3kgQnV0dG9uIEZhZGVcbiAgICB0aGlzLmlucHV0Tm9TdGlja3lCdXR0b25GYWRlID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnbm9TdGlja3lCdXR0b25GYWRlJywgdGhpcy5pbnB1dE5vU3RpY2t5QnV0dG9uRmFkZSk7XG4gICAgLy8tLS0gU3RpY2t5IEJ1dHRvbiBTZWN0aW9uIE9uXG4gICAgdGhpcy5pbnB1dFN0aWNreUJ1dHRvbk9uID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnc3RpY2t5QnV0dG9uT24nLCB0aGlzLmlucHV0U3RpY2t5QnV0dG9uT24pO1xuICB9XG59XG4iLCI8aW9uLWNvbnRlbnRcbiAgc2Nyb2xsRXZlbnRzPVwidHJ1ZVwiXG4gIGNsYXNzPVwiaW9uLXBhZ2UgY2YtcGFnZVwiXG4gIFtuZ0NsYXNzXT1cInsgJ2JnLWRhcmsnOiBpbnB1dERhcmssICduby1zY3JvbGwnOiBpbnB1dE5vU2Nyb2xsLCAnZGV2LW1vZGUnOiBpbnB1dERldk1vZGUgfVwiXG4gIChpb25TY3JvbGwpPVwic2Nyb2xsRXZlbnQuZW1pdCgkZXZlbnQpXCI+XG4gIDxkaXYgaWQ9XCJwYWdlLXNldHVwXCIgW25nQ2xhc3NdPVwieyAnY2VudGVyLXYnOiBpbnB1dENlbnRlclYgfVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgaWQ9XCJoZWFkZXJcIiBjbGFzcz1cImlvbi1uby1ib3JkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjZi1wYWdlLWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENvbnRlbnQgYW5kIEJ1dHRvbnMgLS0+XG4gICAgPGRpdiBpZD1cImRldmljZS1zcGFjaW5nXCIgW25nQ2xhc3NdPVwieyAnY2VudGVyLWgnOiBpbnB1dENlbnRlckgsICdjZW50ZXItdic6IGlucHV0Q2VudGVyViB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgaWQ9XCJwYWdlLWJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbbmdDbGFzc109XCJ7ICd2ZXJ0aWNhbC1idXR0b25zJzogaW5wdXRCdXR0b25zVmVydGljYWwgfVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjZi1wYWdlLWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgIDxkaXYgaWQ9XCJmb290ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjZi1wYWdlLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFN0aWNreS1idXR0b25zIC0tPlxuICAgIDxkaXYgaWQ9XCJzdGlja3ktYnV0dG9uc1wiICpuZ0lmPVwiaW5wdXRTdGlja3lCdXR0b25PblwiPlxuICAgICAgPGRpdiBpZD1cIm92ZXJsYXlcIiBbbmdDbGFzc109XCJ7IG9mZjogaW5wdXROb1N0aWNreUJ1dHRvbkZhZGUgfVwiPiA8L2Rpdj5cbiAgICAgIDxkaXYgaWQ9XCJidXR0b25zLWNvbnRhaW5lci1iYWNrZ3JvdW5kXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJidXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW25nQ2xhc3NdPVwieyAndmVydGljYWwtYnV0dG9ucyc6IGlucHV0QnV0dG9uc1ZlcnRpY2FsIH1cIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjZi1wYWdlLXN0aWNreS1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2lvbi1jb250ZW50PlxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0NBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBT2pFLE1BQU0sT0FBTyxhQUFhO0lBQ2YsT0FBTyxDQUFnQztJQUN2QyxPQUFPLENBQWdDO0lBQ3ZDLElBQUksQ0FBZ0M7SUFDcEMsUUFBUSxDQUFnQztJQUN4QyxPQUFPLENBQWdDO0lBQ3ZDLGVBQWUsQ0FBZ0M7SUFDL0MsY0FBYyxDQUFnQztJQUM5QyxrQkFBa0IsQ0FBZ0M7SUFFakQsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFHeEQsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBT2hDLFdBQVcsQ0FBQyxPQUFzQjtRQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV2RyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRWhILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEcsQ0FBQzt1R0E1Q1UsYUFBYTsyRkFBYixhQUFhLHlVQzFDMUIscWtEQTBDQTs7MkZEQWEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxTQUFTOzhCQUtWLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FyZUZpcnN0IExpYnJhcnkgLSBQYWdlXG4gKlxuICogQGZpbGUgICAgICAgICAgcGFnZS5jb21wb25lbnRcbiAqIEBkZXNjcmlwdGlvbiAgIENvbnRhaW5zIGFsbCB0aGUgbG9naWMgZm9yIGdlbmVyYXRpbmcgYSBiYXNpYyBDYXJlRmlyc3QgUGFnZSBzdHJ1Y3R1cmVcbiAqIEBhdXRob3IgICAgICAgIEphY3F1ZXMgQ29ldHplZVxuICogQHNpbmNlICAgICAgICAgMjAyMyAtIDExIC0gMDdcbiAqIEB1c2FnZSAgICAgICAgIDxjZi1wYWdlXG4gKiAgICAgICAgICAgICAgICAgICAgJWNlbnRlckglXG4gKiAgICAgICAgICAgICAgICAgICAgJWNlbnRlclYlXG4gKiAgICAgICAgICAgICAgICAgICAgJWRhcmslXG4gKiAgICAgICAgICAgICAgICAgICAgJW5vU2Nyb2xsJVxuICogICAgICAgICAgICAgICAgICAgICVkZXZNb2RlJVxuICogICAgICAgICAgICAgICAgICAgICVidXR0b25zVmVydGljYWwlXG4gKiAgICAgICAgICAgICAgICAgICAgJXN0aWNreUJ1dHRvbk9uJVxuICogICAgICAgICAgICAgICAgICAgICVub1N0aWNreUJ1dHRvbkZhZGUlXG4gKiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLW1haW4tYmctY29sb3I6IGxpZ2h0OyVcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLWlubGluZS1wYWRkaW5nOiAxNnB4OyVcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLW1vYmlsZS1tYXgtd2lkdGg6IDM1OHB4OyVcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLWRlc2t0b3AtbWF4LXdpZHRoOiAxMjk2cHg7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtY29udGVudC1tb2JpbGUtbWF4LXdpZHRoOiAxMDAlOyVcbiAqICAgICAgICAgICAgICAgICAgICAgICAlLS1jZi1wYWdlLWNvbnRlbnQtZGVza3RvcC1tYXgtd2lkdGg6IDEwMCU7JVxuICogICAgICAgICAgICAgICAgICAgICAgICUtLWNmLXBhZ2UtZm9vdGVyLWJnLWNvbG9yOiB0cmFuc3BhcmVudDslXG4gKiAgICAgICAgICAgICAgICAgICAgICAgJS0tY2YtcGFnZS1zdGlja3ktYnV0dG9uLWZhZGUtaGVpZ2h0OiAyNHB4OyVcbiAqICAgICAgICAgICAgICAgICAgICBcIj5cbiAqICAgICAgICAgICAgICAgICAgQ09OVEVOVFxuICogICAgICAgICAgICAgICAgICAlPG5nLWNvbnRhaW5lciBjZi1wYWdlLWhlYWRlcj48L25nLWNvbnRhaW5lcj4lXG4gKiAgICAgICAgICAgICAgICAgICU8bmctY29udGFpbmVyIGNmLXBhZ2UtYnV0dG9ucz48L25nLWNvbnRhaW5lcj4lXG4gKiAgICAgICAgICAgICAgICAgICU8bmctY29udGFpbmVyIGNmLXBhZ2UtZm9vdGVyPjwvbmctY29udGFpbmVyPiVcbiAqICAgICAgICAgICAgICAgICAgJTxuZy1jb250YWluZXIgY2YtcGFnZS1zdGlja3ktYnV0dG9ucz48L25nLWNvbnRhaW5lcj4lXG4gKiAgICAgICAgICAgICAgICA8L2NmLXBhZ2U+XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCB0eXBlIE9uQ2hhbmdlcywgdHlwZSBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoZWNrVHJ1dGhBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi91dGlscy9hdHRyaWJ1dGUudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NmLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNlbnRlckg/OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjZW50ZXJWPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZGFyaz86IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG5vU2Nyb2xsPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZGV2TW9kZT86IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGJ1dHRvbnNWZXJ0aWNhbD86IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHN0aWNreUJ1dHRvbk9uPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbm9TdGlja3lCdXR0b25GYWRlPzogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KCkgc2Nyb2xsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXG4gIC8vLS0tIExvY2FsIHZhcmlhYmxlc1xuICBpbnB1dENlbnRlckggPSBmYWxzZTtcbiAgaW5wdXRDZW50ZXJWID0gZmFsc2U7XG4gIGlucHV0RGFyayA9IGZhbHNlO1xuICBpbnB1dE5vU2Nyb2xsID0gZmFsc2U7XG4gIGlucHV0RGV2TW9kZSA9IGZhbHNlO1xuICBpbnB1dEJ1dHRvbnNWZXJ0aWNhbCA9IGZhbHNlO1xuICBpbnB1dFN0aWNreUJ1dHRvbk9uID0gZmFsc2U7XG4gIGlucHV0Tm9TdGlja3lCdXR0b25GYWRlID0gZmFsc2U7XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBuZ09uQ2hhbmdlc1xuICAgKiBAZGVzY3JpcHRpb24gICBVcGRhdGUgdmFyaW91cyB2YWx1ZXMgb24gaW5wdXQgY2hhbmdlc1xuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLy0tLSBDZW50ZXIgSFxuICAgIHRoaXMuaW5wdXRDZW50ZXJIID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnY2VudGVySCcsIHRoaXMuaW5wdXRDZW50ZXJIKTtcbiAgICAvLy0tLSBDZW50ZXIgVlxuICAgIHRoaXMuaW5wdXRDZW50ZXJWID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnY2VudGVyVicsIHRoaXMuaW5wdXRDZW50ZXJWKTtcbiAgICAvLy0tLSBEYXJrXG4gICAgdGhpcy5pbnB1dERhcmsgPSBjaGVja1RydXRoQXR0cmlidXRlKGNoYW5nZXMsICdkYXJrJywgdGhpcy5pbnB1dERhcmspO1xuICAgIC8vLS0tIE5vIFNjcm9sbFxuICAgIHRoaXMuaW5wdXROb1Njcm9sbCA9IGNoZWNrVHJ1dGhBdHRyaWJ1dGUoY2hhbmdlcywgJ25vU2Nyb2xsJywgdGhpcy5pbnB1dE5vU2Nyb2xsKTtcbiAgICAvLy0tLSBEZXYgTW9kZVxuICAgIHRoaXMuaW5wdXREZXZNb2RlID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnZGV2TW9kZScsIHRoaXMuaW5wdXREZXZNb2RlKTtcbiAgICAvLy0tLSBQYWdlIEJ1dHRvbnMgVmVydGljYWxcbiAgICB0aGlzLmlucHV0QnV0dG9uc1ZlcnRpY2FsID0gY2hlY2tUcnV0aEF0dHJpYnV0ZShjaGFuZ2VzLCAnYnV0dG9uc1ZlcnRpY2FsJywgdGhpcy5pbnB1dEJ1dHRvbnNWZXJ0aWNhbCk7XG4gICAgLy8tLS0gTm8gU3RpY2t5IEJ1dHRvbiBGYWRlXG4gICAgdGhpcy5pbnB1dE5vU3RpY2t5QnV0dG9uRmFkZSA9IGNoZWNrVHJ1dGhBdHRyaWJ1dGUoY2hhbmdlcywgJ25vU3RpY2t5QnV0dG9uRmFkZScsIHRoaXMuaW5wdXROb1N0aWNreUJ1dHRvbkZhZGUpO1xuICAgIC8vLS0tIFN0aWNreSBCdXR0b24gU2VjdGlvbiBPblxuICAgIHRoaXMuaW5wdXRTdGlja3lCdXR0b25PbiA9IGNoZWNrVHJ1dGhBdHRyaWJ1dGUoY2hhbmdlcywgJ3N0aWNreUJ1dHRvbk9uJywgdGhpcy5pbnB1dFN0aWNreUJ1dHRvbk9uKTtcbiAgfVxufVxuIiwiPGlvbi1jb250ZW50XG4gIHNjcm9sbEV2ZW50cz1cInRydWVcIlxuICBjbGFzcz1cImlvbi1wYWdlIGNmLXBhZ2VcIlxuICBbbmdDbGFzc109XCJ7ICdiZy1kYXJrJzogaW5wdXREYXJrLCAnbm8tc2Nyb2xsJzogaW5wdXROb1Njcm9sbCwgJ2Rldi1tb2RlJzogaW5wdXREZXZNb2RlIH1cIlxuICAoaW9uU2Nyb2xsKT1cInNjcm9sbEV2ZW50LmVtaXQoJGV2ZW50KVwiPlxuICA8ZGl2IGlkPVwicGFnZS1zZXR1cFwiIFtuZ0NsYXNzXT1cInsgJ2NlbnRlci12JzogaW5wdXRDZW50ZXJWIH1cIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGlkPVwiaGVhZGVyXCIgY2xhc3M9XCJpb24tbm8tYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2YtcGFnZS1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBDb250ZW50IGFuZCBCdXR0b25zIC0tPlxuICAgIDxkaXYgaWQ9XCJkZXZpY2Utc3BhY2luZ1wiIFtuZ0NsYXNzXT1cInsgJ2NlbnRlci1oJzogaW5wdXRDZW50ZXJILCAnY2VudGVyLXYnOiBpbnB1dENlbnRlclYgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwicGFnZS1idXR0b25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW25nQ2xhc3NdPVwieyAndmVydGljYWwtYnV0dG9ucyc6IGlucHV0QnV0dG9uc1ZlcnRpY2FsIH1cIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2YtcGFnZS1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8ZGl2IGlkPVwiZm9vdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2YtcGFnZS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTdGlja3ktYnV0dG9ucyAtLT5cbiAgICA8ZGl2IGlkPVwic3RpY2t5LWJ1dHRvbnNcIiAqbmdJZj1cImlucHV0U3RpY2t5QnV0dG9uT25cIj5cbiAgICAgIDxkaXYgaWQ9XCJvdmVybGF5XCIgW25nQ2xhc3NdPVwieyBvZmY6IGlucHV0Tm9TdGlja3lCdXR0b25GYWRlIH1cIj4gPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwiYnV0dG9ucy1jb250YWluZXItYmFja2dyb3VuZFwiPlxuICAgICAgICA8ZGl2IGlkPVwiYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIFtuZ0NsYXNzXT1cInsgJ3ZlcnRpY2FsLWJ1dHRvbnMnOiBpbnB1dEJ1dHRvbnNWZXJ0aWNhbCB9XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2YtcGFnZS1zdGlja3ktYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -14,10 +14,10 @@ export class SpacerComponent {
14
14
  this.inputMobile = validateNumberValue(changes, 'mobile', this.inputMobile);
15
15
  this.inputDesktop = validateNumberValue(changes, 'desktop', this.inputDesktop);
16
16
  }
17
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SpacerComponent, selector: "cf-spacer", inputs: { default: "default", mobile: "mobile", desktop: "desktop" }, usesOnChanges: true, ngImport: i0, template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SpacerComponent, selector: "cf-spacer", inputs: { default: "default", mobile: "mobile", desktop: "desktop" }, usesOnChanges: true, ngImport: i0, template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpacerComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpacerComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'cf-spacer', template: "<!-- Mobile Only OR Default -->\n<div *ngIf=\"inputMobile || inputDefault\" class=\"mobile-only\" [ngStyle]=\"{ height: (inputMobile || inputDefault || 0) + 'px' }\"> </div>\n<!-- Desktop Only OR Default-->\n<div *ngIf=\"inputDesktop || inputDefault\" class=\"desktop-only\" [ngStyle]=\"{ height: (inputDesktop || inputDefault || 0) + 'px' }\"> </div>\n", styles: ["@media not (min-width: 768px){div.mobile-only{display:block}div.desktop-only{display:none}}@media (min-width: 768px){div.mobile-only{display:none}div.desktop-only{display:block}}\n"] }]
23
23
  }], propDecorators: { default: [{
@@ -7,10 +7,10 @@ export class SpinnerComponent {
7
7
  ngOnChanges(changes) {
8
8
  this.inputSize = validateNumberValue(changes, 'size', this.inputSize) || this.inputSize;
9
9
  }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SpinnerComponent, selector: "cf-spinner", inputs: { size: "size" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] });
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SpinnerComponent, selector: "cf-spinner", inputs: { size: "size" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpinnerComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpinnerComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'cf-spinner', template: "<div id=\"spinner\" [style]=\"'font-size: ' + inputSize + 'px'\"></div>\n", styles: ["#spinner{width:1em;height:1em;border:.15em solid var(--cf-app-system-color-outline);border-radius:50%;border-top-color:var(--cf-app-color-accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
16
16
  }], propDecorators: { size: [{
@@ -1,7 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@ionic/angular/standalone";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@angular/common";
5
5
  import * as i3 from "../spacer/spacer.component";
6
6
  import * as i4 from "../spinner/spinner.component";
7
7
  export class VerificationCodeComponent {
@@ -115,10 +115,10 @@ export class VerificationCodeComponent {
115
115
  ionViewWillLeave() {
116
116
  this.statusSub$?.unsubscribe();
117
117
  }
118
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: VerificationCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: VerificationCodeComponent, selector: "cf-verification-code", inputs: { valueToVerify: "valueToVerify", status: "status", userFeedbackMessages: "userFeedbackMessages" }, outputs: { outcome: "outcome", resendClickEvent: "resendClickEvent" }, viewQueries: [{ propertyName: "myInput1", first: true, predicate: ["input1"], descendants: true }, { propertyName: "myInput2", first: true, predicate: ["input2"], descendants: true }, { propertyName: "myInput3", first: true, predicate: ["input3"], descendants: true }, { propertyName: "myInput4", first: true, predicate: ["input4"], descendants: true }, { propertyName: "myInput5", first: true, predicate: ["input5"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- ---<> rethink if statement logic -->\n<div id=\"verification-container\">\n <ion-grid id=\"verification-grid\" [ngStyle]=\"status.value === 'processing' ? { visibility: 'hidden' } : {}\">\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ng-container *ngIf=\"status.value !== 'disabled'\">\n <ion-col *ngIf=\"validationCodeError && !commsInputCountExceeded\" size=\"auto\">\n <p\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"commsInputCountExceeded\" size=\"auto\">\n <p class=\"body-small error ion-text-center\">Invalid Code - Max attempts exceeded</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"status.value === 'initial'\">\n <p *ngFor=\"let string of userFeedbackMessages?.initial || ['Code sent, Please check your inbox']\" class=\"body-small good ion-text-center\">{{\n string\n }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ng-container>\n <ion-col\n *ngIf=\"\n (!validationCodeError && status.value === 'disabled') || status.value === 'disabled' || (status.value === 'invalid' && !validationCodeError)\n \">\n <cf-spacer default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col>\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <ng-container *ngIf=\"!loading && status.value !== 'disabled'\">\n <cf-spacer default=\"16\"></cf-spacer>\n <button *ngIf=\"commsSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-center\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"commsSentCount >= 3\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"\n let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\n \"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n <cf-spacer *ngIf=\"status.value === 'disabled'\" default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\"> </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spinner style=\"position: absolute\" [size]=\"40\" [ngClass]=\"{ 'block-hidden': status.value !== 'processing' }\"></cf-spinner>\n</div>\n", styles: ["#verification-container{min-height:124px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}#verification-grid{width:100%;display:flex;flex-direction:column}.single-container{display:flex;justify-content:space-between}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent);color:var(--cf-app-text-color-default)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}p.good{color:var(--cf-app-system-color-success)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i3.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i4.SpinnerComponent, selector: "cf-spinner", inputs: ["size"] }] });
118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: VerificationCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: VerificationCodeComponent, selector: "cf-verification-code", inputs: { valueToVerify: "valueToVerify", status: "status", userFeedbackMessages: "userFeedbackMessages" }, outputs: { outcome: "outcome", resendClickEvent: "resendClickEvent" }, viewQueries: [{ propertyName: "myInput1", first: true, predicate: ["input1"], descendants: true }, { propertyName: "myInput2", first: true, predicate: ["input2"], descendants: true }, { propertyName: "myInput3", first: true, predicate: ["input3"], descendants: true }, { propertyName: "myInput4", first: true, predicate: ["input4"], descendants: true }, { propertyName: "myInput5", first: true, predicate: ["input5"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- ---<> rethink if statement logic -->\n<div id=\"verification-container\">\n <ion-grid id=\"verification-grid\" [ngStyle]=\"status.value === 'processing' ? { visibility: 'hidden' } : {}\">\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ng-container *ngIf=\"status.value !== 'disabled'\">\n <ion-col *ngIf=\"validationCodeError && !commsInputCountExceeded\" size=\"auto\">\n <p\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"commsInputCountExceeded\" size=\"auto\">\n <p class=\"body-small error ion-text-center\">Invalid Code - Max attempts exceeded</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"status.value === 'initial'\">\n <p *ngFor=\"let string of userFeedbackMessages?.initial || ['Code sent, Please check your inbox']\" class=\"body-small good ion-text-center\">{{\n string\n }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ng-container>\n <ion-col\n *ngIf=\"\n (!validationCodeError && status.value === 'disabled') || status.value === 'disabled' || (status.value === 'invalid' && !validationCodeError)\n \">\n <cf-spacer default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col>\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <ng-container *ngIf=\"!loading && status.value !== 'disabled'\">\n <cf-spacer default=\"16\"></cf-spacer>\n <button *ngIf=\"commsSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-center\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"commsSentCount >= 3\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"\n let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\n \"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n <cf-spacer *ngIf=\"status.value === 'disabled'\" default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\"> </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spinner style=\"position: absolute\" [size]=\"40\" [ngClass]=\"{ 'block-hidden': status.value !== 'processing' }\"></cf-spinner>\n</div>\n", styles: ["#verification-container{min-height:124px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}#verification-grid{width:100%;display:flex;flex-direction:column}.single-container{display:flex;justify-content:space-between}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent);color:var(--cf-app-text-color-default)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}p.good{color:var(--cf-app-system-color-success)}\n"], dependencies: [{ kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.SpacerComponent, selector: "cf-spacer", inputs: ["default", "mobile", "desktop"] }, { kind: "component", type: i4.SpinnerComponent, selector: "cf-spinner", inputs: ["size"] }] });
120
120
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: VerificationCodeComponent, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: VerificationCodeComponent, decorators: [{
122
122
  type: Component,
123
123
  args: [{ selector: 'cf-verification-code', template: "<!-- ---<> rethink if statement logic -->\n<div id=\"verification-container\">\n <ion-grid id=\"verification-grid\" [ngStyle]=\"status.value === 'processing' ? { visibility: 'hidden' } : {}\">\n <!-- Input boxes for verification code 5 numeric digits -->\n <ion-row class=\"ion-justify-content-center\">\n <ng-container *ngIf=\"status.value !== 'disabled'\">\n <ion-col *ngIf=\"validationCodeError && !commsInputCountExceeded\" size=\"auto\">\n <p\n class=\"body-small error ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.error?.errorMessage || ['Invalid Code - Please Retry']\"\n >{{ string }}</p\n >\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"commsInputCountExceeded\" size=\"auto\">\n <p class=\"body-small error ion-text-center\">Invalid Code - Max attempts exceeded</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n <ion-col *ngIf=\"status.value === 'initial'\">\n <p *ngFor=\"let string of userFeedbackMessages?.initial || ['Code sent, Please check your inbox']\" class=\"body-small good ion-text-center\">{{\n string\n }}</p>\n <cf-spacer default=\"16\"></cf-spacer>\n </ion-col>\n </ng-container>\n <ion-col\n *ngIf=\"\n (!validationCodeError && status.value === 'disabled') || status.value === 'disabled' || (status.value === 'invalid' && !validationCodeError)\n \">\n <cf-spacer default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col>\n <div class=\"single-container\" [ngClass]=\"{ error: validationCodeError }\">\n <ion-input\n #input1\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 1)\"></ion-input>\n <ion-input\n #input2\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 2)\"></ion-input>\n <ion-input\n #input3\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 3)\"></ion-input>\n <ion-input\n #input4\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 4)\"></ion-input>\n <ion-input\n #input5\n class=\"single-digit-input ion-text-center\"\n [disabled]=\"loading || commsInputCountExceeded || status.value === 'disabled'\"\n fill=\"outline\"\n maxlength=\"1\"\n clearOnEdit=\"true\"\n inputmode=\"numeric\"\n mode=\"md\"\n (ionInput)=\"formulateAndCheckVerificationCode($event, 5)\"></ion-input>\n </div>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\">\n <ng-container *ngIf=\"!loading && status.value !== 'disabled'\">\n <cf-spacer default=\"16\"></cf-spacer>\n <button *ngIf=\"commsSentCount < 3\" (click)=\"resendVerificationCode()\" style=\"background-color: transparent\">\n <ng-container *ngIf=\"validationCodeError\">\n <p class=\"body-small ion-text-center\" *ngFor=\"let string of userFeedbackMessages?.error?.resend || ['Resend Code']\">\n {{ string }}\n </p>\n </ng-container>\n <ng-container *ngIf=\"!validationCodeError\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"let string of userFeedbackMessages?.standardResend || ['Didn`t get a code? Please resend the code']\">\n {{ string }}\n </p>\n </ng-container>\n </button>\n <ng-container *ngIf=\"commsSentCount >= 3\">\n <p\n class=\"body-small ion-text-center\"\n *ngFor=\"\n let string of userFeedbackMessages?.limitReached || ['Still struggling with your code?', 'Please contact support for assistance']\n \"\n >{{ string }}</p\n >\n </ng-container>\n </ng-container>\n <cf-spacer *ngIf=\"status.value === 'disabled'\" default=\"32\"></cf-spacer>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-justify-content-center\">\n <ion-col size=\"auto\"> </ion-col>\n </ion-row>\n </ion-grid>\n <cf-spinner style=\"position: absolute\" [size]=\"40\" [ngClass]=\"{ 'block-hidden': status.value !== 'processing' }\"></cf-spinner>\n</div>\n", styles: ["#verification-container{min-height:124px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}#verification-grid{width:100%;display:flex;flex-direction:column}.single-container{display:flex;justify-content:space-between}.single-container .single-digit-input{font-family:Roboto,sans-serif;font-weight:400;font-style:normal;font-size:1.6rem;height:60px;width:60px;--border-radius: 12px;--background: var(--cf-app-system-color-outline);--highlight-color-focused: var(--cf-app-color-accent);color:var(--cf-app-text-color-default)}.single-container.error .single-digit-input{--border-color: var(--cf-app-system-color-error)}.block-hidden{display:none}p.error{color:var(--cf-app-system-color-error)}p.good{color:var(--cf-app-system-color-success)}\n"] }]
124
124
  }], propDecorators: { valueToVerify: [{
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
147
147
  type: ViewChild,
148
148
  args: ['input5']
149
149
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixNQUFNLENBQXFEO0lBQzNELG9CQUFvQixDQUFvQztJQUV2RCxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpDLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFHekMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLHdCQUF3QixHQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNwQix1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDaEMsY0FBYyxDQUFxQjtJQUVuQyxVQUFVLENB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QUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFPRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7dUdBektVLHlCQUF5QjsyRkFBekIseUJBQXlCLDRyQkMxQnRDLDZtTEE0SEE7OzJGRGxHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCOzhCQUt2QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRWMsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FyZWZpcnN0IGxpYnJhcnkgLSBWZXJpZmljYXRpb24gQ29kZSBJbnB1dFxuICpcbiAqIEBmaWxlICAgICAgICAgIHZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudFxuICogQGRlc2NyaXB0aW9uICAgQ29udGFpbnMgYWxsIHRoZSBsb2dpYyBmb3IgZ2VuZXJhdGluZyBhIENhcmVGaXJzdCBWZXJpZmljYXRpb24gQ29kZSBJbnB1dFxuICogQGF1dGhvciAgICAgICAgQXJubyBKYW5zZW4gdmFuIFZ1dXJlblxuICogQHNpbmNlICAgICAgICAgMjAyNCAtIDAzIC0gMDdcbiAqIEB1c2FnZSAgICAgICAgICAgPGNmLXZlcmlmaWNhdGlvbi1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1ZlcmlmeT1gc3RyaW5nYFxuICAgICAgICAgICAgICAgICAgICAgIChvdXRjb21lKT1gb21pdHMgY29kZSB2YWx1ZWBcbiAgICAgICAgICAgICAgICAgICAgICAocmVzZW5kQ2xpY2tFdmVudCk9YHJlc2VuZCBjbGljayBldmVudGBcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1gQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz5gPlxuICAgICAgICAgICAgICAgICAgICA8L2NmLXZlcmlmaWNhdGlvbi1jb2RlPlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIHR5cGUgT25DaGFuZ2VzLCB0eXBlIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgSW5wdXRDdXN0b21FdmVudCwgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbi8vLS0tIEludGVyZmFjZVxuaW1wb3J0IHR5cGUgeyBDZkNvZGVJbnB1dFVzZXJGZWVkYmFja01lc3NhZ2VzSSwgQ2ZDb2RlSW5wdXRWZXJpZmljYXRpb25TdGF0dXNlc1QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZlcmlmaWNhdGlvbi1jb2RlLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NmLXZlcmlmaWNhdGlvbi1jb2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZhbHVlVG9WZXJpZnkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0YXR1cyE6IEJlaGF2aW9yU3ViamVjdDxDZkNvZGVJbnB1dFZlcmlmaWNhdGlvblN0YXR1c2VzVD47XG4gIEBJbnB1dCgpIHVzZXJGZWVkYmFja01lc3NhZ2VzPzogQ2ZDb2RlSW5wdXRVc2VyRmVlZGJhY2tNZXNzYWdlc0k7XG5cbiAgQE91dHB1dCgpIG91dGNvbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlc2VuZENsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHRydWU+KCk7XG5cbiAgQFZpZXdDaGlsZChgaW5wdXQxYCkgbXlJbnB1dDE/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQyJykgbXlJbnB1dDI/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQzJykgbXlJbnB1dDM/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ0JykgbXlJbnB1dDQ/OiBJb25JbnB1dDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQ1JykgbXlJbnB1dDU/OiBJb25JbnB1dDtcblxuICAvLy0tLSBIVE1MIHZhcmlhYmxlc1xuICB2YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG4gIHZlcmlmaWNhdGlvbkNvZGVJbnB1dEFycjogKG51bWJlciB8IG51bGwpW10gPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY29tbXNTZW50Q291bnQgPSAwO1xuICBjb21tc0lucHV0Q291bnQgPSAwO1xuICBjb21tc0lucHV0Q291bnRFeGNlZWRlZCA9IGZhbHNlO1xuICB2YWxpZGF0aW9uQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXR1c1N1YiQ/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpb25WaWV3V2lsbEVudGVyXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVwZGF0ZSB2YXJpb3VzIHZhbHVlcyBvbiBjb21wb25lbnQgaW5pdGlhbGl6YXRpb25cbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBpb25WaWV3RGlkRW50ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jb21tc1NlbnRDb3VudCA9IDA7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIG5nT25DaGFuZ2VzXG4gICAqIEBkZXNjcmlwdGlvbiAgIFVwZGF0ZSB2YXJpb3VzIHZhbHVlcyBvbiBpbnB1dCBjaGFuZ2VzXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vLS0tIFZhbHVlIHRvIHZlcmlmeVxuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ3ZhbHVlVG9WZXJpZnknXT8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWyd2YWx1ZVRvVmVyaWZ5J10/LnByZXZpb3VzVmFsdWUgfHxcbiAgICAgIGNoYW5nZXNbJ2NvZGUnXT8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydjb2RlJ10/LnByZXZpb3VzVmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMuY29tbXNTZW50Q291bnQgPSAwO1xuICAgICAgdGhpcy52YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc2V0QWxsSW5wdXRGaWVsZHMoKTtcbiAgICB9XG5cbiAgICAvLy0tLSBTdGF0dXMgZGlzcGxheVxuICAgIGlmIChjaGFuZ2VzWydzdGF0dXMnXSkge1xuICAgICAgdGhpcy5zdGF0dXNTdWIkID0gKGNoYW5nZXNbJ3N0YXR1cyddLmN1cnJlbnRWYWx1ZSBhcyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2ludmFsaWQnPikuc3Vic2NyaWJlKChzdGF0KSA9PiB7XG4gICAgICAgIGlmIChzdGF0ID09PSAnaW52YWxpZCcpIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxJbnB1dEZpZWxkcygpO1xuICAgICAgICB0aGlzLnNldEZvY3VzVG9OZXh0KDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICByZXNlbmRWZXJpZmljYXRpb25Db2RlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFJlc2VuZCBhIHZlcmlmaWNhdGlvbiBjb2RlXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcmVzZW5kVmVyaWZpY2F0aW9uQ29kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1zSW5wdXRDb3VudCA9IDA7XG4gICAgdGhpcy5jb21tc0lucHV0Q291bnRFeGNlZWRlZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuY29tbXNTZW50Q291bnQrKztcbiAgICB0aGlzLnN0YXR1cy5uZXh0KCdpbml0aWFsJyk7XG4gICAgdGhpcy5yZXNlbmRDbGlja0V2ZW50LmVtaXQodHJ1ZSk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZVxuICAgKiBAZGVzY3JpcHRpb24gICBIYW5kbGUgaW5wdXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgYW5kIGRvIGNhbGwgb25jZSBjb2RlIGlzIGNvbXBsZXRlXG4gICAqIEBwYXJhbSAgICAgICAgIHtJbnB1dEN1c3RvbUV2ZW50fSBldmVudFxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBpbmRleFxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIGZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZShldmVudDogSW5wdXRDdXN0b21FdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xuICAgIGlmICghdmFsdWUgfHwgISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB8fCAhKCt2YWx1ZSA8IDEwKSkge1xuICAgICAgdGhpcy5jbGVhckNvZGVJbnB1dChpbmRleCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRGb2N1c1RvTmV4dChpbmRleCk7XG4gICAgdGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnJbaW5kZXggLSAxXSA9ICt2YWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcblxuICAgIC8vLS0tIENoZWNrIGlmIGNvZGUgY29tcGxldGVkXG4gICAgaWYgKHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyLmV2ZXJ5KCh2YWwpID0+IHZhbCAhPT0gbnVsbCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGUgPSB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFyci5qb2luKCcnKTtcbiAgICAgIHRoaXMub3V0Y29tZS5lbWl0KHRoaXMudmFsaWRhdGlvbkNvZGUpO1xuICAgICAgdGhpcy5jb21tc0lucHV0Q291bnQrKztcbiAgICAgIHRoaXMuY29tbXNJbnB1dENvdW50RXhjZWVkZWQgPSB0aGlzLmNvbW1zSW5wdXRDb3VudCA+PSAzO1xuICAgIH1cbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgcmVzZXRBbGxJbnB1dEZpZWxkc1xuICAgKiBAZGVzY3JpcHRpb24gICBSZXNldCBhbGwgaW5wdXQgZmllbGRzXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSByZXNldEFsbElucHV0RmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMSk7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgyKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDMpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoNCk7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCg1KTtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFyci5maWxsKG51bGwpO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBzZXRGb2N1c1RvTmV4dFxuICAgKiBAZGVzY3JpcHRpb24gICBTZXQgdGhlIGZvY3VzIHRvIHRoZSBuZXh0IGlucHV0XG4gICAqIEBwYXJhbSAgICAgICAgIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgc2V0Rm9jdXNUb05leHQoY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSA1KSByZXR1cm47XG4gICAgY3VycmVudEluZGV4ID09PSAwXG4gICAgICA/IHRoaXMubXlJbnB1dDE/LnNldEZvY3VzKClcbiAgICAgIDogY3VycmVudEluZGV4ID09PSAxXG4gICAgICAgID8gdGhpcy5teUlucHV0Mj8uc2V0Rm9jdXMoKVxuICAgICAgICA6IGN1cnJlbnRJbmRleCA9PT0gMlxuICAgICAgICAgID8gdGhpcy5teUlucHV0Mz8uc2V0Rm9jdXMoKVxuICAgICAgICAgIDogY3VycmVudEluZGV4ID09PSAzXG4gICAgICAgICAgICA/IHRoaXMubXlJbnB1dDQ/LnNldEZvY3VzKClcbiAgICAgICAgICAgIDogdGhpcy5teUlucHV0NT8uc2V0Rm9jdXMoKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgY2xlYXJDb2RlSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uICAgQ2xlYXIgYSBjb2RlIGlucHV0IG9uIGludmFsaWQga2V5XG4gICAqIEBwYXJhbSAgICAgICAgIHtudW1iZXJ9IGluZGV4XG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckNvZGVJbnB1dChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgc3dpdGNoIChpbmRleCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAodGhpcy5teUlucHV0MSkgdGhpcy5teUlucHV0MS52YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBpZiAodGhpcy5teUlucHV0MikgdGhpcy5teUlucHV0Mi52YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBpZiAodGhpcy5teUlucHV0MykgdGhpcy5teUlucHV0My52YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBpZiAodGhpcy5teUlucHV0NCkgdGhpcy5teUlucHV0NC52YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBpZiAodGhpcy5teUlucHV0NSkgdGhpcy5teUlucHV0NS52YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaW9uVmlld1dpbGxMZWF2ZVxuICAgKiBAZGVzY3JpcHRpb24gICBVbnN1YnNjcmliZSBvbiBjb21wb25lbnQgbGVhdmVcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBpb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzU3ViJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPCEtLSAtLS08PiByZXRoaW5rIGlmIHN0YXRlbWVudCBsb2dpYyAtLT5cbjxkaXYgaWQ9XCJ2ZXJpZmljYXRpb24tY29udGFpbmVyXCI+XG4gIDxpb24tZ3JpZCBpZD1cInZlcmlmaWNhdGlvbi1ncmlkXCIgW25nU3R5bGVdPVwic3RhdHVzLnZhbHVlID09PSAncHJvY2Vzc2luZycgPyB7IHZpc2liaWxpdHk6ICdoaWRkZW4nIH0gOiB7fVwiPlxuICAgIDwhLS0gSW5wdXQgYm94ZXMgZm9yIHZlcmlmaWNhdGlvbiBjb2RlIDUgbnVtZXJpYyBkaWdpdHMgLS0+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXR1cy52YWx1ZSAhPT0gJ2Rpc2FibGVkJ1wiPlxuICAgICAgICA8aW9uLWNvbCAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3IgJiYgIWNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkXCIgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJib2R5LXNtYWxsIGVycm9yIGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5lcnJvcj8uZXJyb3JNZXNzYWdlIHx8IFsnSW52YWxpZCBDb2RlIC0gUGxlYXNlIFJldHJ5J11cIlxuICAgICAgICAgICAgPnt7IHN0cmluZyB9fTwvcFxuICAgICAgICAgID5cbiAgICAgICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIxNlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDxpb24tY29sICpuZ0lmPVwiY29tbXNJbnB1dENvdW50RXhjZWVkZWRcIiBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYm9keS1zbWFsbCBlcnJvciBpb24tdGV4dC1jZW50ZXJcIj5JbnZhbGlkIENvZGUgLSBNYXggYXR0ZW1wdHMgZXhjZWVkZWQ8L3A+XG4gICAgICAgICAgPGNmLXNwYWNlciBkZWZhdWx0PVwiMTZcIj48L2NmLXNwYWNlcj5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8aW9uLWNvbCAqbmdJZj1cInN0YXR1cy52YWx1ZSA9PT0gJ2luaXRpYWwnXCI+XG4gICAgICAgICAgPHAgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uaW5pdGlhbCB8fCBbJ0NvZGUgc2VudCwgUGxlYXNlIGNoZWNrIHlvdXIgaW5ib3gnXVwiIGNsYXNzPVwiYm9keS1zbWFsbCBnb29kIGlvbi10ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICB9fTwvcD5cbiAgICAgICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIxNlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpb24tY29sXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKCF2YWxpZGF0aW9uQ29kZUVycm9yICYmIHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJykgfHwgc3RhdHVzLnZhbHVlID09PSAnZGlzYWJsZWQnIHx8IChzdGF0dXMudmFsdWUgPT09ICdpbnZhbGlkJyAmJiAhdmFsaWRhdGlvbkNvZGVFcnJvcilcbiAgICAgICAgXCI+XG4gICAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjMyXCI+PC9jZi1zcGFjZXI+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgZXJyb3I6IHZhbGlkYXRpb25Db2RlRXJyb3IgfVwiPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICNpbnB1dDFcbiAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBjb21tc0lucHV0Q291bnRFeGNlZWRlZCB8fCBzdGF0dXMudmFsdWUgPT09ICdkaXNhYmxlZCdcIlxuICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDEpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgI2lucHV0MlxuICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkIHx8IHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgMilcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAjaW5wdXQzXG4gICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgY29tbXNJbnB1dENvdW50RXhjZWVkZWQgfHwgc3RhdHVzLnZhbHVlID09PSAnZGlzYWJsZWQnXCJcbiAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDMpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgI2lucHV0NFxuICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkIHx8IHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgNClcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAjaW5wdXQ1XG4gICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgY29tbXNJbnB1dENvdW50RXhjZWVkZWQgfHwgc3RhdHVzLnZhbHVlID09PSAnZGlzYWJsZWQnXCJcbiAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCA1KVwiPjwvaW9uLWlucHV0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nICYmIHN0YXR1cy52YWx1ZSAhPT0gJ2Rpc2FibGVkJ1wiPlxuICAgICAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbW1zU2VudENvdW50IDwgM1wiIChjbGljayk9XCJyZXNlbmRWZXJpZmljYXRpb25Db2RlKClcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsaWRhdGlvbkNvZGVFcnJvclwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtY2VudGVyXCIgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uZXJyb3I/LnJlc2VuZCB8fCBbJ1Jlc2VuZCBDb2RlJ11cIj5cbiAgICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZhbGlkYXRpb25Db2RlRXJyb3JcIj5cbiAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5zdGFuZGFyZFJlc2VuZCB8fCBbJ0RpZG5gdCBnZXQgYSBjb2RlPyBQbGVhc2UgcmVzZW5kIHRoZSBjb2RlJ11cIj5cbiAgICAgICAgICAgICAgICB7eyBzdHJpbmcgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbW1zU2VudENvdW50ID49IDNcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgc3RyaW5nIG9mIHVzZXJGZWVkYmFja01lc3NhZ2VzPy5saW1pdFJlYWNoZWQgfHwgWydTdGlsbCBzdHJ1Z2dsaW5nIHdpdGggeW91ciBjb2RlPycsICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlJ11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPnt7IHN0cmluZyB9fTwvcFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGNmLXNwYWNlciAqbmdJZj1cInN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiIGRlZmF1bHQ9XCIzMlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPiA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICA8L2lvbi1ncmlkPlxuICA8Y2Ytc3Bpbm5lciBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiIFtzaXplXT1cIjQwXCIgW25nQ2xhc3NdPVwieyAnYmxvY2staGlkZGVuJzogc3RhdHVzLnZhbHVlICE9PSAncHJvY2Vzc2luZycgfVwiPjwvY2Ytc3Bpbm5lcj5cbjwvZGl2PlxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZWZpcnN0L2xpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlL3ZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhcmVmaXJzdC9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBc0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd0SCxNQUFNLE9BQU8seUJBQXlCO0lBQzNCLGFBQWEsQ0FBVTtJQUN2QixNQUFNLENBQXFEO0lBQzNELG9CQUFvQixDQUFvQztJQUV2RCxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWpDLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFDcEIsUUFBUSxDQUFZO0lBQ3BCLFFBQVEsQ0FBWTtJQUNwQixRQUFRLENBQVk7SUFHekMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLHdCQUF3QixHQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNwQix1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDaEMsY0FBYyxDQUFxQjtJQUVuQyxVQUFVLENB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QUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUM5QyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFPRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7dUdBektVLHlCQUF5QjsyRkFBekIseUJBQXlCLDRyQkMxQnRDLDZtTEE0SEE7OzJGRGxHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCOzhCQUt2QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRWMsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxRQUFRO3NCQUE1QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsUUFBUTtzQkFBNUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNFLFFBQVE7c0JBQTVCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FyZWZpcnN0IGxpYnJhcnkgLSBWZXJpZmljYXRpb24gQ29kZSBJbnB1dFxuICpcbiAqIEBmaWxlICAgICAgICAgIHZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudFxuICogQGRlc2NyaXB0aW9uICAgQ29udGFpbnMgYWxsIHRoZSBsb2dpYyBmb3IgZ2VuZXJhdGluZyBhIENhcmVGaXJzdCBWZXJpZmljYXRpb24gQ29kZSBJbnB1dFxuICogQGF1dGhvciAgICAgICAgQXJubyBKYW5zZW4gdmFuIFZ1dXJlblxuICogQHNpbmNlICAgICAgICAgMjAyNCAtIDAzIC0gMDdcbiAqIEB1c2FnZSAgICAgICAgICAgPGNmLXZlcmlmaWNhdGlvbi1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1ZlcmlmeT1gc3RyaW5nYFxuICAgICAgICAgICAgICAgICAgICAgIChvdXRjb21lKT1gb21pdHMgY29kZSB2YWx1ZWBcbiAgICAgICAgICAgICAgICAgICAgICAocmVzZW5kQ2xpY2tFdmVudCk9YHJlc2VuZCBjbGljayBldmVudGBcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1gQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz5gPlxuICAgICAgICAgICAgICAgICAgICA8L2NmLXZlcmlmaWNhdGlvbi1jb2RlPlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIHR5cGUgT25DaGFuZ2VzLCB0eXBlIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgSW5wdXRDdXN0b21FdmVudCwgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG4vLy0tLSBJbnRlcmZhY2VcbmltcG9ydCB0eXBlIHsgQ2ZDb2RlSW5wdXRVc2VyRmVlZGJhY2tNZXNzYWdlc0ksIENmQ29kZUlucHV0VmVyaWZpY2F0aW9uU3RhdHVzZXNUIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92ZXJpZmljYXRpb24tY29kZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjZi12ZXJpZmljYXRpb24tY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi92ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB2YWx1ZVRvVmVyaWZ5ITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGF0dXMhOiBCZWhhdmlvclN1YmplY3Q8Q2ZDb2RlSW5wdXRWZXJpZmljYXRpb25TdGF0dXNlc1Q+O1xuICBASW5wdXQoKSB1c2VyRmVlZGJhY2tNZXNzYWdlcz86IENmQ29kZUlucHV0VXNlckZlZWRiYWNrTWVzc2FnZXNJO1xuXG4gIEBPdXRwdXQoKSBvdXRjb21lID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXNlbmRDbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx0cnVlPigpO1xuXG4gIEBWaWV3Q2hpbGQoYGlucHV0MWApIG15SW5wdXQxPzogSW9uSW5wdXQ7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0MicpIG15SW5wdXQyPzogSW9uSW5wdXQ7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0MycpIG15SW5wdXQzPzogSW9uSW5wdXQ7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0NCcpIG15SW5wdXQ0PzogSW9uSW5wdXQ7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0NScpIG15SW5wdXQ1PzogSW9uSW5wdXQ7XG5cbiAgLy8tLS0gSFRNTCB2YXJpYWJsZXNcbiAgdmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuICB2ZXJpZmljYXRpb25Db2RlSW5wdXRBcnI6IChudW1iZXIgfCBudWxsKVtdID0gW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGNvbW1zU2VudENvdW50ID0gMDtcbiAgY29tbXNJbnB1dENvdW50ID0gMDtcbiAgY29tbXNJbnB1dENvdW50RXhjZWVkZWQgPSBmYWxzZTtcbiAgdmFsaWRhdGlvbkNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBzdGF0dXNTdWIkPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaW9uVmlld1dpbGxFbnRlclxuICAgKiBAZGVzY3JpcHRpb24gICBVcGRhdGUgdmFyaW91cyB2YWx1ZXMgb24gY29tcG9uZW50IGluaXRpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgaW9uVmlld0RpZEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbXNTZW50Q291bnQgPSAwO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBuZ09uQ2hhbmdlc1xuICAgKiBAZGVzY3JpcHRpb24gICBVcGRhdGUgdmFyaW91cyB2YWx1ZXMgb24gaW5wdXQgY2hhbmdlc1xuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLy0tLSBWYWx1ZSB0byB2ZXJpZnlcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWyd2YWx1ZVRvVmVyaWZ5J10/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1sndmFsdWVUb1ZlcmlmeSddPy5wcmV2aW91c1ZhbHVlIHx8XG4gICAgICBjaGFuZ2VzWydjb2RlJ10/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snY29kZSddPy5wcmV2aW91c1ZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbW1zU2VudENvdW50ID0gMDtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkNvZGVFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldEFsbElucHV0RmllbGRzKCk7XG4gICAgfVxuXG4gICAgLy8tLS0gU3RhdHVzIGRpc3BsYXlcbiAgICBpZiAoY2hhbmdlc1snc3RhdHVzJ10pIHtcbiAgICAgIHRoaXMuc3RhdHVzU3ViJCA9IChjaGFuZ2VzWydzdGF0dXMnXS5jdXJyZW50VmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdpbnZhbGlkJz4pLnN1YnNjcmliZSgoc3RhdCkgPT4ge1xuICAgICAgICBpZiAoc3RhdCA9PT0gJ2ludmFsaWQnKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uQ29kZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsSW5wdXRGaWVsZHMoKTtcbiAgICAgICAgdGhpcy5zZXRGb2N1c1RvTmV4dCgwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgcmVzZW5kVmVyaWZpY2F0aW9uQ29kZVxuICAgKiBAZGVzY3JpcHRpb24gICBSZXNlbmQgYSB2ZXJpZmljYXRpb24gY29kZVxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHJlc2VuZFZlcmlmaWNhdGlvbkNvZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb21tc0lucHV0Q291bnQgPSAwO1xuICAgIHRoaXMuY29tbXNJbnB1dENvdW50RXhjZWVkZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmNvbW1zU2VudENvdW50Kys7XG4gICAgdGhpcy5zdGF0dXMubmV4dCgnaW5pdGlhbCcpO1xuICAgIHRoaXMucmVzZW5kQ2xpY2tFdmVudC5lbWl0KHRydWUpO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGVcbiAgICogQGRlc2NyaXB0aW9uICAgSGFuZGxlIGlucHV0cyBhc3NvY2lhdGVkIHdpdGggdGhlIHZlcmlmaWNhdGlvbiBjb2RlIGFuZCBkbyBjYWxsIG9uY2UgY29kZSBpcyBjb21wbGV0ZVxuICAgKiBAcGFyYW0gICAgICAgICB7SW5wdXRDdXN0b21FdmVudH0gZXZlbnRcbiAgICogQHBhcmFtICAgICAgICAge251bWJlcn0gaW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoZXZlbnQ6IElucHV0Q3VzdG9tRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcbiAgICBpZiAoIXZhbHVlIHx8ICEodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgfHwgISgrdmFsdWUgPCAxMCkpIHtcbiAgICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoaW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0Rm9jdXNUb05leHQoaW5kZXgpO1xuICAgIHRoaXMudmVyaWZpY2F0aW9uQ29kZUlucHV0QXJyW2luZGV4IC0gMV0gPSArdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0aW9uQ29kZUVycm9yID0gZmFsc2U7XG5cbiAgICAvLy0tLSBDaGVjayBpZiBjb2RlIGNvbXBsZXRlZFxuICAgIGlmICh0aGlzLnZlcmlmaWNhdGlvbkNvZGVJbnB1dEFyci5ldmVyeSgodmFsKSA9PiB2YWwgIT09IG51bGwpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Db2RlID0gdGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuam9pbignJyk7XG4gICAgICB0aGlzLm91dGNvbWUuZW1pdCh0aGlzLnZhbGlkYXRpb25Db2RlKTtcbiAgICAgIHRoaXMuY29tbXNJbnB1dENvdW50Kys7XG4gICAgICB0aGlzLmNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkID0gdGhpcy5jb21tc0lucHV0Q291bnQgPj0gMztcbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIHJlc2V0QWxsSW5wdXRGaWVsZHNcbiAgICogQGRlc2NyaXB0aW9uICAgUmVzZXQgYWxsIGlucHV0IGZpZWxkc1xuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgcmVzZXRBbGxJbnB1dEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDEpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoMik7XG4gICAgdGhpcy5jbGVhckNvZGVJbnB1dCgzKTtcbiAgICB0aGlzLmNsZWFyQ29kZUlucHV0KDQpO1xuICAgIHRoaXMuY2xlYXJDb2RlSW5wdXQoNSk7XG4gICAgdGhpcy52ZXJpZmljYXRpb25Db2RlSW5wdXRBcnIuZmlsbChudWxsKTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgc2V0Rm9jdXNUb05leHRcbiAgICogQGRlc2NyaXB0aW9uICAgU2V0IHRoZSBmb2N1cyB0byB0aGUgbmV4dCBpbnB1dFxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHJldHVybnMgICAgICAge3ZvaWR9XG4gICAqL1xuICBwcml2YXRlIHNldEZvY3VzVG9OZXh0KGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gNSkgcmV0dXJuO1xuICAgIGN1cnJlbnRJbmRleCA9PT0gMFxuICAgICAgPyB0aGlzLm15SW5wdXQxPy5zZXRGb2N1cygpXG4gICAgICA6IGN1cnJlbnRJbmRleCA9PT0gMVxuICAgICAgICA/IHRoaXMubXlJbnB1dDI/LnNldEZvY3VzKClcbiAgICAgICAgOiBjdXJyZW50SW5kZXggPT09IDJcbiAgICAgICAgICA/IHRoaXMubXlJbnB1dDM/LnNldEZvY3VzKClcbiAgICAgICAgICA6IGN1cnJlbnRJbmRleCA9PT0gM1xuICAgICAgICAgICAgPyB0aGlzLm15SW5wdXQ0Py5zZXRGb2N1cygpXG4gICAgICAgICAgICA6IHRoaXMubXlJbnB1dDU/LnNldEZvY3VzKCk7XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGNsZWFyQ29kZUlucHV0XG4gICAqIEBkZXNjcmlwdGlvbiAgIENsZWFyIGEgY29kZSBpbnB1dCBvbiBpbnZhbGlkIGtleVxuICAgKiBAcGFyYW0gICAgICAgICB7bnVtYmVyfSBpbmRleFxuICAgKiBAcmV0dXJucyAgICAgICB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgY2xlYXJDb2RlSW5wdXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDEpIHRoaXMubXlJbnB1dDEudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDIpIHRoaXMubXlJbnB1dDIudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDMpIHRoaXMubXlJbnB1dDMudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDQpIHRoaXMubXlJbnB1dDQudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgaWYgKHRoaXMubXlJbnB1dDUpIHRoaXMubXlJbnB1dDUudmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlvblZpZXdXaWxsTGVhdmVcbiAgICogQGRlc2NyaXB0aW9uICAgVW5zdWJzY3JpYmUgb24gY29tcG9uZW50IGxlYXZlXG4gICAqIEByZXR1cm5zICAgICAgIHt2b2lkfVxuICAgKi9cbiAgaW9uVmlld1dpbGxMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1N1YiQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjwhLS0gLS0tPD4gcmV0aGluayBpZiBzdGF0ZW1lbnQgbG9naWMgLS0+XG48ZGl2IGlkPVwidmVyaWZpY2F0aW9uLWNvbnRhaW5lclwiPlxuICA8aW9uLWdyaWQgaWQ9XCJ2ZXJpZmljYXRpb24tZ3JpZFwiIFtuZ1N0eWxlXT1cInN0YXR1cy52YWx1ZSA9PT0gJ3Byb2Nlc3NpbmcnID8geyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9IDoge31cIj5cbiAgICA8IS0tIElucHV0IGJveGVzIGZvciB2ZXJpZmljYXRpb24gY29kZSA1IG51bWVyaWMgZGlnaXRzIC0tPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXMudmFsdWUgIT09ICdkaXNhYmxlZCdcIj5cbiAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJ2YWxpZGF0aW9uQ29kZUVycm9yICYmICFjb21tc0lucHV0Q291bnRFeGNlZWRlZFwiIHNpemU9XCJhdXRvXCI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiYm9keS1zbWFsbCBlcnJvciBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uZXJyb3I/LmVycm9yTWVzc2FnZSB8fCBbJ0ludmFsaWQgQ29kZSAtIFBsZWFzZSBSZXRyeSddXCJcbiAgICAgICAgICAgID57eyBzdHJpbmcgfX08L3BcbiAgICAgICAgICA+XG4gICAgICAgICAgPGNmLXNwYWNlciBkZWZhdWx0PVwiMTZcIj48L2NmLXNwYWNlcj5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkXCIgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImJvZHktc21hbGwgZXJyb3IgaW9uLXRleHQtY2VudGVyXCI+SW52YWxpZCBDb2RlIC0gTWF4IGF0dGVtcHRzIGV4Y2VlZGVkPC9wPlxuICAgICAgICAgIDxjZi1zcGFjZXIgZGVmYXVsdD1cIjE2XCI+PC9jZi1zcGFjZXI+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJzdGF0dXMudmFsdWUgPT09ICdpbml0aWFsJ1wiPlxuICAgICAgICAgIDxwICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmluaXRpYWwgfHwgWydDb2RlIHNlbnQsIFBsZWFzZSBjaGVjayB5b3VyIGluYm94J11cIiBjbGFzcz1cImJvZHktc21hbGwgZ29vZCBpb24tdGV4dC1jZW50ZXJcIj57e1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfX08L3A+XG4gICAgICAgICAgPGNmLXNwYWNlciBkZWZhdWx0PVwiMTZcIj48L2NmLXNwYWNlcj5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8aW9uLWNvbFxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICghdmFsaWRhdGlvbkNvZGVFcnJvciAmJiBzdGF0dXMudmFsdWUgPT09ICdkaXNhYmxlZCcpIHx8IHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJyB8fCAoc3RhdHVzLnZhbHVlID09PSAnaW52YWxpZCcgJiYgIXZhbGlkYXRpb25Db2RlRXJyb3IpXG4gICAgICAgIFwiPlxuICAgICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIzMlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7IGVycm9yOiB2YWxpZGF0aW9uQ29kZUVycm9yIH1cIj5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAjaW5wdXQxXG4gICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1kaWdpdC1pbnB1dCBpb24tdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgY29tbXNJbnB1dENvdW50RXhjZWVkZWQgfHwgc3RhdHVzLnZhbHVlID09PSAnZGlzYWJsZWQnXCJcbiAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxuICAgICAgICAgICAgY2xlYXJPbkVkaXQ9XCJ0cnVlXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgbW9kZT1cIm1kXCJcbiAgICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAxKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICNpbnB1dDJcbiAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBjb21tc0lucHV0Q291bnRFeGNlZWRlZCB8fCBzdGF0dXMudmFsdWUgPT09ICdkaXNhYmxlZCdcIlxuICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDIpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgI2lucHV0M1xuICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkIHx8IHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIChpb25JbnB1dCk9XCJmb3JtdWxhdGVBbmRDaGVja1ZlcmlmaWNhdGlvbkNvZGUoJGV2ZW50LCAzKVwiPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICNpbnB1dDRcbiAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLWRpZ2l0LWlucHV0IGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBjb21tc0lucHV0Q291bnRFeGNlZWRlZCB8fCBzdGF0dXMudmFsdWUgPT09ICdkaXNhYmxlZCdcIlxuICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICBjbGVhck9uRWRpdD1cInRydWVcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICBtb2RlPVwibWRcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cImZvcm11bGF0ZUFuZENoZWNrVmVyaWZpY2F0aW9uQ29kZSgkZXZlbnQsIDQpXCI+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgI2lucHV0NVxuICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtZGlnaXQtaW5wdXQgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGNvbW1zSW5wdXRDb3VudEV4Y2VlZGVkIHx8IHN0YXR1cy52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIxXCJcbiAgICAgICAgICAgIGNsZWFyT25FZGl0PVwidHJ1ZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIG1vZGU9XCJtZFwiXG4gICAgICAgICAgICAoaW9uSW5wdXQpPVwiZm9ybXVsYXRlQW5kQ2hlY2tWZXJpZmljYXRpb25Db2RlKCRldmVudCwgNSlcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZyAmJiBzdGF0dXMudmFsdWUgIT09ICdkaXNhYmxlZCdcIj5cbiAgICAgICAgICA8Y2Ytc3BhY2VyIGRlZmF1bHQ9XCIxNlwiPjwvY2Ytc3BhY2VyPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb21tc1NlbnRDb3VudCA8IDNcIiAoY2xpY2spPVwicmVzZW5kVmVyaWZpY2F0aW9uQ29kZSgpXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbGlkYXRpb25Db2RlRXJyb3JcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJib2R5LXNtYWxsIGlvbi10ZXh0LWNlbnRlclwiICpuZ0Zvcj1cImxldCBzdHJpbmcgb2YgdXNlckZlZWRiYWNrTWVzc2FnZXM/LmVycm9yPy5yZXNlbmQgfHwgWydSZXNlbmQgQ29kZSddXCI+XG4gICAgICAgICAgICAgICAge3sgc3RyaW5nIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YWxpZGF0aW9uQ29kZUVycm9yXCI+XG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJib2R5LXNtYWxsIGlvbi10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8uc3RhbmRhcmRSZXNlbmQgfHwgWydEaWRuYHQgZ2V0IGEgY29kZT8gUGxlYXNlIHJlc2VuZCB0aGUgY29kZSddXCI+XG4gICAgICAgICAgICAgICAge3sgc3RyaW5nIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tc1NlbnRDb3VudCA+PSAzXCI+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cImJvZHktc21hbGwgaW9uLXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHN0cmluZyBvZiB1c2VyRmVlZGJhY2tNZXNzYWdlcz8ubGltaXRSZWFjaGVkIHx8IFsnU3RpbGwgc3RydWdnbGluZyB3aXRoIHlvdXIgY29kZT8nLCAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSddXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID57eyBzdHJpbmcgfX08L3BcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxjZi1zcGFjZXIgKm5nSWY9XCJzdGF0dXMudmFsdWUgPT09ICdkaXNhYmxlZCdcIiBkZWZhdWx0PVwiMzJcIj48L2NmLXNwYWNlcj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj4gPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cbiAgPGNmLXNwaW5uZXIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIiBbc2l6ZV09XCI0MFwiIFtuZ0NsYXNzXT1cInsgJ2Jsb2NrLWhpZGRlbic6IHN0YXR1cy52YWx1ZSAhPT0gJ3Byb2Nlc3NpbmcnIH1cIj48L2NmLXNwaW5uZXI+XG48L2Rpdj5cbiJdfQ==
@@ -19,10 +19,10 @@ export class ButtonLoaderDirective {
19
19
  this.renderer.setStyle(this.elementRef.nativeElement.parentElement, 'position', 'relative');
20
20
  }
21
21
  }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ButtonLoaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: ButtonLoaderDirective, selector: "[cfButtonLoader]", inputs: { cfButtonLoader: "cfButtonLoader" }, ngImport: i0 });
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ButtonLoaderDirective, deps: [{ token: i0.TemplateRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.4", type: ButtonLoaderDirective, selector: "[cfButtonLoader]", inputs: { cfButtonLoader: "cfButtonLoader" }, ngImport: i0 });
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ButtonLoaderDirective, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ButtonLoaderDirective, decorators: [{
26
26
  type: Directive,
27
27
  args: [{
28
28
  selector: '[cfButtonLoader]',
@@ -31,10 +31,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
31
31
  type: Input
32
32
  }] } });
33
33
  class SpinnerComponent {
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SpinnerComponent, selector: "ng-component", ngImport: i0, template: '<div class="loading-spinner"></div>', isInline: true, styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SpinnerComponent, selector: "ng-component", ngImport: i0, template: '<div class="loading-spinner"></div>', isInline: true, styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpinnerComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SpinnerComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ template: '<div class="loading-spinner"></div>', styles: ["@keyframes spinner{to{transform:rotate(360deg)}}.loading-spinner{position:absolute;top:calc(50% - 1em);left:calc(50% - 1em);width:2em;height:2em;border-radius:50%;border:3px solid var(--cf-app-system-color-outline);border-top-color:var(--cf-app-color-accent);animation:spinner 1s linear infinite}\n"] }]
40
40
  }] });