@firestitch/html-editor 18.0.40 → 18.0.41
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/app/modules/html-editor/components/html-editor/html-editor.component.d.ts +3 -5
- package/app/modules/html-editor/directives/html-editor-container.directive.d.ts +1 -1
- package/app/modules/html-editor/fs-html-editor.module.d.ts +7 -8
- package/app/modules/html-editor/services/froala-loader.service.d.ts +2 -3
- package/app/modules/html-renderer/components/html-renderer/html-renderer.component.d.ts +2 -5
- package/esm2022/app/modules/html-editor/components/html-editor/html-editor.component.mjs +20 -25
- package/esm2022/app/modules/html-editor/directives/html-editor-container.directive.mjs +6 -3
- package/esm2022/app/modules/html-editor/fs-html-editor.module.mjs +8 -12
- package/esm2022/app/modules/html-editor/services/froala-loader.service.mjs +7 -17
- package/esm2022/app/modules/html-renderer/components/html-renderer/html-renderer.component.mjs +9 -18
- package/esm2022/public_api.mjs +1 -2
- package/fesm2022/firestitch-html-editor.mjs +133 -176
- package/fesm2022/firestitch-html-editor.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/styles.scss +4 -4
- package/app/modules/html-renderer/fs-html-renderer.module.d.ts +0 -8
- package/esm2022/app/modules/html-renderer/fs-html-renderer.module.mjs +0 -24
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { AfterViewInit,
|
|
1
|
+
import { AfterViewInit, ElementRef, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
|
|
3
3
|
import { MatDialogRef } from '@angular/material/dialog';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import { FsHtmlEditorConfig } from '../../interfaces/html-editor-config';
|
|
6
|
-
import { FsFroalaLoaderService } from '../../services/froala-loader.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export declare class FsHtmlEditorComponent implements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {
|
|
9
8
|
private _defaultConfig;
|
|
@@ -25,7 +24,6 @@ export declare class FsHtmlEditorComponent implements OnInit, AfterViewInit, Con
|
|
|
25
24
|
private _initialize$;
|
|
26
25
|
private _froalaReady$;
|
|
27
26
|
private _destroy$;
|
|
28
|
-
constructor(_defaultConfig: FsHtmlEditorConfig, _cdRef: ChangeDetectorRef, _fr: FsFroalaLoaderService);
|
|
29
27
|
get el(): any;
|
|
30
28
|
get html(): string;
|
|
31
29
|
get editor(): any;
|
|
@@ -62,6 +60,6 @@ export declare class FsHtmlEditorComponent implements OnInit, AfterViewInit, Con
|
|
|
62
60
|
private _listenLazyInit;
|
|
63
61
|
private _contentChanged;
|
|
64
62
|
private _setupFroala;
|
|
65
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FsHtmlEditorComponent,
|
|
66
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsHtmlEditorComponent, "fs-html-editor", never, { "config": { "alias": "config"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, ["htmlEditorContainer"], never,
|
|
63
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FsHtmlEditorComponent, never>;
|
|
64
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsHtmlEditorComponent, "fs-html-editor", never, { "config": { "alias": "config"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, ["htmlEditorContainer"], never, true, never>;
|
|
67
65
|
}
|
|
@@ -5,5 +5,5 @@ export declare class FsHtmlEditorContainerDirective {
|
|
|
5
5
|
template: TemplateRef<any>;
|
|
6
6
|
};
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsHtmlEditorContainerDirective, never>;
|
|
8
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FsHtmlEditorContainerDirective, "[fsHtmlEditorContainer]", never, {}, {}, never, never,
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FsHtmlEditorContainerDirective, "[fsHtmlEditorContainer]", never, {}, {}, never, never, true, never>;
|
|
9
9
|
}
|
|
@@ -3,19 +3,18 @@ import { ModuleWithProviders } from '@angular/core';
|
|
|
3
3
|
import { FroalaPlugin } from './enums/default-plugin.enum';
|
|
4
4
|
import { FsHtmlEditorConfig } from './interfaces/html-editor-config';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "@
|
|
9
|
-
import * as i4 from "
|
|
10
|
-
import * as i5 from "
|
|
11
|
-
import * as i6 from "../html-renderer/fs-html-renderer.module";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@firestitch/skeleton";
|
|
8
|
+
import * as i3 from "@firestitch/label";
|
|
9
|
+
import * as i4 from "./components/html-editor/html-editor.component";
|
|
10
|
+
import * as i5 from "./directives/html-editor-container.directive";
|
|
12
11
|
export declare class FsHtmlEditorModule {
|
|
13
12
|
static forRoot(config?: FsHtmlEditorConfig): ModuleWithProviders<FsHtmlEditorModule>;
|
|
14
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsHtmlEditorModule, never>;
|
|
15
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsHtmlEditorModule, [typeof i1.
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsHtmlEditorModule, never, [typeof i1.CommonModule, typeof i2.FsSkeletonModule, typeof i3.FsLabelModule, typeof i4.FsHtmlEditorComponent, typeof i5.FsHtmlEditorContainerDirective], [typeof i4.FsHtmlEditorComponent, typeof i5.FsHtmlEditorContainerDirective]>;
|
|
16
15
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsHtmlEditorModule>;
|
|
17
16
|
}
|
|
18
|
-
export declare function
|
|
17
|
+
export declare function htmlEditorConfigFactory(config: FsHtmlEditorConfig): {
|
|
19
18
|
image?: import("./interfaces/html-editor-config").FsHtmlEditorUploadConfig;
|
|
20
19
|
label?: string;
|
|
21
20
|
hint?: string;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import { FsHtmlEditorConfig } from '../interfaces/html-editor-config';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class FsFroalaLoaderService {
|
|
5
4
|
private _defaultConfig;
|
|
@@ -10,12 +9,12 @@ export declare class FsFroalaLoaderService {
|
|
|
10
9
|
private _froalaEditor;
|
|
11
10
|
get FroalaEditor(): any;
|
|
12
11
|
private _loaded$;
|
|
13
|
-
constructor(
|
|
12
|
+
constructor();
|
|
14
13
|
get loaded$(): Observable<boolean>;
|
|
15
14
|
private _load;
|
|
16
15
|
private _loadPlugins;
|
|
17
16
|
private _froalaDone;
|
|
18
17
|
private _froalaPluginsDone;
|
|
19
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FsFroalaLoaderService,
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FsFroalaLoaderService, never>;
|
|
20
19
|
static ɵprov: i0.ɵɵInjectableDeclaration<FsFroalaLoaderService>;
|
|
21
20
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
3
|
-
import { FsFroalaLoaderService } from '../../../html-editor/services/froala-loader.service';
|
|
1
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
export declare class FsHtmlRendererComponent {
|
|
6
4
|
private sanitized;
|
|
@@ -8,7 +6,6 @@ export declare class FsHtmlRendererComponent {
|
|
|
8
6
|
private _fr;
|
|
9
7
|
set setHtml(html: any);
|
|
10
8
|
trustedHtml: SafeHtml;
|
|
11
|
-
constructor(sanitized: DomSanitizer, _cdRef: ChangeDetectorRef, _fr: FsFroalaLoaderService);
|
|
12
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsHtmlRendererComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsHtmlRendererComponent, "fs-html-renderer", never, { "setHtml": { "alias": "html"; "required": false; }; }, {}, never, never,
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsHtmlRendererComponent, "fs-html-renderer", never, { "setHtml": { "alias": "html"; "required": false; }; }, {}, never, never, true, never>;
|
|
14
11
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, forwardRef, HostBinding, inject,
|
|
1
|
+
import { DOCUMENT, NgTemplateOutlet, AsyncPipe } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, forwardRef, HostBinding, inject, Input, Optional, TemplateRef, ViewChild } from '@angular/core';
|
|
3
3
|
import { ControlContainer, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgForm, } from '@angular/forms';
|
|
4
4
|
import { MatDialogRef } from '@angular/material/dialog';
|
|
5
5
|
import { guid } from '@firestitch/common';
|
|
@@ -12,15 +12,15 @@ import { FsHtmlEditorContainerDirective } from '../../directives';
|
|
|
12
12
|
import { FS_HTML_EDITOR_CONFIG } from '../../injects/config.inject';
|
|
13
13
|
import { FsFroalaLoaderService } from '../../services/froala-loader.service';
|
|
14
14
|
import { TextButtons } from './../../consts/text-buttons.const';
|
|
15
|
+
import { FsLabelModule } from '@firestitch/label';
|
|
16
|
+
import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
15
17
|
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "
|
|
17
|
-
import * as i2 from "@
|
|
18
|
-
import * as i3 from "@firestitch/skeleton";
|
|
19
|
-
import * as i4 from "@firestitch/label";
|
|
18
|
+
import * as i1 from "@firestitch/label";
|
|
19
|
+
import * as i2 from "@firestitch/skeleton";
|
|
20
20
|
export class FsHtmlEditorComponent {
|
|
21
|
-
_defaultConfig;
|
|
22
|
-
_cdRef;
|
|
23
|
-
_fr;
|
|
21
|
+
_defaultConfig = inject(FS_HTML_EDITOR_CONFIG, { optional: true });
|
|
22
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
23
|
+
_fr = inject(FsFroalaLoaderService);
|
|
24
24
|
htmlEditorContainer;
|
|
25
25
|
classFocused = false;
|
|
26
26
|
elRef;
|
|
@@ -37,11 +37,6 @@ export class FsHtmlEditorComponent {
|
|
|
37
37
|
_initialize$ = new ReplaySubject();
|
|
38
38
|
_froalaReady$ = new BehaviorSubject(null);
|
|
39
39
|
_destroy$ = new Subject();
|
|
40
|
-
constructor(_defaultConfig, _cdRef, _fr) {
|
|
41
|
-
this._defaultConfig = _defaultConfig;
|
|
42
|
-
this._cdRef = _cdRef;
|
|
43
|
-
this._fr = _fr;
|
|
44
|
-
}
|
|
45
40
|
get el() {
|
|
46
41
|
return this.elRef.nativeElement;
|
|
47
42
|
}
|
|
@@ -467,8 +462,8 @@ export class FsHtmlEditorComponent {
|
|
|
467
462
|
this.focus();
|
|
468
463
|
}
|
|
469
464
|
}
|
|
470
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorComponent, deps: [
|
|
471
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHtmlEditorComponent, selector: "fs-html-editor", inputs: { config: "config", disabled: "disabled" }, host: { properties: { "class.focused": "this.classFocused", "class.disabled": "this.disabled", "class.initialized": "this.initialized" } }, providers: [
|
|
465
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
466
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHtmlEditorComponent, isStandalone: true, selector: "fs-html-editor", inputs: { config: "config", disabled: "disabled" }, host: { properties: { "class.focused": "this.classFocused", "class.disabled": "this.disabled", "class.initialized": "this.initialized" } }, providers: [
|
|
472
467
|
{
|
|
473
468
|
provide: NG_VALUE_ACCESSOR,
|
|
474
469
|
useExisting: forwardRef(() => FsHtmlEditorComponent),
|
|
@@ -479,7 +474,7 @@ export class FsHtmlEditorComponent {
|
|
|
479
474
|
useExisting: forwardRef(() => FsHtmlEditorComponent),
|
|
480
475
|
multi: true,
|
|
481
476
|
},
|
|
482
|
-
], queries: [{ propertyName: "htmlEditorContainer", first: true, predicate: FsHtmlEditorContainerDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "elRef", first: true, predicate: ["elRef"], descendants: true }], ngImport: i0, template: "<fs-label-field\n
|
|
477
|
+
], queries: [{ propertyName: "htmlEditorContainer", first: true, predicate: FsHtmlEditorContainerDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "elRef", first: true, predicate: ["elRef"], descendants: true }], ngImport: i0, template: "<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.init-on-click]=\"config.initOnClick\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n @if (htmlEditorContainer) {\n <ng-container\n [ngTemplateOutlet]=\"htmlEditorContainer\"\n [ngTemplateOutletContext]=\"{ template: htmlEditorContainerTmpl }\">\n </ng-container>\n } @else {\n <div\n class=\"html-editor-container fs-html-editor-default\"\n [id]=\"containerID\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\"></ng-container>\n <div #elRef></div>\n </div>\n }\n <ng-template #htmlEditorContainerTmpl>\n <div\n class=\"html-editor-container fs-html-editor-default\"\n [id]=\"containerID\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\"></ng-container>\n <div #elRef></div>\n </div>\n </ng-template>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>", styles: ["@charset \"UTF-8\";:host{position:relative;display:block}:host:not(.initialized) ::ng-deep .fr-toolbar{display:none}:host ::ng-deep fs-label-field:not(.initialized).init-on-click{cursor:pointer}:host ::ng-deep fs-label-field:not(.initialized) .fr-view>*:first-child{margin-top:0}:host ::ng-deep fs-label-field:not(.initialized).appearance-outline .outline-overlay{display:none}:host ::ng-deep fs-label-field.initialized.appearance-outline .field-wrap{padding-top:6px;padding-bottom:4px}:host ::ng-deep .fr-wrapper{border:none!important}:host ::ng-deep .fr-wrapper.show-placeholder .fr-placeholder{font-family:inherit}:host ::ng-deep .fr-toolbar.fr-top{margin-top:2px}:host ::ng-deep .fr-box.fr-basic .fr-wrapper{border:0;border-bottom:1px solid #949494;margin-bottom:1px;background-color:transparent}:host ::ng-deep .fr-box.fr-basic .fr-element{padding:0;font-family:inherit;color:inherit;font-size:inherit;line-height:inherit;min-height:auto}:host ::ng-deep .fr-more-toolbar,:host ::ng-deep .fr-toolbar,:host ::ng-deep .fr-dropdown:after,:host ::ng-deep .fr-dropdown-menu .fr-dropdown-wrapper{transition:none!important}:host ::ng-deep .fr-toolbar-open .fr-more-toolbar{display:block}:host ::ng-deep .fr-more-toolbar{flex-wrap:wrap!important;height:auto!important}:host ::ng-deep .fr-more-toolbar:not(.fr-expanded){display:none!important}:host ::ng-deep .fr-toolbar.fr-top{z-index:999;position:sticky;border-radius:0;background-color:#fff}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp{margin:0 20px 0 0}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(1):after,:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(2):after{content:\"\";position:absolute;top:9px;height:30px;border-left:1px solid #e5e5e5;margin-left:10px}:host ::ng-deep .fr-toolbar.fr-top div:first-of-type:before{border:none}:host ::ng-deep .fr-toolbar.fr-top.fr-toolbar-open .fr-newline{height:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:first-child{margin-left:0}:host ::ng-deep .fr-toolbar.fr-top.fr-top{border:0}:host ::ng-deep .fr-toolbar.fr-top .fr-newline{display:none}:host ::ng-deep .fr-toolbar.fr-top .fr-more-toolbar{z-index:auto;display:flex;justify-content:center;padding-left:0!important}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn{z-index:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown:after{right:3px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown.fr-selection span{margin-right:24px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-open{border-radius:4px;margin:4px 2px}:host ::ng-deep .fr-view{word-break:break-word}:host ::ng-deep .fr-view .fr-element img{box-sizing:border-box}:host ::ng-deep .fr-view li{display:block}:host ::ng-deep .fr-view li:before{margin-right:5px;margin-left:-40px;width:40px;display:inline-block;text-align:right}:host ::ng-deep .fr-view ol{counter-reset:listNumbering}:host ::ng-deep .fr-view ol>li{counter-increment:listNumbering;list-style:none}:host ::ng-deep .fr-view ol>li:before{content:counter(listNumbering,decimal) \".\"}:host ::ng-deep .fr-view ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ol ol ol>li:before{content:counter(listNumbering,decimal) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol ol>li:before{content:counter(listNumbering,decimal) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ul>li{list-style:none}:host ::ng-deep .fr-view ul>li:before{content:\"\\2022\"}:host.disabled ::ng-deep .fr-box.fr-basic{opacity:.5;pointer-events:none}:host.disabled ::ng-deep .fr-box.fr-basic .fr-wrapper{border:none}::ng-deep .fr-popup{z-index:1001!important}::ng-deep .fr-popup .fr-layer{margin:0 15px!important}::ng-deep .fr-popup .fr-layer.fr-image-upload-layer{margin:12px!important}::ng-deep .fr-popup .fr-input-line{padding-bottom:0!important}::ng-deep .fr-popup .fr-input-line input{border-radius:4px!important}::ng-deep .fr-video-by-url-layer .fr-checkbox-line{display:none}::ng-deep .fs-html-editor-mention-container{position:absolute;top:0;left:0;height:auto;max-height:300px;max-width:500px;overflow:auto;display:block;z-index:999999;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;border-bottom-left-radius:4px;border-bottom-right-radius:4px;background:#fff}::ng-deep .fs-html-editor-mention-container ul{margin:0;padding:0;list-style:none}::ng-deep .fs-html-editor-mention-container li{padding:0 16px;cursor:pointer;line-height:48px}::ng-deep .fs-html-editor-mention-container li.highlight,::ng-deep .fs-html-editor-mention-container li:hover{background:#f5f5f5}::ng-deep .fs-html-editor-mention-container li.no-match{cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i1.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "component", type: i1.FsLabelMessageComponent, selector: "fs-label-message" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i2.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [
|
|
483
478
|
{
|
|
484
479
|
provide: ControlContainer,
|
|
485
480
|
deps: [[Optional, NgForm]],
|
|
@@ -506,13 +501,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
506
501
|
deps: [[Optional, NgForm]],
|
|
507
502
|
useFactory: (ngForm) => ngForm,
|
|
508
503
|
},
|
|
509
|
-
],
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
504
|
+
], standalone: true, imports: [
|
|
505
|
+
FsLabelModule,
|
|
506
|
+
NgTemplateOutlet,
|
|
507
|
+
FsSkeletonModule,
|
|
508
|
+
AsyncPipe,
|
|
509
|
+
], template: "<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.init-on-click]=\"config.initOnClick\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n @if (htmlEditorContainer) {\n <ng-container\n [ngTemplateOutlet]=\"htmlEditorContainer\"\n [ngTemplateOutletContext]=\"{ template: htmlEditorContainerTmpl }\">\n </ng-container>\n } @else {\n <div\n class=\"html-editor-container fs-html-editor-default\"\n [id]=\"containerID\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\"></ng-container>\n <div #elRef></div>\n </div>\n }\n <ng-template #htmlEditorContainerTmpl>\n <div\n class=\"html-editor-container fs-html-editor-default\"\n [id]=\"containerID\">\n <ng-container *fsSkeleton=\"(froalaLoaded$ | async) !== false\"></ng-container>\n <div #elRef></div>\n </div>\n </ng-template>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>", styles: ["@charset \"UTF-8\";:host{position:relative;display:block}:host:not(.initialized) ::ng-deep .fr-toolbar{display:none}:host ::ng-deep fs-label-field:not(.initialized).init-on-click{cursor:pointer}:host ::ng-deep fs-label-field:not(.initialized) .fr-view>*:first-child{margin-top:0}:host ::ng-deep fs-label-field:not(.initialized).appearance-outline .outline-overlay{display:none}:host ::ng-deep fs-label-field.initialized.appearance-outline .field-wrap{padding-top:6px;padding-bottom:4px}:host ::ng-deep .fr-wrapper{border:none!important}:host ::ng-deep .fr-wrapper.show-placeholder .fr-placeholder{font-family:inherit}:host ::ng-deep .fr-toolbar.fr-top{margin-top:2px}:host ::ng-deep .fr-box.fr-basic .fr-wrapper{border:0;border-bottom:1px solid #949494;margin-bottom:1px;background-color:transparent}:host ::ng-deep .fr-box.fr-basic .fr-element{padding:0;font-family:inherit;color:inherit;font-size:inherit;line-height:inherit;min-height:auto}:host ::ng-deep .fr-more-toolbar,:host ::ng-deep .fr-toolbar,:host ::ng-deep .fr-dropdown:after,:host ::ng-deep .fr-dropdown-menu .fr-dropdown-wrapper{transition:none!important}:host ::ng-deep .fr-toolbar-open .fr-more-toolbar{display:block}:host ::ng-deep .fr-more-toolbar{flex-wrap:wrap!important;height:auto!important}:host ::ng-deep .fr-more-toolbar:not(.fr-expanded){display:none!important}:host ::ng-deep .fr-toolbar.fr-top{z-index:999;position:sticky;border-radius:0;background-color:#fff}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp{margin:0 20px 0 0}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(1):after,:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:nth-child(2):after{content:\"\";position:absolute;top:9px;height:30px;border-left:1px solid #e5e5e5;margin-left:10px}:host ::ng-deep .fr-toolbar.fr-top div:first-of-type:before{border:none}:host ::ng-deep .fr-toolbar.fr-top.fr-toolbar-open .fr-newline{height:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-btn-grp:first-child{margin-left:0}:host ::ng-deep .fr-toolbar.fr-top.fr-top{border:0}:host ::ng-deep .fr-toolbar.fr-top .fr-newline{display:none}:host ::ng-deep .fr-toolbar.fr-top .fr-more-toolbar{z-index:auto;display:flex;justify-content:center;padding-left:0!important}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn{z-index:auto}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown:after{right:3px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-dropdown.fr-selection span{margin-right:24px}:host ::ng-deep .fr-toolbar.fr-top .fr-command.fr-btn.fr-open{border-radius:4px;margin:4px 2px}:host ::ng-deep .fr-view{word-break:break-word}:host ::ng-deep .fr-view .fr-element img{box-sizing:border-box}:host ::ng-deep .fr-view li{display:block}:host ::ng-deep .fr-view li:before{margin-right:5px;margin-left:-40px;width:40px;display:inline-block;text-align:right}:host ::ng-deep .fr-view ol{counter-reset:listNumbering}:host ::ng-deep .fr-view ol>li{counter-increment:listNumbering;list-style:none}:host ::ng-deep .fr-view ol>li:before{content:counter(listNumbering,decimal) \".\"}:host ::ng-deep .fr-view ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ol ol ol>li:before{content:counter(listNumbering,decimal) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol ol>li:before{content:counter(listNumbering,decimal) \".\"!important}:host ::ng-deep .fr-view ol ol ol ol ol ol>li:before{content:counter(listNumbering,lower-alpha) \".\"!important}:host ::ng-deep .fr-view ul>li{list-style:none}:host ::ng-deep .fr-view ul>li:before{content:\"\\2022\"}:host.disabled ::ng-deep .fr-box.fr-basic{opacity:.5;pointer-events:none}:host.disabled ::ng-deep .fr-box.fr-basic .fr-wrapper{border:none}::ng-deep .fr-popup{z-index:1001!important}::ng-deep .fr-popup .fr-layer{margin:0 15px!important}::ng-deep .fr-popup .fr-layer.fr-image-upload-layer{margin:12px!important}::ng-deep .fr-popup .fr-input-line{padding-bottom:0!important}::ng-deep .fr-popup .fr-input-line input{border-radius:4px!important}::ng-deep .fr-video-by-url-layer .fr-checkbox-line{display:none}::ng-deep .fs-html-editor-mention-container{position:absolute;top:0;left:0;height:auto;max-height:300px;max-width:500px;overflow:auto;display:block;z-index:999999;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;border-bottom-left-radius:4px;border-bottom-right-radius:4px;background:#fff}::ng-deep .fs-html-editor-mention-container ul{margin:0;padding:0;list-style:none}::ng-deep .fs-html-editor-mention-container li{padding:0 16px;cursor:pointer;line-height:48px}::ng-deep .fs-html-editor-mention-container li.highlight,::ng-deep .fs-html-editor-mention-container li:hover{background:#f5f5f5}::ng-deep .fs-html-editor-mention-container li.no-match{cursor:default}\n"] }]
|
|
510
|
+
}], propDecorators: { htmlEditorContainer: [{
|
|
516
511
|
type: ContentChild,
|
|
517
512
|
args: [FsHtmlEditorContainerDirective, { read: TemplateRef }]
|
|
518
513
|
}], classFocused: [{
|
|
@@ -532,4 +527,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
532
527
|
type: HostBinding,
|
|
533
528
|
args: ['class.initialized']
|
|
534
529
|
}] } });
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLE1BQU0sR0FHUCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFHOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQzlFLE1B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QUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEM7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7NEJBQzFCLFVBQVUsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTTt5QkFDdkM7cUJBQ0Y7OzBCQXNDRSxRQUFROzswQkFDUixNQUFNOzJCQUFDLHFCQUFxQjs2R0FqQ3hCLG1CQUFtQjtzQkFEekIsWUFBWTt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlCLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsZUFBZTtnQkFFRCxLQUFLO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBRUYsTUFBTTtzQkFBckIsS0FBSztnQkFJQyxRQUFRO3NCQUZkLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUl0QixXQUFXO3NCQURqQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nRm9ybSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgRmlsZVByb2Nlc3NvciwgRnNGaWxlLCBGc0ZpbGVQcm9jZXNzQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsZSc7XG5cblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnRQYXR0ZXJuLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGcm9hbGFPcHRpb25zIH0gZnJvbSAnZnJvYWxhLWVkaXRvcic7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IFBhcmFncmFwaEJ1dHRvbnMsIFJpY2hCdXR0b25zLCBUb29sYmFyQnV0dG9ucywgVG9vbGJhclhzQnV0dG9ucyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRyB9IGZyb20gJy4uLy4uL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBGc0Zyb2FsYUxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mcm9hbGEtbG9hZGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLy4uLy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IFRleHRCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvdGV4dC1idXR0b25zLmNvbnN0JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1odG1sLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0bWwtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzSHRtbEVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXG4gICAgICBkZXBzOiBbW09wdGlvbmFsLCBOZ0Zvcm1dXSxcbiAgICAgIHVzZUZhY3Rvcnk6IChuZ0Zvcm06IE5nRm9ybSkgPT4gbmdGb3JtLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvckNvbXBvbmVudFxuaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uRGVzdHJveSB7XG5cbiAgQENvbnRlbnRDaGlsZChGc0h0bWxFZGl0b3JDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGh0bWxFZGl0b3JDb250YWluZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJykgcHVibGljIGNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2VsUmVmJykgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluaXRpYWxpemVkJylcbiAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lcklEID0gYGZzLWh0bWwtZWRpdG9yLSR7Z3VpZCgneHh4Jyl9YDtcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcbiAgcHVibGljIG9uQ2hhbmdlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+ID0gaW5qZWN0KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnRSZWY6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICBwcml2YXRlIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplJCA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Zyb2FsYVJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIG9wdGlvbnM6IGFueVxuICB9PihudWxsKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChGU19IVE1MX0VESVRPUl9DT05GSUcpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mcjogRnNGcm9hbGFMb2FkZXJTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBodG1sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2h0bWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZyb2FsYUxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZyLmxvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpYWxvZ1JlZigpOiBNYXREaWFsb2dSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9kaWFsb2dSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyB8fCB7fTtcbiAgICB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgPSB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgJiYgKCF0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCAhdGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9ICF0aGlzLmNvbmZpZy5pbml0T25DbGljaztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fbGlzdGVuTGF6eUluaXQoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGhhc0NvbnRlbnQoKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChlbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZWwuaW5uZXJIVE1MID0gdGhpcy5faHRtbDtcblxuICAgIHJldHVybiAhIWVsLmlubmVyVGV4dC5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgdW5pbml0aWFsaXplKCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY3JlYXRlQ29uZmlnKCk7XG4gICAgdGhpcy5faW5pdFBsdWdpbnMoY29uZmlnKTtcbiAgICB0aGlzLl9pbml0QnV0dG9ucyhjb25maWcpO1xuXG4gICAgY29uc3QgZnJvYWxhT3B0aW9ucyA9IHRoaXMuX2NyZWF0ZU9wdGlvbnMoKTtcblxuICAgIHRoaXMuX2VkaXRvciA9IG5ldyB0aGlzLl9mci5Gcm9hbGFFZGl0b3IodGhpcy5lbCwgZnJvYWxhT3B0aW9ucywgKCkgPT4ge1xuICAgICAgdGhpcy5fZnJvYWxhUmVhZHkkLm5leHQoeyBjb25maWcsIG9wdGlvbnMgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2l6ZSgpIHtcbiAgICAvLyBIYWNrOiBUbyB0cmlnZ2VyIHRoZSB0b29sYmFyIGJ1dHRvbiBzaXplIG1vZGVzXG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGVycjogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY29uZmlnLm1heExlbmd0aCAmJiB0aGlzLl9odG1sKSB7XG4gICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmNvbmZpZy5tYXhMZW5ndGg7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLl9odG1sLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgZXJyLm1heExlbmd0aEVycm9yID0gYE11c3QgYmUgJHttYXhMZW5ndGh9IGNoYXJhY3RlcnMgb3IgZmV3ZXIuIFlvdSBlbnRlcmVkICR7bGVuZ3RofSBjaGFyYWN0ZXJzLmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycikubGVuZ3RoID8gZXJyIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogeyBjdXJzb3JQb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJyB9KSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5jdXJzb3JQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZXRBdEVuZCh0aGlzLmVkaXRvci4kZWwuZ2V0KDApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnNldEF0U3RhcnQodGhpcy5lZGl0b3IuJGVsLmdldCgwKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnJlc3RvcmUoKTtcblxuICAgIGNvbnN0IGVsU2VsZWN0aW9uID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmVsZW1lbnQoKTtcbiAgICBpZiAoZWxTZWxlY3Rpb24pIHtcbiAgICAgIGVsU2VsZWN0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoJycpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SHRtbChodG1sKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKGh0bWwpO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUoaHRtbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faHRtbCA9IGh0bWwgfHwgJyc7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9odG1sKSkge1xuICAgICAgdGhpcy5faHRtbCA9IHRoaXMuX2h0bWwucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5faHRtbCA9IHRoaXMuX2h0bWxcbiAgICAgIC5yZXBsYWNlKC88KGxpKT5cXHM/PChkaXYpPi9nLCAnPGxpPicpXG4gICAgICAucmVwbGFjZSgvPFxcLyhkaXYpPjxcXC8obGkpPi9nLCAnPC9saT4nKTtcblxuICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5odG1sKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmVkaXRvci5odG1sLnNldCh0aGlzLl9odG1sKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvL1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChkYXRhOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2luaXRpYWxpemUkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2IpIHtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgRmlsZVByb2Nlc3NvcigpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRnNGaWxlKGJsb2IpO1xuXG4gICAgY29uc3QgY29uZmlnOiBGc0ZpbGVQcm9jZXNzQ29uZmlnID0ge1xuICAgICAgb3JpZW50YXRlOiB0cnVlLFxuICAgICAgcXVhbGl0eTogdGhpcy5jb25maWcuaW1hZ2UucXVhbGl0eSxcbiAgICAgIGZvcm1hdDogdGhpcy5jb25maWcuaW1hZ2UuZm9ybWF0IGFzIGFueSxcbiAgICAgIG1heFdpZHRoOiB0aGlzLmNvbmZpZy5pbWFnZS53aWR0aCxcbiAgICAgIG1heEhlaWdodDogdGhpcy5jb25maWcuaW1hZ2UuaGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IHRoaXMuY29uZmlnLmltYWdlLm1pbldpZHRoLFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLmNvbmZpZy5pbWFnZS5taW5IZWlnaHQsXG4gICAgfTtcblxuICAgIHJldHVybiBwcm9jZXNzb3IucHJvY2Vzc0ZpbGUoZmlsZSwgY29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZnNGaWxlOiBGc0ZpbGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuaW1hZ2UudXBsb2FkKGZzRmlsZS5maWxlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ29uZmlnKCk6IEZzSHRtbEVkaXRvckNvbmZpZyB7XG4gICAgcmV0dXJuIG1lcmdlKHsgZnJvYWxhQ29uZmlnOiB7fSB9LCB0aGlzLl9kZWZhdWx0Q29uZmlnLCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGFuZ2UoaHRtbCk6IHZvaWQge1xuICAgIHRoaXMuX2h0bWwgPSBodG1sO1xuICAgIHRoaXMub25DaGFuZ2UoaHRtbCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QnV0dG9ucyhjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZykge1xuICAgIChjb25maWcuYnV0dG9ucyB8fCBbXSlcbiAgICAgIC5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICBTdmcgS2V5czpcbiAgICAgICAgICBbXCJhZGRcIiwgXCJhZHZhbmNlZEltYWdlRWRpdG9yXCIsIFwiYWxpZ25DZW50ZXJcIiwgXCJhbGlnbkp1c3RpZnlcIiwgXCJhbGlnbkxlZnRcIiwgXCJhbGlnblJpZ2h0XCIsXG4gICAgICAgICAgXCJhbmNob3JzXCIsIFwiYmFja1wiLCBcImJhY2tncm91bmRDb2xvclwiLCBcImJsb2NrcXVvdGVcIiwgXCJib2xkXCIsIFwiY2VsbEJhY2tncm91bmRcIixcbiAgICAgICAgICBcImNlbGxCb3JkZXJDb2xvclwiLCBcImNlbGxPcHRpb25zXCIsIFwiY2VsbFN0eWxlXCIsIFwiY2xlYXJGb3JtYXR0aW5nXCIsIFwiY2xvc2VcIiwgXCJjb2RlVmlld1wiLFxuICAgICAgICAgIFwiY29nc1wiLCBcImNvbHVtbnNcIiwgXCJlZGl0TGlua1wiLCBcImV4aXRGdWxsc2NyZWVuXCIsIFwiZm9udEF3ZXNvbWVcIiwgXCJmb250RmFtaWx5XCIsXG4gICAgICAgICAgXCJmb250U2l6ZVwiLCBcImZ1bGxzY3JlZW5cIiwgXCJoZWxwXCIsIFwiaG9yaXpvbnRhbExpbmVcIiwgXCJpbWFnZUFsdFRleHRcIiwgXCJpbWFnZUNhcHRpb25cIixcbiAgICAgICAgICBcImltYWdlQ2xhc3NcIiwgXCJpbWFnZURpc3BsYXlcIiwgXCJpbWFnZU1hbmFnZXJcIiwgXCJpbWFnZVNpemVcIiwgXCJpbmRlbnRcIiwgXCJpbmxpbmVDbGFzc1wiLFxuICAgICAgICAgIFwiaW5saW5lU3R5bGVcIiwgXCJpbnNlcnRFbWJlZFwiLCBcImluc2VydEZpbGVcIiwgXCJpbnNlcnRJbWFnZVwiLCBcImluc2VydExpbmtcIiwgXCJpbnNlcnRNb3JlXCIsXG4gICAgICAgICAgXCJpbnNlcnRUYWJsZVwiLCBcImluc2VydFZpZGVvXCIsIFwidXBsb2FkXCIsIFwiaXRhbGljXCIsIFwic2VhcmNoXCIsIFwibGluZUhlaWdodFwiLCBcImxpbmtTdHlsZXNcIixcbiAgICAgICAgICBcIm1lbnRpb25cIiwgXCJtb3JlXCIsIFwib3BlbkxpbmtcIiwgXCJvcmRlcmVkTGlzdFwiLCBcIm91dGRlbnRcIiwgXCJwYWdlQnJlYWtlclwiLFxuICAgICAgICAgIFwicGFyYWdyYXBoRm9ybWF0XCIsIFwicGFyYWdyYXBoTW9yZVwiLCBcInBhcmFncmFwaFN0eWxlXCIsIFwicGRmRXhwb3J0XCIsIFwicHJpbnRcIixcbiAgICAgICAgICBcInJlZG9cIiwgXCJyZW1vdmVUYWJsZVwiLCBcInJlbW92ZVwiLCBcInJlcGxhY2VJbWFnZVwiLCBcInJvd1wiLCBcInNlbGVjdEFsbFwiLCBcInNtaWxlXCIsXG4gICAgICAgICAgXCJzcGVsbGNoZWNrXCIsIFwic3RhclwiLCBcInN0cmlrZVRocm91Z2hcIiwgXCJzdWJzY3JpcHRcIiwgXCJzdXBlcnNjcmlwdFwiLCBcInN5bWJvbHNcIiwgXCJ0YWdzXCIsXG4gICAgICAgICAgXCJ0YWJsZUhlYWRlclwiLCBcInRhYmxlU3R5bGVcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJ0ZXh0TW9yZVwiLCBcInVuZGVybGluZVwiLCBcInVuZG9cIiwgXCJ1bmxpbmtcIixcbiAgICAgICAgICBcInVub3JkZXJlZExpc3RcIiwgXCJ2ZXJ0aWNhbEFsaWduQm90dG9tXCIsIFwidmVydGljYWxBbGlnbk1pZGRsZVwiLCBcInZlcnRpY2FsQWxpZ25Ub3BcIl1cbiAgICAgICAgKi9cblxuICAgICAgICBpZiAoYnV0dG9uLnN2Z0tleSkge1xuICAgICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5EZWZpbmVJY29uKGJ1dHRvbi5uYW1lLCB7IFNWR19LRVk6IGJ1dHRvbi5zdmdLZXkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKGJ1dHRvbi5uYW1lLCB7XG4gICAgICAgICAgdGl0bGU6IGJ1dHRvbi50aXRsZSxcbiAgICAgICAgICBmb2N1czogYnV0dG9uLmZvY3VzID8/IHRydWUsXG4gICAgICAgICAgdW5kbzogYnV0dG9uLnVuZG8gPz8gdHJ1ZSxcbiAgICAgICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrID8/IHRydWUsXG4gICAgICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRUb29sYmFyQnV0dG9ucyhidXR0b25zKSB7XG4gICAgKGJ1dHRvbnMgfHwgW10pXG4gICAgICAuZmlsdGVyKChidXR0b24pID0+IHR5cGVvZiBidXR0b24gIT09ICdzdHJpbmcnKVxuICAgICAgLmZvckVhY2goKGJ1dHRvbjogVG9vbGJhckJ1dHRvbikgPT4ge1xuICAgICAgICB0aGlzLl9kZWZpbmVCdXR0b24oYnV0dG9uKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBsdWdpbnMoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgICB0aGlzLl9pbml0VG9vbGJhckJ1dHRvbnMoY29uZmlnLnRvb2xiYXI/LnRleHQ/LnByZXBlbmQpO1xuICAgIHRoaXMuX2luaXRUb29sYmFyQnV0dG9ucyhjb25maWcudG9vbGJhcj8ucGFyYWdyYXBoPy5wcmVwZW5kKTtcbiAgICB0aGlzLl9pbml0VG9vbGJhckJ1dHRvbnMoY29uZmlnLnRvb2xiYXI/LnJpY2g/LnByZXBlbmQpO1xuXG4gICAgKGNvbmZpZy5wbHVnaW5zIHx8IFtdKVxuICAgICAgLmZvckVhY2goKHBsdWdpbjogUGx1Z2luKSA9PiB7XG4gICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5QTFVHSU5TW3BsdWdpbi5jb25maWcubmFtZV0gPSBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgcGx1Z2luLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICBwbHVnaW4uaW5pdGlhbGl6ZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgICAgfTtcblxuICAgICAgICAocGx1Z2luLmNvbmZpZy5idXR0b25zIHx8IFtdKVxuICAgICAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RlZmluZUJ1dHRvbihidXR0b24pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbmVCdXR0b24oYnV0dG9uOiBUb29sYmFyQnV0dG9uKSB7XG4gICAgaWYoYnV0dG9uLmh0bWwpIHtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvblRlbXBsYXRlKGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIGJ1dHRvbi5odG1sKTtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvbihidXR0b24ubmFtZSwge1xuICAgICAgICAgIE5BTUU6IGAke2J1dHRvbi5uYW1lfS1pY29uYCxcbiAgICAgICAgICB0ZW1wbGF0ZTogYCR7YnV0dG9uLm5hbWV9LXRlbXBsYXRlYCxcbiAgICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLkRlZmluZUljb24oYnV0dG9uLm5hbWUsIHtcbiAgICAgICAgTkFNRTogYnV0dG9uLm5hbWUsXG4gICAgICAgIFBBVEg6IGJ1dHRvbi5zdmdQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgaWNvbjogYnV0dG9uLm5hbWUsXG4gICAgICB0aXRsZTogYnV0dG9uLnRvb2x0aXAsXG4gICAgICB1bmRvOiBidXR0b24udW5kbyxcbiAgICAgIGZvY3VzOiBidXR0b24uZm9jdXMsXG4gICAgICBzaG93T25Nb2JpbGU6IGJ1dHRvbi5zaG93T25Nb2JpbGUsXG4gICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrLFxuICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgIGlmIChidXR0b24uY2xpY2spIHtcbiAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZWZyZXNoKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5yZWZyZXNoKSB7XG4gICAgICAgICAgZXZlbnQucmVmcmVzaCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2J1dHRvbnNUb05hbWVzKGJ1dHRvbnMpIHtcbiAgICByZXR1cm4gKGJ1dHRvbnMgfHwgW10pXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbS5uYW1lO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVPcHRpb25zKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2NyZWF0ZUNvbmZpZygpO1xuXG4gICAgY29uc3QgbW9yZVRleHQgPSBbXG4gICAgICAuLi50aGlzLl9idXR0b25zVG9OYW1lcyhjb25maWcudG9vbGJhcj8udGV4dD8ucHJlcGVuZCksXG4gICAgICAuLi5UZXh0QnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9yZVBhcmFncmFwaCA9IFtcbiAgICAgIC4uLnRoaXMuX2J1dHRvbnNUb05hbWVzKGNvbmZpZy50b29sYmFyPy5wYXJhZ3JhcGg/LnByZXBlbmQpLFxuICAgICAgLi4uUGFyYWdyYXBoQnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9yZVJpY2ggPSBbXG4gICAgICAuLi50aGlzLl9idXR0b25zVG9OYW1lcyhjb25maWcudG9vbGJhcj8ucmljaD8ucHJlcGVuZCksXG4gICAgICAuLi5SaWNoQnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgdG9vbGJhckJ1dHRvbnMgPSBtZXJnZShcbiAgICAgIHt9LFxuICAgICAgVG9vbGJhckJ1dHRvbnMsXG4gICAgICB7XG4gICAgICAgIG1vcmVUZXh0OiB7IGJ1dHRvbnM6IG1vcmVUZXh0IH0sXG4gICAgICAgIG1vcmVQYXJhZ3JhcGg6IHsgYnV0dG9uczogbW9yZVBhcmFncmFwaCB9LFxuICAgICAgICBtb3JlUmljaDogeyBidXR0b25zOiBtb3JlUmljaCB9LFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBmcm9hbGFPcHRpb25zOiBQYXJ0aWFsPEZyb2FsYU9wdGlvbnM+ID0ge1xuICAgICAgc2hvcnRjdXRzRW5hYmxlZDogWydzaG93JywgJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdpbmRlbnQnLCAnb3V0ZGVudCcsICd1bmRvJywgJ3JlZG8nLCAnaW5zZXJ0SW1hZ2UnLCAnY3JlYXRlTGluayddLFxuICAgICAga2V5OiBjb25maWcuYWN0aXZhdGlvbktleSxcbiAgICAgIHBsYWNlaG9sZGVyVGV4dDogY29uZmlnLnBsYWNlaG9sZGVyLFxuICAgICAgbGlua0Fsd2F5c0JsYW5rOiB0cnVlLFxuICAgICAgbGlua0luc2VydEJ1dHRvbnM6IFtdLFxuICAgICAgbGlua0VkaXRCdXR0b25zOiBbJ2xpbmtPcGVuJywgJ2xpbmtFZGl0JywgJ2xpbmtSZW1vdmUnXSwgIFxuICAgICAgbGlua011bHRpcGxlU3R5bGVzOiBmYWxzZSxcbiAgICAgIGhlaWdodE1pbjogdGhpcy5fZGlhbG9nUmVmID8gMjAwIDogMCxcbiAgICAgIHRhYlNwYWNlczogMixcbiAgICAgIHRvb2xiYXJTdGlja3k6IGZhbHNlLFxuICAgICAgbGlzdEFkdmFuY2VkVHlwZXM6IGZhbHNlLFxuICAgICAgdHlwaW5nVGltZXI6IDI1MCxcbiAgICAgIHRvb2x0aXBzOiBmYWxzZSxcbiAgICAgIHdvcmRQYXN0ZU1vZGFsOiBmYWxzZSxcbiAgICAgIGltYWdlRGVmYXVsdFdpZHRoOiAwLFxuICAgICAgcGFyYWdyYXBoU3R5bGVzOiB7XG4gICAgICAgIGNsYXNzMTogJ0NsYXNzIDEnLFxuICAgICAgICBjbGFzczI6ICdDbGFzcyAyJyxcbiAgICAgIH0sXG4gICAgICBpbWFnZURlZmF1bHRBbGlnbjogJ2xlZnQnLFxuICAgICAgZm9udEZhbWlseURlZmF1bHRTZWxlY3Rpb246ICdGb250IEZhbWlseScsXG4gICAgICBxdWlja0luc2VydEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc2Nyb2xsYWJsZUNvbnRhaW5lcjogYCMke3RoaXMuY29udGFpbmVySUR9YCxcbiAgICAgIHBhcmFncmFwaERlZmF1bHRTZWxlY3Rpb246ICdGb3JtYXQnLFxuICAgICAgdmlkZW9VcGxvYWQ6IGZhbHNlLFxuICAgICAgaW1hZ2VQYXN0ZTogISFjb25maWcuaW1hZ2U/LnVwbG9hZCxcbiAgICAgIGltYWdlVXBsb2FkOiAhIWNvbmZpZy5pbWFnZT8udXBsb2FkLFxuICAgICAgcGFyYWdyYXBoRm9ybWF0OiB7XG4gICAgICAgIE46ICdOb3JtYWwnLFxuICAgICAgICBIMTogJ0hlYWRpbmcgMScsXG4gICAgICAgIEgyOiAnSGVhZGluZyAyJyxcbiAgICAgICAgSDM6ICdIZWFkaW5nIDMnLFxuICAgICAgICBINDogJ0hlYWRpbmcgNCcsXG4gICAgICAgIEJMT0NLUVVPVEU6ICdRdW90ZScsXG4gICAgICB9LFxuICAgICAgbGluZUhlaWdodHM6IHtcbiAgICAgICAgRGVmYXVsdDogJycsXG4gICAgICAgIDAuNTogJzAuNScsXG4gICAgICAgIFNpbmdsZTogJzEnLFxuICAgICAgICAxLjE1OiAnMS4xNScsXG4gICAgICAgIDEuNTogJzEuNScsXG4gICAgICAgIERvdWJsZTogJzInLFxuICAgICAgfSxcbiAgICAgIHBhcmFncmFwaEZvcm1hdFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHRvb2xiYXJCdXR0b25zLFxuICAgICAgdG9vbGJhckJ1dHRvbnNYUzogVG9vbGJhclhzQnV0dG9ucyxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlKFxuICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGVkaXRvciBzdG9yZSBzb21ld2hlcmUgcG9pbnRlciBvbiBkZWZhdWx0IGNvbmZpZyBvYmplY3QgYW5kIGR1YmxpY2F0ZSBvcHRpb25zIGVhY2ggdGltZSBvbiBpbml0XG4gICAgICAvLyBFeHRyYSBtZXJnZSBsZXZlbCBmaXhlZCB0aGlzIHByb2JsZW0gYW5kIGFsbG93IHRvIGluaXQgY29uZmlnIHByb3Blcmx5IHdpdGhvdXQgbGVnYWN5IGRhdGFcbiAgICAgIHt9LFxuICAgICAgZnJvYWxhT3B0aW9ucyxcbiAgICAgIGNvbmZpZy5mcm9hbGFDb25maWcsXG4gICAgKTtcblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTGF6eUluaXQoKSB7XG4gICAgdGhpcy5mcm9hbGFMb2FkZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZSQpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogYW55ID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgIGlmIChzZWxlY3Rpb24uYmFzZU5vZGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgICBub2RlOiBzZWxlY3Rpb24uYmFzZU5vZGUubm9kZVZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXQ6IHNlbGVjdGlvbi5iYXNlT2Zmc2V0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplKG9wdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2Zyb2FsYVJlYWR5JCksXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcbiAgICAgICAgdGFwKCh7IGNvbmZpZyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2V0dXBGcm9hbGEoY29uZmlnKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZW50Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3JIVE1MID0gdGhpcy5fZWRpdG9yLmh0bWwuZ2V0KCk7XG5cbiAgICBpZiAodGhpcy5odG1sICE9PSBlZGl0b3JIVE1MKSB7XG4gICAgICB0aGlzLl9jaGFuZ2UoZWRpdG9ySFRNTCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBGcm9hbGEoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuc2V0SHRtbCh0aGlzLl9odG1sKTtcblxuICAgIGlmIChjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbmZpZy5pbml0aWFsaXplZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdibHVyJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcuaW5pdE9uQ2xpY2sgJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgIChoYW5kbGVyKSA9PiB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2NvbnRlbnRDaGFuZ2VkJywgaGFuZGxlcik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvL1xuICAgICAgfSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2h0bWwpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5lZGl0b3IuaHRtbC5nZXQoKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY29udGVudENoYW5nZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbigncGFzdGUuYWZ0ZXJDbGVhbnVwJywgKGh0bWwpID0+IHtcbiAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZGl2LmlubmVySFRNTCA9IGh0bWw7XG4gICAgICBkaXYucXVlcnlTZWxlY3RvckFsbCgnKicpXG4gICAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGVsLmF0dHJpYnV0ZXNbMF0ubmFtZTtcbiAgICAgICAgICAgIGlmIChuYW1lICE9PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsICgpID0+IHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuaW1hZ2UgJiYgdGhpcy5jb25maWcuaW1hZ2UudXBsb2FkKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdpbWFnZS5iZWZvcmVQYXN0ZVVwbG9hZCcsIChpbWFnZSkgPT4ge1xuXG4gICAgICAgIGZldGNoKGltYWdlLmdldEF0dHJpYnV0ZSgnc3JjJykpXG4gICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgcmVzLmJsb2IoKVxuICAgICAgICAgICAgICAudGhlbigoYmxvYikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9iKVxuICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCdzcmMnLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZnItaW1hZ2UtcGFzdGVkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudENoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignaW1hZ2UuYmVmb3JlVXBsb2FkJywgKGJsb2JzKSA9PiB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9ic1swXSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaW1hZ2UuaW5zZXJ0KHVybCwgbnVsbCwgbnVsbCwgdGhpcy5lZGl0b3IuaW1hZ2UuZ2V0KCkpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5mci1zZWNvbmQtdG9vbGJhcicpKSB7XG4gICAgICB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5mci1zZWNvbmQtdG9vbGJhcicpLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMgJiYgIXRoaXMuY29uZmlnLmluaXRPbkNsaWNrKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZnMtbGFiZWwtZmllbGRcbiAgICBbYXBwZWFyYW5jZV09XCInb3V0bGluZSdcIlxuICAgIFtob3ZlcmFibGVdPVwidHJ1ZVwiXG4gICAgW3Nob3dPdXRsaW5lXT1cImluaXRpYWxpemVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwYWRsZXNzXT1cImNvbmZpZy5wYWRsZXNzXCJcbiAgICBbY2xhc3MuaW5pdC1vbi1jbGlja109XCJjb25maWcuaW5pdE9uQ2xpY2tcIlxuICAgIFtjbGFzcy5pbml0aWFsaXplZF09XCJpbml0aWFsaXplZFwiPlxuICBAaWYgKGNvbmZpZy5sYWJlbCkge1xuICAgIDxmcy1sYWJlbD5cbiAgICAgIHt7IGNvbmZpZy5sYWJlbCB9fVxuICAgIDwvZnMtbGFiZWw+XG4gIH1cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImh0bWxFZGl0b3JDb250YWluZXI7IGVsc2UgaHRtbEVkaXRvckNvbnRhaW5lclRtcGxcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJodG1sRWRpdG9yQ29udGFpbmVyXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRlbXBsYXRlOiBodG1sRWRpdG9yQ29udGFpbmVyVG1wbCB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2h0bWxFZGl0b3JDb250YWluZXJUbXBsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJodG1sLWVkaXRvci1jb250YWluZXIgZnMtaHRtbC1lZGl0b3ItZGVmYXVsdFwiXG4gICAgICAgIFtpZF09XCJjb250YWluZXJJRFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqZnNTa2VsZXRvbj1cIihmcm9hbGFMb2FkZWQkIHwgYXN5bmMpICE9PSBmYWxzZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAjZWxSZWY+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxmcy1sYWJlbC1tZXNzYWdlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj5cbiAgICAgICAge3sgY29uZmlnLmhpbnQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2ZzLWxhYmVsLW1lc3NhZ2U+XG48L2ZzLWxhYmVsLWZpZWxkPiJdfQ==
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNU4sT0FBTyxFQUNMLGdCQUFnQixFQUVoQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLE1BQU0sR0FHUCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFHOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxH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QUFDLENBQUM7Z0JBQzFCLFVBQVUsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTTthQUN6QztTQUNKOzsyRkFTUSxxQkFBcUI7a0JBaENqQyxTQUFTOytCQUNJLGdCQUFnQixhQUdmO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDWDs0QkFDSSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzs0QkFDMUIsVUFBVSxFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNO3lCQUN6QztxQkFDSixjQUNXLElBQUksV0FDUDt3QkFDTCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixTQUFTO3FCQUNaOzhCQVVJLG1CQUFtQjtzQkFEekIsWUFBWTt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlCLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsZUFBZTtnQkFFRCxLQUFLO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBRUYsTUFBTTtzQkFBckIsS0FBSztnQkFJQyxRQUFRO3NCQUZkLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUl0QixXQUFXO3NCQURqQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0Zvcm0sXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IEZpbGVQcm9jZXNzb3IsIEZzRmlsZSwgRnNGaWxlUHJvY2Vzc0NvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50UGF0dGVybiwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnJvYWxhT3B0aW9ucyB9IGZyb20gJ2Zyb2FsYS1lZGl0b3InO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQYXJhZ3JhcGhCdXR0b25zLCBSaWNoQnV0dG9ucywgVG9vbGJhckJ1dHRvbnMsIFRvb2xiYXJYc0J1dHRvbnMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcgfSBmcm9tICcuLi8uLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9odG1sLWVkaXRvci1jb25maWcnO1xuaW1wb3J0IHsgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJvYWxhLWxvYWRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL3BsdWdpbic7XG5pbXBvcnQgeyBUZXh0QnV0dG9ucyB9IGZyb20gJy4vLi4vLi4vY29uc3RzL3RleHQtYnV0dG9ucy5jb25zdCc7XG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLWh0bWwtZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2h0bWwtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdmlld1Byb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgZGVwczogW1tPcHRpb25hbCwgTmdGb3JtXV0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAobmdGb3JtOiBOZ0Zvcm0pID0+IG5nRm9ybSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGc0xhYmVsTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yQ29tcG9uZW50XG5pbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZyA9IGluamVjdDxGc0h0bWxFZGl0b3JDb25maWc+KEZTX0hUTUxfRURJVE9SX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9mciA9IGluamVjdChGc0Zyb2FsYUxvYWRlclNlcnZpY2UpO1xuXG5cbiAgQENvbnRlbnRDaGlsZChGc0h0bWxFZGl0b3JDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGh0bWxFZGl0b3JDb250YWluZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJykgcHVibGljIGNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2VsUmVmJykgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluaXRpYWxpemVkJylcbiAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lcklEID0gYGZzLWh0bWwtZWRpdG9yLSR7Z3VpZCgneHh4Jyl9YDtcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcbiAgcHVibGljIG9uQ2hhbmdlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+ID0gaW5qZWN0KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnRSZWY6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICBwcml2YXRlIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplJCA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Zyb2FsYVJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIG9wdGlvbnM6IGFueVxuICB9PihudWxsKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBodG1sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2h0bWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZyb2FsYUxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZyLmxvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpYWxvZ1JlZigpOiBNYXREaWFsb2dSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9kaWFsb2dSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyB8fCB7fTtcbiAgICB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgPSB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgJiYgKCF0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCAhdGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9ICF0aGlzLmNvbmZpZy5pbml0T25DbGljaztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fbGlzdGVuTGF6eUluaXQoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGhhc0NvbnRlbnQoKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChlbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZWwuaW5uZXJIVE1MID0gdGhpcy5faHRtbDtcblxuICAgIHJldHVybiAhIWVsLmlubmVyVGV4dC5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgdW5pbml0aWFsaXplKCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY3JlYXRlQ29uZmlnKCk7XG4gICAgdGhpcy5faW5pdFBsdWdpbnMoY29uZmlnKTtcbiAgICB0aGlzLl9pbml0QnV0dG9ucyhjb25maWcpO1xuXG4gICAgY29uc3QgZnJvYWxhT3B0aW9ucyA9IHRoaXMuX2NyZWF0ZU9wdGlvbnMoKTtcblxuICAgIHRoaXMuX2VkaXRvciA9IG5ldyB0aGlzLl9mci5Gcm9hbGFFZGl0b3IodGhpcy5lbCwgZnJvYWxhT3B0aW9ucywgKCkgPT4ge1xuICAgICAgdGhpcy5fZnJvYWxhUmVhZHkkLm5leHQoeyBjb25maWcsIG9wdGlvbnMgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2l6ZSgpIHtcbiAgICAvLyBIYWNrOiBUbyB0cmlnZ2VyIHRoZSB0b29sYmFyIGJ1dHRvbiBzaXplIG1vZGVzXG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGVycjogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY29uZmlnLm1heExlbmd0aCAmJiB0aGlzLl9odG1sKSB7XG4gICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmNvbmZpZy5tYXhMZW5ndGg7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLl9odG1sLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgZXJyLm1heExlbmd0aEVycm9yID0gYE11c3QgYmUgJHttYXhMZW5ndGh9IGNoYXJhY3RlcnMgb3IgZmV3ZXIuIFlvdSBlbnRlcmVkICR7bGVuZ3RofSBjaGFyYWN0ZXJzLmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycikubGVuZ3RoID8gZXJyIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogeyBjdXJzb3JQb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJyB9KSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5jdXJzb3JQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZXRBdEVuZCh0aGlzLmVkaXRvci4kZWwuZ2V0KDApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnNldEF0U3RhcnQodGhpcy5lZGl0b3IuJGVsLmdldCgwKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLnJlc3RvcmUoKTtcblxuICAgIGNvbnN0IGVsU2VsZWN0aW9uID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmVsZW1lbnQoKTtcbiAgICBpZiAoZWxTZWxlY3Rpb24pIHtcbiAgICAgIGVsU2VsZWN0aW9uLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoJycpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SHRtbChodG1sKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKGh0bWwpO1xuICB9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUoaHRtbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faHRtbCA9IGh0bWwgfHwgJyc7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9odG1sKSkge1xuICAgICAgdGhpcy5faHRtbCA9IHRoaXMuX2h0bWwucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5faHRtbCA9IHRoaXMuX2h0bWxcbiAgICAgIC5yZXBsYWNlKC88KGxpKT5cXHM/PChkaXYpPi9nLCAnPGxpPicpXG4gICAgICAucmVwbGFjZSgvPFxcLyhkaXYpPjxcXC8obGkpPi9nLCAnPC9saT4nKTtcblxuICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5odG1sKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmVkaXRvci5odG1sLnNldCh0aGlzLl9odG1sKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvL1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChkYXRhOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2luaXRpYWxpemUkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2IpIHtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgRmlsZVByb2Nlc3NvcigpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRnNGaWxlKGJsb2IpO1xuXG4gICAgY29uc3QgY29uZmlnOiBGc0ZpbGVQcm9jZXNzQ29uZmlnID0ge1xuICAgICAgb3JpZW50YXRlOiB0cnVlLFxuICAgICAgcXVhbGl0eTogdGhpcy5jb25maWcuaW1hZ2UucXVhbGl0eSxcbiAgICAgIGZvcm1hdDogdGhpcy5jb25maWcuaW1hZ2UuZm9ybWF0IGFzIGFueSxcbiAgICAgIG1heFdpZHRoOiB0aGlzLmNvbmZpZy5pbWFnZS53aWR0aCxcbiAgICAgIG1heEhlaWdodDogdGhpcy5jb25maWcuaW1hZ2UuaGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IHRoaXMuY29uZmlnLmltYWdlLm1pbldpZHRoLFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLmNvbmZpZy5pbWFnZS5taW5IZWlnaHQsXG4gICAgfTtcblxuICAgIHJldHVybiBwcm9jZXNzb3IucHJvY2Vzc0ZpbGUoZmlsZSwgY29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZnNGaWxlOiBGc0ZpbGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuaW1hZ2UudXBsb2FkKGZzRmlsZS5maWxlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ29uZmlnKCk6IEZzSHRtbEVkaXRvckNvbmZpZyB7XG4gICAgcmV0dXJuIG1lcmdlKHsgZnJvYWxhQ29uZmlnOiB7fSB9LCB0aGlzLl9kZWZhdWx0Q29uZmlnLCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGFuZ2UoaHRtbCk6IHZvaWQge1xuICAgIHRoaXMuX2h0bWwgPSBodG1sO1xuICAgIHRoaXMub25DaGFuZ2UoaHRtbCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QnV0dG9ucyhjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZykge1xuICAgIChjb25maWcuYnV0dG9ucyB8fCBbXSlcbiAgICAgIC5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICBTdmcgS2V5czpcbiAgICAgICAgICBbXCJhZGRcIiwgXCJhZHZhbmNlZEltYWdlRWRpdG9yXCIsIFwiYWxpZ25DZW50ZXJcIiwgXCJhbGlnbkp1c3RpZnlcIiwgXCJhbGlnbkxlZnRcIiwgXCJhbGlnblJpZ2h0XCIsXG4gICAgICAgICAgXCJhbmNob3JzXCIsIFwiYmFja1wiLCBcImJhY2tncm91bmRDb2xvclwiLCBcImJsb2NrcXVvdGVcIiwgXCJib2xkXCIsIFwiY2VsbEJhY2tncm91bmRcIixcbiAgICAgICAgICBcImNlbGxCb3JkZXJDb2xvclwiLCBcImNlbGxPcHRpb25zXCIsIFwiY2VsbFN0eWxlXCIsIFwiY2xlYXJGb3JtYXR0aW5nXCIsIFwiY2xvc2VcIiwgXCJjb2RlVmlld1wiLFxuICAgICAgICAgIFwiY29nc1wiLCBcImNvbHVtbnNcIiwgXCJlZGl0TGlua1wiLCBcImV4aXRGdWxsc2NyZWVuXCIsIFwiZm9udEF3ZXNvbWVcIiwgXCJmb250RmFtaWx5XCIsXG4gICAgICAgICAgXCJmb250U2l6ZVwiLCBcImZ1bGxzY3JlZW5cIiwgXCJoZWxwXCIsIFwiaG9yaXpvbnRhbExpbmVcIiwgXCJpbWFnZUFsdFRleHRcIiwgXCJpbWFnZUNhcHRpb25cIixcbiAgICAgICAgICBcImltYWdlQ2xhc3NcIiwgXCJpbWFnZURpc3BsYXlcIiwgXCJpbWFnZU1hbmFnZXJcIiwgXCJpbWFnZVNpemVcIiwgXCJpbmRlbnRcIiwgXCJpbmxpbmVDbGFzc1wiLFxuICAgICAgICAgIFwiaW5saW5lU3R5bGVcIiwgXCJpbnNlcnRFbWJlZFwiLCBcImluc2VydEZpbGVcIiwgXCJpbnNlcnRJbWFnZVwiLCBcImluc2VydExpbmtcIiwgXCJpbnNlcnRNb3JlXCIsXG4gICAgICAgICAgXCJpbnNlcnRUYWJsZVwiLCBcImluc2VydFZpZGVvXCIsIFwidXBsb2FkXCIsIFwiaXRhbGljXCIsIFwic2VhcmNoXCIsIFwibGluZUhlaWdodFwiLCBcImxpbmtTdHlsZXNcIixcbiAgICAgICAgICBcIm1lbnRpb25cIiwgXCJtb3JlXCIsIFwib3BlbkxpbmtcIiwgXCJvcmRlcmVkTGlzdFwiLCBcIm91dGRlbnRcIiwgXCJwYWdlQnJlYWtlclwiLFxuICAgICAgICAgIFwicGFyYWdyYXBoRm9ybWF0XCIsIFwicGFyYWdyYXBoTW9yZVwiLCBcInBhcmFncmFwaFN0eWxlXCIsIFwicGRmRXhwb3J0XCIsIFwicHJpbnRcIixcbiAgICAgICAgICBcInJlZG9cIiwgXCJyZW1vdmVUYWJsZVwiLCBcInJlbW92ZVwiLCBcInJlcGxhY2VJbWFnZVwiLCBcInJvd1wiLCBcInNlbGVjdEFsbFwiLCBcInNtaWxlXCIsXG4gICAgICAgICAgXCJzcGVsbGNoZWNrXCIsIFwic3RhclwiLCBcInN0cmlrZVRocm91Z2hcIiwgXCJzdWJzY3JpcHRcIiwgXCJzdXBlcnNjcmlwdFwiLCBcInN5bWJvbHNcIiwgXCJ0YWdzXCIsXG4gICAgICAgICAgXCJ0YWJsZUhlYWRlclwiLCBcInRhYmxlU3R5bGVcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJ0ZXh0TW9yZVwiLCBcInVuZGVybGluZVwiLCBcInVuZG9cIiwgXCJ1bmxpbmtcIixcbiAgICAgICAgICBcInVub3JkZXJlZExpc3RcIiwgXCJ2ZXJ0aWNhbEFsaWduQm90dG9tXCIsIFwidmVydGljYWxBbGlnbk1pZGRsZVwiLCBcInZlcnRpY2FsQWxpZ25Ub3BcIl1cbiAgICAgICAgKi9cblxuICAgICAgICBpZiAoYnV0dG9uLnN2Z0tleSkge1xuICAgICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5EZWZpbmVJY29uKGJ1dHRvbi5uYW1lLCB7IFNWR19LRVk6IGJ1dHRvbi5zdmdLZXkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKGJ1dHRvbi5uYW1lLCB7XG4gICAgICAgICAgdGl0bGU6IGJ1dHRvbi50aXRsZSxcbiAgICAgICAgICBmb2N1czogYnV0dG9uLmZvY3VzID8/IHRydWUsXG4gICAgICAgICAgdW5kbzogYnV0dG9uLnVuZG8gPz8gdHJ1ZSxcbiAgICAgICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrID8/IHRydWUsXG4gICAgICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRUb29sYmFyQnV0dG9ucyhidXR0b25zKSB7XG4gICAgKGJ1dHRvbnMgfHwgW10pXG4gICAgICAuZmlsdGVyKChidXR0b24pID0+IHR5cGVvZiBidXR0b24gIT09ICdzdHJpbmcnKVxuICAgICAgLmZvckVhY2goKGJ1dHRvbjogVG9vbGJhckJ1dHRvbikgPT4ge1xuICAgICAgICB0aGlzLl9kZWZpbmVCdXR0b24oYnV0dG9uKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBsdWdpbnMoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgICB0aGlzLl9pbml0VG9vbGJhckJ1dHRvbnMoY29uZmlnLnRvb2xiYXI/LnRleHQ/LnByZXBlbmQpO1xuICAgIHRoaXMuX2luaXRUb29sYmFyQnV0dG9ucyhjb25maWcudG9vbGJhcj8ucGFyYWdyYXBoPy5wcmVwZW5kKTtcbiAgICB0aGlzLl9pbml0VG9vbGJhckJ1dHRvbnMoY29uZmlnLnRvb2xiYXI/LnJpY2g/LnByZXBlbmQpO1xuXG4gICAgKGNvbmZpZy5wbHVnaW5zIHx8IFtdKVxuICAgICAgLmZvckVhY2goKHBsdWdpbjogUGx1Z2luKSA9PiB7XG4gICAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5QTFVHSU5TW3BsdWdpbi5jb25maWcubmFtZV0gPSBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgICAgcGx1Z2luLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICBwbHVnaW4uaW5pdGlhbGl6ZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgICAgfTtcblxuICAgICAgICAocGx1Z2luLmNvbmZpZy5idXR0b25zIHx8IFtdKVxuICAgICAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RlZmluZUJ1dHRvbihidXR0b24pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbmVCdXR0b24oYnV0dG9uOiBUb29sYmFyQnV0dG9uKSB7XG4gICAgaWYoYnV0dG9uLmh0bWwpIHtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvblRlbXBsYXRlKGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIGJ1dHRvbi5odG1sKTtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvbihidXR0b24ubmFtZSwge1xuICAgICAgICAgIE5BTUU6IGAke2J1dHRvbi5uYW1lfS1pY29uYCxcbiAgICAgICAgICB0ZW1wbGF0ZTogYCR7YnV0dG9uLm5hbWV9LXRlbXBsYXRlYCxcbiAgICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLkRlZmluZUljb24oYnV0dG9uLm5hbWUsIHtcbiAgICAgICAgTkFNRTogYnV0dG9uLm5hbWUsXG4gICAgICAgIFBBVEg6IGJ1dHRvbi5zdmdQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgaWNvbjogYnV0dG9uLm5hbWUsXG4gICAgICB0aXRsZTogYnV0dG9uLnRvb2x0aXAsXG4gICAgICB1bmRvOiBidXR0b24udW5kbyxcbiAgICAgIGZvY3VzOiBidXR0b24uZm9jdXMsXG4gICAgICBzaG93T25Nb2JpbGU6IGJ1dHRvbi5zaG93T25Nb2JpbGUsXG4gICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrLFxuICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgIGlmIChidXR0b24uY2xpY2spIHtcbiAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZWZyZXNoKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5yZWZyZXNoKSB7XG4gICAgICAgICAgZXZlbnQucmVmcmVzaCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2J1dHRvbnNUb05hbWVzKGJ1dHRvbnMpIHtcbiAgICByZXR1cm4gKGJ1dHRvbnMgfHwgW10pXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbS5uYW1lO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVPcHRpb25zKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2NyZWF0ZUNvbmZpZygpO1xuXG4gICAgY29uc3QgbW9yZVRleHQgPSBbXG4gICAgICAuLi50aGlzLl9idXR0b25zVG9OYW1lcyhjb25maWcudG9vbGJhcj8udGV4dD8ucHJlcGVuZCksXG4gICAgICAuLi5UZXh0QnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9yZVBhcmFncmFwaCA9IFtcbiAgICAgIC4uLnRoaXMuX2J1dHRvbnNUb05hbWVzKGNvbmZpZy50b29sYmFyPy5wYXJhZ3JhcGg/LnByZXBlbmQpLFxuICAgICAgLi4uUGFyYWdyYXBoQnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9yZVJpY2ggPSBbXG4gICAgICAuLi50aGlzLl9idXR0b25zVG9OYW1lcyhjb25maWcudG9vbGJhcj8ucmljaD8ucHJlcGVuZCksXG4gICAgICAuLi5SaWNoQnV0dG9ucyxcbiAgICBdO1xuXG4gICAgY29uc3QgdG9vbGJhckJ1dHRvbnMgPSBtZXJnZShcbiAgICAgIHt9LFxuICAgICAgVG9vbGJhckJ1dHRvbnMsXG4gICAgICB7XG4gICAgICAgIG1vcmVUZXh0OiB7IGJ1dHRvbnM6IG1vcmVUZXh0IH0sXG4gICAgICAgIG1vcmVQYXJhZ3JhcGg6IHsgYnV0dG9uczogbW9yZVBhcmFncmFwaCB9LFxuICAgICAgICBtb3JlUmljaDogeyBidXR0b25zOiBtb3JlUmljaCB9LFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBmcm9hbGFPcHRpb25zOiBQYXJ0aWFsPEZyb2FsYU9wdGlvbnM+ID0ge1xuICAgICAgc2hvcnRjdXRzRW5hYmxlZDogWydzaG93JywgJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdpbmRlbnQnLCAnb3V0ZGVudCcsICd1bmRvJywgJ3JlZG8nLCAnaW5zZXJ0SW1hZ2UnLCAnY3JlYXRlTGluayddLFxuICAgICAga2V5OiBjb25maWcuYWN0aXZhdGlvbktleSxcbiAgICAgIHBsYWNlaG9sZGVyVGV4dDogY29uZmlnLnBsYWNlaG9sZGVyLFxuICAgICAgbGlua0Fsd2F5c0JsYW5rOiB0cnVlLFxuICAgICAgbGlua0luc2VydEJ1dHRvbnM6IFtdLFxuICAgICAgbGlua0VkaXRCdXR0b25zOiBbJ2xpbmtPcGVuJywgJ2xpbmtFZGl0JywgJ2xpbmtSZW1vdmUnXSwgIFxuICAgICAgbGlua011bHRpcGxlU3R5bGVzOiBmYWxzZSxcbiAgICAgIGhlaWdodE1pbjogdGhpcy5fZGlhbG9nUmVmID8gMjAwIDogMCxcbiAgICAgIHRhYlNwYWNlczogMixcbiAgICAgIHRvb2xiYXJTdGlja3k6IGZhbHNlLFxuICAgICAgbGlzdEFkdmFuY2VkVHlwZXM6IGZhbHNlLFxuICAgICAgdHlwaW5nVGltZXI6IDI1MCxcbiAgICAgIHRvb2x0aXBzOiBmYWxzZSxcbiAgICAgIHdvcmRQYXN0ZU1vZGFsOiBmYWxzZSxcbiAgICAgIGltYWdlRGVmYXVsdFdpZHRoOiAwLFxuICAgICAgcGFyYWdyYXBoU3R5bGVzOiB7XG4gICAgICAgIGNsYXNzMTogJ0NsYXNzIDEnLFxuICAgICAgICBjbGFzczI6ICdDbGFzcyAyJyxcbiAgICAgIH0sXG4gICAgICBpbWFnZURlZmF1bHRBbGlnbjogJ2xlZnQnLFxuICAgICAgZm9udEZhbWlseURlZmF1bHRTZWxlY3Rpb246ICdGb250IEZhbWlseScsXG4gICAgICBxdWlja0luc2VydEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc2Nyb2xsYWJsZUNvbnRhaW5lcjogYCMke3RoaXMuY29udGFpbmVySUR9YCxcbiAgICAgIHBhcmFncmFwaERlZmF1bHRTZWxlY3Rpb246ICdGb3JtYXQnLFxuICAgICAgdmlkZW9VcGxvYWQ6IGZhbHNlLFxuICAgICAgaW1hZ2VQYXN0ZTogISFjb25maWcuaW1hZ2U/LnVwbG9hZCxcbiAgICAgIGltYWdlVXBsb2FkOiAhIWNvbmZpZy5pbWFnZT8udXBsb2FkLFxuICAgICAgcGFyYWdyYXBoRm9ybWF0OiB7XG4gICAgICAgIE46ICdOb3JtYWwnLFxuICAgICAgICBIMTogJ0hlYWRpbmcgMScsXG4gICAgICAgIEgyOiAnSGVhZGluZyAyJyxcbiAgICAgICAgSDM6ICdIZWFkaW5nIDMnLFxuICAgICAgICBINDogJ0hlYWRpbmcgNCcsXG4gICAgICAgIEJMT0NLUVVPVEU6ICdRdW90ZScsXG4gICAgICB9LFxuICAgICAgbGluZUhlaWdodHM6IHtcbiAgICAgICAgRGVmYXVsdDogJycsXG4gICAgICAgIDAuNTogJzAuNScsXG4gICAgICAgIFNpbmdsZTogJzEnLFxuICAgICAgICAxLjE1OiAnMS4xNScsXG4gICAgICAgIDEuNTogJzEuNScsXG4gICAgICAgIERvdWJsZTogJzInLFxuICAgICAgfSxcbiAgICAgIHBhcmFncmFwaEZvcm1hdFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHRvb2xiYXJCdXR0b25zLFxuICAgICAgdG9vbGJhckJ1dHRvbnNYUzogVG9vbGJhclhzQnV0dG9ucyxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlKFxuICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGVkaXRvciBzdG9yZSBzb21ld2hlcmUgcG9pbnRlciBvbiBkZWZhdWx0IGNvbmZpZyBvYmplY3QgYW5kIGR1YmxpY2F0ZSBvcHRpb25zIGVhY2ggdGltZSBvbiBpbml0XG4gICAgICAvLyBFeHRyYSBtZXJnZSBsZXZlbCBmaXhlZCB0aGlzIHByb2JsZW0gYW5kIGFsbG93IHRvIGluaXQgY29uZmlnIHByb3Blcmx5IHdpdGhvdXQgbGVnYWN5IGRhdGFcbiAgICAgIHt9LFxuICAgICAgZnJvYWxhT3B0aW9ucyxcbiAgICAgIGNvbmZpZy5mcm9hbGFDb25maWcsXG4gICAgKTtcblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuTGF6eUluaXQoKSB7XG4gICAgdGhpcy5mcm9hbGFMb2FkZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZSQpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogYW55ID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgIGlmIChzZWxlY3Rpb24uYmFzZU5vZGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgICBub2RlOiBzZWxlY3Rpb24uYmFzZU5vZGUubm9kZVZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXQ6IHNlbGVjdGlvbi5iYXNlT2Zmc2V0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplKG9wdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2Zyb2FsYVJlYWR5JCksXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcbiAgICAgICAgdGFwKCh7IGNvbmZpZyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2V0dXBGcm9hbGEoY29uZmlnKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZW50Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3JIVE1MID0gdGhpcy5fZWRpdG9yLmh0bWwuZ2V0KCk7XG5cbiAgICBpZiAodGhpcy5odG1sICE9PSBlZGl0b3JIVE1MKSB7XG4gICAgICB0aGlzLl9jaGFuZ2UoZWRpdG9ySFRNTCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBGcm9hbGEoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuc2V0SHRtbCh0aGlzLl9odG1sKTtcblxuICAgIGlmIChjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbmZpZy5pbml0aWFsaXplZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdibHVyJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbGFzc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcuaW5pdE9uQ2xpY2sgJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgIChoYW5kbGVyKSA9PiB7XG4gICAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2NvbnRlbnRDaGFuZ2VkJywgaGFuZGxlcik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvL1xuICAgICAgfSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2h0bWwpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5lZGl0b3IuaHRtbC5nZXQoKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY29udGVudENoYW5nZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbigncGFzdGUuYWZ0ZXJDbGVhbnVwJywgKGh0bWwpID0+IHtcbiAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZGl2LmlubmVySFRNTCA9IGh0bWw7XG4gICAgICBkaXYucXVlcnlTZWxlY3RvckFsbCgnKicpXG4gICAgICAgIC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGVsLmF0dHJpYnV0ZXNbMF0ubmFtZTtcbiAgICAgICAgICAgIGlmIChuYW1lICE9PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsICgpID0+IHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuaW1hZ2UgJiYgdGhpcy5jb25maWcuaW1hZ2UudXBsb2FkKSB7XG4gICAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdpbWFnZS5iZWZvcmVQYXN0ZVVwbG9hZCcsIChpbWFnZSkgPT4ge1xuXG4gICAgICAgIGZldGNoKGltYWdlLmdldEF0dHJpYnV0ZSgnc3JjJykpXG4gICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgcmVzLmJsb2IoKVxuICAgICAgICAgICAgICAudGhlbigoYmxvYikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9iKVxuICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCdzcmMnLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZnItaW1hZ2UtcGFzdGVkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudENoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignaW1hZ2UuYmVmb3JlVXBsb2FkJywgKGJsb2JzKSA9PiB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9ic1swXSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaW1hZ2UuaW5zZXJ0KHVybCwgbnVsbCwgbnVsbCwgdGhpcy5lZGl0b3IuaW1hZ2UuZ2V0KCkpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5mci1zZWNvbmQtdG9vbGJhcicpKSB7XG4gICAgICB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJy5mci1zZWNvbmQtdG9vbGJhcicpLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMgJiYgIXRoaXMuY29uZmlnLmluaXRPbkNsaWNrKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZnMtbGFiZWwtZmllbGRcbiAgW2FwcGVhcmFuY2VdPVwiJ291dGxpbmUnXCJcbiAgW2hvdmVyYWJsZV09XCJ0cnVlXCJcbiAgW3Nob3dPdXRsaW5lXT1cImluaXRpYWxpemVkXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3BhZGxlc3NdPVwiY29uZmlnLnBhZGxlc3NcIlxuICBbY2xhc3MuaW5pdC1vbi1jbGlja109XCJjb25maWcuaW5pdE9uQ2xpY2tcIlxuICBbY2xhc3MuaW5pdGlhbGl6ZWRdPVwiaW5pdGlhbGl6ZWRcIj5cbiAgQGlmIChjb25maWcubGFiZWwpIHtcbiAgICA8ZnMtbGFiZWw+XG4gICAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8L2ZzLWxhYmVsPlxuICB9XG4gIEBpZiAoaHRtbEVkaXRvckNvbnRhaW5lcikge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImh0bWxFZGl0b3JDb250YWluZXJcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVtcGxhdGU6IGh0bWxFZGl0b3JDb250YWluZXJUbXBsIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJodG1sLWVkaXRvci1jb250YWluZXIgZnMtaHRtbC1lZGl0b3ItZGVmYXVsdFwiXG4gICAgICBbaWRdPVwiY29udGFpbmVySURcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmZzU2tlbGV0b249XCIoZnJvYWxhTG9hZGVkJCB8IGFzeW5jKSAhPT0gZmFsc2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgI2VsUmVmPjwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG4gIDxuZy10ZW1wbGF0ZSAjaHRtbEVkaXRvckNvbnRhaW5lclRtcGw+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJodG1sLWVkaXRvci1jb250YWluZXIgZnMtaHRtbC1lZGl0b3ItZGVmYXVsdFwiXG4gICAgICBbaWRdPVwiY29udGFpbmVySURcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmZzU2tlbGV0b249XCIoZnJvYWxhTG9hZGVkJCB8IGFzeW5jKSAhPT0gZmFsc2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgI2VsUmVmPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZnMtbGFiZWwtbWVzc2FnZT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+XG4gICAgICAgIHt7IGNvbmZpZy5oaW50IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mcy1sYWJlbC1tZXNzYWdlPlxuPC9mcy1sYWJlbC1maWVsZD4iXX0=
|
|
@@ -5,10 +5,13 @@ export class FsHtmlEditorContainerDirective {
|
|
|
5
5
|
return true;
|
|
6
6
|
}
|
|
7
7
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsHtmlEditorContainerDirective, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsHtmlEditorContainerDirective, isStandalone: true, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
9
9
|
}
|
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, decorators: [{
|
|
11
11
|
type: Directive,
|
|
12
|
-
args: [{
|
|
12
|
+
args: [{
|
|
13
|
+
selector: '[fsHtmlEditorContainer]',
|
|
14
|
+
standalone: true
|
|
15
|
+
}]
|
|
13
16
|
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9kaXJlY3RpdmVzL2h0bWwtZWRpdG9yLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFNdkQsTUFBTSxPQUFPLDhCQUE4QjtJQUNsQyxNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEdBQW1DLEVBQ25DLEdBQVk7UUFJWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7dUdBUlUsOEJBQThCOzJGQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSjFDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmc0h0bWxFZGl0b3JDb250YWluZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gIHB1YmxpYyBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcbiAgICBkaXI6IEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICBjdHg6IHVua25vd24sXG4gICk6IGN0eCBpcyB7XG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIH0ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,6 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { FsLabelModule } from '@firestitch/label';
|
|
4
4
|
import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
5
|
-
import { FsHtmlRendererModule } from '../html-renderer/fs-html-renderer.module';
|
|
6
5
|
import { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';
|
|
7
6
|
import { FsHtmlEditorContainerDirective } from './directives';
|
|
8
7
|
import { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';
|
|
@@ -15,23 +14,23 @@ export class FsHtmlEditorModule {
|
|
|
15
14
|
{ provide: FS_HTML_EDITOR_DEFAULT_CONFIG, useValue: config },
|
|
16
15
|
{
|
|
17
16
|
provide: FS_HTML_EDITOR_CONFIG,
|
|
18
|
-
useFactory:
|
|
17
|
+
useFactory: htmlEditorConfigFactory,
|
|
19
18
|
deps: [FS_HTML_EDITOR_DEFAULT_CONFIG],
|
|
20
19
|
},
|
|
21
20
|
],
|
|
22
21
|
};
|
|
23
22
|
}
|
|
24
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorModule,
|
|
26
|
-
FsHtmlEditorContainerDirective], imports: [CommonModule,
|
|
24
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorModule, imports: [CommonModule,
|
|
27
25
|
FsSkeletonModule,
|
|
28
26
|
FsLabelModule,
|
|
29
|
-
|
|
27
|
+
FsHtmlEditorComponent,
|
|
28
|
+
FsHtmlEditorContainerDirective], exports: [FsHtmlEditorComponent,
|
|
30
29
|
FsHtmlEditorContainerDirective] });
|
|
31
30
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorModule, imports: [CommonModule,
|
|
32
31
|
FsSkeletonModule,
|
|
33
32
|
FsLabelModule,
|
|
34
|
-
|
|
33
|
+
FsHtmlEditorComponent] });
|
|
35
34
|
}
|
|
36
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorModule, decorators: [{
|
|
37
36
|
type: NgModule,
|
|
@@ -40,19 +39,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
40
39
|
CommonModule,
|
|
41
40
|
FsSkeletonModule,
|
|
42
41
|
FsLabelModule,
|
|
43
|
-
FsHtmlRendererModule,
|
|
44
|
-
],
|
|
45
|
-
exports: [
|
|
46
42
|
FsHtmlEditorComponent,
|
|
47
43
|
FsHtmlEditorContainerDirective,
|
|
48
44
|
],
|
|
49
|
-
|
|
45
|
+
exports: [
|
|
50
46
|
FsHtmlEditorComponent,
|
|
51
47
|
FsHtmlEditorContainerDirective,
|
|
52
48
|
],
|
|
53
49
|
}]
|
|
54
50
|
}] });
|
|
55
|
-
export function
|
|
51
|
+
export function htmlEditorConfigFactory(config) {
|
|
56
52
|
return {
|
|
57
53
|
froalaPlugins: [
|
|
58
54
|
"align" /* FroalaPlugin.Align */,
|
|
@@ -72,4 +68,4 @@ export function FsHtmlEditorConfigFactory(config) {
|
|
|
72
68
|
...config,
|
|
73
69
|
};
|
|
74
70
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ZzLWh0bWwtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFpQi9GLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUE2QixFQUFFO1FBQ25ELE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUM1RDtvQkFDRSxPQUFPLEVBQUUscUJBQXFCO29CQUM5QixVQUFVLEVBQUUsdUJBQXVCO29CQUNuQyxJQUFJLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDdEM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO3VHQWJVLGtCQUFrQjt3R0FBbEIsa0JBQWtCLFlBWDNCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLHFCQUFxQjtZQUNyQiw4QkFBOEIsYUFHMUIscUJBQXFCO1lBQ3JCLDhCQUE4Qjt3R0FHekIsa0JBQWtCLFlBWDNCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLHFCQUFxQjs7MkZBUVosa0JBQWtCO2tCQWI5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDVCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLDhCQUE4QjtxQkFDakM7b0JBQ0csT0FBTyxFQUFFO3dCQUNMLHFCQUFxQjt3QkFDckIsOEJBQThCO3FCQUNqQztpQkFDSjs7QUFpQkQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQTBCO0lBQ2hFLE9BQU87UUFDTCxhQUFhLEVBQUU7Ozs7Ozs7Ozs7Ozs7O1NBY2Q7UUFDRCxHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcblxuXG5cbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9odG1sLWVkaXRvci9odG1sLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZyb2FsYVBsdWdpbiB9IGZyb20gJy4vZW51bXMvZGVmYXVsdC1wbHVnaW4uZW51bSc7XG5pbXBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcsIEZTX0hUTUxfRURJVE9SX0RFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZzU2tlbGV0b25Nb2R1bGUsXG4gICAgRnNMYWJlbE1vZHVsZSxcbiAgICBGc0h0bWxFZGl0b3JDb21wb25lbnQsXG4gICAgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlLFxuXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEZzSHRtbEVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvck1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0h0bWxFZGl0b3JNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzSHRtbEVkaXRvck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEZTX0hUTUxfRURJVE9SX0RFRkFVTFRfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBGU19IVE1MX0VESVRPUl9DT05GSUcsXG4gICAgICAgICAgdXNlRmFjdG9yeTogaHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0ZTX0hUTUxfRURJVE9SX0RFRkFVTFRfQ09ORklHXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnkoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9hbGFQbHVnaW5zOiBbXG4gICAgICBGcm9hbGFQbHVnaW4uQWxpZ24sXG4gICAgICBGcm9hbGFQbHVnaW4uQ29sb3JzLFxuICAgICAgRnJvYWxhUGx1Z2luLkltYWdlLFxuICAgICAgRnJvYWxhUGx1Z2luLkxpbmssXG4gICAgICBGcm9hbGFQbHVnaW4uTGlzdHMsXG4gICAgICBGcm9hbGFQbHVnaW4uUGFyYWdyYXBoRm9ybWF0LFxuICAgICAgRnJvYWxhUGx1Z2luLlF1b3RlLFxuICAgICAgRnJvYWxhUGx1Z2luLlRhYmxlLFxuICAgICAgRnJvYWxhUGx1Z2luLlVybCxcbiAgICAgIEZyb2FsYVBsdWdpbi5WaWRlbyxcbiAgICAgIEZyb2FsYVBsdWdpbi5EcmFnZ2FibGUsXG4gICAgICBGcm9hbGFQbHVnaW4uRm9udFNpemUsXG4gICAgICBGcm9hbGFQbHVnaW4uTGluZUhlaWdodCxcbiAgICBdLFxuICAgIC4uLmNvbmZpZyxcbiAgfTtcbn1cbiJdfQ==
|