@dignite-ng/expand.cms 0.0.56 → 0.0.58

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.
Files changed (31) hide show
  1. package/config/components/domains/domains.component.d.ts +2 -0
  2. package/config/components/site-language/site-language.component.d.ts +1 -0
  3. package/esm2022/config/components/domains/domains.component.mjs +29 -14
  4. package/esm2022/config/components/site-language/site-language.component.mjs +12 -4
  5. package/esm2022/lib/cms.module.mjs +5 -2
  6. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +1 -1
  7. package/esm2022/lib/components/admin/entries/create.component.mjs +6 -4
  8. package/esm2022/lib/components/admin/entries/edit.component.mjs +4 -2
  9. package/esm2022/lib/components/admin/fields/create-field.component.mjs +5 -6
  10. package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +3 -3
  11. package/esm2022/lib/components/admin/fields/edit-field.component.mjs +10 -7
  12. package/esm2022/lib/components/admin/sections/create-or-edit-sections-modal.component.mjs +210 -0
  13. package/esm2022/lib/components/admin/sections/create-or-update-sections-input-base.mjs +4 -9
  14. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +19 -10
  15. package/esm2022/lib/components/admin/sections/sections.component.mjs +32 -193
  16. package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +3 -3
  17. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +3 -3
  18. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +3 -3
  19. package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +1 -1
  20. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +3 -3
  21. package/esm2022/lib/resolvers/page-default-toolbar-actions.mjs +2 -2
  22. package/fesm2022/dignite-ng-expand.cms-config.mjs +36 -15
  23. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -1
  24. package/fesm2022/dignite-ng-expand.cms.mjs +263 -216
  25. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
  26. package/lib/cms.module.d.ts +12 -11
  27. package/lib/components/admin/sections/create-or-edit-sections-modal.component.d.ts +49 -0
  28. package/lib/components/admin/sections/create-or-update-sections-input-base.d.ts +4 -1
  29. package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +10 -9
  30. package/lib/components/admin/sections/sections.component.d.ts +17 -36
  31. package/package.json +1 -1
