@dignite-ng/expand.cms 3.0.0-rc.48 → 3.0.0-rc.50

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 (75) hide show
  1. package/config/providers/route.provider.d.ts +2 -3
  2. package/esm2022/config/providers/route.provider.mjs +3 -4
  3. package/esm2022/lib/cms-routing.module.mjs +3 -3
  4. package/esm2022/lib/cms.module.mjs +4 -4
  5. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +18 -16
  6. package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +9 -1
  7. package/esm2022/lib/components/admin/entries/create.component.mjs +25 -63
  8. package/esm2022/lib/components/admin/entries/edit.component.mjs +28 -14
  9. package/esm2022/lib/components/admin/entries/entries.component.mjs +11 -16
  10. package/esm2022/lib/components/admin/fields/create-field.component.mjs +54 -54
  11. package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +44 -69
  12. package/esm2022/lib/components/admin/fields/edit-field.component.mjs +130 -73
  13. package/esm2022/lib/components/admin/fields/fields-form-config.mjs +50 -0
  14. package/esm2022/lib/components/admin/fields/fields-group.component.mjs +128 -0
  15. package/esm2022/lib/components/admin/fields/fields.component.mjs +61 -57
  16. package/esm2022/lib/components/admin/fields/index.mjs +3 -3
  17. package/esm2022/lib/components/admin/sections/create-or-edit-sections-modal.component.mjs +17 -15
  18. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +59 -86
  19. package/esm2022/lib/components/admin/sections/sections.component.mjs +11 -14
  20. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +32 -23
  21. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +26 -11
  22. package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +50 -26
  23. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +10 -10
  24. package/esm2022/lib/components/dynamic-form/table/table-view.component.mjs +3 -2
  25. package/esm2022/lib/resolvers/page-default-toolbar-actions.mjs +42 -37
  26. package/esm2022/lib/resolvers/table-default-entity-props.mjs +4 -4
  27. package/esm2022/lib/services/fields-data.service.mjs +100 -0
  28. package/esm2022/lib/services/form-controls.service.mjs +12 -10
  29. package/esm2022/lib/services/index.mjs +3 -4
  30. package/esm2022/lib/services/keys-convert-to-lowercase.service.mjs +40 -0
  31. package/fesm2022/dignite-ng-expand.cms-config.mjs +2 -3
  32. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -1
  33. package/fesm2022/dignite-ng-expand.cms.mjs +811 -784
  34. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
  35. package/lib/cms.module.d.ts +2 -2
  36. package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +3 -1
  37. package/lib/components/admin/entries/create-or-update-entry-input-base.d.ts +8 -0
  38. package/lib/components/admin/entries/create.component.d.ts +1 -2
  39. package/lib/components/admin/entries/edit.component.d.ts +1 -2
  40. package/lib/components/admin/entries/entries.component.d.ts +2 -1
  41. package/lib/components/admin/fields/create-field.component.d.ts +19 -22
  42. package/lib/components/admin/fields/create-or-edit-field.component.d.ts +20 -26
  43. package/lib/components/admin/fields/edit-field.component.d.ts +24 -30
  44. package/lib/components/admin/fields/fields-form-config.d.ts +19 -0
  45. package/lib/components/admin/fields/fields-group.component.d.ts +48 -0
  46. package/lib/components/admin/fields/fields.component.d.ts +18 -16
  47. package/lib/components/admin/fields/index.d.ts +1 -2
  48. package/lib/components/admin/sections/create-or-edit-sections-modal.component.d.ts +4 -1
  49. package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +14 -9
  50. package/lib/components/admin/sections/sections.component.d.ts +1 -3
  51. package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +10 -4
  52. package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +7 -3
  53. package/lib/components/dynamic-form/table/table-config.component.d.ts +15 -5
  54. package/lib/components/dynamic-form/table/table-control.component.d.ts +3 -3
  55. package/lib/components/dynamic-form/table/table-view.component.d.ts +2 -1
  56. package/lib/resolvers/page-default-toolbar-actions.d.ts +9 -6
  57. package/lib/services/fields-data.service.d.ts +45 -0
  58. package/lib/services/form-controls.service.d.ts +3 -1
  59. package/lib/services/index.d.ts +2 -3
  60. package/lib/services/keys-convert-to-lowercase.service.d.ts +16 -0
  61. package/package.json +1 -1
  62. package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +0 -18
  63. package/esm2022/lib/components/admin/fields/field-group.component.mjs +0 -144
  64. package/esm2022/lib/constants/styles.mjs +0 -19
  65. package/esm2022/lib/services/appent-content.mjs +0 -15
  66. package/esm2022/lib/services/cms-api.service.mjs +0 -94
  67. package/esm2022/lib/services/cms.service.mjs +0 -22
  68. package/esm2022/lib/services/field-abstracts.service.mjs +0 -48
  69. package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +0 -15
  70. package/lib/components/admin/fields/field-group.component.d.ts +0 -58
  71. package/lib/constants/styles.d.ts +0 -2
  72. package/lib/services/appent-content.d.ts +0 -1
  73. package/lib/services/cms-api.service.d.ts +0 -23
  74. package/lib/services/cms.service.d.ts +0 -10
  75. package/lib/services/field-abstracts.service.d.ts +0 -20
@@ -1,37 +1,31 @@
1
1
  /* eslint-disable @angular-eslint/component-selector */
