@dignite-ng/expand.cms 3.0.0-rc.38 → 3.0.0-rc.40

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 (26) hide show
  1. package/esm2022/lib/cms.module.mjs +1 -1
  2. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +55 -10
  3. package/esm2022/lib/components/admin/entries/create.component.mjs +53 -10
  4. package/esm2022/lib/components/admin/entries/edit.component.mjs +106 -4
  5. package/esm2022/lib/components/admin/entries/entries.component.mjs +7 -4
  6. package/esm2022/lib/components/admin/fields/create-field.component.mjs +10 -1
  7. package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +3 -10
  8. package/esm2022/lib/components/admin/fields/fields.component.mjs +35 -22
  9. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +116 -49
  10. package/esm2022/lib/components/admin/sections/sections.component.mjs +3 -3
  11. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +22 -6
  12. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +13 -8
  13. package/esm2022/lib/resolvers/table-default-entity-props.mjs +12 -1
  14. package/esm2022/lib/services/field-abstracts.service.mjs +8 -4
  15. package/fesm2022/dignite-ng-expand.cms.mjs +410 -105
  16. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
  17. package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +19 -2
  18. package/lib/components/admin/entries/create.component.d.ts +8 -0
  19. package/lib/components/admin/entries/edit.component.d.ts +6 -0
  20. package/lib/components/admin/fields/create-field.component.d.ts +5 -3
  21. package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +1 -2
  22. package/lib/components/admin/fields/fields.component.d.ts +10 -7
  23. package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +6 -4
  24. package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +2 -0
  25. package/lib/services/field-abstracts.service.d.ts +2 -1
  26. package/package.json +1 -1
@@ -45,6 +45,10 @@ export class CreateComponent {
45
45
  this.entryVersionId = '';
46
46
  /**条目信息 */
47
47
  this.entryInfo = '';
48
+ /**是否创建其他语言版本 */
49
+ this.isOther = 0;
50
+ /**显示条目类型信息 */
51
+ this.showEntryTypeInfo = '';
48
52
  this.isSubmit = false;
49
53
  }
50
54
  /**是否草稿控件*/
@@ -61,10 +65,11 @@ export class CreateComponent {
61
65
  this.entryTypeId = queryParams.entryTypeId;
62
66
  this.sectionId = queryParams.sectionId;
63
67
  this.entryVersionId = queryParams.entryVersionId;
68
+ this.isOther = queryParams.isOther;
64
69
  this.formEntity = this.fb.group(new CreateOrUpdateEntryInputBase());
70
+ this.cultureInput.patchValue(this.cultureName);
65
71
  if (this.entryVersionId)
66
72
  await this.getEntryInfo();
67
- this.cultureInput.patchValue(this.cultureName);
68
73
  }
69
74
  /**获取条目信息 */
70
75
  getEntryInfo() {
@@ -78,15 +83,54 @@ export class CreateComponent {
78
83
  });
79
84
  });
80
85
  }
86
+ /**反馈子级页面信息 */
87
+ _feedbackChildInfo(event) {
88
+ this.showEntryTypeInfo = event?.showEntryType || '';
89
+ }
90
+ /**当返回结果为true时表示未通过验证 */
91
+ isCheckFormCms(input, module) {
92
+ for (const key in input) {
93
+ if (input[key] === false) {
94
+ let info = `"${this._LocalizationService.instant(`${module}::${key}`)}" `;
95
+ //检查key中是否含有ExtraProperties.
96
+ if (key.includes('ExtraProperties.')) {
97
+ const arr = key.split('.');
98
+ const keyName = arr[1];
99
+ //将keyName的首字母转为小写
100
+ const keyNameLower = keyName.charAt(0).toLowerCase() + keyName.slice(1);
101
+ if (this.showEntryTypeInfo && this.showEntryTypeInfo.fieldTabs.length > 0) {
102
+ for (const item of this.showEntryTypeInfo.fieldTabs) {
103
+ for (const el of item.fields) {
104
+ if (el.field.name == keyNameLower) {
105
+ // info = `"${this._LocalizationService.instant(`${module}::${item.name}下的${el.field.displayName}字段`)}"`;
106
+ info = `${this._LocalizationService.instant(`${module}::The{1}FieldUnderThe{0}TAB`, item.name, el.field.displayName)}`;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);
113
+ //使用abp多语言提示
114
+ this.toaster.warn(info);
115
+ return true;
116
+ }
117
+ }
118
+ return false;
119
+ }
81
120
  /**提交 */
82
121
  save() {
122
+ const input = this.formEntity?.value;
83
123
  this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);
84
- if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) {
124
+ if (this.isCheckFormCms(this.formValidation, 'Cms')) {
85
125
  this.isSubmit = false;
86
126
  return this.cultureInput.disable();
87
127
  }
88
- const input = this.formEntity?.value;
89
- input.culture = this.cultureName;
128
+ // if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) {
129
+ // // this.isSubmit = false;
130
+ // // return this.cultureInput.disable();
131
+ // }
132
+ // return;
133
+ // input.culture = this.cultureName;
90
134
  input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
91
135
  if (!this.formEntity.valid)
92
136
  return;
@@ -103,9 +147,8 @@ export class CreateComponent {
103
147
  }
104
148
  /**点击提交 */
105
149
  clickSubmit(type) {
106
- if (this.isSubmit)
107
- return;
108
- this.isSubmit = true;
150
+ // if (this.isSubmit) return;
151
+ // this.isSubmit = true;
109
152
  this.draftInput.patchValue(type);
110
153
  this.cultureInput.enable();
111
154
  this.submitclick?.nativeElement?.click();
@@ -120,7 +163,7 @@ export class CreateComponent {
120
163
  provide: EXTENSIONS_IDENTIFIER,
121
164
  useValue: ECmsComponent.Entries_Create,
122
165
  },
123
- ], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\"\r\n [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>", styles: [""], dependencies: [{ 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.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: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i5.CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: ["isEdit", "isCreateVersion", "sectionId", "entryTypeId", "select", "entity"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] }); }
166
+ ], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [isOther]=\"isOther\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\"\r\n [isEdit]=\"false\" [select]=\"entryInfo\" [isOther]=\"isOther\"\r\n [entity]=\"formEntity\" ></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>", styles: [""], dependencies: [{ 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.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: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i5.CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: ["isEdit", "isCreateVersion", "sectionId", "entryTypeId", "select", "entity", "isOther"], outputs: ["feedbackChildInfo"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] }); }
124
167
  }