@@ -0,0 +1,210 @@
1
+ import { LocalizationService } from '@abp/ng.core';
2
+ import { Component, EventEmitter, inject, Input, Output, ViewChild, } from '@angular/core';
3
+ import { FormControl, Validators, } from '@angular/forms';
4
+ import { ValidatorsService, UpdateListService } from '@dignite-ng/expand.core';
5
+ import { SectionType, sectionTypeOptions } from '../../../proxy/sections';
6
+ import { finalize } from 'rxjs';
7
+ import { SectionAdminService } from '../../../proxy/admin/sections';
8
+ import { ToasterService } from '@abp/ng.theme.shared';
9
+ import { CmsApiService } from '../../../services';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "@ngx-validate/core";
14
+ import * as i4 from "@abp/ng.theme.shared";
15
+ import * as i5 from "@abp/ng.core";
16
+ export class CreateOrEditSectionsModalComponent {
17
+ constructor() {
18
+ this._LocalizationService = inject(LocalizationService);
19
+ this.toaster = inject(ToasterService);
20
+ this._ValidatorsService = inject(ValidatorsService);
21
+ this._UpdateListService = inject(UpdateListService);
22
+ this._SectionAdminService = inject(SectionAdminService);
23
+ this._CmsApiService = inject(CmsApiService);
24
+ this._SectionType = SectionType;
25
+ this._sectionTypeOptions = sectionTypeOptions;
26
+ /**表单验证状态 */
27
+ this.formValidation = '';
28
+ /**模态框-状态-是否打开 */
29
+ this.ModalOpen = false;
30
+ /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */
31
+ this.ModalBusy = false;
32
+ /**初始值 */
33
+ this.selected = '';
34
+ this.visibleChange = new EventEmitter();
35
+ }
36
+ set visible(v) {
37
+ this.ModalOpen = v;
38
+ }
39
+ set formEntity(v) {
40
+ this.ModalForm = v;
41
+ if (v) {
42
+ this.selected = v?.value;
43
+ this.setAsyncValidatorsFn();
44
+ }
45
+ }
46
+ get idInput() {
47
+ return this.ModalForm?.get('id');
48
+ }
49
+ get displayNameInput() {
50
+ return this.ModalForm.get('displayName');
51
+ }
52
+ get nameInput() {
53
+ return this.ModalForm.get('name');
54
+ }
55
+ get routeInput() {
56
+ return this.ModalForm.get('route');
57
+ }
58
+ get templateInput() {
59
+ return this.ModalForm.get('template');
60
+ }
61
+ get typeInput() {
62
+ return this.ModalForm.get('type');
63
+ }
64
+ radiochange() {
65
+ this.routeInput.patchValue(this.routeInput.value);
66
+ }
67
+ /**模态框-状态改变回调 */
68
+ ModalVisibleChange(event) {
69
+ this.ModalOpen = event;
70
+ this.visibleChange.emit(event);
71
+ if (!event) {
72
+ return;
73
+ }
74
+ }
75
+ /**保存 */
76
+ save() {
77
+ this.formValidation = this._ValidatorsService.getFormValidationStatus(this.ModalForm);
78
+ if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))
79
+ return;
80
+ if (this.ModalBusy)
81
+ return;
82
+ this.ModalBusy = true;
83
+ if (!this.ModalForm.valid)
84
+ return;
85
+ let input = this.ModalForm.value;
86
+ if (this.idInput.value) {
87
+ this._SectionAdminService
88
+ .update(this.idInput.value, input)
89
+ .pipe(finalize(() => {
90
+ this.reset();
91
+ }))
92
+ .subscribe(res => {
93
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
94
+ this.visibleChange.emit(false);
95
+ this.formValidation = '';
96
+ });
97
+ return;
98
+ }
99
+ this._SectionAdminService
100
+ .create(input)
101
+ .pipe(finalize(() => {
102
+ this.reset();
103
+ }))
104
+ .subscribe(res => {
105
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
106
+ this.visibleChange.emit(false);
107
+ this.formValidation = '';
108
+ });
109
+ }
110
+ reset() {
111
+ this.ModalBusy = false;
112
+ this._UpdateListService.updateList();
113
+ }
114
+ disPlayNameInputBlur(event) {
115
+ let value = event.target.value;
116
+ let pinyin = this._CmsApiService.chineseToPinyin(value);
117
+ let nameInput = this.nameInput;
118
+ let routeInput = this.routeInput;
119
+ let templateInput = this.templateInput;
120
+ if (nameInput.value)
121
+ return;
122
+ nameInput.patchValue(pinyin);
123
+ if (routeInput.value)
124
+ return;
125
+ routeInput.patchValue(pinyin + (this.typeInput.value === 0 ? '' : '/{slug}'));
126
+ if (templateInput.value)
127
+ return;
128
+ templateInput.patchValue(pinyin + '/index');
129
+ }
130
+ setAsyncValidatorsFn() {
131
+ this.ModalForm?.setControl('name', new FormControl(this.nameInput.value || '', {
132
+ validators: Validators.required,
133
+ asyncValidators: this.nameRepetitionAsyncValidator(),
134
+ }));
135
+ this.ModalForm?.setControl('route', new FormControl(this.routeInput.value || '', {
136
+ validators: [Validators.required, this.forbiddenNameValidator()],
137
+ asyncValidators: [this.routeRepetitionAsyncValidator()],
138
+ updateOn: 'change',
139
+ }));
140
+ }
141
+ forbiddenNameValidator() {
142
+ return (control) => {
143
+ let inputValue = control.value.toLocaleLowerCase();
144
+ let forbidden = this.typeInput.value == 0 ? false : inputValue.includes('{slug}') ? false : true;
145
+ return forbidden
146
+ ? {
147
+ repetition: this._LocalizationService.instant(`Cms::RouteVerificationTips`, this._LocalizationService.instant(`Cms::Enum:SectionType:` + SectionType[this.typeInput.value]), '{slug}'),
148
+ }
149
+ : null;
150
+ };
151
+ }
152
+ nameRepetitionAsyncValidator() {
153
+ return (ctrl) => {
154
+ return new Promise(resolve => {
155
+ let subslug = this.ModalForm?.get('name');
156
+ if (subslug.value == this.selected?.name) {
157
+ resolve(null);
158
+ return;
159
+ }
160
+ this._SectionAdminService.nameExists({ name: subslug.value }).subscribe(res => {
161
+ if (res) {
162
+ resolve({
163
+ repetition: this._LocalizationService.instant(`Cms::SectionName{0}AlreadyExist`, ctrl.value),
164
+ });
165
+ }
166
+ else {
167
+ resolve(null);
168
+ }
169
+ });
170
+ });
171
+ };
172
+ }
173
+ routeRepetitionAsyncValidator() {
174
+ return (ctrl) => {
175
+ return new Promise(resolve => {
176
+ let subslug = this.ModalForm?.get('route').value;
177
+ if (subslug == this.selected?.route) {
178
+ resolve(null);
179
+ return;
180
+ }
181
+ this._SectionAdminService.routeExists({ route: subslug }).subscribe(res => {
182
+ if (res) {
183
+ resolve({
184
+ repetition: this._LocalizationService.instant(`Cms::SectionRoute{0}AlreadyExist`, ctrl.value),
185
+ });
186
+ }
187
+ else {
188
+ resolve(null);
189
+ }
190
+ });
191
+ });
192
+ };
193
+ }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditSectionsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: CreateOrEditSectionsModalComponent, selector: "cms-create-or-edit-sections-modal", inputs: { visible: "visible", formEntity: "formEntity" }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "ModalFormSubmit", first: true, predicate: ["ModalFormSubmit"], descendants: true }], ngImport: i0, template: "<abp-modal [(visible)]=\"ModalOpen\" [busy]=\"ModalBusy\" (visibleChange)=\"ModalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"ModalForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" [formGroup]=\"ModalForm\" (keydown.enter)=\"$event.preventDefault()\"\r\n [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\r\n <div>\r\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\r\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\r\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\r\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\r\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\r\n {{routeInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block\">\r\n {{'Cms::RouteTips' | abpLocalization}}<br>\r\n &nbsp;&nbsp;blog<br>\r\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\r\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\r\n <small class=\"form-text text-muted d-block\">\r\n {{\"Cms::TemplateTips\" | abpLocalization}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\r\n id=\"isDefault\" />\r\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\r\n id=\"isActive\" />\r\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" type=\"button\" [loading]=\"ModalBusy\" [disabled]=\"ModalBusy\"\r\n (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i4.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i4.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] }); }
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditSectionsModalComponent, decorators: [{
198
+ type: Component,
199
+ args: [{ selector: 'cms-create-or-edit-sections-modal', template: "<abp-modal [(visible)]=\"ModalOpen\" [busy]=\"ModalBusy\" (visibleChange)=\"ModalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"ModalForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" [formGroup]=\"ModalForm\" (keydown.enter)=\"$event.preventDefault()\"\r\n [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\r\n <div>\r\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\r\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\r\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\r\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\r\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\r\n {{routeInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block\">\r\n {{'Cms::RouteTips' | abpLocalization}}<br>\r\n &nbsp;&nbsp;blog<br>\r\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\r\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\r\n <small class=\"form-text text-muted d-block\">\r\n {{\"Cms::TemplateTips\" | abpLocalization}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\r\n id=\"isDefault\" />\r\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\r\n id=\"isActive\" />\r\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" type=\"button\" [loading]=\"ModalBusy\" [disabled]=\"ModalBusy\"\r\n (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>" }]
200
+ }], propDecorators: { visible: [{
201
+ type: Input
202
+ }], formEntity: [{
203
+ type: Input
204
+ }], ModalFormSubmit: [{
205
+ type: ViewChild,
206
+ args: ['ModalFormSubmit', { static: false }]
207
+ }], visibleChange: [{
208
+ type: Output
209
+ }] } });
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL3NlY3Rpb25zL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFJWCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT2xELE1BQU0sT0FBTyxrQ0FBa0M7SUFML0M7UUFNVSx5QkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCxZ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LEdBQUcsQ0FBQyxFQUFFO29CQUN4RSxJQUFJLEdBQUcsRUFBRSxDQUFDO3dCQUNSLE9BQU8sQ0FBQzs0QkFDTixVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FDM0Msa0NBQWtDLEVBQ2xDLElBQUksQ0FBQyxLQUFLLENBQ1g7eUJBQ0YsQ0FBQyxDQUFDO29CQUNMLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBL01VLGtDQUFrQztrR0FBbEMsa0NBQWtDLG9TQzlCL0Msc3JLQWdGWTs7MkZEbERDLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxtQ0FBbUM7OEJBbUJsQyxPQUFPO3NCQURqQixLQUFLO2dCQVlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBK0IyQyxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDckMsYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlLCBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcclxuaW1wb3J0IHsgU2VjdGlvblR5cGUsIHNlY3Rpb25UeXBlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L3NlY3Rpb25zJztcclxuaW1wb3J0IHsgZmluYWxpemUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VjdGlvbkFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL3NlY3Rpb25zJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IENtc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Ntcy1jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JFZGl0U2VjdGlvbnNNb2RhbENvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9VcGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZSA9IGluamVjdChTZWN0aW9uQWRtaW5TZXJ2aWNlKTtcclxuICBwcml2YXRlIF9DbXNBcGlTZXJ2aWNlID0gaW5qZWN0KENtc0FwaVNlcnZpY2UpO1xyXG4gIF9TZWN0aW9uVHlwZSA9IFNlY3Rpb25UeXBlO1xyXG4gIF9zZWN0aW9uVHlwZU9wdGlvbnMgPSBzZWN0aW9uVHlwZU9wdGlvbnM7XHJcbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBICovXHJcbiAgZm9ybVZhbGlkYXRpb246IGFueSA9ICcnO1xyXG4gXHJcbiAgLyoq5qih5oCB5qGGLeeKtuaAgS3mmK/lkKbmiZPlvIAgKi9cclxuICBNb2RhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmlzaWJsZSh2OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLk1vZGFsT3BlbiA9IHY7XHJcbiAgfVxyXG5cclxuICAvKirmqKHmgIHmoYYt57mB5b+Z54q25oCBLeeUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xyXG4gIE1vZGFsQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKuWIneWni+WAvCAqL1xyXG4gIHNlbGVjdGVkOiBhbnkgPSAnJztcclxuICAvKirmqKHmgIHmoYYt6KGo5Y2VICovXHJcbiAgTW9kYWxGb3JtOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZvcm1FbnRpdHkodjogRm9ybUdyb3VwIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLk1vZGFsRm9ybSA9IHY7XHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gdj8udmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzRm4oKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGlkSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0/LmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IGRpc3BsYXlOYW1lSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0uZ2V0KCdkaXNwbGF5TmFtZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuICBnZXQgbmFtZUlucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtLmdldCgnbmFtZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuICBnZXQgcm91dGVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ3JvdXRlJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIGdldCB0ZW1wbGF0ZUlucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtLmdldCgndGVtcGxhdGUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IHR5cGVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ3R5cGUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgcmFkaW9jaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLnJvdXRlSW5wdXQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoq5qih5oCB5qGGLeihqOWNlS0t5o6n5Lu25qih5p2/LeWKqOaAgei1i+WAvOihqOWNleaOp+S7tiAqL1xyXG4gIEBWaWV3Q2hpbGQoJ01vZGFsRm9ybVN1Ym1pdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBNb2RhbEZvcm1TdWJtaXQ6IEVsZW1lbnRSZWY7XHJcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoq5qih5oCB5qGGLeeKtuaAgeaUueWPmOWbnuiwgyAqL1xyXG4gIE1vZGFsVmlzaWJsZUNoYW5nZShldmVudCkge1xyXG4gICAgdGhpcy5Nb2RhbE9wZW4gPSBldmVudDtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICAgIGlmICghZXZlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKirkv53lrZggKi9cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuTW9kYWxGb3JtKTtcclxuICAgIGlmICh0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5pc0NoZWNrRm9ybSh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5Nb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMuTW9kYWxCdXN5ID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5Nb2RhbEZvcm0udmFsaWQpIHJldHVybjtcclxuICAgIGxldCBpbnB1dCA9IHRoaXMuTW9kYWxGb3JtLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaWRJbnB1dC52YWx1ZSkge1xyXG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXHJcbiAgICAgICAgLnVwZGF0ZSh0aGlzLmlkSW5wdXQudmFsdWUsIGlucHV0KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZVxyXG4gICAgICAuY3JlYXRlKGlucHV0KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICByZXNldCgpe1xyXG4gICAgdGhpcy5Nb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHRoaXMuX1VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcclxuICB9XHJcblxyXG4gICAgZGlzUGxheU5hbWVJbnB1dEJsdXIoZXZlbnQpIHtcclxuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGxldCBwaW55aW4gPSB0aGlzLl9DbXNBcGlTZXJ2aWNlLmNoaW5lc2VUb1Bpbnlpbih2YWx1ZSk7XHJcbiAgICBsZXQgbmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXQ7XHJcbiAgICBsZXQgcm91dGVJbnB1dCA9IHRoaXMucm91dGVJbnB1dDtcclxuICAgIGxldCB0ZW1wbGF0ZUlucHV0ID0gdGhpcy50ZW1wbGF0ZUlucHV0O1xyXG4gICAgaWYgKG5hbWVJbnB1dC52YWx1ZSkgcmV0dXJuO1xyXG4gICAgbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKTtcclxuICAgIGlmIChyb3V0ZUlucHV0LnZhbHVlKSByZXR1cm47XHJcbiAgICByb3V0ZUlucHV0LnBhdGNoVmFsdWUocGlueWluICsgKHRoaXMudHlwZUlucHV0LnZhbHVlID09PSAwID8gJycgOiAnL3tzbHVnfScpKTtcclxuICAgIGlmICh0ZW1wbGF0ZUlucHV0LnZhbHVlKSByZXR1cm47XHJcbiAgICB0ZW1wbGF0ZUlucHV0LnBhdGNoVmFsdWUocGlueWluICsgJy9pbmRleCcpO1xyXG4gIH1cclxuXHJcbiAgc2V0QXN5bmNWYWxpZGF0b3JzRm4oKSB7XHJcbiAgICB0aGlzLk1vZGFsRm9ybT8uc2V0Q29udHJvbChcclxuICAgICAgJ25hbWUnLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5uYW1lSW5wdXQudmFsdWUgfHwgJycsIHtcclxuICAgICAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yczogdGhpcy5uYW1lUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5Nb2RhbEZvcm0/LnNldENvbnRyb2woXHJcbiAgICAgICdyb3V0ZScsXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbCh0aGlzLnJvdXRlSW5wdXQudmFsdWUgfHwgJycsIHtcclxuICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5mb3JiaWRkZW5OYW1lVmFsaWRhdG9yKCldLFxyXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yczogW3RoaXMucm91dGVSZXBldGl0aW9uQXN5bmNWYWxpZGF0b3IoKV0sXHJcbiAgICAgICAgdXBkYXRlT246ICdjaGFuZ2UnLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgZm9yYmlkZGVuTmFtZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgbGV0IGlucHV0VmFsdWUgPSBjb250cm9sLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgIGxldCBmb3JiaWRkZW4gPVxyXG4gICAgICAgIHRoaXMudHlwZUlucHV0LnZhbHVlID09IDAgPyBmYWxzZSA6IGlucHV0VmFsdWUuaW5jbHVkZXMoJ3tzbHVnfScpID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICByZXR1cm4gZm9yYmlkZGVuXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICAgICBgQ21zOjpSb3V0ZVZlcmlmaWNhdGlvblRpcHNgLFxyXG4gICAgICAgICAgICAgIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICAgICAgIGBDbXM6OkVudW06U2VjdGlvblR5cGU6YCArIFNlY3Rpb25UeXBlW3RoaXMudHlwZUlucHV0LnZhbHVlXVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgJ3tzbHVnfSdcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuICBuYW1lUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY3RybDogQWJzdHJhY3RDb250cm9sXHJcbiAgICApOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgIGxldCBzdWJzbHVnID0gdGhpcy5Nb2RhbEZvcm0/LmdldCgnbmFtZScpO1xyXG5cclxuICAgICAgICBpZiAoc3Vic2x1Zy52YWx1ZSA9PSB0aGlzLnNlbGVjdGVkPy5uYW1lKSB7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLm5hbWVFeGlzdHMoeyBuYW1lOiBzdWJzbHVnLnZhbHVlIH0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBgQ21zOjpTZWN0aW9uTmFtZXswfUFscmVhZHlFeGlzdGAsXHJcbiAgICAgICAgICAgICAgICBjdHJsLnZhbHVlXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgfVxyXG4gIHJvdXRlUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY3RybDogQWJzdHJhY3RDb250cm9sXHJcbiAgICApOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgIGxldCBzdWJzbHVnID0gdGhpcy5Nb2RhbEZvcm0/LmdldCgncm91dGUnKS52YWx1ZTtcclxuICAgICAgICBpZiAoc3Vic2x1ZyA9PSB0aGlzLnNlbGVjdGVkPy5yb3V0ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5yb3V0ZUV4aXN0cyh7IHJvdXRlOiBzdWJzbHVnIH0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBgQ21zOjpTZWN0aW9uUm91dGV7MH1BbHJlYWR5RXhpc3RgLFxyXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiTW9kYWxPcGVuXCIgW2J1c3ldPVwiTW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwiTW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgICAgIDxoMz57e3NlbGVjdGVkPygnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uKTooJ0Ntczo6TmV3JyB8IGFicExvY2FsaXphdGlvbil9fTwvaDM+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTW9kYWxGb3JtOyBlbHNlIGxvYWRlclJlZlwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiBbZm9ybUdyb3VwXT1cIk1vZGFsRm9ybVwiIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjTW9kYWxGb3JtU3VibWl0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpFbnRyeVR5cGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX3NlY3Rpb25UeXBlT3B0aW9ucztsZXQgaSA9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJyYWRpb2NoYW5nZSgpXCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiIGlkPVwiZmxleFJhZGlvRGVmYXVsdHt7aX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhSYWRpb0RlZmF1bHR7e2l9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQ21zOjpFbnVtOlNlY3Rpb25UeXBlOicraXRlbS5rZXkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiZGlzUGxheU5hbWVJbnB1dEJsdXIoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cIm5hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYW1lSW5wdXQuZXJyb3JzPy5yZXBldGl0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpSb3V0ZScgfCBhYnBMb2NhbGl6YXRpb259fSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicm91dGVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInJvdXRlSW5wdXQuZXJyb3JzPy5yZXBldGl0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cm91dGVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LW11dGVkIGQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQ21zOjpSb3V0ZVRpcHMnIHwgYWJwTG9jYWxpemF0aW9ufX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO2Jsb2c8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO3t7J2Jsb2cve3NsdWd9J319PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDt7eydibG9nL3twdWJsaXNoVGltZTp5eXl5fS97cHVibGlzaFRpbWU6TU19L3tzbHVnfSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6VGVtcGxhdGUnIHwgYWJwTG9jYWxpemF0aW9ufX0gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInRlbXBsYXRlXCIgcGxhY2Vob2xkZXI9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LW11dGVkIGQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tcIkNtczo6VGVtcGxhdGVUaXBzXCIgfCBhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cImlzRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlzRGVmYXVsdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJpc0RlZmF1bHRcIj4ge3snQ21zOjpEZWZhdWx0JyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cImlzQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNBY3RpdmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaXNBY3RpdmVcIj4ge3snQ21zOjpJc0FjdGl2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT57eydBYnBVaTo6Q2xvc2UnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIHR5cGU9XCJidXR0b25cIiBbbG9hZGluZ109XCJNb2RhbEJ1c3lcIiBbZGlzYWJsZWRdPVwiTW9kYWxCdXN5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIk1vZGFsRm9ybVN1Ym1pdD8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiPnt7J0FicFVpOjpTYXZlJ3xhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Validators } from "@angular/forms";
2
2
  export class CreateOrUpdateSectionsInputBase {
3
- constructor(data) {
3
+ constructor() {
4
+ this.id = [''];
4
5
  /**版块类型 */
5
6
  this.type = [0, [Validators.required]];
6
7
  /**字段名称 Display name of this field */
@@ -15,13 +16,7 @@ export class CreateOrUpdateSectionsInputBase {
15
16
  this.isDefault = [false, []];
16
17
  /**是否激活 */
17
18
  this.isActive = [true, []];
18
- if (data) {
19
- for (const key in data) {
20
- if (data.hasOwnProperty(key)) {
21
- this[key] = data[key];
22
- }
23
- }
24
- }
19
+ this.concurrencyStamp = [''];
25
20
  }
26
21
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLXVwZGF0ZS1zZWN0aW9ucy1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9jcmVhdGUtb3ItdXBkYXRlLXNlY3Rpb25zLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sT0FBTywrQkFBK0I7SUFrQnhDLFlBQVksSUFBc0M7UUFqQmxELFVBQVU7UUFDVixTQUFJLEdBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN2QyxxQ0FBcUM7UUFDckMsZ0JBQVcsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQy9DLHVCQUF1QjtRQUN2QixTQUFJLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVO1FBQ1YsVUFBSyxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDekMsVUFBVTtRQUNWLGFBQVEsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVDLFVBQVU7UUFDVixjQUFTLEdBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsVUFBVTtRQUNWLGFBQVEsR0FBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUt2QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUVMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQge1ZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVPclVwZGF0ZVNlY3Rpb25zSW5wdXRCYXNlIHtcclxuICAgIC8qKueJiOWdl+exu+WeiyAqL1xyXG4gICAgdHlwZTogYW55ID0gWzAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirlrZfmrrXlkI3np7AgRGlzcGxheSBuYW1lIG9mIHRoaXMgZmllbGQgKi9cclxuICAgIGRpc3BsYXlOYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirlrZfmrrXllK/kuIDlkI3np7AgVW5pcXVlIE5hbWUqL1xyXG4gICAgbmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq5p2h55uu6Lev55SxICovXHJcbiAgICByb3V0ZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq6aG16Z2i5qih5p2/ICovXHJcbiAgICB0ZW1wbGF0ZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq5piv5ZCm6buY6K6kICovXHJcbiAgICBpc0RlZmF1bHQ6IGFueSA9IFtmYWxzZSwgW11dO1xyXG4gICAgLyoq5piv5ZCm5r+A5rS7ICovXHJcbiAgICBpc0FjdGl2ZTogYW55ID0gW3RydWUsIFtdXTtcclxuICAgXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBDcmVhdGVPclVwZGF0ZVNlY3Rpb25zSW5wdXRCYXNlKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn0iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLXVwZGF0ZS1zZWN0aW9ucy1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9jcmVhdGUtb3ItdXBkYXRlLXNlY3Rpb25zLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sT0FBTywrQkFBK0I7SUFrQnhDO1FBakJBLE9BQUUsR0FBMEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxVQUFVO1FBQ1YsU0FBSSxHQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdkMscUNBQXFDO1FBQ3JDLGdCQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvQyx1QkFBdUI7UUFDdkIsU0FBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEMsVUFBVTtRQUNWLFVBQUssR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFVBQVU7UUFDVixhQUFRLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1QyxVQUFVO1FBQ1YsY0FBUyxHQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLFVBQVU7UUFDVixhQUFRLEdBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0IscUJBQWdCLEdBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFaEMsQ0FBQztDQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQge1ZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVPclVwZGF0ZVNlY3Rpb25zSW5wdXRCYXNlIHtcclxuICAgIGlkOiBzdHJpbmcgfCBWYWxpZGF0b3JzW10gPSBbJyddO1xyXG4gICAgLyoq54mI5Z2X57G75Z6LICovXHJcbiAgICB0eXBlOiBhbnkgPSBbMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWQjeensCBEaXNwbGF5IG5hbWUgb2YgdGhpcyBmaWVsZCAqL1xyXG4gICAgZGlzcGxheU5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWUr+S4gOWQjeensCBVbmlxdWUgTmFtZSovXHJcbiAgICBuYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirmnaHnm67ot6/nlLEgKi9cclxuICAgIHJvdXRlOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirpobXpnaLmqKHmnb8gKi9cclxuICAgIHRlbXBsYXRlOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirmmK/lkKbpu5jorqQgKi9cclxuICAgIGlzRGVmYXVsdDogYW55ID0gW2ZhbHNlLCBbXV07XHJcbiAgICAvKirmmK/lkKbmv4DmtLsgKi9cclxuICAgIGlzQWN0aXZlOiBhbnkgPSBbdHJ1ZSwgW11dO1xyXG4gICAgY29uY3VycmVuY3lTdGFtcDogc3RyaW5nIHwgVmFsaWRhdG9yc1tdID0gWycnXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcbn0iXX0=