2
2
  import { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';
3
+ import { Component } from '@angular/core';
4
+ import { ECmsComponent } from '../../../enums';
5
+ import { FieldsDataService } from '../../../services/fields-data.service';
3
6
  import { ListService, LIST_QUERY_DEBOUNCE_TIME, LocalizationService, } from '@abp/ng.core';
4
7
  import { ToasterService, ConfirmationService } from '@abp/ng.theme.shared';
5
- import { Component, inject } from '@angular/core';
6
8
  import { Router } from '@angular/router';
7
- import { ColumnMode } from '@swimlane/ngx-datatable';
8
- import { finalize } from 'rxjs';
9
- import { ECmsComponent } from '../../../enums';
10
9
  import { UpdateListService } from '@dignite-ng/expand.core';
11
- import { FieldAdminService, } from '../../../proxy/dignite/cms/admin/fields';
12
- import { FieldAbstractsService } from '../../../services';
13
10
  import * as i0 from "@angular/core";
14
11
  import * as i1 from "@abp/ng.core";
15
- import * as i2 from "../../../proxy/dignite/cms/admin/fields";
12
+ import * as i2 from "../../../services/fields-data.service";
16
13
  import * as i3 from "@abp/ng.theme.shared";
17
14
  import * as i4 from "@angular/router";
18
- import * as i5 from "@angular/common";
15
+ import * as i5 from "@dignite-ng/expand.core";
19
16
  import * as i6 from "@angular/forms";
20
17
  import * as i7 from "@abp/ng.components/page";
21
18
  import * as i8 from "@abp/ng.components/extensible";
22
- import * as i9 from "./field-group.component";
19
+ import * as i9 from "./fields-group.component";
23
20
  export class FieldsComponent {
24
- constructor(list, _FieldAdminService, toaster, confirmation, _LocalizationService, router) {
21
+ constructor(list, _service, toaster, confirmation, _LocalizationService, router, _UpdateListService) {
25
22
  this.list = list;
26
- this._FieldAdminService = _FieldAdminService;
23
+ this._service = _service;
27
24
  this.toaster = toaster;
28
25
  this.confirmation = confirmation;
29
26
  this._LocalizationService = _LocalizationService;
30
27
  this.router = router;
31
- this._UpdateListService = inject(UpdateListService);
32
- this._FieldAbstractsService = inject(FieldAbstractsService);
33
- /**表格单元格布局类型 */
34
- this.ColumnMode = ColumnMode;
28
+ this._UpdateListService = _UpdateListService;
35
29
  /**表格数据 */
36
30
  this.data = {
37
31
  items: [],
@@ -39,29 +33,20 @@ export class FieldsComponent {
39
33
  };
40
34
  /**过滤器 */
41
35
  this.filters = {};
42
- /**是否初始化完成 */
43
- this.isInit = true;
44
36
  }
45
37
  async ngOnInit() {
46
- await this._FieldAbstractsService.getFromControlList();
47
- this.isInit = true;
38
+ //Called after the constructor, initializing input properties, and the first call to ngOnChanges.
39
+ //Add 'implements OnInit' to the class.
40
+ await Promise.all([this._service.getfieldGroups(), this._service.getControlsfieldTypes()]);
48
41
  this.hookToQuery();
42
+ console.log(this.list, '1111');
49
43
  this._UpdateListService.updateListEvent.subscribe(() => {
50
- this.list.get();
44
+ this.getData();
51
45
  });
52
46
  }
53
- getData() {
54
- this.list.get();
55
- }
56
- /**字段分组选择回调 */
57
- fieldGroupChange(event) {
58
- this.filters.groupId = event;
59
- this.list.page = 0;
60
- this.list.get();
61
- }
62
47
  /**使用abp的list获取表格的字段数据列表 */
63
48
  hookToQuery() {
64
- const getData = (query) => this._FieldAdminService.getList({
49
+ const getData = (query) => this._service.getFieldsList({
65
50
  ...query,
66
51
  ...this.filters,
67
52
  });
@@ -71,17 +56,27 @@ export class FieldsComponent {
71
56
  };
72
57
  this.list.hookToQuery(getData).subscribe(setData);
73
58
  }
59
+ /**获取表格数据 */
60
+ getData() {
61
+ this.data.items = [];
62
+ this.data.totalCount = 0;
63
+ // this.list.page=0;
64
+ this.list.get();
65
+ }
66
+ /**重置 */
67
+ reset() {
68
+ this.filters = {};
69
+ this.getData();
70
+ }
71
+ /**回到页面顶部 */
74
72
  scrollToTop() {
75
73
  const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];
76
74
  (scrollContainer || window).scrollTo(0, 0);
77
75
  }
78
- /**新建字段按钮 */
79
- toFieldsCreateBtn() {
80
- this.router.navigate(['/cms/admin/fields/create'], {
81
- queryParams: {
82
- groupId: this.filters.groupId,
83
- },
84
- });
76
+ /**点击字段分组回调 */
77
+ onGroupClickBack(groupId) {
78
+ this.filters.groupId = groupId;
79
+ this.getData();
85
80
  }
86
81
  /**删除字段 */
87
82
  deletefield(row) {
@@ -89,43 +84,52 @@ export class FieldsComponent {
89
84
  .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))
90
85
  .subscribe((status) => {
91
86
  if (status == 'confirm') {
92
- this._FieldAdminService
93
- .delete(row.id)
94
- .pipe(finalize(() => { }))
95
- .subscribe(res => {
87
+ this._service.deleteField(row.id).subscribe(() => {
96
88
  this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));
97
- this.list.get();
89
+ this.getData();
98
90
  });
99
91
  }
100
92
  });
101
93
  }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FieldsComponent, deps: [{ token: i1.ListService }, { token: i2.FieldAdminService }, { token: i3.ToasterService }, { token: i3.ConfirmationService }, { token: i1.LocalizationService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
94
+ /**新建字段按钮 */
95
+ toFieldsCreateBtn() {
96
+ this.router.navigate(['/cms/admin/fields/create'], {
97
+ queryParams: {
98
+ groupId: this.filters.groupId,
99
+ },
100
+ });
101
+ }
102
+ /**编辑字段按钮 */
103
+ editfieldBtn(row) {
104
+ this.router.navigate(['/cms/admin/fields/' + row.id + '/edit'], {});
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FieldsComponent, deps: [{ token: i1.ListService }, { token: i2.FieldsDataService }, { token: i3.ToasterService }, { token: i3.ConfirmationService }, { token: i1.LocalizationService }, { token: i4.Router }, { token: i5.UpdateListService }], target: i0.ɵɵFactoryTarget.Component }); }
103
107
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: FieldsComponent, selector: "cms-fields", providers: [
108
+ {
109
+ provide: EXTENSIONS_IDENTIFIER,
110
+ useValue: ECmsComponent.Fields,
111
+ },
104
112
  // [Required]
105
113
  ListService,
106
114
  // [Optional]
107
115
  // Provide this token if you want a different debounce time.
108
116
  // Default is 300. Cannot be 0. Any value below 100 is not recommended.
109
- { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
110
- {
111
- provide: EXTENSIONS_IDENTIFIER,
112
- useValue: ECmsComponent.Fields,
113
- },
114
- ], ngImport: i0, template: "<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"fields-page\">\n <div class=\"row \">\n <div class=\"col-md-3 mb-2\">\n <div class=\"card mb-0\" style=\"height: 100%;\">\n <cms-field-group (OnGroupClickBack)=\"fieldGroupChange($event)\"></cms-field-group>\n </div>\n </div>\n <div class=\"col-md-9 mb-2\">\n <div class=\"card mb-0\">\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n <ng-container *ngIf=\"isInit\">\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\" [list]=\"list\"></abp-extensible-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n</abp-page>", styles: ["::ng-deep .fields-page .dignite_page{background:transparent}::ng-deep .fields-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .fields-page .container-height{height:calc(100vh - 200px)}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i8.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], outputs: ["tableActivate"], exportAs: ["abpExtensibleTable"] }, { kind: "component", type: i9.FieldGroupComponent, selector: "cms-field-group", outputs: ["OnGroupClickBack"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
117
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 50 },
118
+ ], ngImport: i0, template: "<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\r\n <div class=\"row\" style=\"min-height: calc(100vh - 42px - 54px - 1.25em - 1.25em);\">\r\n <div class=\"col-md-3 mb-2\">\r\n <cms-fields-group (OnGroupClickBack)=\"onGroupClickBack($event)\"></cms-fields-group>\r\n </div>\r\n <div class=\"col-md-9 mb-2\">\r\n <div class=\"card mb-0\">\r\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" >\r\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\r\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\"\r\n [list]=\"list\">\r\n </abp-extensible-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [""], dependencies: [{ kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i8.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], outputs: ["tableActivate"], exportAs: ["abpExtensibleTable"] }, { kind: "component", type: i9.FieldsGroupComponent, selector: "cms-fields-group", outputs: ["OnGroupClickBack"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
115
119
  }
116
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FieldsComponent, decorators: [{
117
121
  type: Component,
118
122
  args: [{ selector: 'cms-fields', providers: [
123
+ {
124
+ provide: EXTENSIONS_IDENTIFIER,
125
+ useValue: ECmsComponent.Fields,
126
+ },
119
127
  // [Required]
120
128
  ListService,
121
129
  // [Optional]
122
130
  // Provide this token if you want a different debounce time.
123
131
  // Default is 300. Cannot be 0. Any value below 100 is not recommended.
124
- { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
125
- {
126
- provide: EXTENSIONS_IDENTIFIER,
127
- useValue: ECmsComponent.Fields,
128
- },
129
- ], template: "<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"fields-page\">\n <div class=\"row \">\n <div class=\"col-md-3 mb-2\">\n <div class=\"card mb-0\" style=\"height: 100%;\">\n <cms-field-group (OnGroupClickBack)=\"fieldGroupChange($event)\"></cms-field-group>\n </div>\n </div>\n <div class=\"col-md-9 mb-2\">\n <div class=\"card mb-0\">\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n <ng-container *ngIf=\"isInit\">\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\" [list]=\"list\"></abp-extensible-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n</abp-page>", styles: ["::ng-deep .fields-page .dignite_page{background:transparent}::ng-deep .fields-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .fields-page .container-height{height:calc(100vh - 200px)}\n"] }]
130
- }], ctorParameters: () => [{ type: i1.ListService }, { type: i2.FieldAdminService }, { type: i3.ToasterService }, { type: i3.ConfirmationService }, { type: i1.LocalizationService }, { type: i4.Router }] });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZmllbGRzL2ZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUdwQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGlCQUFpQixHQUdsQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7OztBQW1CMUQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDa0IsSUFBaUIsRUFDekIsa0JBQXFDLEVBQ3JDLE9BQXVCLEVBQ3ZCLFlBQWlD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ZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHtcbiAgTGlzdFNlcnZpY2UsXG4gIExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSxcbiAgTG9jYWxpemF0aW9uU2VydmljZSxcbiAgUGFnZWRSZXN1bHREdG8sXG4gIEFCUCxcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlLCBDb25maXJtYXRpb24gfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29sdW1uTW9kZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgVXBkYXRlTGlzdFNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQge1xuICBGaWVsZEFkbWluU2VydmljZSxcbiAgRmllbGREdG8sXG4gIEdldEZpZWxkc0lucHV0LFxufSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9maWVsZHMnO1xuaW1wb3J0IHsgRmllbGRBYnN0cmFjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBbUmVxdWlyZWRdXG4gICAgTGlzdFNlcnZpY2UsXG4gICAgLy8gW09wdGlvbmFsXVxuICAgIC8vIFByb3ZpZGUgdGhpcyB0b2tlbiBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCBkZWJvdW5jZSB0aW1lLlxuICAgIC8vIERlZmF1bHQgaXMgMzAwLiBDYW5ub3QgYmUgMC4gQW55IHZhbHVlIGJlbG93IDEwMCBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAgeyBwcm92aWRlOiBMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUsIHVzZVZhbHVlOiA1MDAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5GaWVsZHMsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgX0ZpZWxkQWRtaW5TZXJ2aWNlOiBGaWVsZEFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgKSB7fVxuICBwcml2YXRlIF9VcGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XG4gIHByaXZhdGUgX0ZpZWxkQWJzdHJhY3RzU2VydmljZSA9IGluamVjdChGaWVsZEFic3RyYWN0c1NlcnZpY2UpO1xuICAvKirooajmoLzljZXlhYPmoLzluIPlsYDnsbvlnosgKi9cbiAgQ29sdW1uTW9kZSA9IENvbHVtbk1vZGU7XG5cbiAgLyoq6KGo5qC85pWw5o2uICovXG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPEZpZWxkRHRvPiA9IHtcbiAgICBpdGVtczogW10sXG4gICAgdG90YWxDb3VudDogMCxcbiAgfTtcblxuICAvKirov4fmu6TlmaggKi9cbiAgZmlsdGVycyA9IHt9IGFzIEdldEZpZWxkc0lucHV0O1xuXG4gIC8qKuaYr+WQpuWIneWni+WMluWujOaIkCAqL1xuICBpc0luaXQ9dHJ1ZTtcblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9GaWVsZEFic3RyYWN0c1NlcnZpY2UuZ2V0RnJvbUNvbnRyb2xMaXN0KCk7XG4gICAgdGhpcy5pc0luaXQ9dHJ1ZTtcbiAgICB0aGlzLmhvb2tUb1F1ZXJ5KCk7XG4gICAgdGhpcy5fVXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdEV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgfSk7XG4gIH1cbiAgZ2V0RGF0YSgpIHtcbiAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gIH1cblxuICAvKirlrZfmrrXliIbnu4TpgInmi6nlm57osIMgKi9cbiAgZmllbGRHcm91cENoYW5nZShldmVudCkge1xuICAgIHRoaXMuZmlsdGVycy5ncm91cElkID0gZXZlbnQ7XG4gICAgdGhpcy5saXN0LnBhZ2UgPSAwO1xuICAgIHRoaXMubGlzdC5nZXQoKTtcbiAgfVxuXG4gIC8qKuS9v+eUqGFicOeahGxpc3Tojrflj5booajmoLznmoTlrZfmrrXmlbDmja7liJfooaggKi9cbiAgaG9va1RvUXVlcnkoKSB7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChxdWVyeTogQUJQLlBhZ2VRdWVyeVBhcmFtcykgPT5cbiAgICAgIHRoaXMuX0ZpZWxkQWRtaW5TZXJ2aWNlLmdldExpc3Qoe1xuICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgLi4udGhpcy5maWx0ZXJzLFxuICAgICAgfSk7XG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxGaWVsZER0bz4pID0+IHtcbiAgICAgIHRoaXMuZGF0YSA9IGxpc3Q7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfTtcbiAgICB0aGlzLmxpc3QuaG9va1RvUXVlcnkoZ2V0RGF0YSkuc3Vic2NyaWJlKHNldERhdGEpO1xuICB9XG4gIHNjcm9sbFRvVG9wKCkge1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xweC1zY3JvbGwtY29udGFpbmVyJylbMF07XG4gICAgKHNjcm9sbENvbnRhaW5lciB8fCB3aW5kb3cpLnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgLyoq5paw5bu65a2X5q615oyJ6ZKuICovXG4gIHRvRmllbGRzQ3JlYXRlQnRuKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Ntcy9hZG1pbi9maWVsZHMvY3JlYXRlJ10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGdyb3VwSWQ6IHRoaXMuZmlsdGVycy5ncm91cElkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuWIoOmZpOWtl+autSAqL1xuICBkZWxldGVmaWVsZChyb3c6IGFueSkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uXG4gICAgICAud2Fybihyb3cuZGlzcGxheU5hbWUsIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6Okl0ZW1XaWxsQmVEZWxldGVkTWVzc2FnZWApKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XG4gICAgICAgICAgdGhpcy5fRmllbGRBZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGUocm93LmlkKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4ge30pKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpEZWxldGVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RmllbGRzJyB8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXBhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y21zLWZpZWxkLWdyb3VwIChPbkdyb3VwQ2xpY2tCYWNrKT1cImZpZWxkR3JvdXBDaGFuZ2UoJGV2ZW50KVwiPjwvY21zLWZpZWxkLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbWItMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB4LTIgcHktc20tMiAgIGJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWJwVWk6OlNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTNcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidXR0b24tYWRkb24yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImxpc3QuZ2V0KClcIj48aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW5pdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFicC1leHRlbnNpYmxlLXRhYmxlIFtkYXRhXT1cImRhdGE/Lml0ZW1zXCIgW3JlY29yZHNUb3RhbF09XCJkYXRhPy50b3RhbENvdW50XCIgW2xpc3RdPVwibGlzdFwiPjwvYWJwLWV4dGVuc2libGUtdGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2FicC1wYWdlPiJdfQ==
132
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 50 },
133
+ ], template: "<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\r\n <div class=\"row\" style=\"min-height: calc(100vh - 42px - 54px - 1.25em - 1.25em);\">\r\n <div class=\"col-md-3 mb-2\">\r\n <cms-fields-group (OnGroupClickBack)=\"onGroupClickBack($event)\"></cms-fields-group>\r\n </div>\r\n <div class=\"col-md-9 mb-2\">\r\n <div class=\"card mb-0\">\r\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" >\r\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\r\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\"\r\n [list]=\"list\">\r\n </abp-extensible-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>" }]
134
+ }], ctorParameters: () => [{ type: i1.ListService }, { type: i2.FieldsDataService }, { type: i3.ToasterService }, { type: i3.ConfirmationService }, { type: i1.LocalizationService }, { type: i4.Router }, { type: i5.UpdateListService }] });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZmllbGRzL2ZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9maWVsZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQUdwQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFvQjVELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ2tCLElBQWlCLEVBQ3pCLFFBQTJCLEVBQzNCLE9BQXVCLEVBQ3ZCLFlBQWlDLEVBQ2pDLG9CQUF5QyxFQUN6QyxNQUFjLEVBQ2Qsa0JBQXFDO1FBTjdCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsaUJBQVksR0FBWixZQUFZLENB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NUQsdUVBQXVFO3dCQUN2RSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO3FCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEZpZWxkc0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgTGlzdFNlcnZpY2UsXHJcbiAgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLFxyXG4gIExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgUGFnZWRSZXN1bHREdG8sXHJcbiAgQUJQLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlLCBDb25maXJtYXRpb24gfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFVwZGF0ZUxpc3RTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZER0bywgR2V0RmllbGRzSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9maWVsZHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtZmllbGRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZmllbGRzLmNvbXBvbmVudC5zY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5GaWVsZHMsXHJcbiAgICB9LFxyXG4gICAgLy8gW1JlcXVpcmVkXVxyXG4gICAgTGlzdFNlcnZpY2UsXHJcbiAgICAvLyBbT3B0aW9uYWxdXHJcbiAgICAvLyBQcm92aWRlIHRoaXMgdG9rZW4gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgZGVib3VuY2UgdGltZS5cclxuICAgIC8vIERlZmF1bHQgaXMgMzAwLiBDYW5ub3QgYmUgMC4gQW55IHZhbHVlIGJlbG93IDEwMCBpcyBub3QgcmVjb21tZW5kZWQuXHJcbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBGaWVsZHNEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfVXBkYXRlTGlzdFNlcnZpY2U6IFVwZGF0ZUxpc3RTZXJ2aWNlLFxyXG4gICkge31cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vQ2FsbGVkIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciwgaW5pdGlhbGl6aW5nIGlucHV0IHByb3BlcnRpZXMsIGFuZCB0aGUgZmlyc3QgY2FsbCB0byBuZ09uQ2hhbmdlcy5cclxuICAgIC8vQWRkICdpbXBsZW1lbnRzIE9uSW5pdCcgdG8gdGhlIGNsYXNzLlxyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuX3NlcnZpY2UuZ2V0ZmllbGRHcm91cHMoKSwgdGhpcy5fc2VydmljZS5nZXRDb250cm9sc2ZpZWxkVHlwZXMoKV0pO1xyXG4gICAgdGhpcy5ob29rVG9RdWVyeSgpO1xyXG4gICBjb25zb2xlLmxvZyh0aGlzLmxpc3QsJzExMTEnKTtcclxuXHJcbiAgICB0aGlzLl9VcGRhdGVMaXN0U2VydmljZS51cGRhdGVMaXN0RXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKirooajmoLzmlbDmja4gKi9cclxuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxGaWVsZER0bz4gPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICB0b3RhbENvdW50OiAwLFxyXG4gIH07XHJcblxyXG4gIC8qKui/h+a7pOWZqCAqL1xyXG4gIGZpbHRlcnMgPSB7fSBhcyBHZXRGaWVsZHNJbnB1dDtcclxuXHJcbiAgLyoq5L2/55SoYWJw55qEbGlzdOiOt+WPluihqOagvOeahOWtl+auteaVsOaNruWIl+ihqCAqL1xyXG4gIGhvb2tUb1F1ZXJ5KCkge1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IChxdWVyeTogQUJQLlBhZ2VRdWVyeVBhcmFtcykgPT5cclxuICAgICAgdGhpcy5fc2VydmljZS5nZXRGaWVsZHNMaXN0KHtcclxuICAgICAgICAuLi5xdWVyeSxcclxuICAgICAgICAuLi50aGlzLmZpbHRlcnMsXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxGaWVsZER0bz4pID0+IHtcclxuICAgICAgdGhpcy5kYXRhID0gbGlzdDtcclxuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xyXG4gICAgfTtcclxuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShnZXREYXRhKS5zdWJzY3JpYmUoc2V0RGF0YSk7XHJcbiAgfVxyXG4gIC8qKuiOt+WPluihqOagvOaVsOaNriAqL1xyXG4gIGdldERhdGEoKSB7XHJcbiAgICB0aGlzLmRhdGEuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZGF0YS50b3RhbENvdW50ID0gMDtcclxuICAgIC8vIHRoaXMubGlzdC5wYWdlPTA7XHJcbiAgICB0aGlzLmxpc3QuZ2V0KCk7XHJcbiAgfVxyXG4gIC8qKumHjee9riAqL1xyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJzID0ge30gYXMgR2V0RmllbGRzSW5wdXQ7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcbiBcclxuXHJcbiAgLyoq5Zue5Yiw6aG16Z2i6aG26YOoICovXHJcbiAgc2Nyb2xsVG9Ub3AoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdscHgtc2Nyb2xsLWNvbnRhaW5lcicpWzBdO1xyXG4gICAgKHNjcm9sbENvbnRhaW5lciB8fCB3aW5kb3cpLnNjcm9sbFRvKDAsIDApO1xyXG4gIH1cclxuXHJcbiAgLyoq54K55Ye75a2X5q615YiG57uE5Zue6LCDICovXHJcbiAgb25Hcm91cENsaWNrQmFjayhncm91cElkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVycy5ncm91cElkID0gZ3JvdXBJZDtcclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgLyoq5Yig6Zmk5a2X5q61ICovXHJcbiAgZGVsZXRlZmllbGQocm93OiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgIC53YXJuKHJvdy5kaXNwbGF5TmFtZSwgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6SXRlbVdpbGxCZURlbGV0ZWRNZXNzYWdlYCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmRlbGV0ZUZpZWxkKHJvdy5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6RGVsZXRlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoq5paw5bu65a2X5q615oyJ6ZKuICovXHJcbiAgdG9GaWVsZHNDcmVhdGVCdG4oKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9jbXMvYWRtaW4vZmllbGRzL2NyZWF0ZSddLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogdGhpcy5maWx0ZXJzLmdyb3VwSWQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoq57yW6L6R5a2X5q615oyJ6ZKuICovXHJcbiAgZWRpdGZpZWxkQnRuKHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9jbXMvYWRtaW4vZmllbGRzLycgKyByb3cuaWQgKyAnL2VkaXQnXSwge30pO1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6OkZpZWxkcycgfCBhYnBMb2NhbGl6YXRpb25cIiBbdG9vbGJhcl09XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDJweCAtIDU0cHggLSAxLjI1ZW0gLSAxLjI1ZW0pO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi0yXCI+XHJcbiAgICAgICAgICAgIDxjbXMtZmllbGRzLWdyb3VwIChPbkdyb3VwQ2xpY2tCYWNrKT1cIm9uR3JvdXBDbGlja0JhY2soJGV2ZW50KVwiPjwvY21zLWZpZWxkcy1ncm91cD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbWItMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHgtMiBweS1zbS0yICAgYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5maWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBYnBVaTo6U2VhcmNoJyB8IGFicExvY2FsaXphdGlvblwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC0zXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnV0dG9uLWFkZG9uMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGlzdC5nZXQoKVwiPjxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS10YWJsZSBbZGF0YV09XCJkYXRhPy5pdGVtc1wiIFtyZWNvcmRzVG90YWxdPVwiZGF0YT8udG90YWxDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdF09XCJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYWJwLWV4dGVuc2libGUtdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9hYnAtcGFnZT4iXX0=
@@ -1,7 +1,7 @@
1
1
  export * from './fields.component';