125
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateComponent, decorators: [{
126
169
  type: Component,
@@ -129,9 +172,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
129
172
  provide: EXTENSIONS_IDENTIFIER,
130
173
  useValue: ECmsComponent.Entries_Create,
131
174
  },
132
- ], template: "<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\"\r\n [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>" }]
175
+ ], template: "<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [isOther]=\"isOther\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\"\r\n [isEdit]=\"false\" [select]=\"entryInfo\" [isOther]=\"isOther\"\r\n [entity]=\"formEntity\" ></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>" }]
133
176
  }], propDecorators: { submitclick: [{
134
177
  type: ViewChild,
135
178
  args: ['submitclick', { static: true }]
136
179
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxvRUFBb0U7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7O0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBWDVC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QyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0F4R1UsZUFBZTtrR0FBZixlQUFlLHFDQVBmO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxjQUFjO2FBQ3ZDO1NBQ0Ysb0pDeEJILG9nQ0FlVzs7MkZEV0UsZUFBZTtrQkFYM0IsU0FBUzsrQkFDRSxZQUFZLGFBR1g7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxjQUFjO3lCQUN2QztxQkFDRjs4QkFhMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuLy8gaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlIH0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLWVudHJ5LWlucHV0LWJhc2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yc1NlcnZpY2UsIFVwZGF0ZUxpc3RTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZW50cmllcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1jcmVhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkVudHJpZXNfQ3JlYXRlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICBwcml2YXRlIF91cGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RlciA9IGluamVjdChUb2FzdGVyU2VydmljZSk7XG4gIHB1YmxpYyBfbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBfRW50cnlBZG1pblNlcnZpY2UgPSBpbmplY3QoRW50cnlBZG1pblNlcnZpY2UpO1xuICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIF9WYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChWYWxpZGF0b3JzU2VydmljZSk7XG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgLyoq6K+t6KiAICovXG4gIGN1bHR1cmVOYW1lOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu57G75Z6LaWQgKi9cbiAgZW50cnlUeXBlSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirniYjlnZdpZCAqL1xuICBzZWN0aW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67niYjmnKxpZCAqL1xuICBlbnRyeVZlcnNpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebruS/oeaBryAqL1xuICBlbnRyeUluZm86IGFueSA9ICcnO1xuXG4gIC8qKuaYr+WQpuiNieeov+aOp+S7tiovXG4gIGdldCBkcmFmdElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnZHJhZnQnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuICAvKiror63oqIDmjqfku7YgKi9cbiAgZ2V0IGN1bHR1cmVJbnB1dCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdjdWx0dXJlJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICB0aGlzLmN1bHR1cmVOYW1lID0gcXVlcnlQYXJhbXMuY3VsdHVyZU5hbWU7XG4gICAgdGhpcy5lbnRyeVR5cGVJZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VHlwZUlkO1xuICAgIHRoaXMuc2VjdGlvbklkID0gcXVlcnlQYXJhbXMuc2VjdGlvbklkO1xuICAgIHRoaXMuZW50cnlWZXJzaW9uSWQgPSBxdWVyeVBhcmFtcy5lbnRyeVZlcnNpb25JZDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIGlmICh0aGlzLmVudHJ5VmVyc2lvbklkKSBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJ5VmVyc2lvbklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuXG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKuaPkOS6pCAqL1xuICBzYXZlKCkge1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIGlmICh0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5pc0NoZWNrRm9ybSh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpIHtcbiAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRW50aXR5Py52YWx1ZTtcbiAgICBpbnB1dC5jdWx0dXJlID0gdGhpcy5jdWx0dXJlTmFtZTtcbiAgICBpbnB1dC5wdWJsaXNoVGltZSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUoaW5wdXQucHVibGlzaFRpbWUpLmdldFRpbWUoKSArIDggKiA2MCAqIDYwICogMTAwMCxcbiAgICApLnRvSVNPU3RyaW5nKCk7XG4gICAgaWYgKCF0aGlzLmZvcm1FbnRpdHkudmFsaWQpIHJldHVybjtcbiAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZVxuICAgICAgLmNyZWF0ZShpbnB1dClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XG4gICAgICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgICAgfSk7XG4gIH1cbiAgaXNTdWJtaXQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq54K55Ye75o+Q5LqkICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMuZHJhZnRJbnB1dC5wYXRjaFZhbHVlKHR5cGUpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gIH1cblxuICAvKirov5Tlm57kuIrkuIDpobUgKi9cbiAgYmFja1RvKCkge1xuICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInQ21zOjpOZXcnfCBhYnBMb2NhbGl6YXRpb25cIiBbdG9vbGJhcl09XCJ0cnVlXCI+XHJcbiAgICA8Zm9ybSBjbGFzcz1cInJvdyBnLTMgbmVlZHMtdmFsaWRhdGlvblwiIFtmb3JtR3JvdXBdPVwiZm9ybUVudGl0eVwiIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiXHJcbiAgICAgICAgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRW50aXR5JiZzZWN0aW9uSWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVudHJ5VmVyc2lvbklkOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgW2lzRWRpdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdF09XCJlbnRyeUluZm9cIiBbaXNDcmVhdGVWZXJzaW9uXT1cInRydWVcIiBbZW50aXR5XT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiPjwvY21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXM+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Zvcm0+XHJcbjwvYWJwLXBhZ2U+Il19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxvRUFBb0U7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7O0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBWDVC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LGVBQWU7a0JBWDNCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzt5QkFDdkM7cUJBQ0Y7OEJBYTJDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBEYXRlUGlwZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbi8vIGltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSB9IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlLCBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5FbnRyaWVzX0NyZWF0ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xuICBwdWJsaWMgX2xvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlID0gaW5qZWN0KEVudHJ5QWRtaW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdG9yc1NlcnZpY2UpO1xuXG4gIC8qKuiOt+WPluaPkOS6pOaMiemSruabv+i6q++8jOeUqOS6juecn+WunuinpuWPkeihqOWNleaPkOS6pCAqL1xuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIC8qKuihqOWNlemqjOivgeeKtuaAgVxuICAgKiB7XG4gICAqICB0aXRsZTp0cnVlLFxuICAgKiB9XG4gICAqL1xuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIC8qKuivreiogCAqL1xuICBjdWx0dXJlTmFtZTogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebruexu+Wei2lkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq54mI5Z2XaWQgKi9cbiAgc2VjdGlvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu54mI5pysaWQgKi9cbiAgZW50cnlWZXJzaW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcbiAgLyoq5piv5ZCm5Yib5bu65YW25LuW6K+t6KiA54mI5pysICovXG4gIGlzT3RoZXI6IHN0cmluZyB8IGFueSA9IDA7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgIHRoaXMuY3VsdHVyZU5hbWUgPSBxdWVyeVBhcmFtcy5jdWx0dXJlTmFtZTtcbiAgICB0aGlzLmVudHJ5VHlwZUlkID0gcXVlcnlQYXJhbXMuZW50cnlUeXBlSWQ7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBxdWVyeVBhcmFtcy5zZWN0aW9uSWQ7XG4gICAgdGhpcy5lbnRyeVZlcnNpb25JZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VmVyc2lvbklkO1xuICAgIHRoaXMuaXNPdGhlciA9IHF1ZXJ5UGFyYW1zLmlzT3RoZXI7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5wYXRjaFZhbHVlKHRoaXMuY3VsdHVyZU5hbWUpO1xuICAgIGlmICh0aGlzLmVudHJ5VmVyc2lvbklkKSBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICB9XG4gIC8qKuiOt+WPluadoeebruS/oeaBryAqL1xuICBnZXRFbnRyeUluZm8oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXQodGhpcy5lbnRyeVZlcnNpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY3VsdHVyZU5hbWUgPSByZXMuY3VsdHVyZTtcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVJZCA9IHJlcy5lbnRyeVR5cGVJZDtcbiAgICAgICAgdGhpcy5zZWN0aW9uSWQgPSByZXMuc2VjdGlvbklkO1xuICAgICAgICB0aGlzLmVudHJ5SW5mbyA9IHJlcztcblxuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKirmmL7npLrmnaHnm67nsbvlnovkv6Hmga8gKi9cbiAgc2hvd0VudHJ5VHlwZUluZm86YW55PScnO1xuICAvKirlj43ppojlrZDnuqfpobXpnaLkv6Hmga8gKi9cbiAgX2ZlZWRiYWNrQ2hpbGRJbmZvKGV2ZW50KXtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvPWV2ZW50Py5zaG93RW50cnlUeXBlfHwnJztcbiAgfVxuICAvKirlvZPov5Tlm57nu5PmnpzkuLp0cnVl5pe26KGo56S65pyq6YCa6L+H6aqM6K+BICovXG4gIGlzQ2hlY2tGb3JtQ21zKGlucHV0LCBtb2R1bGUpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgaWYgKGlucHV0W2tleV0gPT09IGZhbHNlKSB7XG4gICAgICAgIGxldCBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtrZXl9YCl9XCIgYDtcbiAgICAgICAgLy/mo4Dmn6VrZXnkuK3mmK/lkKblkKvmnIlFeHRyYVByb3BlcnRpZXMuXG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ0V4dHJhUHJvcGVydGllcy4nKSkge1xuICAgICAgICAgIGNvbnN0IGFyciA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGtleU5hbWUgPSBhcnJbMV07XG4gICAgICAgICAgLy/lsIZrZXlOYW1l55qE6aaW5a2X5q+N6L2s5Li65bCP5YaZXG4gICAgICAgICAgY29uc3Qga2V5TmFtZUxvd2VyID0ga2V5TmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGtleU5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgaWYodGhpcy5zaG93RW50cnlUeXBlSW5mbyYmdGhpcy5zaG93RW50cnlUeXBlSW5mby5maWVsZFRhYnMubGVuZ3RoPjApe1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZihlbC5maWVsZC5uYW1lPT1rZXlOYW1lTG93ZXIpe1xuICAgICAgICAgICAgICAgICAgLy8gaW5mbyA9IGBcIiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7aXRlbS5uYW1lfeS4i+eahCR7ZWwuZmllbGQuZGlzcGxheU5hbWV95a2X5q61YCl9XCJgO1xuICAgICAgICAgICAgICAgICAgaW5mbyA9IGAke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9OjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxpdGVtLm5hbWUsZWwuZmllbGQuZGlzcGxheU5hbWUpfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluZm8gPSBpbmZvICsgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLmApO1xuICAgICAgICAvL+S9v+eUqGFicOWkmuivreiogOaPkOekulxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybihpbmZvKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoq5o+Q5LqkICovXG4gIHNhdmUoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1FbnRpdHk/LnZhbHVlO1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIGlmICh0aGlzLmlzQ2hlY2tGb3JtQ21zKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgIC8vICAgLy8gICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgLy8gICAvLyAgIHJldHVybiB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgLy8gfVxuICAgIC8vIHJldHVybjtcbiAgXG4gICAgLy8gaW5wdXQuY3VsdHVyZSA9IHRoaXMuY3VsdHVyZU5hbWU7XG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgKS50b0lTT1N0cmluZygpO1xuICAgIGlmICghdGhpcy5mb3JtRW50aXR5LnZhbGlkKSByZXR1cm47XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2VcbiAgICAgIC5jcmVhdGUoaW5wdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0pO1xuICB9XG4gIGlzU3VibWl0OiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gIC8qKueCueWHu+aPkOS6pCAqL1xuICBjbGlja1N1Ym1pdCh0eXBlKSB7XG4gICAgLy8gaWYgKHRoaXMuaXNTdWJtaXQpIHJldHVybjtcbiAgICAvLyB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcbiAgICB0aGlzLmRyYWZ0SW5wdXQucGF0Y2hWYWx1ZSh0eXBlKTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICB9XG5cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6TmV3J3wgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxyXG4gICAgPGZvcm0gY2xhc3M9XCJyb3cgZy0zIG5lZWRzLXZhbGlkYXRpb25cIiBbZm9ybUdyb3VwXT1cImZvcm1FbnRpdHlcIiBbY2xhc3NdPVwieyd3YXMtdmFsaWRhdGVkJzpmb3JtVmFsaWRhdGlvbn1cIlxyXG4gICAgICAgIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUVudGl0eSYmc2VjdGlvbklkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnRyeVZlcnNpb25JZDsgZWxzZSBlbHNlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcyBbc2VjdGlvbklkXT1cInNlY3Rpb25JZFwiIFtlbnRyeVR5cGVJZF09XCJlbnRyeVR5cGVJZFwiIFtpc0VkaXRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RdPVwiZW50cnlJbmZvXCIgW2lzQ3JlYXRlVmVyc2lvbl09XCJ0cnVlXCIgW2lzT3RoZXJdPVwiaXNPdGhlclwiICAoZmVlZGJhY2tDaGlsZEluZm8pPVwiX2ZlZWRiYWNrQ2hpbGRJbmZvKCRldmVudClcIiBbZW50aXR5XT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiAoZmVlZGJhY2tDaGlsZEluZm8pPVwiX2ZlZWRiYWNrQ2hpbGRJbmZvKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0VkaXRdPVwiZmFsc2VcIiBbc2VsZWN0XT1cImVudHJ5SW5mb1wiIFtpc090aGVyXT1cImlzT3RoZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiID48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9mb3JtPlxyXG48L2FicC1wYWdlPiJdfQ==
@@ -50,6 +50,8 @@ export class EditComponent {
50
50
  this.entrieId = '';
51
51
  /**条目信息 */
52
52
  this.entryInfo = '';
53
+ /**显示条目类型信息 */
54
+ this.showEntryTypeInfo = '';
53
55
  this.isSubmit = false;
54
56
  this.draftValue = '';
55
57
  }
@@ -80,6 +82,99 @@ export class EditComponent {
80
82
  });
81
83
  });
