@ruc-lib/tour-guide 2.1.8 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/esm2020/lib/ruclib-tour-guide/ruclib-tour-guide.component.mjs +3 -3
- package/fesm2015/ruc-lib-tour-guide.mjs +2 -2
- package/fesm2015/ruc-lib-tour-guide.mjs.map +1 -1
- package/fesm2020/ruc-lib-tour-guide.mjs +2 -2
- package/fesm2020/ruc-lib-tour-guide.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,6 +18,16 @@ If you only need the Tour Guide component
|
|
|
18
18
|
npm install @ruc-lib/tour-guide
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
### 📦 Version Compatibility
|
|
22
|
+
|
|
23
|
+
Please ensure you install the correct version of `@ruc-lib/tour-guide` based on your Angular version.
|
|
24
|
+
|
|
25
|
+
| Angular Version | Compatible `@ruc-lib/tour-guide` Version |
|
|
26
|
+
|--------------------|---------------------------------------------|
|
|
27
|
+
| 15.x.x | `npm install @ruc-lib/tour-guide@^3.0.0` |
|
|
28
|
+
| 16.x.x | `npm install @ruc-lib/tour-guide@^3.0.0` |
|
|
29
|
+
|
|
30
|
+
|
|
21
31
|
## Usage
|
|
22
32
|
### 1. Import the Module
|
|
23
33
|
In your Angular module file (e.g., `app.module.ts`), import the `RuclibTourGuideModule`:
|
|
@@ -193,6 +203,22 @@ export class AppComponent {
|
|
|
193
203
|
}
|
|
194
204
|
```
|
|
195
205
|
|
|
206
|
+
> ⚠️ **IMPORTANT: Custom Theme Usage in Angular Material**
|
|
207
|
+
|
|
208
|
+
When implementing **custom themes**, such as:
|
|
209
|
+
|
|
210
|
+
```scss
|
|
211
|
+
.custom-theme-1 {
|
|
212
|
+
@include angular-material-theme($custom-theme);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// You must also include the typography mixin to ensure text styles are applied correctly as shown below:
|
|
216
|
+
.custom-theme-1 {
|
|
217
|
+
@include angular-material-theme($custom-theme);
|
|
218
|
+
@include mat.typography-level($theme-custom-typography-name, body-1);
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
196
222
|
## Contribution
|
|
197
223
|
|
|
198
224
|
Contributions are welcome! Feel free to open issues or pull requests for any enhancements or fixes.
|
|
@@ -361,10 +361,10 @@ export class RuclibTourGuideComponent {
|
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
363
|
RuclibTourGuideComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTourGuideComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
364
|
-
RuclibTourGuideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTourGuideComponent, selector: "uxp-ruclib-tour-guide", inputs: { rucInputData: "rucInputData", customTheme: "customTheme", showStartButton: "showStartButton", dataSource: "dataSource" }, outputs: { rucEvent: "rucEvent" }, viewQueries: [{ propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n</button>\r\n\r\n<div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n</div>", styles: [".tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
|
|
364
|
+
RuclibTourGuideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTourGuideComponent, selector: "uxp-ruclib-tour-guide", inputs: { rucInputData: "rucInputData", customTheme: "customTheme", showStartButton: "showStartButton", dataSource: "dataSource" }, outputs: { rucEvent: "rucEvent" }, viewQueries: [{ propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"main\">\r\n <button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n </button>\r\n\r\n <div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}.tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
|
|
365
365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTourGuideComponent, decorators: [{
|
|
366
366
|
type: Component,
|
|
367
|
-
args: [{ selector: 'uxp-ruclib-tour-guide', template: "<button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n</button>\r\n\r\n<div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n</div>", styles: [".tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"] }]
|
|
367
|
+
args: [{ selector: 'uxp-ruclib-tour-guide', template: "<div class=\"main\">\r\n <button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n </button>\r\n\r\n <div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}.tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"] }]
|
|
368
368
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rucEvent: [{
|
|
369
369
|
type: Output
|
|
370
370
|
}], rucInputData: [{
|
|
@@ -379,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
379
379
|
type: ViewChild,
|
|
380
380
|
args: ['overlayRef']
|
|
381
381
|
}] } });
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXRvdXItZ3VpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydWNsaWItdG91ci1ndWlkZS9ydWNsaWItdG91ci1ndWlkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL3J1Y2xpYi10b3VyLWd1aWRlL3J1Y2xpYi10b3VyLWd1aWRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFxQixVQUFVLEVBQUUsU0FBUyxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUVySyxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUFrQm5DOzs7O09BSUc7SUFDSCxZQUNVLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUF2Qm5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGVBQVUsR0FBeUIsRUFBRSxDQUFDO1FBSXhDLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUlyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHlCQUFvQixHQUFHLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQztRQUU1RCxXQUFNLEdBQUcsc0JBQXNCLENBQUM7UUFxVnZDOzs7O1dBSUc7UUFDSyxjQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU87WUFDM0IsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGNBQWMsQ0FBQyxVQUFVO2dCQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDeEQsSUFBSSxLQUFLLENBQUMsR0FBRyxL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S0FBYTtRQUM1QyxJQUFJLE9BQVksQ0FBQztRQUNqQixPQUFPLEdBQUcsRUFBRTtZQUNWLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7c0hBN1lVLHdCQUF3QjswR0FBeEIsd0JBQXdCLG1XQ1RyQyx3b0dBcURNOzRGRDVDTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCO2dHQUt2QixRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRW1CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBSZW5kZXJlcjIsIE9uSW5pdCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb3VyR3VpZGVDb25maWcsIFRvdXJHdWlkZURhdGEgfSBmcm9tICcuLi9tb2RlbC90b3VyLWd1aWRlLm1vZGVsJztcclxuaW1wb3J0IHsgREVGQVVMVF9WQUxVRVMsIGRlZmF1bHRUb3VyR3VpZGVDb25maWcgfSBmcm9tICcuLi9tb2RlbC9kZWZhdWx0LWNvbmZpZy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3V4cC1ydWNsaWItdG91ci1ndWlkZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3J1Y2xpYi10b3VyLWd1aWRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ydWNsaWItdG91ci1ndWlkZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnVjbGliVG91ckd1aWRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQE91dHB1dCgpIHJ1Y0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQElucHV0KCkgcnVjSW5wdXREYXRhITogVG91ckd1aWRlQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVRoZW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd1N0YXJ0QnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogQXJyYXk8VG91ckd1aWRlRGF0YT4gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheVJlZicpIG92ZXJsYXlSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwdWJsaWMgY3VycmVudFN0ZXBJbmRleCA9IDA7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBwb3B1cFN0eWxlITogeyB0b3A6IHN0cmluZzsgbGVmdDogc3RyaW5nIH07XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbFBhcmVudD86IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBzaG93VG91ciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdGFydFRvdXJCdXR0b25MYWJlbCA9IERFRkFVTFRfVkFMVUVTPy5zdGFydFRvdXJCdXR0b25MYWJlbDtcclxuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiBhbnk7XHJcbiAgcHVibGljIGNvbmZpZyA9IGRlZmF1bHRUb3VyR3VpZGVDb25maWc7XHJcblxyXG4gIC8qKlxyXG4gICAqIGNsYXNzIGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHRvdXJHdWlkZVNlcnZpY2UgXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIGhhbmRsaW5nIGlucHV0IGRhdGEgY2hhbmdlc1xyXG4gICAgKiB1cGRhdGluZyBkZWZhdWx0IGNvbmZpZyB3aXRoIHVzZXIgcHJvdmlkZWQgY29uZmlnXHJcbiAgICAqIEBwYXJhbSBjaGFuZ2VzIFxyXG4gICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydydWNJbnB1dERhdGEnXSAmJiBjaGFuZ2VzWydydWNJbnB1dERhdGEnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jaGFuZ2VzWydydWNJbnB1dERhdGEnXS5jdXJyZW50VmFsdWUgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaGFuZGxpbmcgY2hhbmdlIG9uIGNvbXBvbmVudCBpbml0aWxpemF0aW9uXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXkpO1xyXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5oaWdobGlnaHRFbGVtZW50KCksIDE1MCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNob3dTdGFydEJ1dHRvbikge1xyXG4gICAgICB0aGlzLnN0YXJ0VG91cigpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0aGlzIG1ldGhvZCBoYW5kbGUgdGhlIHN0YXJ0IG9mIHRvdXIgZ3VpZGUgZmV0YXVyZVxyXG4gICAqL1xyXG4gIHN0YXJ0VG91cigpIHtcclxuICAgIHRoaXMuc2hvd1RvdXIgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2NrU2Nyb2xsKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLm9yaWdpbmFsUGFyZW50KSB7XHJcbiAgICAgICB0aGlzLm9yaWdpbmFsUGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMub3ZlcmxheVJlZj8ubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5vdmVybGF5UmVmPy5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSAwO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gJ2FkdmFuY2UnKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRFbGVtZW50KCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGhpcyBtZXRob2QgaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHRvIG5leHQgdG91ciBndWlkZSBmZWF0dXJlXHJcbiAgICovXHJcbiAgbmV4dFN0ZXAoKSB7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcEluZGV4Kys7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4IDwgdGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gJ2FkdmFuY2UnKSB0aGlzLmhpZ2hsaWdodEVsZW1lbnQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleC0tO1xyXG4gICAgICB0aGlzLnNob3dUb3VyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudW5sb2NrU2Nyb2xsKCk7XHJcbiAgICAgIHRoaXMucnVjRXZlbnQuZW1pdCh7IGV2ZW50TmFtZTogJ29uVG91ckNvbXBsZXRlJywgZXZlbnRPdXRwdXQ6IG51bGwgfSk7XHJcbiAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMub3ZlcmxheVJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGhpcyBtZXRob2QgYWxsb3cgdXMgdG8gbmF2aWdhdGUgYmFjayB0byBwcmV2aW91cyB0b3VyIGd1aWRlIGZlYXR1cmVcclxuICAgKi9cclxuICBwcmV2aW91c1N0ZXAoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXgtLTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnR5cGUgPT09ICdhZHZhbmNlJykgdGhpcy5oaWdobGlnaHRFbGVtZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gc2tpcCB0aGUgdG91ciBndWlkZSB0aGF0cyBpbiBwcm9ncmVzc1xyXG4gICAqL1xyXG4gIHNraXAoKSB7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgdGhpcy5zaG93VG91ciA9IGZhbHNlO1xyXG4gICAgdGhpcy51bmxvY2tTY3JvbGwoKTtcclxuICAgIHRoaXMucnVjRXZlbnQuZW1pdCh7IGV2ZW50TmFtZTogJ29uVG91clNraXAnLCBldmVudE91dHB1dDogbnVsbCB9KTtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLm92ZXJsYXlSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gaGlnaGxpZ2h0IGZlYXR1cmUgYXJlYSBhbmQgY2hhbmdpbiBkZXRhaWxzIHBvcHVwIGJhc2VkIG9uIHByb3ZpZGUgY29uZmlnXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBoaWdobGlnaHRFbGVtZW50KCkge1xyXG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZGF0YVNvdXJjZVt0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLnR5cGUgPT09ICdzaW1wbGUnIHx8ICFzdGVwPy5zZWxlY3Rvcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMS4gRmluZCBhbmQgc2Nyb2xsIHRvIHRoZSBlbGVtZW50XHJcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEFuZFNjcm9sbChzdGVwLnNlbGVjdG9yKTtcclxuICAgIGlmICghdGhpcy5jdXJyZW50RWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gQXBwbHkgaGlnaGxpZ2h0IHN0eWxlc1xyXG4gICAgdGhpcy5hcHBseUhpZ2hsaWdodFN0eWxlcyh0aGlzLmN1cnJlbnRFbGVtZW50KTtcclxuXHJcbiAgICAvLyAzLiBDYWxjdWxhdGUgYW5kIGFwcGx5IHBvcHVwIHBvc2l0aW9uXHJcbiAgICB0aGlzLmNhbGN1bGF0ZUFuZEFwcGx5UG9wdXBQb3NpdGlvbih0aGlzLmN1cnJlbnRFbGVtZW50LCBzdGVwLnBvc2l0aW9uKTtcclxuXHJcbiAgICAvLyA0LiBDcmVhdGUgdGhlIHZpc3VhbCBob2xlIGluIHRoZSBvdmVybGF5XHJcbiAgICB0aGlzLmNyZWF0ZVRyYW5zcGFyZW50SG9sZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW4gZWxlbWVudCBieSBpdHMgc2VsZWN0b3IsIHNjcm9sbHMgaXQgaW50byB2aWV3LCBhbmQgd2FpdHMgZm9yIHRoZSBzY3JvbGwgdG8gY29tcGxldGUuXHJcbiAgICogQHBhcmFtIHNlbGVjdG9yIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgSFRNTEVsZW1lbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGZpbmRFbGVtZW50QW5kU2Nyb2xsKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgIGF3YWl0IHRoaXMud2FpdEZvclNjcm9sbCgpO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWVzIENTUyBjbGFzc2VzIGFuZCBzdHlsZXMgdG8gdmlzdWFsbHkgaGlnaGxpZ2h0IHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBoaWdobGlnaHQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhcHBseUhpZ2hsaWdodFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAndG91ci1oaWdobGlnaHQnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICd6LWluZGV4JywgJzEwMDAwJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGZvciB0aGUgdG91ciBwb3B1cCBhbmQgYXBwbGllcyBpdC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgaGlnaGxpZ2h0ZWQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIGRlc2lyZWQgcG9zaXRpb24gKCdhdXRvJywgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCcpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2FsY3VsYXRlQW5kQXBwbHlQb3B1cFBvc2l0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogc3RyaW5nID0gJ2F1dG8nKTogdm9pZCB7XHJcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0QWJzb2x1dGVPZmZzZXQoZWxlbWVudCk7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBiZXN0IHBvc2l0aW9uIGlmIHNldCB0byAnYXV0bydcclxuICAgIGNvbnN0IGZpbmFsUG9zaXRpb24gPSB0aGlzLmRldGVybWluZUF1dG9Qb3NpdGlvbihwb3NpdGlvbiwgcmVjdCk7XHJcblxyXG4gICAgLy8gR2V0IHRoZSB0b3AvbGVmdCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgcG9zaXRpb25cclxuICAgIGxldCBjb29yZHMgPSB0aGlzLmNvbXB1dGVQb3B1cENvb3JkaW5hdGVzKGZpbmFsUG9zaXRpb24sIG9mZnNldCwgZWxlbWVudCk7XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBjb29yZGluYXRlcyBhcmUgd2l0aGluIHRoZSB2aWV3cG9ydFxyXG4gICAgY29vcmRzID0gdGhpcy5jbGFtcFBvcHVwQ29vcmRpbmF0ZXMoY29vcmRzKTtcclxuXHJcbiAgICAvLyBBcHBseSB0aGUgZmluYWwgc3R5bGVzIHRvIHRoZSBwb3B1cFxyXG4gICAgdGhpcy5wb3B1cFN0eWxlID0ge1xyXG4gICAgICB0b3A6IGAke2Nvb3Jkcy50b3B9cHhgLFxyXG4gICAgICBsZWZ0OiBgJHtjb29yZHMubGVmdH1weGBcclxuICAgIH07XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBwb3B1cCBpdHNlbGYgaXMgdmlzaWJsZVxyXG4gICAgdGhpcy5zY3JvbGxQb3B1cEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBiZXN0IHBsYWNlbWVudCBmb3IgdGhlIHBvcHVwIHdoZW4gcG9zaXRpb24gaXMgJ2F1dG8nLlxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgY29uZmlndXJlZCBwb3NpdGlvbi5cclxuICAgKiBAcGFyYW0gcmVjdCBUaGUgQm91bmRpbmdDbGllbnRSZWN0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBmaW5hbCBwb3NpdGlvbi5cclxuICAgKi9cclxuICBwcml2YXRlIGRldGVybWluZUF1dG9Qb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nLCByZWN0OiBET01SZWN0KTogc3RyaW5nIHtcclxuICAgIGlmIChwb3NpdGlvbiAhPT0gJ2F1dG8nKSB7XHJcbiAgICAgIHJldHVybiBwb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0LCBzYWZlTWFyZ2luIH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuXHJcbiAgICBjb25zdCBmaXRzVG9wID0gcmVjdC50b3AgPj0gcG9wdXBIZWlnaHQgKyBwYWRkaW5nO1xyXG4gICAgY29uc3QgZml0c0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tID49IHBvcHVwSGVpZ2h0ICsgcGFkZGluZyArIHNhZmVNYXJnaW47XHJcbiAgICBjb25zdCBmaXRzUmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHJlY3QucmlnaHQgPj0gcG9wdXBXaWR0aCArIHBhZGRpbmc7XHJcbiAgICBjb25zdCBmaXRzTGVmdCA9IHJlY3QubGVmdCA+PSBwb3B1cFdpZHRoICsgcGFkZGluZztcclxuXHJcbiAgICBpZiAoZml0c1JpZ2h0KSByZXR1cm4gJ3JpZ2h0JztcclxuICAgIGlmIChmaXRzQm90dG9tKSByZXR1cm4gJ2JvdHRvbSc7XHJcbiAgICBpZiAoZml0c0xlZnQpIHJldHVybiAnbGVmdCc7XHJcbiAgICBpZiAoZml0c1RvcCkgcmV0dXJuICd0b3AnO1xyXG4gICAgcmV0dXJuICdib3R0b20nOyAvLyBmYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZXMgdGhlIHRvcCBhbmQgbGVmdCBjb29yZGluYXRlcyBmb3IgdGhlIHBvcHVwIGJhc2VkIG9uIHRoZSB0YXJnZXQgZWxlbWVudCBhbmQgZGVzaXJlZCBwb3NpdGlvbi5cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIGZpbmFsIHBvc2l0aW9uIGZvciB0aGUgcG9wdXAuXHJcbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYWJzb2x1dGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdG9wIGFuZCBsZWZ0IGNvb3JkaW5hdGVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY29tcHV0ZVBvcHVwQ29vcmRpbmF0ZXMocG9zaXRpb246IHN0cmluZywgb2Zmc2V0OiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0IH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuICAgIGxldCB0b3AgPSBERUZBVUxUX1ZBTFVFUy5wb3B1cC50b3A7XHJcbiAgICBsZXQgbGVmdCA9IERFRkFVTFRfVkFMVUVTLnBvcHVwLmxlZnQ7XHJcblxyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgIHRvcCA9IG9mZnNldC50b3AgLSBwb3B1cEhlaWdodCAtIHBhZGRpbmcgLSAyMDtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMiAtIHBvcHVwV2lkdGggLyAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIHRvcCA9IG9mZnNldC50b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIHBhZGRpbmc7XHJcbiAgICAgICAgbGVmdCA9IG9mZnNldC5sZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIgLSBwb3B1cFdpZHRoIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgdG9wID0gb2Zmc2V0LnRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgLSBwb3B1cFdpZHRoIC0gcGFkZGluZyArIDUwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgdG9wID0gb2Zmc2V0LnRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgcGFkZGluZztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB7IHRvcCwgbGVmdCB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xhbXBzIHRoZSBwb3B1cCdzIGNvb3JkaW5hdGVzIHRvIGVuc3VyZSBpdCBzdGF5cyB3aXRoaW4gdGhlIHZpc2libGUgdmlld3BvcnQuXHJcbiAgICogQHBhcmFtIGNvb3JkcyBUaGUgY2FsY3VsYXRlZCB0b3AgYW5kIGxlZnQgY29vcmRpbmF0ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGFkanVzdGVkIGNvb3JkaW5hdGVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xhbXBQb3B1cENvb3JkaW5hdGVzKGNvb3JkczogeyB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyIH0pOiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0LCBzYWZlTWFyZ2luIH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgIGNvbnN0IG1heFRvcCA9IHNjcm9sbFRvcCArIHdpbmRvdy5pbm5lckhlaWdodCAtIHBvcHVwSGVpZ2h0IC0gc2FmZU1hcmdpbjtcclxuICAgIGNvbnN0IG1heExlZnQgPSBzY3JvbGxMZWZ0ICsgd2luZG93LmlubmVyV2lkdGggLSBwb3B1cFdpZHRoIC0gcGFkZGluZztcclxuXHJcbiAgICBjb25zdCB0b3AgPSBNYXRoLm1heChzY3JvbGxUb3AgKyBwYWRkaW5nLCBNYXRoLm1pbihjb29yZHMudG9wLCBtYXhUb3ApKTtcclxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChzY3JvbGxMZWZ0ICsgcGFkZGluZywgTWF0aC5taW4oY29vcmRzLmxlZnQsIG1heExlZnQpKTtcclxuXHJcbiAgICByZXR1cm4geyB0b3AsIGxlZnQgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBwb3B1cCBpcyByZW5kZXJlZCBpbnNpZGUgYSBzY3JvbGxhYmxlIGNvbnRhaW5lciwgdGhpcyBlbnN1cmVzIGl0J3Mgc2Nyb2xsZWQgaW50byB2aWV3LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2Nyb2xsUG9wdXBJbnRvVmlldygpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBwb3B1cEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRvdXItcG9wdXAnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgcG9wdXBFbD8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gZXhlY3V0ZSBoaWdobGlnaHQgcHJvY2VzcyBhZnRlciBzY3JvbGwgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB3YWl0Rm9yU2Nyb2xsKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsgLy8g4o+x77iPIEFkanVzdCBkZWxheSBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byBjcmVhdGUgdHJhbnNwYXJlbnQgaG9sZSBpbiBvdmVybGF5IGZvciB2aXNpYmlsaXR5IG9mIGhpZ2hsaWdodGVkIGFyZWFcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZVRyYW5zcGFyZW50SG9sZSgpIHtcclxuICAgIGlmKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcGFkZGluZyA9IDU7XHJcbiAgICAgIGNvbnN0IHJlY3Q6IGFueSA9IHRoaXMuY3VycmVudEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCB0b3AgPSBNYXRoLm1heChyZWN0Py50b3AgLSBwYWRkaW5nLCAwKTtcclxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KHJlY3Q/LmxlZnQgLSBwYWRkaW5nLCAwKTtcclxuICAgICAgY29uc3Qgd2lkdGggPSByZWN0Py53aWR0aCArIHBhZGRpbmcgKiAyO1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSByZWN0Py5oZWlnaHQgKyBwYWRkaW5nICogMjtcclxuXHJcbiAgICAgIGNvbnN0IGhvbGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhvbGUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ2xlZnQnLCBgJHtsZWZ0fXB4YCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaG9sZUVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgfSwgNTApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gZ2V0IGFic29sdXRlIG9mZnNldFxyXG4gICAqIEBwYXJhbSBlbGVtZW50IFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QWJzb2x1dGVPZmZzZXQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBsZXQgdG9wID0gMCwgbGVmdCA9IDA7XHJcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7XHJcblxyXG4gICAgd2hpbGUgKGVsKSB7XHJcbiAgICAgIHRvcCArPSBlbC5vZmZzZXRUb3AgLSBlbC5zY3JvbGxUb3AgKyBlbC5jbGllbnRUb3A7XHJcbiAgICAgIGxlZnQgKz0gZWwub2Zmc2V0TGVmdCAtIGVsLnNjcm9sbExlZnQgKyBlbC5jbGllbnRMZWZ0O1xyXG4gICAgICBlbCA9IGVsLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB0b3AsIGxlZnQgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byBsb2NrIHNjcm9sbCB3aGVuIHRvdXIgZ3VpZGUgaXMgYWN0aXZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2NrU2Nyb2xsKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RvdXItc2Nyb2xsLWxvY2snKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byB1bmxvY2sgc2Nyb2xsIHdoZW4gdG91ciBndWlkZSBpcyBub3QgYWN0aXZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxvY2tTY3JvbGwoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RvdXItc2Nyb2xsLWxvY2snKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byByZW1vdmUgaGlnaGxpZ2h0IHdoZW4gdG91ciBpcyBza2lwcGVkIG9yIGRvbmVcclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZUhpZ2hsaWdodCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5jdXJyZW50RWxlbWVudCwgJ3RvdXItaGlnaGxpZ2h0Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5jdXJyZW50RWxlbWVudCwgJ3otaW5kZXgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmN1cnJlbnRFbGVtZW50LCAncG9zaXRpb24nKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmN1cnJlbnRFbGVtZW50LCAnYm94LXNoYWRvdycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogbWV0aG9kIHRvIG5hdmlnYXRlIGJldHdlZW4gdG91ciBzbGlkZXMgb3Igc2tpcCB0b3VyIHVzaW5nIGxlZnQsIHJpZ2h0IGFuZCBza2lwIGtleVxyXG4gICAqIEBwYXJhbSBldmVudCBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLnNob3dUb3VyKSByZXR1cm47XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBERUZBVUxUX1ZBTFVFUy5hcnJvd1JpZ2h0KSB0aGlzLm5leHRTdGVwKCk7XHJcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09IERFRkFVTFRfVkFMVUVTLmFycm93TGVmdCkgdGhpcy5wcmV2aW91c1N0ZXAoKTtcclxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gREVGQVVMVF9WQUxVRVMuZXNjYXBlKSB0aGlzLnNraXAoKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBkZWJvdW5jZSBtZXRob2QgZm9yIHNtb290aCBvcGVyYXRpb25cclxuICAgKiBAcGFyYW0gZm4gXHJcbiAgICogQHBhcmFtIGRlbGF5IFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVib3VuY2UoZm46ICgpID0+IHZvaWQsIGRlbGF5OiBudW1iZXIpIHtcclxuICAgIGxldCB0aW1lb3V0OiBhbnk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZuKCksIGRlbGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBoYW5kbGluZyBjaGFuZ2Ugb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleSk7XHJcblxyXG4gICAgLy8gQ2xlYW4gdXA6IG1vdmUgb3ZlcmxheSBiYWNrIChvcHRpb25hbClcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vcmlnaW5hbFBhcmVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMub3JpZ2luYWxQYXJlbnQsIHRoaXMub3ZlcmxheVJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJzaG93U3RhcnRCdXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwic3RhcnRUb3VyKClcIj5cclxuICAgIHt7c3RhcnRUb3VyQnV0dG9uTGFiZWx9fVxyXG48L2J1dHRvbj5cclxuXHJcbjxkaXYgaWQ9XCJ0b3VyLWNvbnRhaW5lclwiIGNsYXNzPVwie3sgY3VzdG9tVGhlbWUgfX1cIiAqbmdJZj1cInNob3dUb3VyXCI+XHJcbiAgICA8ZGl2ICNvdmVybGF5UmVmIGNsYXNzPVwidG91ci1vdmVybGF5XCIgKm5nSWY9XCJjdXJyZW50U3RlcEluZGV4IDwgZGF0YVNvdXJjZS5sZW5ndGhcIj5cclxuICAgICAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJ0b3VyLXBvcHVwXCIgW3N0eWxlLm1pbldpZHRoXT1cImNvbmZpZy5kZWZhdWx0UG9wdXBXaWR0aFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHRdPVwiZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS5zaGFwZSA9PT0gJ2NpcmNsZScgPyBjb25maWcuZGVmYXVsdFBvcHVwV2lkdGggOiAnYXV0bydcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS53aWR0aCB8fCBjb25maWcuZGVmYXVsdFBvcHVwV2lkdGhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImRhdGFTb3VyY2VbY3VycmVudFN0ZXBJbmRleF0uc2hhcGUgPT09ICdjaXJjbGUnID8gZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS53aWR0aCB8fCBjb25maWcuZGVmYXVsdFBvcHVwV2lkdGggOiAnYXV0bydcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhU291cmNlW2N1cnJlbnRTdGVwSW5kZXhdLnNoYXBlIHx8ICdyb3VuZGVkJ1wiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbmZpZy50eXBlID09PSAnYWR2YW5jZScgPyBwb3B1cFN0eWxlIDogbnVsbFwiIGNsYXNzPVwie3tjb25maWcudHlwZX19XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIHRvdXIgbW9kYWwgdGl0bGUgLS0+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJ0b3VyLWd1aWRlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgW3N0eWxlLmZvbnRTaXplXT1cImNvbmZpZy50aXRsZUZvbnRTaXplXCIgKm5nSWY9XCJkYXRhU291cmNlW2N1cnJlbnRTdGVwSW5kZXhdLnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwhLS0gdG91ciBjb250ZW50IGRldGFpbHMgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG91ci1ndWlkZS1jb250ZW50XCIgW3N0eWxlLmZvbnRTaXplXT1cImNvbmZpZy5jb250ZW50Rm9udFNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS5jb250ZW50XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIHRvdXIgc3RlcCBjb3VudGVyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvdXItZ3VpZGUtc3RlcC1jb3VudGVyXCIgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImNvbmZpZy5zdGVwQ291bnRBbGlnbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZy5zdGVwQ291bnRTdGFydFRleHR9fSB7eyBjdXJyZW50U3RlcEluZGV4ICsgMSB9fSB7e2NvbmZpZy5zdGVwQ291bnRNaWRkbGVUZXh0fX0ge3tcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gdG91ciBhY3Rpb24gYnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJ0b3VyLWd1aWRlLWFjdGlvbi1idXR0b25zXCIgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImNvbmZpZy5idXR0b25zQWxpZ25tZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtzdHlsZS5mb250U2l6ZV09XCJjb25maWcuYnV0dG9uc0ZvbnRTaXplXCIgKm5nSWY9XCJjb25maWcuc2hvd1NraXBCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJza2lwKClcIj57e2NvbmZpZy5za2lwQnV0dG9uVGV4dH19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLmJ1dHRvbnNGb250U2l6ZVwiIChjbGljayk9XCJwcmV2aW91c1N0ZXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRTdGVwSW5kZXggPT09IDBcIj57e2NvbmZpZy5wcmV2QnV0dG9uVGV4dH19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLmJ1dHRvbnNGb250U2l6ZVwiIChjbGljayk9XCJuZXh0U3RlcCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFN0ZXBJbmRleCA9PT0gZGF0YVNvdXJjZS5sZW5ndGggLSAxID8gY29uZmlnLmZpbmlzaEJ1dHRvblRleHQgOiBjb25maWcubmV4dEJ1dHRvblRleHRcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgICA8IS0tIGhvbGUgb24gb3ZlcmxheWVyIGZvciBoaWdobGlnaHRlZCBjb250ZW50IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob2xlXCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cImNvbmZpZy5oaWdobGlnaHRCb3JkZXJDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJXaWR0aF09XCJjb25maWcuaGlnaGxpZ2h0Qm9yZGVyV2lkdGhcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXRvdXItZ3VpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydWNsaWItdG91ci1ndWlkZS9ydWNsaWItdG91ci1ndWlkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL3J1Y2xpYi10b3VyLWd1aWRlL3J1Y2xpYi10b3VyLWd1aWRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFxQixVQUFVLEVBQUUsU0FBUyxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUVySyxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBT3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUFrQm5DOzs7O09BSUc7SUFDSCxZQUNVLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUF2Qm5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGVBQVUsR0FBeUIsRUFBRSxDQUFDO1FBSXhDLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUlyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHlCQUFvQixHQUFHLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQztRQUU1RCxXQUFNLEdBQUcsc0JBQXNCLENBQUM7UUFxVnZDOzs7O1dBSUc7UUFDSyxjQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU87WUFDM0IsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGNBQWMsQ0FBQyxVQUFVO2dCQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDeEQsSUFBSSxLQUFLLENBQUMsR0FBRyxL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S0FBYTtRQUM1QyxJQUFJLE9BQVksQ0FBQztRQUNqQixPQUFPLEdBQUcsRUFBRTtZQUNWLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7c0hBN1lVLHdCQUF3QjswR0FBeEIsd0JBQXdCLG1XQ1RyQyw4MUdBdURNOzRGRDlDTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCO2dHQUt2QixRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRW1CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBSZW5kZXJlcjIsIE9uSW5pdCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb3VyR3VpZGVDb25maWcsIFRvdXJHdWlkZURhdGEgfSBmcm9tICcuLi9tb2RlbC90b3VyLWd1aWRlLm1vZGVsJztcclxuaW1wb3J0IHsgREVGQVVMVF9WQUxVRVMsIGRlZmF1bHRUb3VyR3VpZGVDb25maWcgfSBmcm9tICcuLi9tb2RlbC9kZWZhdWx0LWNvbmZpZy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3V4cC1ydWNsaWItdG91ci1ndWlkZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3J1Y2xpYi10b3VyLWd1aWRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ydWNsaWItdG91ci1ndWlkZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnVjbGliVG91ckd1aWRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQE91dHB1dCgpIHJ1Y0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQElucHV0KCkgcnVjSW5wdXREYXRhITogVG91ckd1aWRlQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVRoZW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd1N0YXJ0QnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogQXJyYXk8VG91ckd1aWRlRGF0YT4gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheVJlZicpIG92ZXJsYXlSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwdWJsaWMgY3VycmVudFN0ZXBJbmRleCA9IDA7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBwb3B1cFN0eWxlITogeyB0b3A6IHN0cmluZzsgbGVmdDogc3RyaW5nIH07XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbFBhcmVudD86IEhUTUxFbGVtZW50O1xyXG4gIHB1YmxpYyBzaG93VG91ciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdGFydFRvdXJCdXR0b25MYWJlbCA9IERFRkFVTFRfVkFMVUVTPy5zdGFydFRvdXJCdXR0b25MYWJlbDtcclxuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiBhbnk7XHJcbiAgcHVibGljIGNvbmZpZyA9IGRlZmF1bHRUb3VyR3VpZGVDb25maWc7XHJcblxyXG4gIC8qKlxyXG4gICAqIGNsYXNzIGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHRvdXJHdWlkZVNlcnZpY2UgXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIGhhbmRsaW5nIGlucHV0IGRhdGEgY2hhbmdlc1xyXG4gICAgKiB1cGRhdGluZyBkZWZhdWx0IGNvbmZpZyB3aXRoIHVzZXIgcHJvdmlkZWQgY29uZmlnXHJcbiAgICAqIEBwYXJhbSBjaGFuZ2VzIFxyXG4gICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydydWNJbnB1dERhdGEnXSAmJiBjaGFuZ2VzWydydWNJbnB1dERhdGEnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jaGFuZ2VzWydydWNJbnB1dERhdGEnXS5jdXJyZW50VmFsdWUgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaGFuZGxpbmcgY2hhbmdlIG9uIGNvbXBvbmVudCBpbml0aWxpemF0aW9uXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXkpO1xyXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5oaWdobGlnaHRFbGVtZW50KCksIDE1MCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNob3dTdGFydEJ1dHRvbikge1xyXG4gICAgICB0aGlzLnN0YXJ0VG91cigpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0aGlzIG1ldGhvZCBoYW5kbGUgdGhlIHN0YXJ0IG9mIHRvdXIgZ3VpZGUgZmV0YXVyZVxyXG4gICAqL1xyXG4gIHN0YXJ0VG91cigpIHtcclxuICAgIHRoaXMuc2hvd1RvdXIgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2NrU2Nyb2xsKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLm9yaWdpbmFsUGFyZW50KSB7XHJcbiAgICAgICB0aGlzLm9yaWdpbmFsUGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMub3ZlcmxheVJlZj8ubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5vdmVybGF5UmVmPy5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSAwO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gJ2FkdmFuY2UnKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRFbGVtZW50KCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGhpcyBtZXRob2QgaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHRvIG5leHQgdG91ciBndWlkZSBmZWF0dXJlXHJcbiAgICovXHJcbiAgbmV4dFN0ZXAoKSB7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcEluZGV4Kys7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4IDwgdGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gJ2FkdmFuY2UnKSB0aGlzLmhpZ2hsaWdodEVsZW1lbnQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXBJbmRleC0tO1xyXG4gICAgICB0aGlzLnNob3dUb3VyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudW5sb2NrU2Nyb2xsKCk7XHJcbiAgICAgIHRoaXMucnVjRXZlbnQuZW1pdCh7IGV2ZW50TmFtZTogJ29uVG91ckNvbXBsZXRlJywgZXZlbnRPdXRwdXQ6IG51bGwgfSk7XHJcbiAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMub3ZlcmxheVJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGhpcyBtZXRob2QgYWxsb3cgdXMgdG8gbmF2aWdhdGUgYmFjayB0byBwcmV2aW91cyB0b3VyIGd1aWRlIGZlYXR1cmVcclxuICAgKi9cclxuICBwcmV2aW91c1N0ZXAoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXgtLTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnR5cGUgPT09ICdhZHZhbmNlJykgdGhpcy5oaWdobGlnaHRFbGVtZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gc2tpcCB0aGUgdG91ciBndWlkZSB0aGF0cyBpbiBwcm9ncmVzc1xyXG4gICAqL1xyXG4gIHNraXAoKSB7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgdGhpcy5zaG93VG91ciA9IGZhbHNlO1xyXG4gICAgdGhpcy51bmxvY2tTY3JvbGwoKTtcclxuICAgIHRoaXMucnVjRXZlbnQuZW1pdCh7IGV2ZW50TmFtZTogJ29uVG91clNraXAnLCBldmVudE91dHB1dDogbnVsbCB9KTtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLm92ZXJsYXlSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gaGlnaGxpZ2h0IGZlYXR1cmUgYXJlYSBhbmQgY2hhbmdpbiBkZXRhaWxzIHBvcHVwIGJhc2VkIG9uIHByb3ZpZGUgY29uZmlnXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBoaWdobGlnaHRFbGVtZW50KCkge1xyXG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZGF0YVNvdXJjZVt0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLnR5cGUgPT09ICdzaW1wbGUnIHx8ICFzdGVwPy5zZWxlY3Rvcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMS4gRmluZCBhbmQgc2Nyb2xsIHRvIHRoZSBlbGVtZW50XHJcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEFuZFNjcm9sbChzdGVwLnNlbGVjdG9yKTtcclxuICAgIGlmICghdGhpcy5jdXJyZW50RWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gQXBwbHkgaGlnaGxpZ2h0IHN0eWxlc1xyXG4gICAgdGhpcy5hcHBseUhpZ2hsaWdodFN0eWxlcyh0aGlzLmN1cnJlbnRFbGVtZW50KTtcclxuXHJcbiAgICAvLyAzLiBDYWxjdWxhdGUgYW5kIGFwcGx5IHBvcHVwIHBvc2l0aW9uXHJcbiAgICB0aGlzLmNhbGN1bGF0ZUFuZEFwcGx5UG9wdXBQb3NpdGlvbih0aGlzLmN1cnJlbnRFbGVtZW50LCBzdGVwLnBvc2l0aW9uKTtcclxuXHJcbiAgICAvLyA0LiBDcmVhdGUgdGhlIHZpc3VhbCBob2xlIGluIHRoZSBvdmVybGF5XHJcbiAgICB0aGlzLmNyZWF0ZVRyYW5zcGFyZW50SG9sZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW4gZWxlbWVudCBieSBpdHMgc2VsZWN0b3IsIHNjcm9sbHMgaXQgaW50byB2aWV3LCBhbmQgd2FpdHMgZm9yIHRoZSBzY3JvbGwgdG8gY29tcGxldGUuXHJcbiAgICogQHBhcmFtIHNlbGVjdG9yIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgSFRNTEVsZW1lbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGZpbmRFbGVtZW50QW5kU2Nyb2xsKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgIGF3YWl0IHRoaXMud2FpdEZvclNjcm9sbCgpO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWVzIENTUyBjbGFzc2VzIGFuZCBzdHlsZXMgdG8gdmlzdWFsbHkgaGlnaGxpZ2h0IHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBoaWdobGlnaHQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhcHBseUhpZ2hsaWdodFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAndG91ci1oaWdobGlnaHQnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICd6LWluZGV4JywgJzEwMDAwJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGZvciB0aGUgdG91ciBwb3B1cCBhbmQgYXBwbGllcyBpdC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgaGlnaGxpZ2h0ZWQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIGRlc2lyZWQgcG9zaXRpb24gKCdhdXRvJywgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCcpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2FsY3VsYXRlQW5kQXBwbHlQb3B1cFBvc2l0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogc3RyaW5nID0gJ2F1dG8nKTogdm9pZCB7XHJcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0QWJzb2x1dGVPZmZzZXQoZWxlbWVudCk7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBiZXN0IHBvc2l0aW9uIGlmIHNldCB0byAnYXV0bydcclxuICAgIGNvbnN0IGZpbmFsUG9zaXRpb24gPSB0aGlzLmRldGVybWluZUF1dG9Qb3NpdGlvbihwb3NpdGlvbiwgcmVjdCk7XHJcblxyXG4gICAgLy8gR2V0IHRoZSB0b3AvbGVmdCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgcG9zaXRpb25cclxuICAgIGxldCBjb29yZHMgPSB0aGlzLmNvbXB1dGVQb3B1cENvb3JkaW5hdGVzKGZpbmFsUG9zaXRpb24sIG9mZnNldCwgZWxlbWVudCk7XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBjb29yZGluYXRlcyBhcmUgd2l0aGluIHRoZSB2aWV3cG9ydFxyXG4gICAgY29vcmRzID0gdGhpcy5jbGFtcFBvcHVwQ29vcmRpbmF0ZXMoY29vcmRzKTtcclxuXHJcbiAgICAvLyBBcHBseSB0aGUgZmluYWwgc3R5bGVzIHRvIHRoZSBwb3B1cFxyXG4gICAgdGhpcy5wb3B1cFN0eWxlID0ge1xyXG4gICAgICB0b3A6IGAke2Nvb3Jkcy50b3B9cHhgLFxyXG4gICAgICBsZWZ0OiBgJHtjb29yZHMubGVmdH1weGBcclxuICAgIH07XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBwb3B1cCBpdHNlbGYgaXMgdmlzaWJsZVxyXG4gICAgdGhpcy5zY3JvbGxQb3B1cEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBiZXN0IHBsYWNlbWVudCBmb3IgdGhlIHBvcHVwIHdoZW4gcG9zaXRpb24gaXMgJ2F1dG8nLlxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgY29uZmlndXJlZCBwb3NpdGlvbi5cclxuICAgKiBAcGFyYW0gcmVjdCBUaGUgQm91bmRpbmdDbGllbnRSZWN0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBmaW5hbCBwb3NpdGlvbi5cclxuICAgKi9cclxuICBwcml2YXRlIGRldGVybWluZUF1dG9Qb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nLCByZWN0OiBET01SZWN0KTogc3RyaW5nIHtcclxuICAgIGlmIChwb3NpdGlvbiAhPT0gJ2F1dG8nKSB7XHJcbiAgICAgIHJldHVybiBwb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0LCBzYWZlTWFyZ2luIH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuXHJcbiAgICBjb25zdCBmaXRzVG9wID0gcmVjdC50b3AgPj0gcG9wdXBIZWlnaHQgKyBwYWRkaW5nO1xyXG4gICAgY29uc3QgZml0c0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tID49IHBvcHVwSGVpZ2h0ICsgcGFkZGluZyArIHNhZmVNYXJnaW47XHJcbiAgICBjb25zdCBmaXRzUmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHJlY3QucmlnaHQgPj0gcG9wdXBXaWR0aCArIHBhZGRpbmc7XHJcbiAgICBjb25zdCBmaXRzTGVmdCA9IHJlY3QubGVmdCA+PSBwb3B1cFdpZHRoICsgcGFkZGluZztcclxuXHJcbiAgICBpZiAoZml0c1JpZ2h0KSByZXR1cm4gJ3JpZ2h0JztcclxuICAgIGlmIChmaXRzQm90dG9tKSByZXR1cm4gJ2JvdHRvbSc7XHJcbiAgICBpZiAoZml0c0xlZnQpIHJldHVybiAnbGVmdCc7XHJcbiAgICBpZiAoZml0c1RvcCkgcmV0dXJuICd0b3AnO1xyXG4gICAgcmV0dXJuICdib3R0b20nOyAvLyBmYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZXMgdGhlIHRvcCBhbmQgbGVmdCBjb29yZGluYXRlcyBmb3IgdGhlIHBvcHVwIGJhc2VkIG9uIHRoZSB0YXJnZXQgZWxlbWVudCBhbmQgZGVzaXJlZCBwb3NpdGlvbi5cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIGZpbmFsIHBvc2l0aW9uIGZvciB0aGUgcG9wdXAuXHJcbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYWJzb2x1dGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdG9wIGFuZCBsZWZ0IGNvb3JkaW5hdGVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY29tcHV0ZVBvcHVwQ29vcmRpbmF0ZXMocG9zaXRpb246IHN0cmluZywgb2Zmc2V0OiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0IH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuICAgIGxldCB0b3AgPSBERUZBVUxUX1ZBTFVFUy5wb3B1cC50b3A7XHJcbiAgICBsZXQgbGVmdCA9IERFRkFVTFRfVkFMVUVTLnBvcHVwLmxlZnQ7XHJcblxyXG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgIHRvcCA9IG9mZnNldC50b3AgLSBwb3B1cEhlaWdodCAtIHBhZGRpbmcgLSAyMDtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMiAtIHBvcHVwV2lkdGggLyAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIHRvcCA9IG9mZnNldC50b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIHBhZGRpbmc7XHJcbiAgICAgICAgbGVmdCA9IG9mZnNldC5sZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIgLSBwb3B1cFdpZHRoIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgdG9wID0gb2Zmc2V0LnRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgLSBwb3B1cFdpZHRoIC0gcGFkZGluZyArIDUwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgdG9wID0gb2Zmc2V0LnRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMiAtIHBvcHVwSGVpZ2h0IC8gMjtcclxuICAgICAgICBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgcGFkZGluZztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB7IHRvcCwgbGVmdCB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xhbXBzIHRoZSBwb3B1cCdzIGNvb3JkaW5hdGVzIHRvIGVuc3VyZSBpdCBzdGF5cyB3aXRoaW4gdGhlIHZpc2libGUgdmlld3BvcnQuXHJcbiAgICogQHBhcmFtIGNvb3JkcyBUaGUgY2FsY3VsYXRlZCB0b3AgYW5kIGxlZnQgY29vcmRpbmF0ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGFkanVzdGVkIGNvb3JkaW5hdGVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xhbXBQb3B1cENvb3JkaW5hdGVzKGNvb3JkczogeyB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyIH0pOiB7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCB7IHBhZGRpbmcsIHdpZHRoOiBwb3B1cFdpZHRoLCBoZWlnaHQ6IHBvcHVwSGVpZ2h0LCBzYWZlTWFyZ2luIH0gPSBERUZBVUxUX1ZBTFVFUy5wb3B1cDtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgIGNvbnN0IG1heFRvcCA9IHNjcm9sbFRvcCArIHdpbmRvdy5pbm5lckhlaWdodCAtIHBvcHVwSGVpZ2h0IC0gc2FmZU1hcmdpbjtcclxuICAgIGNvbnN0IG1heExlZnQgPSBzY3JvbGxMZWZ0ICsgd2luZG93LmlubmVyV2lkdGggLSBwb3B1cFdpZHRoIC0gcGFkZGluZztcclxuXHJcbiAgICBjb25zdCB0b3AgPSBNYXRoLm1heChzY3JvbGxUb3AgKyBwYWRkaW5nLCBNYXRoLm1pbihjb29yZHMudG9wLCBtYXhUb3ApKTtcclxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChzY3JvbGxMZWZ0ICsgcGFkZGluZywgTWF0aC5taW4oY29vcmRzLmxlZnQsIG1heExlZnQpKTtcclxuXHJcbiAgICByZXR1cm4geyB0b3AsIGxlZnQgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBwb3B1cCBpcyByZW5kZXJlZCBpbnNpZGUgYSBzY3JvbGxhYmxlIGNvbnRhaW5lciwgdGhpcyBlbnN1cmVzIGl0J3Mgc2Nyb2xsZWQgaW50byB2aWV3LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2Nyb2xsUG9wdXBJbnRvVmlldygpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBwb3B1cEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRvdXItcG9wdXAnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgcG9wdXBFbD8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gZXhlY3V0ZSBoaWdobGlnaHQgcHJvY2VzcyBhZnRlciBzY3JvbGwgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB3YWl0Rm9yU2Nyb2xsKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsgLy8g4o+x77iPIEFkanVzdCBkZWxheSBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byBjcmVhdGUgdHJhbnNwYXJlbnQgaG9sZSBpbiBvdmVybGF5IGZvciB2aXNpYmlsaXR5IG9mIGhpZ2hsaWdodGVkIGFyZWFcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZVRyYW5zcGFyZW50SG9sZSgpIHtcclxuICAgIGlmKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgcGFkZGluZyA9IDU7XHJcbiAgICAgIGNvbnN0IHJlY3Q6IGFueSA9IHRoaXMuY3VycmVudEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCB0b3AgPSBNYXRoLm1heChyZWN0Py50b3AgLSBwYWRkaW5nLCAwKTtcclxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KHJlY3Q/LmxlZnQgLSBwYWRkaW5nLCAwKTtcclxuICAgICAgY29uc3Qgd2lkdGggPSByZWN0Py53aWR0aCArIHBhZGRpbmcgKiAyO1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSByZWN0Py5oZWlnaHQgKyBwYWRkaW5nICogMjtcclxuXHJcbiAgICAgIGNvbnN0IGhvbGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhvbGUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ2xlZnQnLCBgJHtsZWZ0fXB4YCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaG9sZUVsZW1lbnQsICd0b3AnLCBgJHt0b3B9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShob2xlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgfSwgNTApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBtZXRob2QgdG8gZ2V0IGFic29sdXRlIG9mZnNldFxyXG4gICAqIEBwYXJhbSBlbGVtZW50IFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QWJzb2x1dGVPZmZzZXQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBsZXQgdG9wID0gMCwgbGVmdCA9IDA7XHJcbiAgICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7XHJcblxyXG4gICAgd2hpbGUgKGVsKSB7XHJcbiAgICAgIHRvcCArPSBlbC5vZmZzZXRUb3AgLSBlbC5zY3JvbGxUb3AgKyBlbC5jbGllbnRUb3A7XHJcbiAgICAgIGxlZnQgKz0gZWwub2Zmc2V0TGVmdCAtIGVsLnNjcm9sbExlZnQgKyBlbC5jbGllbnRMZWZ0O1xyXG4gICAgICBlbCA9IGVsLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB0b3AsIGxlZnQgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byBsb2NrIHNjcm9sbCB3aGVuIHRvdXIgZ3VpZGUgaXMgYWN0aXZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2NrU2Nyb2xsKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RvdXItc2Nyb2xsLWxvY2snKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byB1bmxvY2sgc2Nyb2xsIHdoZW4gdG91ciBndWlkZSBpcyBub3QgYWN0aXZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxvY2tTY3JvbGwoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvdycpO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RvdXItc2Nyb2xsLWxvY2snKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCB0byByZW1vdmUgaGlnaGxpZ2h0IHdoZW4gdG91ciBpcyBza2lwcGVkIG9yIGRvbmVcclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZUhpZ2hsaWdodCgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5jdXJyZW50RWxlbWVudCwgJ3RvdXItaGlnaGxpZ2h0Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5jdXJyZW50RWxlbWVudCwgJ3otaW5kZXgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmN1cnJlbnRFbGVtZW50LCAncG9zaXRpb24nKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmN1cnJlbnRFbGVtZW50LCAnYm94LXNoYWRvdycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogbWV0aG9kIHRvIG5hdmlnYXRlIGJldHdlZW4gdG91ciBzbGlkZXMgb3Igc2tpcCB0b3VyIHVzaW5nIGxlZnQsIHJpZ2h0IGFuZCBza2lwIGtleVxyXG4gICAqIEBwYXJhbSBldmVudCBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLnNob3dUb3VyKSByZXR1cm47XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBERUZBVUxUX1ZBTFVFUy5hcnJvd1JpZ2h0KSB0aGlzLm5leHRTdGVwKCk7XHJcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09IERFRkFVTFRfVkFMVUVTLmFycm93TGVmdCkgdGhpcy5wcmV2aW91c1N0ZXAoKTtcclxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gREVGQVVMVF9WQUxVRVMuZXNjYXBlKSB0aGlzLnNraXAoKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBkZWJvdW5jZSBtZXRob2QgZm9yIHNtb290aCBvcGVyYXRpb25cclxuICAgKiBAcGFyYW0gZm4gXHJcbiAgICogQHBhcmFtIGRlbGF5IFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVib3VuY2UoZm46ICgpID0+IHZvaWQsIGRlbGF5OiBudW1iZXIpIHtcclxuICAgIGxldCB0aW1lb3V0OiBhbnk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZuKCksIGRlbGF5KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBoYW5kbGluZyBjaGFuZ2Ugb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleSk7XHJcblxyXG4gICAgLy8gQ2xlYW4gdXA6IG1vdmUgb3ZlcmxheSBiYWNrIChvcHRpb25hbClcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vcmlnaW5hbFBhcmVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMub3JpZ2luYWxQYXJlbnQsIHRoaXMub3ZlcmxheVJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XHJcbiAgICA8YnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiICpuZ0lmPVwic2hvd1N0YXJ0QnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInN0YXJ0VG91cigpXCI+XHJcbiAgICAgICAge3tzdGFydFRvdXJCdXR0b25MYWJlbH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGlkPVwidG91ci1jb250YWluZXJcIiBjbGFzcz1cInt7IGN1c3RvbVRoZW1lIH19XCIgKm5nSWY9XCJzaG93VG91clwiPlxyXG4gICAgICAgIDxkaXYgI292ZXJsYXlSZWYgY2xhc3M9XCJ0b3VyLW92ZXJsYXlcIiAqbmdJZj1cImN1cnJlbnRTdGVwSW5kZXggPCBkYXRhU291cmNlLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJ0b3VyLXBvcHVwXCIgW3N0eWxlLm1pbldpZHRoXT1cImNvbmZpZy5kZWZhdWx0UG9wdXBXaWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0XT1cImRhdGFTb3VyY2VbY3VycmVudFN0ZXBJbmRleF0uc2hhcGUgPT09ICdjaXJjbGUnID8gY29uZmlnLmRlZmF1bHRQb3B1cFdpZHRoIDogJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJkYXRhU291cmNlW2N1cnJlbnRTdGVwSW5kZXhdLndpZHRoIHx8IGNvbmZpZy5kZWZhdWx0UG9wdXBXaWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImRhdGFTb3VyY2VbY3VycmVudFN0ZXBJbmRleF0uc2hhcGUgPT09ICdjaXJjbGUnID8gZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS53aWR0aCB8fCBjb25maWcuZGVmYXVsdFBvcHVwV2lkdGggOiAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS5zaGFwZSB8fCAncm91bmRlZCdcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29uZmlnLnR5cGUgPT09ICdhZHZhbmNlJyA/IHBvcHVwU3R5bGUgOiBudWxsXCIgY2xhc3M9XCJ7e2NvbmZpZy50eXBlfX1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIHRvdXIgbW9kYWwgdGl0bGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwidG91ci1ndWlkZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLnRpdGxlRm9udFNpemVcIiAqbmdJZj1cImRhdGFTb3VyY2VbY3VycmVudFN0ZXBJbmRleF0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHRvdXIgY29udGVudCBkZXRhaWxzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3VyLWd1aWRlLWNvbnRlbnRcIiBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLmNvbnRlbnRGb250U2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YVNvdXJjZVtjdXJyZW50U3RlcEluZGV4XS5jb250ZW50XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gdG91ciBzdGVwIGNvdW50ZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvdXItZ3VpZGUtc3RlcC1jb3VudGVyXCIgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImNvbmZpZy5zdGVwQ291bnRBbGlnbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWcuc3RlcENvdW50U3RhcnRUZXh0fX0ge3sgY3VycmVudFN0ZXBJbmRleCArIDEgfX0ge3tjb25maWcuc3RlcENvdW50TWlkZGxlVGV4dH19IHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UubGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSB0b3VyIGFjdGlvbiBidXR0b25zIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJ0b3VyLWd1aWRlLWFjdGlvbi1idXR0b25zXCIgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImNvbmZpZy5idXR0b25zQWxpZ25tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLmJ1dHRvbnNGb250U2l6ZVwiICpuZ0lmPVwiY29uZmlnLnNob3dTa2lwQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNraXAoKVwiPnt7Y29uZmlnLnNraXBCdXR0b25UZXh0fX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbc3R5bGUuZm9udFNpemVdPVwiY29uZmlnLmJ1dHRvbnNGb250U2l6ZVwiIChjbGljayk9XCJwcmV2aW91c1N0ZXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50U3RlcEluZGV4ID09PSAwXCI+e3tjb25maWcucHJldkJ1dHRvblRleHR9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtzdHlsZS5mb250U2l6ZV09XCJjb25maWcuYnV0dG9uc0ZvbnRTaXplXCIgKGNsaWNrKT1cIm5leHRTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFN0ZXBJbmRleCA9PT0gZGF0YVNvdXJjZS5sZW5ndGggLSAxID8gY29uZmlnLmZpbmlzaEJ1dHRvblRleHQgOiBjb25maWcubmV4dEJ1dHRvblRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gaG9sZSBvbiBvdmVybGF5ZXIgZm9yIGhpZ2hsaWdodGVkIGNvbnRlbnQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob2xlXCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cImNvbmZpZy5oaWdobGlnaHRCb3JkZXJDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyV2lkdGhdPVwiY29uZmlnLmhpZ2hsaWdodEJvcmRlcldpZHRoXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|