@messaia/cdk-cms 14.0.0 → 15.0.0-rc02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/cms-routing.module.mjs +4 -4
- package/esm2020/lib/cms.module.mjs +12 -12
- package/esm2020/lib/comnponents/content-form/content-form.component.mjs +5 -5
- package/esm2020/lib/comnponents/document-dialog/document-dialog.component.mjs +5 -5
- package/esm2020/lib/comnponents/template-form/template-form.component.mjs +6 -6
- package/esm2020/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs +5 -5
- package/esm2020/lib/models/cms-settings.mjs +3 -3
- package/esm2020/lib/models/content-variable.mjs +1 -1
- package/esm2020/lib/models/content.mjs +1 -1
- package/esm2020/lib/models/document.mjs +1 -1
- package/esm2020/lib/models/faq.mjs +1 -1
- package/esm2020/lib/models/slider.mjs +1 -1
- package/esm2020/lib/models/template.mjs +1 -1
- package/esm2020/lib/resolvers/excluded-columns.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/excluded-fields.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/form-validation.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/includes.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/settings.resolve.mjs +3 -3
- package/esm2020/lib/services/content-variable.service.mjs +3 -3
- package/esm2020/lib/services/content.service.mjs +3 -3
- package/esm2020/lib/services/document.service`.mjs +3 -3
- package/esm2020/lib/services/faq.service.mjs +3 -3
- package/esm2020/lib/services/slider.service.mjs +3 -3
- package/esm2020/lib/services/template-preview.service.mjs +3 -3
- package/esm2020/lib/services/template.service.mjs +3 -3
- package/fesm2015/messaia-cdk-cms.mjs +72 -72
- package/fesm2015/messaia-cdk-cms.mjs.map +1 -1
- package/fesm2020/messaia-cdk-cms.mjs +72 -72
- package/fesm2020/messaia-cdk-cms.mjs.map +1 -1
- package/lib/comnponents/content-form/content-form.component.d.ts +1 -1
- package/lib/comnponents/document-dialog/document-dialog.component.d.ts +1 -1
- package/lib/comnponents/template-form/template-form.component.d.ts +1 -1
- package/lib/comnponents/template-preview-dialog/template-preview-dialog.component.d.ts +1 -1
- package/package.json +5 -5
|
@@ -53,16 +53,16 @@ const routes = [
|
|
|
53
53
|
];
|
|
54
54
|
export class VdCmsRoutingModule {
|
|
55
55
|
}
|
|
56
|
-
VdCmsRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
57
|
-
VdCmsRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
58
|
-
VdCmsRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
56
|
+
VdCmsRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
57
|
+
VdCmsRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: VdCmsRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
58
|
+
VdCmsRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsRoutingModule, providers: [
|
|
59
59
|
SettingsResolve,
|
|
60
60
|
IncludesResolve,
|
|
61
61
|
ExcludedColumnsResolve,
|
|
62
62
|
ExcludedFieldsResolve,
|
|
63
63
|
FormValidationResolve
|
|
64
64
|
], imports: [RouterModule.forChild(routes), RouterModule] });
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsRoutingModule, decorators: [{
|
|
66
66
|
type: NgModule,
|
|
67
67
|
args: [{
|
|
68
68
|
imports: [RouterModule.forChild(routes)],
|
|
@@ -24,8 +24,8 @@ import * as i0 from "@angular/core";
|
|
|
24
24
|
export { ContentFormComponent, DocumentDialogComponent, TemplateFormComponent, TemplatePreviewDialogComponent };
|
|
25
25
|
export class MaterialModule {
|
|
26
26
|
}
|
|
27
|
-
MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
27
|
+
MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
+
MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: MaterialModule, exports: [MatCardModule,
|
|
29
29
|
MatExpansionModule,
|
|
30
30
|
MatButtonModule,
|
|
31
31
|
MatIconModule,
|
|
@@ -35,7 +35,7 @@ MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
35
35
|
MatInputModule,
|
|
36
36
|
MatSelectModule,
|
|
37
37
|
MatProgressBarModule] });
|
|
38
|
-
MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
38
|
+
MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: MaterialModule, imports: [MatCardModule,
|
|
39
39
|
MatExpansionModule,
|
|
40
40
|
MatButtonModule,
|
|
41
41
|
MatIconModule,
|
|
@@ -45,7 +45,7 @@ MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
45
45
|
MatInputModule,
|
|
46
46
|
MatSelectModule,
|
|
47
47
|
MatProgressBarModule] });
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: MaterialModule, decorators: [{
|
|
49
49
|
type: NgModule,
|
|
50
50
|
args: [{
|
|
51
51
|
exports: [
|
|
@@ -64,20 +64,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
|
|
|
64
64
|
}] });
|
|
65
65
|
export class VdModule {
|
|
66
66
|
}
|
|
67
|
-
VdModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
68
|
-
VdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
67
|
+
VdModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
68
|
+
VdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: VdModule, exports: [VdCommonModule,
|
|
69
69
|
VdLayoutModule,
|
|
70
70
|
VdMediaModule,
|
|
71
71
|
VdFormsModule,
|
|
72
72
|
VdSelectModule,
|
|
73
73
|
VdChipsModule] });
|
|
74
|
-
VdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
74
|
+
VdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdModule, imports: [VdCommonModule,
|
|
75
75
|
VdLayoutModule,
|
|
76
76
|
VdMediaModule,
|
|
77
77
|
VdFormsModule,
|
|
78
78
|
VdSelectModule,
|
|
79
79
|
VdChipsModule] });
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdModule, decorators: [{
|
|
81
81
|
type: NgModule,
|
|
82
82
|
args: [{
|
|
83
83
|
exports: [
|
|
@@ -98,8 +98,8 @@ const DECLARATION = [
|
|
|
98
98
|
];
|
|
99
99
|
export class VdCmsModule {
|
|
100
100
|
}
|
|
101
|
-
VdCmsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
102
|
-
VdCmsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
101
|
+
VdCmsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
102
|
+
VdCmsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: VdCmsModule, declarations: [ContentFormComponent,
|
|
103
103
|
TemplateFormComponent,
|
|
104
104
|
TemplatePreviewDialogComponent,
|
|
105
105
|
DocumentDialogComponent], imports: [CommonModule,
|
|
@@ -111,7 +111,7 @@ VdCmsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
|
|
|
111
111
|
TemplateFormComponent,
|
|
112
112
|
TemplatePreviewDialogComponent,
|
|
113
113
|
DocumentDialogComponent] });
|
|
114
|
-
VdCmsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
114
|
+
VdCmsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsModule, imports: [CommonModule,
|
|
115
115
|
CodemirrorModule,
|
|
116
116
|
VdCdkBaseModule,
|
|
117
117
|
VdModule,
|
|
@@ -120,7 +120,7 @@ VdCmsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
|
|
|
120
120
|
EditorModule,
|
|
121
121
|
PdfViewerModule, VdModule, MaterialModule, EditorModule,
|
|
122
122
|
PdfViewerModule] });
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCmsModule, decorators: [{
|
|
124
124
|
type: NgModule,
|
|
125
125
|
args: [{
|
|
126
126
|
imports: [
|
|
@@ -231,11 +231,11 @@ export class ContentFormComponent extends GenericReactiveFormComponent {
|
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
|
-
ContentFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
235
|
-
ContentFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" (change)=\"setClient()\" [required]=\"!item.default\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Title -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@title\">Title</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"title\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.title['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Alias -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Aliases -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@aliases\">Aliases</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-list #chipList formControlName=\"aliases\">\r\n\t\t\t\t\t\t\t\t<mat-chip *ngFor=\"let alias of form.controls.aliases.value\" (removed)=\"removeAliases(alias)\">\r\n\t\t\t\t\t\t\t\t\t<span>{{alias}}</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip>\r\n\t\t\t\t\t\t\t\t<input type=\"text\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" matChipInputAddOnBlur=\"true\" (matChipInputTokenEnd)=\"addAliases($event)\">\r\n\t\t\t\t\t\t\t</mat-chip-list>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region wrap tag and layout -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\" *ngIf=\"type != ContentType.Block\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@wrap\">Wrap</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"wrapTag\">\r\n\t\t\t\t\t\t\t<mat-autocomplete #wrapTagsAutocomplete=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of wrapTags\" [value]=\"option.name\">{{option.name}}</mat-option>\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.wrapTag['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@layout\">Layout</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"layout\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.layout['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Body -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"isEditorInitialzed\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@content\">Content</mat-label>\r\n\t\t\t\t\t\t\t<editor #editor formControlName=\"body\" tinyMatFormControl [init]=\"editorConfig\" [required]=\"true\"></editor>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.body['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Script -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@script\">Script</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"script\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.script['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Style -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@style\">Style</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"style\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.style['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Show title -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-top\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"showTitle\" i18n=\"@@showTitle\">Show title</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Default -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"default\" formControlName=\"default\" (change)=\"item.clientId = item.default ? null : item.clientId\" i18n=\"@@default\">Default</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"enabled\" formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "id", "modelEvents", "disabled", "initialValue", "init", "inline", "outputFormat", "tagName", "plugins", "toolbar", "allowedEvents", "ignoreEvents"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i12.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }, { kind: "component", type: i2.VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { kind: "component", type: i13.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i13.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i13.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i13.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i14.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i15.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i17.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
|
|
236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
234
|
+
ContentFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ContentFormComponent, deps: [{ token: i1.ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
235
|
+
ContentFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" (change)=\"setClient()\" [required]=\"!item.default\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Title -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@title\">Title</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"title\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.title['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Alias -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Aliases -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@aliases\">Aliases</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-grid #chipList formControlName=\"aliases\">\r\n\t\t\t\t\t\t\t\t<mat-chip-row *ngFor=\"let alias of form.controls.aliases.value\" (removed)=\"removeAliases(alias)\">\r\n\t\t\t\t\t\t\t\t\t<span>{{alias}}</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip-row>\r\n\t\t\t\t\t\t\t\t<input type=\"text\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" matChipInputAddOnBlur=\"true\" (matChipInputTokenEnd)=\"addAliases($event)\">\r\n\t\t\t\t\t\t\t</mat-chip-grid>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region wrap tag and layout -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin *ngIf=\"type != ContentType.Block\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@wrap\">Wrap</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"wrapTag\">\r\n\t\t\t\t\t\t\t<mat-autocomplete #wrapTagsAutocomplete=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of wrapTags\" [value]=\"option.name\">{{option.name}}</mat-option>\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.wrapTag['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@layout\">Layout</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"layout\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.layout['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Body -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"isEditorInitialzed\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@content\">Content</mat-label>\r\n\t\t\t\t\t\t\t<editor #editor formControlName=\"body\" tinyMatFormControl [init]=\"editorConfig\" [required]=\"true\"></editor>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.body['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Script -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@script\">Script</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"script\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.script['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Style -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@style\">Style</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"style\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.style['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Show title -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin class=\"push-top\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"showTitle\" i18n=\"@@showTitle\">Show title</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Default -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"default\" formControlName=\"default\" (change)=\"item.clientId = item.default ? null : item.clientId\" i18n=\"@@default\">Default</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin class=\"push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"enabled\" formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i11.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "id", "modelEvents", "disabled", "initialValue", "init", "inline", "outputFormat", "tagName", "plugins", "toolbar", "allowedEvents", "ignoreEvents"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i12.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }, { kind: "component", type: i2.VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "triggerCssClass", "triggerMode", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { kind: "component", type: i13.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i13.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i13.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i13.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i14.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i15.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i17.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ContentFormComponent, decorators: [{
|
|
237
237
|
type: Component,
|
|
238
|
-
args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin
|
|
238
|
+
args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" (change)=\"setClient()\" [required]=\"!item.default\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Title -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@title\">Title</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"title\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.title['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Alias -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Aliases -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@aliases\">Aliases</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-grid #chipList formControlName=\"aliases\">\r\n\t\t\t\t\t\t\t\t<mat-chip-row *ngFor=\"let alias of form.controls.aliases.value\" (removed)=\"removeAliases(alias)\">\r\n\t\t\t\t\t\t\t\t\t<span>{{alias}}</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip-row>\r\n\t\t\t\t\t\t\t\t<input type=\"text\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" matChipInputAddOnBlur=\"true\" (matChipInputTokenEnd)=\"addAliases($event)\">\r\n\t\t\t\t\t\t\t</mat-chip-grid>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region wrap tag and layout -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin *ngIf=\"type != ContentType.Block\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@wrap\">Wrap</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"wrapTag\">\r\n\t\t\t\t\t\t\t<mat-autocomplete #wrapTagsAutocomplete=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of wrapTags\" [value]=\"option.name\">{{option.name}}</mat-option>\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.wrapTag['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@layout\">Layout</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"layout\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.layout['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Body -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"isEditorInitialzed\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@content\">Content</mat-label>\r\n\t\t\t\t\t\t\t<editor #editor formControlName=\"body\" tinyMatFormControl [init]=\"editorConfig\" [required]=\"true\"></editor>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.body['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Script -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@script\">Script</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"script\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.script['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Style -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@style\">Style</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"style\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.style['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Show title -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin class=\"push-top\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"showTitle\" i18n=\"@@showTitle\">Show title</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Default -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"default\" formControlName=\"default\" (change)=\"item.clientId = item.default ? null : item.clientId\" i18n=\"@@default\">Default</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin class=\"push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"enabled\" formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
|
|
239
239
|
}], ctorParameters: function () { return [{ type: i1.ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formElement: [{
|
|
240
240
|
type: ViewChild,
|
|
241
241
|
args: ['form', { static: false }]
|
|
@@ -243,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
|
|
|
243
243
|
type: ViewChild,
|
|
244
244
|
args: ['editor', { static: false }]
|
|
245
245
|
}] } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1oRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQXFEO0lB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QUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtJLGVBQWU7c0JBQXRELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIsIEVudW1TZXJ2aWNlLCBGaWxlU2VydmljZSwgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkayc7XHJcbmltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2NvbnRlbnQtdHlwZSc7XHJcbmltcG9ydCB7IFdyYXBUYWcgfSBmcm9tICcuLi8uLi9lbnVtcy93cmFwLXRhZyc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29udGVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbnRlbnQtZm9ybScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxDb250ZW50LCBDb250ZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGRpc2FibGUgc29tZSBwcm9wZXJ0aWVzIGZvciBjbGllbnQgbWFuYWdlclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKCdDbGllbnRBZG1pbmlzdHJhdG9yJykgfHwgQXV0aEhlbHBlci5oYXNSb2xlKCdDbGllbnRNYW5hZ2VyJyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHN0YXR1cyBvZiB0aGUgaXNzdWVcclxuXHQgKi9cclxuXHRwdWJsaWMgdHlwZTogQ29udGVudFR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnRlbnQgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIENvbnRlbnRUeXBlOiB0eXBlb2YgQ29udGVudFR5cGUgPSBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogV3JhcCB0YWcgZW51bVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB3cmFwVGFnczogYW55W10gPSBFbnVtU2VydmljZS50b0FycmF5KFdyYXBUYWcpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXBhcmF0b3Iga2V5cyBjb2Rlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNldHRpbmdzOiBDbXNTZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXR0aW5nczogQ21zU2V0dGluZ3MgPSBuZXcgQ21zU2V0dGluZ3MoKTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgYWxpYXNlcyBjb250cm9sXHJcblx0ICovXHJcblx0Z2V0IGFsaWFzZXNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmFsaWFzZXM7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWYgdG8gZm9ybSBodG1sIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmb3JtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1FbGVtZW50OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvckNvbXBvbmVudDogRWRpdG9yQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIHNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKENvbnRlbnQsIHNlcnZpY2UsIHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZilcclxuXHRcdHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldFNlcnZpY2UoQ21zU2V0dGluZ3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEZpbHRlciBieSBzdGF0dXMsIGlmIGFueSAqL1xyXG5cdFx0dGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiB7IHR5cGU6IHN0cmluZyB9KSA9PiB7XHJcblx0XHRcdHRoaXMudHlwZSA9IEVudW1TZXJ2aWNlLnBhcnNlKENvbnRlbnRUeXBlLCBwYXJhbXMudHlwZSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgc29tZSBwcm9wcyBmcm9tIHJvdXRlIHNuYXBzaG90ICovXHJcblx0XHR0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy5mb3JtVmFsaWRhdGlvbiA9IGRhdGEuZm9ybVZhbGlkYXRpb247XHJcblx0XHR9KTtcclxuXHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgYWxpYXMgaXMgYXZhaWxhYmxlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0FsaWFzQXZhaWxhYmxlKCkge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmlzQWxpYXNBdmFpbGFibGUodGhpcy5pdGVtKS5zdWJzY3JpYmUoKHg6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0dGhpcy5mb3JtRWxlbWVudC5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHRcdHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I/LnNldENvbnRlbnQodGhpcy5pdGVtLmJvZHkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIGEgYWxpYXNlcyB0byB0aGUgY3VycmVudCBmaWVsZFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQWxpYXNlcyhldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBvdXIgYWxpYXNzICovXHJcblx0XHRpZiAoKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCkpIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZSwgZXZlbnQudmFsdWUudHJpbSgpXSk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGlucHV0IHZhbHVlICovXHJcblx0XHRpZiAoZXZlbnQuaW5wdXQpIHtcclxuXHRcdFx0ZXZlbnQuaW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYSBhbGlhc2VzXHJcblx0ICogQHBhcmFtIGFsaWFzcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQWxpYXNlcyhhbGlhc3M6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaW5kZXggPSB0aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLmluZGV4T2YoYWxpYXNzKTtcclxuXHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRlbXBsYXRlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKCk6IENvbnRlbnQge1xyXG5cdFx0bGV0IGl0ZW0gPSBPYmplY3QuYXNzaWduKG5ldyBDb250ZW50KCksIDxDb250ZW50PntcclxuXHRcdFx0dHlwZTogdGhpcy50eXBlLFxyXG5cdFx0XHR3cmFwVGFnOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyAnJyA6IFdyYXBUYWcuU2VjdGlvbixcclxuXHRcdFx0c2hvd1RpdGxlOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyBmYWxzZSA6IHRydWVcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjbGllbnRJZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzRWRpdE1vZGUgJiYgdGhpcy5pc0NsaWVudEFkbWluKSB7XHJcblx0XHRcdGl0ZW0uY2xpZW50SWQgPSB0aGlzLmN1cnJlbnRVc2VyLmNsaWVudElkO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEluaXQgdGhlIHRpbnltY2UgZWRpdG9yICovXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0cmV0dXJuIGl0ZW07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyRm9ybUJ1aWxkKCk6IHZvaWQge1xyXG5cdFx0c3VwZXIub25BZnRlckZvcm1CdWlsZCgpO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbmZpZ3VyZXMgdGhlIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb25maWdFZGl0b3IoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlICYmIHRoaXMuZm9ybVZhbHVlPy5jbGllbnRJZCAmJiB0aGlzLnNldHRpbmdzPy5zdHlsZVVybEVuZHBvaW50KSB7XHJcblx0XHRcdHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5zZXR0aW5ncy5zdHlsZVVybEVuZHBvaW50KHRoaXMuZm9ybVZhbHVlLmNsaWVudElkKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoeDogeyB2YWx1ZTogc3RyaW5nIH0pID0+IHN1cGVyLmluaXRFZGl0b3IoT2JqZWN0LmFzc2lnbih0aGlzLmdldEVkaXRvckNvbmZpZygpLCB7IGNvbnRlbnRfY3NzOiB4LnZhbHVlIH0pKSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCkpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN1cGVyLmluaXRFZGl0b3IodGhpcy5nZXRFZGl0b3JDb25maWcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGNvbmZpZyBmb3IgdGhlIGVkaXRvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0RWRpdG9yQ29uZmlnKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHR0b29sYmFyOiBgJHt0aGlzLmVkaXRvclRvb2xiYXJ9IHNuaXBwZXRzQnV0dG9uYCxcclxuXHRcdFx0Zm9yY2VfcF9uZXdsaW5lczogZmFsc2UsXHJcblx0XHRcdGZvcmNlZF9yb290X2Jsb2NrOiAnJyxcclxuXHRcdFx0aGVpZ2h0OiB0aGlzLnNldHRpbmdzPy5lZGl0b3JIZWlnaHQgfHwgJzcwMHB4JyxcclxuXHRcdFx0ZmlsZV9waWNrZXJfdHlwZXM6ICdmaWxlIGltYWdlIG1lZGlhJyxcclxuXHRcdFx0aW1hZ2VfYWR2dGFiOiB0cnVlLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2Jhc2VfcGF0aDogYCR7dGhpcy5hcHBTZXR0aW5nLmFwaVVybH1maWxlL2AsXHJcblx0XHRcdGltYWdlc191cGxvYWRfdXJsOiAnYmFja2VuZC9hcGkvZmlsZXMnLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZSxcclxuXHRcdFx0dmFsaWRfY2hpbGRyZW46ICcrYVtkaXZ8c3BhbnxpbWd8aDF8aDJ8aDN8aDR8aDV8aDZ8YnJ8aHJ8dmlkZW9dLCtzcGFuW2ldJyxcclxuXHRcdFx0dmFsaWRfZWxlbWVudHM6ICcqWypdJyxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF9oYW5kbGVyOiAoYmxvYkluZm86IGFueSwgc3VjY2VzczogYW55LCBmYWlsdXJlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZChibG9iSW5mby5ibG9iKCksIGB1cGxvYWRgLCB7XHJcblx0XHRcdFx0XHRjbGllbnRJZDogdGhpcy5mb3JtPy52YWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0XHRwYXRoOiAnaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MoZXZlbnQuYm9keS5wdWJsaWNMaW5rKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQ2xpZW50LS0+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiICpuZ0lmPVwic2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiAhaXNDbGllbnRBZG1pblwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBjbGllbnRcIj5DbGllbnQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8dmQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNsaWVudElkXCIgZW5kcG9pbnQ9XCJjbGllbnQ/ZW5hYmxlZD10cnVlXCIgbGF5b3V0PVwiY29sdW1uXCIgKGNoYW5nZSk9XCJzZXRDbGllbnQoKVwiIFtyZXF1aXJlZF09XCIhaXRlbS5kZWZhdWx0XCIgZmxleD48L3ZkLXNlbGVjdD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5jbGllbnRJZFsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIFRpdGxlIC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEB0aXRsZVwiPlRpdGxlPC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMudGl0bGVbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBOYW1lICYgQWxpYXMgLS0+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dD1cInJvd1wiIGZsZXg+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQG5hbWVcIj5OYW1lPC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5uYW1lWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQWxpYXNlcyAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAYWxpYXNlc1wiPkFsaWFzZXM8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgZm9ybUNvbnRyb2xOYW1lPVwiYWxpYXNlc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1jaGlwICpuZ0Zvcj1cImxldCBhbGlhcyBvZiBmb3JtLmNvbnRyb2xzLmFsaWFzZXMudmFsdWVcIiAocmVtb3ZlZCk9XCJyZW1vdmVBbGlhc2VzKGFsaWFzKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57e2FsaWFzfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1jaGlwPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiBtYXRDaGlwSW5wdXRBZGRPbkJsdXI9XCJ0cnVlXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZEFsaWFzZXMoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdDwvbWF0LWNoaXAtbGlzdD5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiB3cmFwIHRhZyBhbmQgbGF5b3V0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJ0eXBlICE9IENvbnRlbnRUeXBlLkJsb2NrXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEB3cmFwXCI+V3JhcDwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ3cmFwVGFnXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1hdXRvY29tcGxldGUgI3dyYXBUYWdzQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHdyYXBUYWdzXCIgW3ZhbHVlXT1cIm9wdGlvbi5uYW1lXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG5cdFx0XHRcdFx0XHRcdDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy53cmFwVGFnWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBsYXlvdXRcIj5MYXlvdXQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibGF5b3V0XCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMubGF5b3V0WydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQm9keSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJpc0VkaXRvckluaXRpYWx6ZWRcIj5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQGNvbnRlbnRcIj5Db250ZW50PC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PGVkaXRvciAjZWRpdG9yIGZvcm1Db250cm9sTmFtZT1cImJvZHlcIiB0aW55TWF0Rm9ybUNvbnRyb2wgW2luaXRdPVwiZWRpdG9yQ29uZmlnXCIgW3JlcXVpcmVkXT1cInRydWVcIj48L2VkaXRvcj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5ib2R5WydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gU2NyaXB0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBzY3JpcHRcIj5TY3JpcHQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZm9ybUNvbnRyb2xOYW1lPVwic2NyaXB0XCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5zY3JpcHRbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBTdHlsZSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAc3R5bGVcIj5TdHlsZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBmb3JtQ29udHJvbE5hbWU9XCJzdHlsZVwiPjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMuc3R5bGVbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBTaG93IHRpdGxlIC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwdXNoLXRvcFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwic2hvd1RpdGxlXCIgaTE4bj1cIkBAc2hvd1RpdGxlXCI+U2hvdyB0aXRsZTwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBEZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cIiFpc0NsaWVudEFkbWluXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtY2hlY2tib3ggbmFtZT1cImRlZmF1bHRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0XCIgKGNoYW5nZSk9XCJpdGVtLmNsaWVudElkID0gaXRlbS5kZWZhdWx0ID8gbnVsbCA6IGl0ZW0uY2xpZW50SWRcIiBpMThuPVwiQEBkZWZhdWx0XCI+RGVmYXVsdDwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBFbmFibGVkIC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwdXNoLWJvdHRvbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtY2hlY2tib3ggbmFtZT1cImVuYWJsZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkXCIgaTE4bj1cIkBAYWN0aXZlXCI+QWN0aXZlPC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImlzRWRpdE1vZGVcIiAoY2xpY2spPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDx2ZC1hdWRpdCBbaXRlbV09XCJpdGVtXCI+IDwvdmQtYXVkaXQ+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1oRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQXFEO0lB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QUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtJLGVBQWU7c0JBQXRELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIsIEVudW1TZXJ2aWNlLCBGaWxlU2VydmljZSwgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkayc7XHJcbmltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2NvbnRlbnQtdHlwZSc7XHJcbmltcG9ydCB7IFdyYXBUYWcgfSBmcm9tICcuLi8uLi9lbnVtcy93cmFwLXRhZyc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29udGVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbnRlbnQtZm9ybScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxDb250ZW50LCBDb250ZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGRpc2FibGUgc29tZSBwcm9wZXJ0aWVzIGZvciBjbGllbnQgbWFuYWdlclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKCdDbGllbnRBZG1pbmlzdHJhdG9yJykgfHwgQXV0aEhlbHBlci5oYXNSb2xlKCdDbGllbnRNYW5hZ2VyJyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHN0YXR1cyBvZiB0aGUgaXNzdWVcclxuXHQgKi9cclxuXHRwdWJsaWMgdHlwZTogQ29udGVudFR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnRlbnQgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIENvbnRlbnRUeXBlOiB0eXBlb2YgQ29udGVudFR5cGUgPSBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogV3JhcCB0YWcgZW51bVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB3cmFwVGFnczogYW55W10gPSBFbnVtU2VydmljZS50b0FycmF5KFdyYXBUYWcpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXBhcmF0b3Iga2V5cyBjb2Rlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNldHRpbmdzOiBDbXNTZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXR0aW5nczogQ21zU2V0dGluZ3MgPSBuZXcgQ21zU2V0dGluZ3MoKTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgYWxpYXNlcyBjb250cm9sXHJcblx0ICovXHJcblx0Z2V0IGFsaWFzZXNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmFsaWFzZXM7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWYgdG8gZm9ybSBodG1sIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmb3JtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1FbGVtZW50OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvckNvbXBvbmVudDogRWRpdG9yQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIHNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKENvbnRlbnQsIHNlcnZpY2UsIHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZilcclxuXHRcdHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldFNlcnZpY2UoQ21zU2V0dGluZ3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEZpbHRlciBieSBzdGF0dXMsIGlmIGFueSAqL1xyXG5cdFx0dGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiB7IHR5cGU6IHN0cmluZyB9KSA9PiB7XHJcblx0XHRcdHRoaXMudHlwZSA9IEVudW1TZXJ2aWNlLnBhcnNlKENvbnRlbnRUeXBlLCBwYXJhbXMudHlwZSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgc29tZSBwcm9wcyBmcm9tIHJvdXRlIHNuYXBzaG90ICovXHJcblx0XHR0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy5mb3JtVmFsaWRhdGlvbiA9IGRhdGEuZm9ybVZhbGlkYXRpb247XHJcblx0XHR9KTtcclxuXHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgYWxpYXMgaXMgYXZhaWxhYmxlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0FsaWFzQXZhaWxhYmxlKCkge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmlzQWxpYXNBdmFpbGFibGUodGhpcy5pdGVtKS5zdWJzY3JpYmUoKHg6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0dGhpcy5mb3JtRWxlbWVudC5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHRcdHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I/LnNldENvbnRlbnQodGhpcy5pdGVtLmJvZHkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIGEgYWxpYXNlcyB0byB0aGUgY3VycmVudCBmaWVsZFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQWxpYXNlcyhldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBvdXIgYWxpYXNzICovXHJcblx0XHRpZiAoKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCkpIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZSwgZXZlbnQudmFsdWUudHJpbSgpXSk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGlucHV0IHZhbHVlICovXHJcblx0XHRpZiAoZXZlbnQuaW5wdXQpIHtcclxuXHRcdFx0ZXZlbnQuaW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYSBhbGlhc2VzXHJcblx0ICogQHBhcmFtIGFsaWFzcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQWxpYXNlcyhhbGlhc3M6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaW5kZXggPSB0aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLmluZGV4T2YoYWxpYXNzKTtcclxuXHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRlbXBsYXRlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKCk6IENvbnRlbnQge1xyXG5cdFx0bGV0IGl0ZW0gPSBPYmplY3QuYXNzaWduKG5ldyBDb250ZW50KCksIDxDb250ZW50PntcclxuXHRcdFx0dHlwZTogdGhpcy50eXBlLFxyXG5cdFx0XHR3cmFwVGFnOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyAnJyA6IFdyYXBUYWcuU2VjdGlvbixcclxuXHRcdFx0c2hvd1RpdGxlOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyBmYWxzZSA6IHRydWVcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjbGllbnRJZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzRWRpdE1vZGUgJiYgdGhpcy5pc0NsaWVudEFkbWluKSB7XHJcblx0XHRcdGl0ZW0uY2xpZW50SWQgPSB0aGlzLmN1cnJlbnRVc2VyLmNsaWVudElkO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEluaXQgdGhlIHRpbnltY2UgZWRpdG9yICovXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0cmV0dXJuIGl0ZW07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyRm9ybUJ1aWxkKCk6IHZvaWQge1xyXG5cdFx0c3VwZXIub25BZnRlckZvcm1CdWlsZCgpO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbmZpZ3VyZXMgdGhlIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb25maWdFZGl0b3IoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlICYmIHRoaXMuZm9ybVZhbHVlPy5jbGllbnRJZCAmJiB0aGlzLnNldHRpbmdzPy5zdHlsZVVybEVuZHBvaW50KSB7XHJcblx0XHRcdHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5zZXR0aW5ncy5zdHlsZVVybEVuZHBvaW50KHRoaXMuZm9ybVZhbHVlLmNsaWVudElkKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoeDogeyB2YWx1ZTogc3RyaW5nIH0pID0+IHN1cGVyLmluaXRFZGl0b3IoT2JqZWN0LmFzc2lnbih0aGlzLmdldEVkaXRvckNvbmZpZygpLCB7IGNvbnRlbnRfY3NzOiB4LnZhbHVlIH0pKSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCkpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN1cGVyLmluaXRFZGl0b3IodGhpcy5nZXRFZGl0b3JDb25maWcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGNvbmZpZyBmb3IgdGhlIGVkaXRvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0RWRpdG9yQ29uZmlnKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHR0b29sYmFyOiBgJHt0aGlzLmVkaXRvclRvb2xiYXJ9IHNuaXBwZXRzQnV0dG9uYCxcclxuXHRcdFx0Zm9yY2VfcF9uZXdsaW5lczogZmFsc2UsXHJcblx0XHRcdGZvcmNlZF9yb290X2Jsb2NrOiAnJyxcclxuXHRcdFx0aGVpZ2h0OiB0aGlzLnNldHRpbmdzPy5lZGl0b3JIZWlnaHQgfHwgJzcwMHB4JyxcclxuXHRcdFx0ZmlsZV9waWNrZXJfdHlwZXM6ICdmaWxlIGltYWdlIG1lZGlhJyxcclxuXHRcdFx0aW1hZ2VfYWR2dGFiOiB0cnVlLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2Jhc2VfcGF0aDogYCR7dGhpcy5hcHBTZXR0aW5nLmFwaVVybH1maWxlL2AsXHJcblx0XHRcdGltYWdlc191cGxvYWRfdXJsOiAnYmFja2VuZC9hcGkvZmlsZXMnLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZSxcclxuXHRcdFx0dmFsaWRfY2hpbGRyZW46ICcrYVtkaXZ8c3BhbnxpbWd8aDF8aDJ8aDN8aDR8aDV8aDZ8YnJ8aHJ8dmlkZW9dLCtzcGFuW2ldJyxcclxuXHRcdFx0dmFsaWRfZWxlbWVudHM6ICcqWypdJyxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF9oYW5kbGVyOiAoYmxvYkluZm86IGFueSwgc3VjY2VzczogYW55LCBmYWlsdXJlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZChibG9iSW5mby5ibG9iKCksIGB1cGxvYWRgLCB7XHJcblx0XHRcdFx0XHRjbGllbnRJZDogdGhpcy5mb3JtPy52YWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0XHRwYXRoOiAnaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MoZXZlbnQuYm9keS5wdWJsaWNMaW5rKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQ2xpZW50LS0+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiICpuZ0lmPVwic2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiAhaXNDbGllbnRBZG1pblwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAY2xpZW50XCI+Q2xpZW50PC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PHZkLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjbGllbnRJZFwiIGVuZHBvaW50PVwiY2xpZW50P2VuYWJsZWQ9dHJ1ZVwiIGxheW91dD1cImNvbHVtblwiIChjaGFuZ2UpPVwic2V0Q2xpZW50KClcIiBbcmVxdWlyZWRdPVwiIWl0ZW0uZGVmYXVsdFwiIGZsZXg+PC92ZC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMuY2xpZW50SWRbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBUaXRsZSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQHRpdGxlXCI+VGl0bGU8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy50aXRsZVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIE5hbWUgJiBBbGlhcyAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQG5hbWVcIj5OYW1lPC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5uYW1lWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQWxpYXNlcyAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQGFsaWFzZXNcIj5BbGlhc2VzPC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1jaGlwLWdyaWQgI2NoaXBMaXN0IGZvcm1Db250cm9sTmFtZT1cImFsaWFzZXNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtY2hpcC1yb3cgKm5nRm9yPVwibGV0IGFsaWFzIG9mIGZvcm0uY29udHJvbHMuYWxpYXNlcy52YWx1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUFsaWFzZXMoYWxpYXMpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7YWxpYXN9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LWNoaXAtcm93PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiBtYXRDaGlwSW5wdXRBZGRPbkJsdXI9XCJ0cnVlXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZEFsaWFzZXMoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdDwvbWF0LWNoaXAtZ3JpZD5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiB3cmFwIHRhZyBhbmQgbGF5b3V0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luICpuZ0lmPVwidHlwZSAhPSBDb250ZW50VHlwZS5CbG9ja1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAd3JhcFwiPldyYXA8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwid3JhcFRhZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtYXV0b2NvbXBsZXRlICN3cmFwVGFnc0F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB3cmFwVGFnc1wiIFt2YWx1ZV09XCJvcHRpb24ubmFtZVwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1hdXRvY29tcGxldGU+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMud3JhcFRhZ1snZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQGxheW91dFwiPkxheW91dDwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXlvdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5sYXlvdXRbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBCb2R5IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cImlzRWRpdG9ySW5pdGlhbHplZFwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAY29udGVudFwiPkNvbnRlbnQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8ZWRpdG9yICNlZGl0b3IgZm9ybUNvbnRyb2xOYW1lPVwiYm9keVwiIHRpbnlNYXRGb3JtQ29udHJvbCBbaW5pdF09XCJlZGl0b3JDb25maWdcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiPjwvZWRpdG9yPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtLmNvbnRyb2xzLmJvZHlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBTY3JpcHQgLS0+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dD1cInJvd1wiIGZsZXg+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBzY3JpcHRcIj5TY3JpcHQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZm9ybUNvbnRyb2xOYW1lPVwic2NyaXB0XCI+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5zY3JpcHRbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBTdHlsZSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQHN0eWxlXCI+U3R5bGU8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgbWF0SW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZm9ybUNvbnRyb2xOYW1lPVwic3R5bGVcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtLmNvbnRyb2xzLnN0eWxlWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gU2hvdyB0aXRsZSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgbGF5b3V0LW1hcmdpbiBjbGFzcz1cInB1c2gtdG9wXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJzaG93VGl0bGVcIiBpMThuPVwiQEBzaG93VGl0bGVcIj5TaG93IHRpdGxlPC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIERlZmF1bHQgLS0+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiICpuZ0lmPVwiIWlzQ2xpZW50QWRtaW5cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtY2hlY2tib3ggbmFtZT1cImRlZmF1bHRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0XCIgKGNoYW5nZSk9XCJpdGVtLmNsaWVudElkID0gaXRlbS5kZWZhdWx0ID8gbnVsbCA6IGl0ZW0uY2xpZW50SWRcIiBpMThuPVwiQEBkZWZhdWx0XCI+RGVmYXVsdDwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBFbmFibGVkIC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luIGNsYXNzPVwicHVzaC1ib3R0b21cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWNoZWNrYm94IG5hbWU9XCJlbmFibGVkXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZFwiIGkxOG49XCJAQGFjdGl2ZVwiPkFjdGl2ZTwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCJpc0VkaXRNb2RlXCIgKGNsaWNrKT1cImFwcGx5KClcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIEF1ZGl0IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwiYXVkaXRcIiAqbmdJZj1cImlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEBhdWRpdFwiPkF1ZGl0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8dmQtYXVkaXQgW2l0ZW1dPVwiaXRlbVwiPiA8L3ZkLWF1ZGl0PlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2xvc2VcIj5DbG9zZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHRcdFx0PC9tYXQtYWNjb3JkaW9uPlxyXG5cdFx0PC92ZC1sYXlvdXQtY2FyZC1vdmVyPlxyXG5cdDwvZm9ybT5cclxuPC92ZC1sYXlvdXQtbmF2PiJdfQ==
|
|
@@ -90,13 +90,13 @@ export class DocumentDialogComponent extends GenericReactiveFormComponent {
|
|
|
90
90
|
this.dialogRef.close();
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
DocumentDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
94
|
-
DocumentDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
93
|
+
DocumentDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DocumentDialogComponent, deps: [{ token: i1.DocumentService }, { token: i2.FileService }, { token: i3.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
+
DocumentDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: DocumentDialogComponent, selector: "document-dialog", usesInheritance: true, ngImport: i0, template: "<div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<div layout-margin>\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"form?.value?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" [required]=\"true\"></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "component", type: i2.VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "triggerCssClass", "triggerMode", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }] });
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DocumentDialogComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
97
|
-
args: [{ selector: 'document-dialog', template: "<div mat-dialog-title class=\"mat-
|
|
97
|
+
args: [{ selector: 'document-dialog', template: "<div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientManager\">\r\n\t\t\t<div layout-margin>\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"form?.value?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" [required]=\"true\"></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>" }]
|
|
98
98
|
}], ctorParameters: function () { return [{ type: i1.DocumentService }, { type: i2.FileService }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialogRef }, { type: i12.Document, decorators: [{
|
|
99
99
|
type: Inject,
|
|
100
100
|
args: [MAT_DIALOG_DATA]
|
|
101
101
|
}] }]; } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU1uRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsNEJBQXVEO0lBcUJuRzs7T0FFRztJQUNILFlBQ1csZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsS0FBcUIsRUFDckIsaUJBQW9DLEVBQ3ZDLFNBQWdELEVBQ3ZCLE9BQWlCLElBQUksUUFBUSxFQUFFO1FBRS9ELEtBQUssQ0FBQyxRQUFRLEVBQUUs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LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQsIFNhdmVBY3Rpb24gfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBDbXNTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9jbXMtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9kb2N1bWVudCc7XHJcbmltcG9ydCB7IERvY3VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvY3VtZW50LnNlcnZpY2VgJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZG9jdW1lbnQtZGlhbG9nJyxcclxuXHR0ZW1wbGF0ZVVybDogJ2RvY3VtZW50LWRpYWxvZy5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxEb2N1bWVudCwgRG9jdW1lbnRTZXJ2aWNlPiB7XHJcblx0LyoqXHJcblx0ICogVXBsb2FkIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc1VwbG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkIHByb2dyZXNzXHJcblx0ICovXHJcblx0cHVibGljIHVwbG9hZFByb2dyZXNzOiBudW1iZXIgPSAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGRpc2FibGUgc29tZSBwcm9wZXJ0aWVzIGZvciBjbGllbnQgbWFuYWdlclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudE1hbmFnZXIgPSBBdXRoSGVscGVyLmhhc1JvbGUoJ0NsaWVudEFkbWluaXN0cmF0b3InKSB8fCBBdXRoSGVscGVyLmhhc1JvbGUoJ0NsaWVudE1hbmFnZXInKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERvY3VtZW50RGlhbG9nQ29tcG9uZW50PixcclxuXHRcdEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoRG9jdW1lbnQsIGRvY3VtZW50U2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5pdGVtID0gZGF0YTtcclxuXHRcdHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldFNlcnZpY2UoQ21zU2V0dGluZ3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyBhIG5ldyBkb2N1bWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWQoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcblx0XHRpZiAoZmlsZSAhPSBudWxsICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uY2xpZW50SWQpIHtcclxuXHRcdFx0dGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XHJcblx0XHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGUgYXMgRmlsZSwgYHVwbG9hZGAsIHtcclxuXHRcdFx0XHRjbGllbnRJZDogdGhpcy5mb3JtPy52YWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0cGF0aDogdGhpcy5mb3JtPy52YWx1ZT8ucGF0aCxcclxuXHRcdFx0XHRpc1B1YmxpYzogdHJ1ZSxcclxuXHRcdFx0XHRwcmVzZXJ2ZU9yaWdpbmFsTmFtZTogdGhpcy5mb3JtPy52YWx1ZT8ucHJlc2VydmVPcmlnaW5hbE5hbWVcclxuXHRcdFx0fSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoZXZlbnQpID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSBwZXJjZW50RG9uZTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5mb3JtLnBhdGNoVmFsdWUoPERvY3VtZW50PmV2ZW50LmJvZHkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Y29tcGxldGU6ICgpID0+IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhZnRlciBkYXRhIHN1Ym1pdGlvblxyXG5cdCAqIEBwYXJhbSBhY3Rpb24gXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyU3VibWl0KGFjdGlvbjogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCByZXNwb25zZTogYW55ID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jYW5jZWwoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsb3NlcyB0aGUgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcblx0fVxyXG59IiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwibWF0LXRpdGxlXCIgaTE4bj1cIkBAbmV3RG9jdW1lbnRcIj5OZXcgZG9jdW1lbnQ8L2Rpdj5cclxuPGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxyXG5cdDxkaXY+XHJcblx0XHQ8IS0tICNyZWdpb24gQ2xpZW50LS0+XHJcblx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiICpuZ0lmPVwiIWlzQ2xpZW50TWFuYWdlclwiPlxyXG5cdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBjbGllbnRcIj5DbGllbnQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHQ8dmQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNsaWVudElkXCIgZW5kcG9pbnQ9XCJjbGllbnQ/ZW5hYmxlZD10cnVlXCIgcHJvamVjdGlvbj1cImlkLGRpc3BsYXlOYW1lXCIgdGV4dD1cImRpc3BsYXlOYW1lXCIgbGF5b3V0PVwiY29sdW1uXCIgZmxleD48L3ZkLXNlbGVjdD5cclxuXHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5jbGllbnRJZFsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIFBhdGggLS0+XHJcblx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiPlxyXG5cdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEB0eXBlXCI+VHlwZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBhdGhcIj5cclxuXHRcdFx0XHRcdDxtYXQtb3B0aW9uIHZhbHVlPVwiZG9jc1wiPjxzcGFuIGkxOG49XCJAQGRvY3VtZW50XCI+RG9jdW1lbnQ8L3NwYW4+PC9tYXQtb3B0aW9uPlxyXG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gdmFsdWU9XCJpbWFnZXNcIj48c3BhbiBpMThuPVwiQEBpbWFnZVwiPkltYWdlPC9zcGFuPjwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdDxtYXQtb3B0aW9uIHZhbHVlPVwidmlkZW9zXCI+PHNwYW4gaTE4bj1cIkBAdmlkZW9cIj5WaWRlbzwvc3Bhbj48L21hdC1vcHRpb24+XHJcblx0XHRcdFx0PC9tYXQtc2VsZWN0PlxyXG5cdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtLmNvbnRyb2xzLnBhdGhbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PCEtLSAjZW5kcmVnaW9uLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIFByZXNlcnZlT3JpZ2luYWxOYW1lIC0tPlxyXG5cdFx0PGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cIiFpc0NsaWVudE1hbmFnZXJcIj5cclxuXHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveCBuYW1lPVwicHJlc2VydmVPcmlnaW5hbE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJwcmVzZXJ2ZU9yaWdpbmFsTmFtZVwiIChjaGFuZ2UpPVwiaXRlbS5uYW1lID0gJydcIiBpMThuPVwiQEBwcmVzZXJ2ZU9yaWdpbmFsTmFtZVwiPlByZXNlcnZlIG9yaWdpbmFsIG5hbWU8L21hdC1jaGVja2JveD5cclxuXHRcdFx0XHQ8YnIgLz5cclxuXHRcdFx0XHQ8bWF0LWhpbnQgKm5nSWY9XCJmb3JtPy52YWx1ZT8ucHJlc2VydmVPcmlnaW5hbE5hbWVcIiBjbGFzcz1cInRjLXJlZC01MDBcIiBpMThuPVwiQEB3YXJuaW5nT2xkRmlsZXNXaWxsQmVCdmVycmlkZGVuXCI+V2FybmluZzogb2xkIGZpbGVzIHdpbGwgYmUgb3ZlcnJpZGRlbjwvbWF0LWhpbnQ+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIEZpbGUgLS0+XHJcblx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiPlxyXG5cdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBmaWxlXCI+RmlsZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdDxkaXYgdmQtZmlsZS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgKHNlbGVjdCk9XCJ1cGxvYWQoJGV2ZW50KVwiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9kaXY+XHJcblx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cInBhZC10b3BcIj5cclxuXHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBjb2xvcj1cInByaW1hcnlcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHQ8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU1uRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsNEJBQXVEO0lBcUJuRzs7T0FFRztJQUNILFlBQ1csZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsS0FBcUIsRUFDckIsaUJBQW9DLEVBQ3ZDLFNBQWdELEVBQ3ZCLE9BQWlCLElBQUksUUFBUSxFQUFFO1FBRS9ELEtBQUssQ0FBQyxRQUFRLEVBQUUs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LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQsIFNhdmVBY3Rpb24gfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBDbXNTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9jbXMtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9kb2N1bWVudCc7XHJcbmltcG9ydCB7IERvY3VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvY3VtZW50LnNlcnZpY2VgJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZG9jdW1lbnQtZGlhbG9nJyxcclxuXHR0ZW1wbGF0ZVVybDogJ2RvY3VtZW50LWRpYWxvZy5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxEb2N1bWVudCwgRG9jdW1lbnRTZXJ2aWNlPiB7XHJcblx0LyoqXHJcblx0ICogVXBsb2FkIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc1VwbG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkIHByb2dyZXNzXHJcblx0ICovXHJcblx0cHVibGljIHVwbG9hZFByb2dyZXNzOiBudW1iZXIgPSAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGRpc2FibGUgc29tZSBwcm9wZXJ0aWVzIGZvciBjbGllbnQgbWFuYWdlclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudE1hbmFnZXIgPSBBdXRoSGVscGVyLmhhc1JvbGUoJ0NsaWVudEFkbWluaXN0cmF0b3InKSB8fCBBdXRoSGVscGVyLmhhc1JvbGUoJ0NsaWVudE1hbmFnZXInKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERvY3VtZW50RGlhbG9nQ29tcG9uZW50PixcclxuXHRcdEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoRG9jdW1lbnQsIGRvY3VtZW50U2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5pdGVtID0gZGF0YTtcclxuXHRcdHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldFNlcnZpY2UoQ21zU2V0dGluZ3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyBhIG5ldyBkb2N1bWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWQoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcblx0XHRpZiAoZmlsZSAhPSBudWxsICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uY2xpZW50SWQpIHtcclxuXHRcdFx0dGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XHJcblx0XHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGUgYXMgRmlsZSwgYHVwbG9hZGAsIHtcclxuXHRcdFx0XHRjbGllbnRJZDogdGhpcy5mb3JtPy52YWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0cGF0aDogdGhpcy5mb3JtPy52YWx1ZT8ucGF0aCxcclxuXHRcdFx0XHRpc1B1YmxpYzogdHJ1ZSxcclxuXHRcdFx0XHRwcmVzZXJ2ZU9yaWdpbmFsTmFtZTogdGhpcy5mb3JtPy52YWx1ZT8ucHJlc2VydmVPcmlnaW5hbE5hbWVcclxuXHRcdFx0fSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoZXZlbnQpID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSBwZXJjZW50RG9uZTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5mb3JtLnBhdGNoVmFsdWUoPERvY3VtZW50PmV2ZW50LmJvZHkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Y29tcGxldGU6ICgpID0+IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhZnRlciBkYXRhIHN1Ym1pdGlvblxyXG5cdCAqIEBwYXJhbSBhY3Rpb24gXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyU3VibWl0KGFjdGlvbjogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCByZXNwb25zZTogYW55ID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jYW5jZWwoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsb3NlcyB0aGUgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcblx0fVxyXG59IiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwibWF0LWhlYWRsaW5lLTZcIiBpMThuPVwiQEBuZXdEb2N1bWVudFwiPk5ldyBkb2N1bWVudDwvZGl2PlxyXG48Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcblx0PGRpdj5cclxuXHRcdDwhLS0gI3JlZ2lvbiBDbGllbnQtLT5cclxuXHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCIhaXNDbGllbnRNYW5hZ2VyXCI+XHJcblx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBjbGllbnRcIj5DbGllbnQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHQ8dmQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNsaWVudElkXCIgZW5kcG9pbnQ9XCJjbGllbnQ/ZW5hYmxlZD10cnVlXCIgcHJvamVjdGlvbj1cImlkLGRpc3BsYXlOYW1lXCIgdGV4dD1cImRpc3BsYXlOYW1lXCIgbGF5b3V0PVwiY29sdW1uXCIgZmxleD48L3ZkLXNlbGVjdD5cclxuXHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5jbGllbnRJZFsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIFBhdGggLS0+XHJcblx0XHQ8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiPlxyXG5cdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAdHlwZVwiPlR5cGU8L21hdC1sYWJlbD5cclxuXHRcdFx0XHQ8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXRoXCI+XHJcblx0XHRcdFx0XHQ8bWF0LW9wdGlvbiB2YWx1ZT1cImRvY3NcIj48c3BhbiBpMThuPVwiQEBkb2N1bWVudFwiPkRvY3VtZW50PC9zcGFuPjwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdDxtYXQtb3B0aW9uIHZhbHVlPVwiaW1hZ2VzXCI+PHNwYW4gaTE4bj1cIkBAaW1hZ2VcIj5JbWFnZTwvc3Bhbj48L21hdC1vcHRpb24+XHJcblx0XHRcdFx0XHQ8bWF0LW9wdGlvbiB2YWx1ZT1cInZpZGVvc1wiPjxzcGFuIGkxOG49XCJAQHZpZGVvXCI+VmlkZW88L3NwYW4+PC9tYXQtb3B0aW9uPlxyXG5cdFx0XHRcdDwvbWF0LXNlbGVjdD5cclxuXHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5wYXRoWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbi0tPlxyXG5cclxuXHRcdDwhLS0gI3JlZ2lvbiBQcmVzZXJ2ZU9yaWdpbmFsTmFtZSAtLT5cclxuXHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCIhaXNDbGllbnRNYW5hZ2VyXCI+XHJcblx0XHRcdDxkaXYgbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IG5hbWU9XCJwcmVzZXJ2ZU9yaWdpbmFsTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInByZXNlcnZlT3JpZ2luYWxOYW1lXCIgKGNoYW5nZSk9XCJpdGVtLm5hbWUgPSAnJ1wiIGkxOG49XCJAQHByZXNlcnZlT3JpZ2luYWxOYW1lXCI+UHJlc2VydmUgb3JpZ2luYWwgbmFtZTwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdDxiciAvPlxyXG5cdFx0XHRcdDxtYXQtaGludCAqbmdJZj1cImZvcm0/LnZhbHVlPy5wcmVzZXJ2ZU9yaWdpbmFsTmFtZVwiIGNsYXNzPVwidGMtcmVkLTUwMFwiIGkxOG49XCJAQHdhcm5pbmdPbGRGaWxlc1dpbGxCZUJ2ZXJyaWRkZW5cIj5XYXJuaW5nOiBvbGQgZmlsZXMgd2lsbCBiZSBvdmVycmlkZGVuPC9tYXQtaGludD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHQ8IS0tICNyZWdpb24gRmlsZSAtLT5cclxuXHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcblx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBmaWxlXCI+RmlsZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdDxkaXYgdmQtZmlsZS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgKHNlbGVjdCk9XCJ1cGxvYWQoJGV2ZW50KVwiIFtyZXF1aXJlZF09XCJ0cnVlXCI+PC9kaXY+XHJcblx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cInBhZC10b3BcIj5cclxuXHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBjb2xvcj1cInByaW1hcnlcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHQ8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
|