82
84
  }
85
+ /**反馈子级页面信息 */
86
+ _feedbackChildInfo(event) {
87
+ this.showEntryTypeInfo = event?.showEntryType || '';
88
+ }
89
+ // /**当返回结果为true时表示未通过验证 */
90
+ isCheckFormCms(input, module) {
91
+ for (const key in input) {
92
+ if (input[key] === false) {
93
+ let info = ``;
94
+ //检查key中是否含有ExtraProperties.
95
+ if (key.includes('extraProperties.')) {
96
+ const arr = key.split('.');
97
+ const keyName = arr[1];
98
+ // if (keyName.includes('[')) {
99
+ // //使用正则提取keyName中[]中的数字下标,并且转化为数字类型,并且去掉keyName中的[*]
100
+ // const keyNameArr = keyName.match(/\d+/g);
101
+ // const keyNameArrNum = keyNameArr.map(item => Number(item));
102
+ // const keyNameArrNumStr = keyNameArrNum.join('.');
103
+ // } else {
104
+ //将keyName的首字母转为小写
105
+ const keyNameLower = keyName;
106
+ // const keyNameLower = keyName.charAt(0).toLowerCase() + keyName.slice(1);
107
+ if (this.showEntryTypeInfo && this.showEntryTypeInfo.fieldTabs.length > 0) {
108
+ for (const item of this.showEntryTypeInfo.fieldTabs) {
109
+ for (const el of item.fields) {
110
+ if (el.field.name == keyNameLower) {
111
+ // info = `"${this._LocalizationService.instant(`${module}::${item.name}下的${el.field.displayName}字段`)}"`;
112
+ info = `${this._LocalizationService.instant(`${module}::The{1}FieldUnderThe{0}TAB`, item.name, el.field.displayName)}`;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ // }
118
+ }
119
+ else {
120
+ const displayName = key.charAt(0).toUpperCase() + key.slice(1);
121
+ info = `"${this._LocalizationService.instant(`${module}::${displayName}`)}" `;
122
+ }
123
+ info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);
124
+ //使用abp多语言提示
125
+ this.toaster.warn(info);
126
+ return true;
127
+ }
128
+ }
129
+ return false;
130
+ }
131
+ // /**获取表单所有字段是否通过验证 */
132
+ // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {
133
+ // const validationStatus: { [key: string]: any } = {};
134
+ // // 递归遍历表单组和表单控件集合
135
+ // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {
136
+ // if (form instanceof FormGroup) {
137
+ // Object.keys(form.controls).forEach(key => {
138
+ // const control = form.controls[key];
139
+ // // const displayName = key.charAt(0).toUpperCase() + key.slice(1);
140
+ // const displayName = key;
141
+ // const fullKey = prefix ? `${prefix}.${displayName}` : displayName;
142
+ // if (control instanceof FormControl) {
143
+ // validationStatus[fullKey] = control.valid;
144
+ // } else if (control instanceof FormArray) {
145
+ // traverseForm(control, fullKey);
146
+ // } else if (control instanceof FormGroup) {
147
+ // traverseForm(control, fullKey);
148
+ // }
149
+ // });
150
+ // } else if (form instanceof FormArray) {
151
+ // form.controls.forEach((control, index) => {
152
+ // const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;
153
+ // if (control instanceof FormControl) {
154
+ // validationStatus[fullKey] = control.valid;
155
+ // } else if (control instanceof FormArray) {
156
+ // traverseForm(control, fullKey);
157
+ // } else if (control instanceof FormGroup) {
158
+ // traverseForm(control, fullKey);
159
+ // }
160
+ // });
161
+ // }
162
+ // };
163
+ // traverseForm(formEntity);
164
+ // return validationStatus;
165
+ // }
166
+ /**获取表单验证状态 */
167
+ // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {
168
+ // const validationStatus: { [key: string]: any } = {};
169
+ // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {
170
+ // //检查form是否为FormGroup还是formArray,如果是FormGroup则继续遍历,如果是FormArray则遍历FormArray
171
+ // if (form instanceof FormGroup) {
172
+ // } else if (form instanceof FormArray) {
173
+ // }
174
+ // }
175
+ // traverseForm(formEntity);
176
+ // return validationStatus
177
+ // }
83
178
  /**提交 */
84
179
  save() {
85
180
  this.cultureInput.enable();
@@ -89,10 +184,17 @@ export class EditComponent {
89
184
  input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
90
185
  input.concurrencyStamp = this.entryInfo.concurrencyStamp;
91
186
  this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);
92
- if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) {
187
+ // if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')){
188
+ // this.isSubmit = false;
189
+ // return this.cultureInput.disable();
190
+ // }
191
+ // this.formValidation = this.getFormValidationStatus(this.formEntity);
192
+ if (this.isCheckFormCms(this.formValidation, 'Cms')) {
93
193
  this.isSubmit = false;
94
194
  return this.cultureInput.disable();
95
195
  }
196
+ // this.formValidation = this.getFormValidationStatus(this.formEntity);
197
+ // return this.isSubmit=false;
96
198
  if (!this.formEntity.valid)
97
199
  return;
98
200
  this._EntryAdminService
@@ -125,7 +227,7 @@ export class EditComponent {
125
227
  provide: EXTENSIONS_IDENTIFIER,
126
228
  useValue: ECmsComponent.Entries_Edit,
127
229
  },
128
- ], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n", styles: [""], dependencies: [{ 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.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: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i5.CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: ["isEdit", "isCreateVersion", "sectionId", "entryTypeId", "select", "entity"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] }); }
230
+ ], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n", styles: [""], dependencies: [{ 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.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: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i5.CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: ["isEdit", "isCreateVersion", "sectionId", "entryTypeId", "select", "entity", "isOther"], outputs: ["feedbackChildInfo"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] }); }
129
231
  }
130
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: EditComponent, decorators: [{
131
233
  type: Component,
@@ -134,9 +236,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
134
236
  provide: EXTENSIONS_IDENTIFIER,
135
237
  useValue: ECmsComponent.Entries_Edit,
136
238
  },
137
- ], template: "<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n" }]
239
+ ], template: "<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n" }]
138
240
  }], propDecorators: { submitclick: [{
139
241
  type: ViewChild,
140
242
  args: ['submitclick', { static: true }]
141
243
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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LENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxVQUFVO0lBQ1YsV0FBVyxDQUFDLElBQUk7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFFLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0EvR1UsYUFBYTtrR0FBYixhQUFhLG1DQVBiO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxZQUFZO2FBQ3JDO1NBQ0Ysb0pDNUJILDZtQkFVQTs7MkZEb0JhLGFBQWE7a0JBWHpCLFNBQVM7K0JBQ0UsVUFBVSxhQUdUO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsWUFBWTt5QkFDckM7cUJBQ0Y7OEJBa0IyQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cblxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuLy8gaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UgfSBmcm9tICcuL2NyZWF0ZS1vci11cGRhdGUtZW50cnktaW5wdXQtYmFzZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgQ2xhc3NpY0VkaXRvciwgRXNzZW50aWFscywgUGFyYWdyYXBoLCBCb2xkLCBJdGFsaWMgfSBmcm9tICdja2VkaXRvcjUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5FbnRyaWVzX0VkaXQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgIFxuXG5cbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgLyoq6K+t6KiAICovXG4gIGN1bHR1cmVOYW1lOiBzdHJpbmd8YW55ID0gJyc7XG4gIC8qKuadoeebruexu+Wei2lkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmd8YW55ID0gJyc7XG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nfGFueSA9ICcnO1xuICAvKirmnaHnm67niYjmnKxpZCAqL1xuICBlbnRyeVZlcnNpb25JZDogc3RyaW5nfGFueSA9ICcnO1xuICAvKirmnaHnm65pZCAqL1xuICBlbnRyaWVJZDogc3RyaW5nfGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcblxuICAvKirmmK/lkKbojYnnqL/mjqfku7YqL1xuICBnZXQgZHJhZnRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2RyYWZ0JykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbiAgLyoq6K+t6KiA5o6n5Lu2ICovXG4gIGdldCBjdWx0dXJlSW5wdXQoKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnY3VsdHVyZScpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgdGhpcy5lbnRyaWVJZCA9IHBhcmFtcy5lbnRyaWVJZDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIGF3YWl0IHRoaXMuZ2V0RW50cnlJbmZvKCk7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLmN1bHR1cmVOYW1lKTtcblxuICB9XG4gIC8qKuiOt+WPluadoeebruS/oeaBryAqL1xuICBnZXRFbnRyeUluZm8oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXQodGhpcy5lbnRyaWVJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY3VsdHVyZU5hbWUgPSByZXMuY3VsdHVyZTtcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVJZCA9IHJlcy5lbnRyeVR5cGVJZDtcbiAgICAgICAgdGhpcy5zZWN0aW9uSWQgPSByZXMuc2VjdGlvbklkO1xuICAgICAgICB0aGlzLmVudHJ5SW5mbyA9IHJlcztcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKirmj5DkuqQgKi9cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLmRyYWZ0SW5wdXQucGF0Y2hWYWx1ZSh0aGlzLmRyYWZ0VmFsdWV8fGZhbHNlKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eT8udmFsdWU7XG4gICAgaW5wdXQuY3VsdHVyZSA9IHRoaXMuY3VsdHVyZU5hbWU7XG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDBcbiAgICApLnRvSVNPU3RyaW5nKCk7XG4gICAgaW5wdXQuY29uY3VycmVuY3lTdGFtcCA9IHRoaXMuZW50cnlJbmZvLmNvbmN1cnJlbmN5U3RhbXA7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuZm9ybUVudGl0eSk7XG4gICAgaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSl7XG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAudXBkYXRlKHRoaXMuZW50cnlJbmZvLmlkLCBpbnB1dClcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICB0aGlzLmJhY2tUbygpO1xuICAgICAgICB0aGlzLl91cGRhdGVMaXN0U2VydmljZS51cGRhdGVMaXN0KCk7XG4gICAgICB9KTtcbiAgfVxuICBpc1N1Ym1pdDogYm9vbGVhbnxhbnkgPSBmYWxzZTtcbiAgZHJhZnRWYWx1ZTogc3RyaW5nfGFueSA9ICcnO1xuICAvKirngrnlh7vmj5DkuqQgKi9cbiAgY2xpY2tTdWJtaXQodHlwZSkge1xuICAgIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5kcmFmdFZhbHVlPSB0eXBlO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gIH1cblxuICAvKirov5Tlm57kuIrkuIDpobUgKi9cbiAgYmFja1RvKCkge1xuICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInQ21zOjpFZGl0J3wgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxuICAgIDxmb3JtIGNsYXNzPVwicm93IGctMyBuZWVkcy12YWxpZGF0aW9uXCJcbiAgICAgICAgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCIgIFtmb3JtR3JvdXBdPVwiZm9ybUVudGl0eVwiICAoc3VibWl0KT1cInNhdmUoKVwiID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbnRpdHkmJmVudHJ5SW5mb1wiPlxuICAgICAgICAgICAgICAgIDxjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcyAgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiBbaXNFZGl0XT1cInRydWVcIiBbc2VsZWN0XT1cImVudHJ5SW5mb1wiICBbZW50aXR5XT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgPC9mb3JtPlxuPC9hYnAtcGFnZT5cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBYSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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UUFBUSxFQUFFLGFBQWEsQ0FBQyxZQUFZO2FBQ3JDO1NBQ0Ysb0pDNUJILGlxQkFVQTs7MkZEb0JhLGFBQWE7a0JBWHpCLFNBQVM7K0JBQ0UsVUFBVSxhQUdUO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsWUFBWTt5QkFDckM7cUJBQ0Y7OEJBYzJDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xuXG5pbXBvcnQgeyBFWFRFTlNJT05TX0lERU5USUZJRVIgfSBmcm9tICdAYWJwL25nLmNvbXBvbmVudHMvZXh0ZW5zaWJsZSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbi8vIGltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgVXBkYXRlTGlzdFNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQgeyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlIH0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLWVudHJ5LWlucHV0LWJhc2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yc1NlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IENsYXNzaWNFZGl0b3IsIEVzc2VudGlhbHMsIFBhcmFncmFwaCwgQm9sZCwgSXRhbGljIH0gZnJvbSAnY2tlZGl0b3I1JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IEVDbXNDb21wb25lbnQuRW50cmllc19FZGl0LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xuICBwdWJsaWMgX2xvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlID0gaW5qZWN0KEVudHJ5QWRtaW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdG9yc1NlcnZpY2UpO1xuICBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcblxuICAvKirojrflj5bmj5DkuqTmjInpkq7mm7/ouqvvvIznlKjkuo7nnJ/lrp7op6blj5HooajljZXmj5DkuqQgKi9cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICAvKirooajljZXpqozor4HnirbmgIFcbiAgICoge1xuICAgKiAgdGl0bGU6dHJ1ZSxcbiAgICogfVxuICAgKi9cbiAgZm9ybVZhbGlkYXRpb246IGFueSA9ICcnO1xuICAvKirooajljZXlrp7kvZMgKi9cbiAgZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67nsbvlnotpZCAqL1xuICBlbnRyeVR5cGVJZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrueJiOacrGlkICovXG4gIGVudHJ5VmVyc2lvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uuaWQgKi9cbiAgZW50cmllSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcblxuICAvKirmmK/lkKbojYnnqL/mjqfku7YqL1xuICBnZXQgZHJhZnRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2RyYWZ0JykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbiAgLyoq6K+t6KiA5o6n5Lu2ICovXG4gIGdldCBjdWx0dXJlSW5wdXQoKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnY3VsdHVyZScpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgdGhpcy5lbnRyaWVJZCA9IHBhcmFtcy5lbnRyaWVJZDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIGF3YWl0IHRoaXMuZ2V0RW50cnlJbmZvKCk7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLmN1bHR1cmVOYW1lKTtcbiAgfVxuICAvKirojrflj5bmnaHnm67kv6Hmga8gKi9cbiAgZ2V0RW50cnlJbmZvKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZ2V0KHRoaXMuZW50cmllSWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmN1bHR1cmVOYW1lID0gcmVzLmN1bHR1cmU7XG4gICAgICAgIHRoaXMuZW50cnlUeXBlSWQgPSByZXMuZW50cnlUeXBlSWQ7XG4gICAgICAgIHRoaXMuc2VjdGlvbklkID0gcmVzLnNlY3Rpb25JZDtcbiAgICAgICAgdGhpcy5lbnRyeUluZm8gPSByZXM7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoq5pi+56S65p2h55uu57G75Z6L5L+h5oGvICovXG4gIHNob3dFbnRyeVR5cGVJbmZvOiBhbnkgPSAnJztcbiAgLyoq5Y+N6aaI5a2Q57qn6aG16Z2i5L+h5oGvICovXG4gIF9mZWVkYmFja0NoaWxkSW5mbyhldmVudCkge1xuICAgIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8gPSBldmVudD8uc2hvd0VudHJ5VHlwZSB8fCAnJztcbiAgfVxuICAvLyAvKirlvZPov5Tlm57nu5PmnpzkuLp0cnVl5pe26KGo56S65pyq6YCa6L+H6aqM6K+BICovXG4gIGlzQ2hlY2tGb3JtQ21zKGlucHV0LCBtb2R1bGUpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgaWYgKGlucHV0W2tleV0gPT09IGZhbHNlKSB7XG4gICAgICAgIGxldCBpbmZvID0gYGA7XG4gICAgICAgIC8v5qOA5p+la2V55Lit5piv5ZCm5ZCr5pyJRXh0cmFQcm9wZXJ0aWVzLlxuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCdleHRyYVByb3BlcnRpZXMuJykpIHtcbiAgICAgICAgICBjb25zdCBhcnIgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgICBjb25zdCBrZXlOYW1lID0gYXJyWzFdO1xuICAgICAgICAgIC8vIGlmIChrZXlOYW1lLmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgICAvLyAgIC8v5L2/55So5q2j5YiZ5o+Q5Y+Wa2V5TmFtZeS4rVtd5Lit55qE5pWw5a2X5LiL5qCHLOW5tuS4lOi9rOWMluS4uuaVsOWtl+exu+Wei++8jOW5tuS4lOWOu+aOiWtleU5hbWXkuK3nmoRbKl1cbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnIgPSBrZXlOYW1lLm1hdGNoKC9cXGQrL2cpO1xuICAgICAgICAgIC8vICAgY29uc3Qga2V5TmFtZUFyck51bSA9IGtleU5hbWVBcnIubWFwKGl0ZW0gPT4gTnVtYmVyKGl0ZW0pKTtcbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnJOdW1TdHIgPSBrZXlOYW1lQXJyTnVtLmpvaW4oJy4nKTtcblxuICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAvL+WwhmtleU5hbWXnmoTpppblrZfmr43ovazkuLrlsI/lhplcbiAgICAgICAgICAgIGNvbnN0IGtleU5hbWVMb3dlciA9IGtleU5hbWU7XG4gICAgICAgICAgICAvLyBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsga2V5TmFtZS5zbGljZSgxKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dFbnRyeVR5cGVJbmZvICYmIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiBpdGVtLmZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgaWYgKGVsLmZpZWxkLm5hbWUgPT0ga2V5TmFtZUxvd2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm8gPSBgXCIke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9Ojoke2l0ZW0ubmFtZX3kuIvnmoQke2VsLmZpZWxkLmRpc3BsYXlOYW1lfeWtl+autWApfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgaW5mbyA9IGAke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICBgJHttb2R1bGV9OjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZWwuZmllbGQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICl9YDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvLyB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7XG4gICAgICAgICAgaW5mbyA9IGBcIiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7ZGlzcGxheU5hbWV9YCl9XCIgYDtcbiAgICAgICAgfVxuICAgICAgICBpbmZvID0gaW5mbyArIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkSXNOb3RWYWxpZC5gKTtcbiAgICAgICAgLy/kvb/nlKhhYnDlpJror63oqIDmj5DnpLpcbiAgICAgICAgdGhpcy50b2FzdGVyLndhcm4oaW5mbyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyAvKirojrflj5booajljZXmiYDmnInlrZfmrrXmmK/lkKbpgJrov4fpqozor4EgKi9cbiAgLy8gZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXMoZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIC8vICAgY29uc3QgdmFsaWRhdGlvblN0YXR1czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8vICAgLy8g6YCS5b2S6YGN5Y6G6KGo5Y2V57uE5ZKM6KGo5Y2V5o6n5Lu26ZuG5ZCIXG4gIC8vICAgY29uc3QgdHJhdmVyc2VGb3JtID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSwgcHJlZml4ID0gJycpID0+IHtcbiAgLy8gICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gIC8vICAgICAgIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xuICAvLyAgICAgICAgIC8vIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAvLyAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5O1xuICAvLyAgICAgICAgIGNvbnN0IGZ1bGxLZXkgPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xuICAvLyAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgLy8gICAgICAgICAgIHZhbGlkYXRpb25TdGF0dXNbZnVsbEtleV0gPSBjb250cm9sLnZhbGlkO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgLy8gICAgICAgZm9ybS5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IGZ1bGxLZXkgPSBwcmVmaXggPyBgJHtwcmVmaXh9WyR7aW5kZXh9XWAgOiBgWyR7aW5kZXh9XWA7XG4gIC8vICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAvLyAgICAgICAgICAgdmFsaWRhdGlvblN0YXR1c1tmdWxsS2V5XSA9IGNvbnRyb2wudmFsaWQ7XG4gIC8vICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gIC8vICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XG4gIC8vICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gIC8vICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KTtcbiAgLy8gICAgIH1cbiAgLy8gICB9O1xuXG4gIC8vICAgdHJhdmVyc2VGb3JtKGZvcm1FbnRpdHkpO1xuXG4gIC8vICAgcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7XG4gIC8vIH1cblxuICAvKirojrflj5booajljZXpqozor4HnirbmgIEgKi9cbiAgLy8gZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXMoZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIC8vICAgY29uc3QgdmFsaWRhdGlvblN0YXR1czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8vICAgY29uc3QgdHJhdmVyc2VGb3JtID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSwgcHJlZml4ID0gJycpID0+IHtcbiAgLy8gICAgIC8v5qOA5p+lZm9ybeaYr+WQpuS4ukZvcm1Hcm91cOi/mOaYr2Zvcm1BcnJheSzlpoLmnpzmmK9Gb3JtR3JvdXDliJnnu6fnu63pgY3ljoYs5aaC5p6c5pivRm9ybUFycmF55YiZ6YGN5Y6GRm9ybUFycmF5XG4gIC8vICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICBcbiAgLy8gICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICBcbiAgLy8gICAgIH0gXG5cbiAgLy8gICB9XG4gIC8vICAgdHJhdmVyc2VGb3JtKGZvcm1FbnRpdHkpO1xuICAvLyAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzXG4gIC8vIH1cblxuICAvKirmj5DkuqQgKi9cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLmRyYWZ0SW5wdXQucGF0Y2hWYWx1ZSh0aGlzLmRyYWZ0VmFsdWUgfHwgZmFsc2UpO1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRW50aXR5Py52YWx1ZTtcbiAgICBpbnB1dC5jdWx0dXJlID0gdGhpcy5jdWx0dXJlTmFtZTtcbiAgICBpbnB1dC5wdWJsaXNoVGltZSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUoaW5wdXQucHVibGlzaFRpbWUpLmdldFRpbWUoKSArIDggKiA2MCAqIDYwICogMTAwMCxcbiAgICApLnRvSVNPU3RyaW5nKCk7XG4gICAgaW5wdXQuY29uY3VycmVuY3lTdGFtcCA9IHRoaXMuZW50cnlJbmZvLmNvbmN1cnJlbmN5U3RhbXA7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuZm9ybUVudGl0eSk7XG4gICAgLy8gaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSl7XG4gICAgLy8gICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgLy8gICByZXR1cm4gdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuICAgIC8vIH1cblxuICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuZm9ybUVudGl0eSk7XG4gICAgaWYgKHRoaXMuaXNDaGVja0Zvcm1DbXModGhpcy5mb3JtVmFsaWRhdGlvbiwgJ0NtcycpKSB7XG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cbiAgICAvLyB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIHJldHVybiB0aGlzLmlzU3VibWl0PWZhbHNlO1xuICAgIGlmICghdGhpcy5mb3JtRW50aXR5LnZhbGlkKSByZXR1cm47XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2VcbiAgICAgIC51cGRhdGUodGhpcy5lbnRyeUluZm8uaWQsIGlucHV0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcbiAgICAgICAgdGhpcy5iYWNrVG8oKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgICAgfSk7XG4gIH1cbiAgaXNTdWJtaXQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgZHJhZnRWYWx1ZTogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKueCueWHu+aPkOS6pCAqL1xuICBjbGlja1N1Ym1pdCh0eXBlKSB7XG4gICAgaWYgKHRoaXMuaXNTdWJtaXQpIHJldHVybjtcbiAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcbiAgICB0aGlzLmRyYWZ0VmFsdWUgPSB0eXBlO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gIH1cblxuICAvKirov5Tlm57kuIrkuIDpobUgKi9cbiAgYmFja1RvKCkge1xuICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInQ21zOjpFZGl0J3wgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxuICAgIDxmb3JtIGNsYXNzPVwicm93IGctMyBuZWVkcy12YWxpZGF0aW9uXCJcbiAgICAgICAgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCIgIFtmb3JtR3JvdXBdPVwiZm9ybUVudGl0eVwiICAoc3VibWl0KT1cInNhdmUoKVwiID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbnRpdHkmJmVudHJ5SW5mb1wiPlxuICAgICAgICAgICAgICAgIDxjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcyAgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiBbaXNFZGl0XT1cInRydWVcIiBbc2VsZWN0XT1cImVudHJ5SW5mb1wiICAoZmVlZGJhY2tDaGlsZEluZm8pPVwiX2ZlZWRiYWNrQ2hpbGRJbmZvKCRldmVudClcIiAgW2VudGl0eV09XCJmb3JtRW50aXR5XCI+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgIDwvZm9ybT5cbjwvYWJwLXBhZ2U+XG4iXX0=