2
- export * from './field-group.component';
2
+ export * from './fields-group.component';
3
3
  export * from './create-field.component';
4
4
  export * from './create-or-edit-field.component';
5
5
  export * from './edit-field.component';
6
- export * from './create-or-update-field-input-base';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxxQ0FBcUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmllbGRzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9maWVsZC1ncm91cC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLWZpZWxkLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtb3ItZWRpdC1maWVsZC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vZWRpdC1maWVsZC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1maWVsZC1pbnB1dC1iYXNlJyJdfQ==
6
+ // export * from './create-or-update-field-input-base'
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsc0RBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWVsZHMuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkcy1ncm91cC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLWZpZWxkLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtb3ItZWRpdC1maWVsZC5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vZWRpdC1maWVsZC5jb21wb25lbnQnXHJcbi8vIGV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1maWVsZC1pbnB1dC1iYXNlJyJdfQ==
@@ -5,23 +5,25 @@ import { FormControl, FormGroup, Validators, } from '@angular/forms';
5
5
  import { ValidatorsService, UpdateListService } from '@dignite-ng/expand.core';
6
6
  import { finalize } from 'rxjs';
7
7
  import { ToasterService } from '@abp/ng.theme.shared';
8
- import { CmsApiService } from '../../../services';
9
8
  import { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';
10
9
  import { SectionType, sectionTypeOptions } from '../../../proxy/dignite/cms/sections';
10
+ import { ToPinyinService } from '@dignite-ng/expand.core';
11
11
  import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- import * as i2 from "@angular/forms";
14
- import * as i3 from "@ngx-validate/core";
15
- import * as i4 from "@abp/ng.theme.shared";
16
- import * as i5 from "@abp/ng.core";
12
+ import * as i1 from "@dignite-ng/expand.core";
13
+ import * as i2 from "@angular/common";
14
+ import * as i3 from "@angular/forms";
15
+ import * as i4 from "@ngx-validate/core";
16
+ import * as i5 from "@abp/ng.theme.shared";
17
+ import * as i6 from "@abp/ng.core";
17
18
  export class CreateOrEditSectionsModalComponent {
18
- constructor() {
19
+ constructor(toPinyinService) {
20
+ this.toPinyinService = toPinyinService;
19
21
  this._LocalizationService = inject(LocalizationService);
20
22
  this.toaster = inject(ToasterService);
21
23
  this._ValidatorsService = inject(ValidatorsService);
22
24
  this._UpdateListService = inject(UpdateListService);
23
25
  this._SectionAdminService = inject(SectionAdminService);
24
- this._CmsApiService = inject(CmsApiService);
26
+ /**重置表单 */
25
27
  this._SectionType = SectionType;
26
28
  this._sectionTypeOptions = sectionTypeOptions;
27
29
  /**表单验证状态 */
@@ -92,7 +94,7 @@ export class CreateOrEditSectionsModalComponent {
92
94
  .pipe(finalize(() => {
93
95
  this.reset();
94
96
  }))
95
- .subscribe(res => {
97
+ .subscribe(() => {
96
98
  this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
97
99
  this.visibleChange.emit(false);
98
100
  this.formValidation = '';
@@ -104,7 +106,7 @@ export class CreateOrEditSectionsModalComponent {
104
106
  .pipe(finalize(() => {
105
107
  this.reset();
106
108
  }))
107
- .subscribe(res => {
109
+ .subscribe(() => {
108
110
  this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
109
111
  this.visibleChange.emit(false);
110
112
  this.formValidation = '';
@@ -116,7 +118,7 @@ export class CreateOrEditSectionsModalComponent {
116
118
  }
117
119
  disPlayNameInputBlur(event) {
118
120
  const value = event.target.value;
119
- const pinyin = this._CmsApiService.chineseToPinyin(value);
121
+ const pinyin = this.toPinyinService.get(value);
120
122
  const nameInput = this.nameInput;
121
123
  const routeInput = this.routeInput;
122
124
  const templateInput = this.templateInput;
@@ -194,13 +196,13 @@ export class CreateOrEditSectionsModalComponent {
194
196
  });
195
197
  };
196
198
  }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditSectionsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
- 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\" \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" }] }); }
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditSectionsModalComponent, deps: [{ token: i1.ToPinyinService }], target: i0.ɵɵFactoryTarget.Component }); }
200
+ 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\" \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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] }); }
199
201
  }
200
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditSectionsModalComponent, decorators: [{
201
203
  type: Component,
202
204
  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\" \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>" }]
203
- }], propDecorators: { visible: [{
205
+ }], ctorParameters: () => [{ type: i1.ToPinyinService }], propDecorators: { visible: [{
204
206
  type: Input
205
207
  }], formEntity: [{
206
208
  type: Input
@@ -210,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
210
212
  }], visibleChange: [{
211
213
  type: Output
212
214
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL3NlY3Rpb25zL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFHVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBT3RGLE1BQU0sT0FBTyxrQ0FBa0M7SUFML0M7UUFNVSx5QkFBb0Is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QUFDLENBQUM7b0JBQ2QsT0FBTztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3hFLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDOzRCQUNOLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUMzQyxrQ0FBa0MsRUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FDWDt5QkFDRixDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FqTlUsa0NBQWtDO2tHQUFsQyxrQ0FBa0Msb1NDL0IvQywyb0tBZ0ZZOzsyRkRqREMsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLG1DQUFtQzs4QkFtQmxDLE9BQU87c0JBRGpCLEtBQUs7Z0JBWUssVUFBVTtzQkFEcEIsS0FBSztnQkErQjJDLGVBQWU7c0JBQS9ELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNyQyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSwgVXBkYXRlTGlzdFNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBDbXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTZWN0aW9uQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vc2VjdGlvbnMnO1xyXG5pbXBvcnQgeyBTZWN0aW9uVHlwZSwgc2VjdGlvblR5cGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvc2VjdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdFNlY3Rpb25zTW9kYWxDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9WYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChWYWxpZGF0b3JzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfVXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX1NlY3Rpb25BZG1pblNlcnZpY2UgPSBpbmplY3QoU2VjdGlvbkFkbWluU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfQ21zQXBpU2VydmljZSA9IGluamVjdChDbXNBcGlTZXJ2aWNlKTtcclxuICBfU2VjdGlvblR5cGUgPSBTZWN0aW9uVHlwZTtcclxuICBfc2VjdGlvblR5cGVPcHRpb25zID0gc2VjdGlvblR5cGVPcHRpb25zO1xyXG4gIC8qKuihqOWNlemqjOivgeeKtuaAgSAqL1xyXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcclxuIFxyXG4gIC8qKuaooeaAgeahhi3nirbmgIEt5piv5ZCm5omT5byAICovXHJcbiAgTW9kYWxPcGVuOiBib29sZWFufGFueSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2aXNpYmxlKHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuTW9kYWxPcGVuID0gdjtcclxuICB9XHJcblxyXG4gIC8qKuaooeaAgeahhi3nuYHlv5nnirbmgIEt55So5LqO56Gu5a6a5qih5oCB55qE57mB5b+Z54q25oCB5piv5ZCm5Li655yfICovXHJcbiAgTW9kYWxCdXN5OiBib29sZWFufGFueSA9IGZhbHNlO1xyXG4gIC8qKuWIneWni+WAvCAqL1xyXG4gIHNlbGVjdGVkOiBhbnkgPSAnJztcclxuICAvKirmqKHmgIHmoYYt6KGo5Y2VICovXHJcbiAgTW9kYWxGb3JtOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZvcm1FbnRpdHkodjogRm9ybUdyb3VwIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLk1vZGFsRm9ybSA9IHY7XHJcbiAgICBpZiAodikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gdj8udmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzRm4oKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGlkSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0/LmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IGRpc3BsYXlOYW1lSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0uZ2V0KCdkaXNwbGF5TmFtZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuICBnZXQgbmFtZUlucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtLmdldCgnbmFtZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuICBnZXQgcm91dGVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ3JvdXRlJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIGdldCB0ZW1wbGF0ZUlucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtLmdldCgndGVtcGxhdGUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IHR5cGVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ3R5cGUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgcmFkaW9jaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLnJvdXRlSW5wdXQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoq5qih5oCB5qGGLeihqOWNlS0t5o6n5Lu25qih5p2/LeWKqOaAgei1i+WAvOihqOWNleaOp+S7tiAqL1xyXG4gIEBWaWV3Q2hpbGQoJ01vZGFsRm9ybVN1Ym1pdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBNb2RhbEZvcm1TdWJtaXQ6IEVsZW1lbnRSZWY7XHJcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoq5qih5oCB5qGGLeeKtuaAgeaUueWPmOWbnuiwgyAqL1xyXG4gIE1vZGFsVmlzaWJsZUNoYW5nZShldmVudCkge1xyXG4gICAgdGhpcy5Nb2RhbE9wZW4gPSBldmVudDtcclxuICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICB0aGlzLk1vZGFsRm9ybT11bmRlZmluZWQ7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgICBpZiAoIWV2ZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbiAgLyoq5L+d5a2YICovXHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLk1vZGFsRm9ybSk7XHJcbiAgICBpZiAodGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuaXNDaGVja0Zvcm0odGhpcy5mb3JtVmFsaWRhdGlvbiwgJ0NtcycpKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuTW9kYWxCdXN5KSByZXR1cm47XHJcbiAgICB0aGlzLk1vZGFsQnVzeSA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMuTW9kYWxGb3JtLnZhbGlkKSByZXR1cm47XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuTW9kYWxGb3JtLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaWRJbnB1dC52YWx1ZSkge1xyXG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXHJcbiAgICAgICAgLnVwZGF0ZSh0aGlzLmlkSW5wdXQudmFsdWUsIGlucHV0KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZVxyXG4gICAgICAuY3JlYXRlKGlucHV0KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICByZXNldCgpe1xyXG4gICAgdGhpcy5Nb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHRoaXMuX1VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcclxuICB9XHJcblxyXG4gICAgZGlzUGxheU5hbWVJbnB1dEJsdXIoZXZlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgcGlueWluID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpO1xyXG4gICAgY29uc3QgbmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXQ7XHJcbiAgICBjb25zdCByb3V0ZUlucHV0ID0gdGhpcy5yb3V0ZUlucHV0O1xyXG4gICAgY29uc3QgdGVtcGxhdGVJbnB1dCA9IHRoaXMudGVtcGxhdGVJbnB1dDtcclxuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVybjtcclxuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbik7XHJcbiAgICBpZiAocm91dGVJbnB1dC52YWx1ZSkgcmV0dXJuO1xyXG4gICAgcm91dGVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbiArICh0aGlzLnR5cGVJbnB1dC52YWx1ZSA9PT0gMCA/ICcnIDogJy97c2x1Z30nKSk7XHJcbiAgICBpZiAodGVtcGxhdGVJbnB1dC52YWx1ZSkgcmV0dXJuO1xyXG4gICAgdGVtcGxhdGVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbiArICcvaW5kZXgnKTtcclxuICB9XHJcblxyXG4gIHNldEFzeW5jVmFsaWRhdG9yc0ZuKCkge1xyXG4gICAgdGhpcy5Nb2RhbEZvcm0/LnNldENvbnRyb2woXHJcbiAgICAgICduYW1lJyxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKHRoaXMubmFtZUlucHV0LnZhbHVlIHx8ICcnLCB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMubmFtZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuTW9kYWxGb3JtPy5zZXRDb250cm9sKFxyXG4gICAgICAncm91dGUnLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5yb3V0ZUlucHV0LnZhbHVlIHx8ICcnLCB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuZm9yYmlkZGVuTmFtZVZhbGlkYXRvcigpXSxcclxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IFt0aGlzLnJvdXRlUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCldLFxyXG4gICAgICAgIHVwZGF0ZU9uOiAnY2hhbmdlJyxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGZvcmJpZGRlbk5hbWVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjb250cm9sLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGZvcmJpZGRlbiA9XHJcbiAgICAgICAgdGhpcy50eXBlSW5wdXQudmFsdWUgPT0gMCA/IGZhbHNlIDogaW5wdXRWYWx1ZS5pbmNsdWRlcygne3NsdWd9JykgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAgIHJldHVybiBmb3JiaWRkZW5cclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgIGBDbXM6OlJvdXRlVmVyaWZpY2F0aW9uVGlwc2AsXHJcbiAgICAgICAgICAgICAgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgYENtczo6RW51bTpTZWN0aW9uVHlwZTpgICsgU2VjdGlvblR5cGVbdGhpcy50eXBlSW5wdXQudmFsdWVdXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAne3NsdWd9J1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG4gIG5hbWVSZXBldGl0aW9uQXN5bmNWYWxpZGF0b3IoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjdHJsOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2x1ZyA9IHRoaXMuTW9kYWxGb3JtPy5nZXQoJ25hbWUnKTtcclxuXHJcbiAgICAgICAgaWYgKHN1YnNsdWcudmFsdWUgPT0gdGhpcy5zZWxlY3RlZD8ubmFtZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5uYW1lRXhpc3RzKHsgbmFtZTogc3Vic2x1Zy52YWx1ZSB9KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgYENtczo6U2VjdGlvbk5hbWV7MH1BbHJlYWR5RXhpc3RgLFxyXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuICByb3V0ZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGN0cmw6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICBjb25zdCBzdWJzbHVnID0gdGhpcy5Nb2RhbEZvcm0/LmdldCgncm91dGUnKS52YWx1ZTtcclxuICAgICAgICBpZiAoc3Vic2x1ZyA9PSB0aGlzLnNlbGVjdGVkPy5yb3V0ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5yb3V0ZUV4aXN0cyh7IHJvdXRlOiBzdWJzbHVnIH0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBgQ21zOjpTZWN0aW9uUm91dGV7MH1BbHJlYWR5RXhpc3RgLFxyXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiTW9kYWxPcGVuXCIgW2J1c3ldPVwiTW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwiTW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgICAgIDxoMz57e3NlbGVjdGVkPygnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uKTooJ0Ntczo6TmV3JyB8IGFicExvY2FsaXphdGlvbil9fTwvaDM+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTW9kYWxGb3JtOyBlbHNlIGxvYWRlclJlZlwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiBbZm9ybUdyb3VwXT1cIk1vZGFsRm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICNNb2RhbEZvcm1TdWJtaXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfc2VjdGlvblR5cGVPcHRpb25zO2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJhZGlvY2hhbmdlKClcIiBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgaWQ9XCJmbGV4UmFkaW9EZWZhdWx0e3tpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleFJhZGlvRGVmYXVsdHt7aX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdDbXM6OkVudW06U2VjdGlvblR5cGU6JytpdGVtLmtleSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkaXNQbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwibmFtZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlJvdXRlJyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwicm91dGVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tyb3V0ZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtbXV0ZWQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OlJvdXRlVGlwcycgfCBhYnBMb2NhbGl6YXRpb259fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7YmxvZzxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7e3snYmxvZy97c2x1Z30nfX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO3t7J2Jsb2cve3B1Ymxpc2hUaW1lOnl5eXl9L3twdWJsaXNoVGltZTpNTX0ve3NsdWd9J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpUZW1wbGF0ZScgfCBhYnBMb2NhbGl6YXRpb259fSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVtcGxhdGVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtbXV0ZWQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiQ21zOjpUZW1wbGF0ZVRpcHNcIiB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNEZWZhdWx0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImlzRGVmYXVsdFwiPiB7eydDbXM6OkRlZmF1bHQnIHwgYWJwTG9jYWxpemF0aW9ufX0gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0FjdGl2ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJpc0FjdGl2ZVwiPiB7eydDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgdHlwZT1cImJ1dHRvblwiIFtsb2FkaW5nXT1cIk1vZGFsQnVzeVwiIFtkaXNhYmxlZF09XCJNb2RhbEJ1c3lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiTW9kYWxGb3JtU3VibWl0Py5uYXRpdmVFbGVtZW50Py5jbGljaygpXCI+e3snQWJwVWk6OlNhdmUnfGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL3NlY3Rpb25zL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFHVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sa0NBQWtDO0lBTzdDLFlBQ1csZUFBK0I7UUFBL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBUGxDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFNM0QsVUFBVTtRQUVWLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBQ3pDLFlBQVk7UUFDWixtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUV6QixpQkFBaUI7UUFDakIsY0FBUyxHQUFnQixLQUFLLENBQUM7UUFNL0IsOEJBQThCO1FBQzlCLGNBQVMsR0FBZ0IsS0FBSyxDQUFDO1FBQy9CLFNBQVM7UUFDVCxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBbUNULGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQXREMUMsQ0FBQztJQVdKLElBQ1csT0FBTyxDQUFDLENBQVU7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQVFELElBQ1csVUFBVSxDQUFDLENBQXdCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBZ0IsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQWdCLENBQUM7SUFDMUQsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFnQixDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWdCLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFnQixDQUFDO0lBQ25ELENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBS0QsZ0JBQWdCO0lBQ2hCLGtCQUFrQixDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBQyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBQyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtJQUNSLElBQUk7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEYsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUU1RSxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQjtpQkFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztpQkFDakMsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CO2FBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDYixJQUFJLENBQ0gsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUMsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVDLG9CQUFvQixDQUFDLEtBQUs7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxTQUFTLENBQUMsS0FBSztZQUFFLE9BQU87UUFDNUIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLFVBQVUsQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUM3QixVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksYUFBYSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ2hDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQ3hCLE1BQU0sRUFDTixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7WUFDMUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7U0FDckQsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FDeEIsT0FBTyxFQUNQLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hFLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3ZELFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUNELHNCQUFzQjtRQUNwQixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckQsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25GLE9BQU8sU0FBUztnQkFDZCxDQUFDLENBQUM7b0JBQ0UsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQzNDLDRCQUE0QixFQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUMvQix3QkFBd0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDN0QsRUFDRCxRQUFRLENBQ1Q7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCw0QkFBNEI7UUFDMUIsT0FBTyxDQUNMLElBQXFCLEVBQ21ELEVBQUU7WUFDMUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTVDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2QsT0FBTztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM1RSxJQUFJLEdBQUcsRUFBRSxDQUFDO3dCQUNSLE9BQU8sQ0FBQzs0QkFDTixVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FDM0MsaUNBQWlDLEVBQ2pDLElBQUksQ0FBQyxLQUFLLENBQ1g7eUJBQ0YsQ0FBQyxDQUFDO29CQUNMLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCw2QkFBNkI7UUFDM0IsT0FBTyxDQUNMLElBQXFCLEVBQ21ELEVBQUU7WUFDMUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNuRCxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2QsT0FBTztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3hFLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDOzRCQUNOLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUMzQyxrQ0FBa0MsRUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FDWDt5QkFDRixDQUFDLENBQUM7b0JBQ0wsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F2TlUsa0NBQWtDO2tHQUFsQyxrQ0FBa0Msb1NDL0IvQywyb0tBZ0ZZOzsyRkRqREMsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLG1DQUFtQztvRkF5QmxDLE9BQU87c0JBRGpCLEtBQUs7Z0JBWUssVUFBVTtzQkFEcEIsS0FBSztnQkErQjJDLGVBQWU7c0JBQS9ELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNyQyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSwgVXBkYXRlTGlzdFNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBTZWN0aW9uQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vc2VjdGlvbnMnO1xyXG5pbXBvcnQgeyBTZWN0aW9uVHlwZSwgc2VjdGlvblR5cGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvc2VjdGlvbnMnO1xyXG5pbXBvcnQgeyBUb1BpbnlpblNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Ntcy1jcmVhdGUtb3ItZWRpdC1zZWN0aW9ucy1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1vci1lZGl0LXNlY3Rpb25zLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtc2VjdGlvbnMtbW9kYWwuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JFZGl0U2VjdGlvbnNNb2RhbENvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9VcGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZSA9IGluamVjdChTZWN0aW9uQWRtaW5TZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgcHJpdmF0ZSB0b1BpbnlpblNlcnZpY2U6VG9QaW55aW5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKirph43nva7ooajljZUgKi9cclxuXHJcbiAgX1NlY3Rpb25UeXBlID0gU2VjdGlvblR5cGU7XHJcbiAgX3NlY3Rpb25UeXBlT3B0aW9ucyA9IHNlY3Rpb25UeXBlT3B0aW9ucztcclxuICAvKirooajljZXpqozor4HnirbmgIEgKi9cclxuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XHJcbiBcclxuICAvKirmqKHmgIHmoYYt54q25oCBLeaYr+WQpuaJk+W8gCAqL1xyXG4gIE1vZGFsT3BlbjogYm9vbGVhbnxhbnkgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmlzaWJsZSh2OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLk1vZGFsT3BlbiA9IHY7XHJcbiAgfVxyXG5cclxuICAvKirmqKHmgIHmoYYt57mB5b+Z54q25oCBLeeUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xyXG4gIE1vZGFsQnVzeTogYm9vbGVhbnxhbnkgPSBmYWxzZTtcclxuICAvKirliJ3lp4vlgLwgKi9cclxuICBzZWxlY3RlZDogYW55ID0gJyc7XHJcbiAgLyoq5qih5oCB5qGGLeihqOWNlSAqL1xyXG4gIE1vZGFsRm9ybTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JtRW50aXR5KHY6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5Nb2RhbEZvcm0gPSB2O1xyXG4gICAgaWYgKHYpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHY/LnZhbHVlO1xyXG4gICAgICB0aGlzLnNldEFzeW5jVmFsaWRhdG9yc0ZuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpZElucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtPy5nZXQoJ2lkJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIGdldCBkaXNwbGF5TmFtZUlucHV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTW9kYWxGb3JtLmdldCgnZGlzcGxheU5hbWUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IG5hbWVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ25hbWUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiAgZ2V0IHJvdXRlSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0uZ2V0KCdyb3V0ZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuICBnZXQgdGVtcGxhdGVJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLk1vZGFsRm9ybS5nZXQoJ3RlbXBsYXRlJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIGdldCB0eXBlSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5Nb2RhbEZvcm0uZ2V0KCd0eXBlJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIHJhZGlvY2hhbmdlKCkge1xyXG4gICAgdGhpcy5yb3V0ZUlucHV0LnBhdGNoVmFsdWUodGhpcy5yb3V0ZUlucHV0LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKuaooeaAgeahhi3ooajljZUtLeaOp+S7tuaooeadvy3liqjmgIHotYvlgLzooajljZXmjqfku7YgKi9cclxuICBAVmlld0NoaWxkKCdNb2RhbEZvcm1TdWJtaXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgTW9kYWxGb3JtU3VibWl0OiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKuaooeaAgeahhi3nirbmgIHmlLnlj5jlm57osIMgKi9cclxuICBNb2RhbFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcclxuICAgIHRoaXMuTW9kYWxPcGVuID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uPScnO1xyXG4gICAgdGhpcy5Nb2RhbEZvcm09dW5kZWZpbmVkO1xyXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gICAgaWYgKCFldmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKuS/neWtmCAqL1xyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5Nb2RhbEZvcm0pO1xyXG4gICAgaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLk1vZGFsQnVzeSkgcmV0dXJuO1xyXG4gICAgdGhpcy5Nb2RhbEJ1c3kgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLk1vZGFsRm9ybS52YWxpZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLk1vZGFsRm9ybS52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlkSW5wdXQudmFsdWUpIHtcclxuICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZVxyXG4gICAgICAgIC51cGRhdGUodGhpcy5pZElucHV0LnZhbHVlLCBpbnB1dClcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb249Jyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZVxyXG4gICAgICAuY3JlYXRlKGlucHV0KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbj0nJztcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHJlc2V0KCl7XHJcbiAgICB0aGlzLk1vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5fVXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgICBkaXNQbGF5TmFtZUlucHV0Qmx1cihldmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICBjb25zdCBwaW55aW4gPSB0aGlzLnRvUGlueWluU2VydmljZS5nZXQodmFsdWUpO1xyXG4gICAgY29uc3QgbmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXQ7XHJcbiAgICBjb25zdCByb3V0ZUlucHV0ID0gdGhpcy5yb3V0ZUlucHV0O1xyXG4gICAgY29uc3QgdGVtcGxhdGVJbnB1dCA9IHRoaXMudGVtcGxhdGVJbnB1dDtcclxuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVybjtcclxuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbik7XHJcbiAgICBpZiAocm91dGVJbnB1dC52YWx1ZSkgcmV0dXJuO1xyXG4gICAgcm91dGVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbiArICh0aGlzLnR5cGVJbnB1dC52YWx1ZSA9PT0gMCA/ICcnIDogJy97c2x1Z30nKSk7XHJcbiAgICBpZiAodGVtcGxhdGVJbnB1dC52YWx1ZSkgcmV0dXJuO1xyXG4gICAgdGVtcGxhdGVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbiArICcvaW5kZXgnKTtcclxuICB9XHJcblxyXG4gIHNldEFzeW5jVmFsaWRhdG9yc0ZuKCkge1xyXG4gICAgdGhpcy5Nb2RhbEZvcm0/LnNldENvbnRyb2woXHJcbiAgICAgICduYW1lJyxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKHRoaXMubmFtZUlucHV0LnZhbHVlIHx8ICcnLCB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMubmFtZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuTW9kYWxGb3JtPy5zZXRDb250cm9sKFxyXG4gICAgICAncm91dGUnLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5yb3V0ZUlucHV0LnZhbHVlIHx8ICcnLCB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuZm9yYmlkZGVuTmFtZVZhbGlkYXRvcigpXSxcclxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IFt0aGlzLnJvdXRlUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCldLFxyXG4gICAgICAgIHVwZGF0ZU9uOiAnY2hhbmdlJyxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGZvcmJpZGRlbk5hbWVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjb250cm9sLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGZvcmJpZGRlbiA9XHJcbiAgICAgICAgdGhpcy50eXBlSW5wdXQudmFsdWUgPT0gMCA/IGZhbHNlIDogaW5wdXRWYWx1ZS5pbmNsdWRlcygne3NsdWd9JykgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAgIHJldHVybiBmb3JiaWRkZW5cclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgIGBDbXM6OlJvdXRlVmVyaWZpY2F0aW9uVGlwc2AsXHJcbiAgICAgICAgICAgICAgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgYENtczo6RW51bTpTZWN0aW9uVHlwZTpgICsgU2VjdGlvblR5cGVbdGhpcy50eXBlSW5wdXQudmFsdWVdXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAne3NsdWd9J1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG4gIG5hbWVSZXBldGl0aW9uQXN5bmNWYWxpZGF0b3IoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjdHJsOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2x1ZyA9IHRoaXMuTW9kYWxGb3JtPy5nZXQoJ25hbWUnKTtcclxuXHJcbiAgICAgICAgaWYgKHN1YnNsdWcudmFsdWUgPT0gdGhpcy5zZWxlY3RlZD8ubmFtZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5uYW1lRXhpc3RzKHsgbmFtZTogc3Vic2x1Zy52YWx1ZSB9KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgYENtczo6U2VjdGlvbk5hbWV7MH1BbHJlYWR5RXhpc3RgLFxyXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuICByb3V0ZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGN0cmw6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICBjb25zdCBzdWJzbHVnID0gdGhpcy5Nb2RhbEZvcm0/LmdldCgncm91dGUnKS52YWx1ZTtcclxuICAgICAgICBpZiAoc3Vic2x1ZyA9PSB0aGlzLnNlbGVjdGVkPy5yb3V0ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5yb3V0ZUV4aXN0cyh7IHJvdXRlOiBzdWJzbHVnIH0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBgQ21zOjpTZWN0aW9uUm91dGV7MH1BbHJlYWR5RXhpc3RgLFxyXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiTW9kYWxPcGVuXCIgW2J1c3ldPVwiTW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwiTW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgICAgIDxoMz57e3NlbGVjdGVkPygnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uKTooJ0Ntczo6TmV3JyB8IGFicExvY2FsaXphdGlvbil9fTwvaDM+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTW9kYWxGb3JtOyBlbHNlIGxvYWRlclJlZlwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiBbZm9ybUdyb3VwXT1cIk1vZGFsRm9ybVwiIFxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICNNb2RhbEZvcm1TdWJtaXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfc2VjdGlvblR5cGVPcHRpb25zO2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJhZGlvY2hhbmdlKClcIiBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgaWQ9XCJmbGV4UmFkaW9EZWZhdWx0e3tpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleFJhZGlvRGVmYXVsdHt7aX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdDbXM6OkVudW06U2VjdGlvblR5cGU6JytpdGVtLmtleSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkaXNQbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwibmFtZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlJvdXRlJyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwicm91dGVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tyb3V0ZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtbXV0ZWQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OlJvdXRlVGlwcycgfCBhYnBMb2NhbGl6YXRpb259fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7YmxvZzxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7e3snYmxvZy97c2x1Z30nfX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO3t7J2Jsb2cve3B1Ymxpc2hUaW1lOnl5eXl9L3twdWJsaXNoVGltZTpNTX0ve3NsdWd9J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpUZW1wbGF0ZScgfCBhYnBMb2NhbGl6YXRpb259fSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVtcGxhdGVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtbXV0ZWQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiQ21zOjpUZW1wbGF0ZVRpcHNcIiB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNEZWZhdWx0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImlzRGVmYXVsdFwiPiB7eydDbXM6OkRlZmF1bHQnIHwgYWJwTG9jYWxpemF0aW9ufX0gPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpc0FjdGl2ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJpc0FjdGl2ZVwiPiB7eydDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgdHlwZT1cImJ1dHRvblwiIFtsb2FkaW5nXT1cIk1vZGFsQnVzeVwiIFtkaXNhYmxlZF09XCJNb2RhbEJ1c3lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiTW9kYWxGb3JtU3VibWl0Py5uYXRpdmVFbGVtZW50Py5jbGljaygpXCI+e3snQWJwVWk6OlNhdmUnfGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19