@abp/ng.theme.shared 7.2.1 → 7.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,130 @@
1
- <h1> @abp/ng.theme.shared </h1>
1
+ ## ℹ️ Description
2
2
 
3
- [docs.abp.io](https://docs.abp.io)
3
+ ABP Framework is a complete open-source infrastructure to create modern web applications by following the best practices and conventions of software development. This package is a part of the [ABP Framework](https://abp.io) and contains client-side files.
4
+ For more information, check out the below links:
5
+
6
+ 🔗Official Website: https://abp.io
7
+
8
+ 🔗Commercial Website: https://commercial.abp.io
9
+
10
+ 🔗Commercial Demo: https://commercial.abp.io/demo
11
+
12
+ 🔗GitHub Repository: https://github.com/abpframework/abp
13
+
14
+ 🔗Official Theme: https://www.LeptonTheme.com
15
+
16
+ 🔗Documentation: https://docs.abp.io
17
+
18
+ 🔗Community: https://community.abp.io
19
+
20
+ 🔗Blog: https://blog.abp.io
21
+
22
+ 🔗Books: https://abp.io/books
23
+
24
+ 🔗Twitter: https://twitter.com/abpframework
25
+
26
+ 🔗Discord: https://community.abp.io/discord
27
+
28
+ 🔗Stackoverflow: https://stackoverflow.com/questions/tagged/abp
29
+
30
+ 🔗YouTube: https://www.youtube.com/@Volosoft
31
+
32
+
33
+ ## 🤔 Why ABP Platform?
34
+
35
+ Why should you use the ABP.IO Platform instead of creating a new solution from scratch?
36
+
37
+ You can find the answer here 👉🏻 [Why ABP Platform?](https://docs.abp.io/en/commercial/latest/why-abp-io-platform)
38
+
39
+
40
+ ## 🚀 Key Features of the ABP Framework
41
+
42
+ 🟡 Modularity
43
+
44
+ 🟡 Multi-Tenancy
45
+
46
+ 🟡 Bootstrap Tag Helpers
47
+
48
+ 🟡 Dynamic Forms
49
+
50
+ 🟡 Authentication
51
+
52
+ 🟡 Authorization
53
+
54
+ 🟡 Distributed Event Bus
55
+
56
+ 🟡 BLOB Storing
57
+
58
+ 🟡 Text Templating
59
+
60
+ 🟡 Tooling: ABP CLI
61
+
62
+ 🟡 Cross-Cutting Concerns
63
+
64
+ 🟡 Bundling & Minification
65
+
66
+ 🟡 Virtual File System
67
+
68
+ 🟡 Theming
69
+
70
+ 🟡 Background Jobs
71
+
72
+ 🟡 DDD Infrastructure
73
+
74
+ 🟡 Auto REST APIs
75
+
76
+ 🟡 Dynamic Client Proxies
77
+
78
+ 🟡 Multiple Database Providers
79
+
80
+ 🟡 Data filtering
81
+
82
+ 🟡 Test Infrastructure
83
+
84
+ 🟡 Audit Logging
85
+
86
+ 🟡 Object to Object Mapping
87
+
88
+ 🟡 Email & SMS Abstractions
89
+
90
+ 🟡 Localization
91
+
92
+ 🟡 Setting Management
93
+
94
+ 🟡 Extension Methods
95
+
96
+ 🟡 Aspect Oriented Programming
97
+
98
+ 🟡 Dependency Injection
99
+
100
+
101
+ ## 🧐 How It Works?
102
+
103
+ The following page explains how you use the ABP.IO Platform as a .NET developer 👉 [How it works?](https://commercial.abp.io/how-it-works)
104
+
105
+
106
+ ### 📘 Supported Database Providers
107
+
108
+ 🔵 Entity Framework Core
109
+
110
+ 🔵 MongoDB
111
+
112
+ 🔵 Dapper
113
+
114
+
115
+ ### 🎴 Supported UI Frameworks
116
+
117
+ 🔵 Angular
118
+
119
+ 🔵 Razor Pages
120
+
121
+ 🔵 Blazor Web Assembly
122
+
123
+ 🔵 Blazor Server
124
+
125
+ 🔵 MAUI with Blazor Hybrid
126
+
127
+
128
+ ## 📫 Bug & Support
129
+
130
+ Support for open-source ABP Framework client-side packages is available at [GitHub Issues](https://github.com/abpframework/abp/issues), and the commercial support is available at [support.abp.io](https://support.abp.io).
@@ -39,7 +39,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
39
39
  (ngModelChange)="setDate($event)"
40
40
  [meridian]="meridian"
41
41
  ></ngb-timepicker>
42
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i3.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }], viewProviders: [
42
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i3.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }], viewProviders: [
43
43
  {
44
44
  provide: ControlContainer,
45
45
  useFactory: selfFactory,
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
106
106
  type: ViewChild,
107
107
  args: [NgbTimepicker]
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUF5Q3ZELE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBNEIsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFMM0MsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUs2QixDQUFDO0lBRXhELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDOztvSEFmVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixrSkFJdkIsa0JBQWtCLHVFQUNsQixhQUFhLGlGQXpDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULGc1Q0FFYztRQUNiO1lBQ0UsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixVQUFVLEVBQUUsV0FBVztZQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzNEO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsZUFBZTtTQUMxQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGNBQWM7WUFDdkIsUUFBUSxFQUFFLGVBQWU7U0FDMUI7S0FDRjsyRkFFVSx1QkFBdUI7a0JBdkNuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsVUFBVSxFQUFFLFdBQVc7NEJBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7eUJBQzNEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixRQUFRLEVBQUUsZUFBZTt5QkFDMUI7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLFFBQVEsRUFBRSxlQUFlO3lCQUMxQjtxQkFDRjtpQkFDRjt3R0FFVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFeUIsSUFBSTtzQkFBbEMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0gsSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGVBZGFwdGVyLFxyXG4gIE5nYklucHV0RGF0ZXBpY2tlcixcclxuICBOZ2JUaW1lQWRhcHRlcixcclxuICBOZ2JUaW1lcGlja2VyLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRGF0ZVRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvZGF0ZS10aW1lLmFkYXB0ZXInO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgc2VsZkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9mYWN0b3J5LnV0aWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdhYnBEYXRlVGltZVBpY2tlcicsXHJcbiAgc2VsZWN0b3I6ICdhYnAtZGF0ZS10aW1lLXBpY2tlcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxpbnB1dFxyXG4gICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VGltZSgkZXZlbnQpXCJcclxuICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgIC8+XHJcbiAgICA8bmdiLXRpbWVwaWNrZXJcclxuICAgICAgI3RpbWVwaWNrZXJcclxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlKCRldmVudClcIlxyXG4gICAgICBbbWVyaWRpYW5dPVwibWVyaWRpYW5cIlxyXG4gICAgPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IHNlbGZGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBEYXRlVGltZUFkYXB0ZXIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOZ2JUaW1lQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IERhdGVUaW1lQWRhcHRlcixcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBwcm9wITogRm9ybVByb3A7XHJcbiAgQElucHV0KCkgbWVyaWRpYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ2JJbnB1dERhdGVwaWNrZXIpIGRhdGUhOiBOZ2JJbnB1dERhdGVwaWNrZXI7XHJcbiAgQFZpZXdDaGlsZChOZ2JUaW1lcGlja2VyKSB0aW1lITogTmdiVGltZXBpY2tlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgc2V0RGF0ZShkYXRlc3RyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGF0ZS53cml0ZVZhbHVlKGRhdGVzdHIpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGltZShkYXRlc3RyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGltZS53cml0ZVZhbHVlKGRhdGVzdHIpO1xyXG4gIH1cclxufVxyXG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUF5Q3ZELE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBNEIsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFMM0MsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUs2QixDQUFDO0lBRXhELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDOztvSEFmVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixrSkFJdkIsa0JBQWtCLHVFQUNsQixhQUFhLGlGQXpDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULG02Q0FFYztRQUNiO1lBQ0UsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixVQUFVLEVBQUUsV0FBVztZQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzNEO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUsZUFBZTtTQUMxQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGNBQWM7WUFDdkIsUUFBUSxFQUFFLGVBQWU7U0FDMUI7S0FDRjsyRkFFVSx1QkFBdUI7a0JBdkNuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsVUFBVSxFQUFFLFdBQVc7NEJBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7eUJBQzNEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixRQUFRLEVBQUUsZUFBZTt5QkFDMUI7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLFFBQVEsRUFBRSxlQUFlO3lCQUMxQjtxQkFDRjtpQkFDRjt3R0FFVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFeUIsSUFBSTtzQkFBbEMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0gsSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGVBZGFwdGVyLFxyXG4gIE5nYklucHV0RGF0ZXBpY2tlcixcclxuICBOZ2JUaW1lQWRhcHRlcixcclxuICBOZ2JUaW1lcGlja2VyLFxyXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRGF0ZVRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvZGF0ZS10aW1lLmFkYXB0ZXInO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgc2VsZkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9mYWN0b3J5LnV0aWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdhYnBEYXRlVGltZVBpY2tlcicsXHJcbiAgc2VsZWN0b3I6ICdhYnAtZGF0ZS10aW1lLXBpY2tlcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxpbnB1dFxyXG4gICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VGltZSgkZXZlbnQpXCJcclxuICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgIC8+XHJcbiAgICA8bmdiLXRpbWVwaWNrZXJcclxuICAgICAgI3RpbWVwaWNrZXJcclxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlKCRldmVudClcIlxyXG4gICAgICBbbWVyaWRpYW5dPVwibWVyaWRpYW5cIlxyXG4gICAgPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IHNlbGZGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBEYXRlVGltZUFkYXB0ZXIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOZ2JUaW1lQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IERhdGVUaW1lQWRhcHRlcixcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBwcm9wITogRm9ybVByb3A7XHJcbiAgQElucHV0KCkgbWVyaWRpYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ2JJbnB1dERhdGVwaWNrZXIpIGRhdGUhOiBOZ2JJbnB1dERhdGVwaWNrZXI7XHJcbiAgQFZpZXdDaGlsZChOZ2JUaW1lcGlja2VyKSB0aW1lITogTmdiVGltZXBpY2tlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgc2V0RGF0ZShkYXRlc3RyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGF0ZS53cml0ZVZhbHVlKGRhdGVzdHIpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGltZShkYXRlc3RyOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGltZS53cml0ZVZhbHVlKGRhdGVzdHIpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -160,7 +160,7 @@ export class ExtensibleFormPropComponent {
160
160
  }
161
161
  }
162
162
  ExtensibleFormPropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExtensibleFormPropComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i1.ConfigStateService }, { token: i2.FormGroupDirective }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
163
- ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-password\r\n *abpReplaceableTemplate=\"{\r\n componentKey: passwordKey,\r\n inputs: {\r\n inputId: { value: prop.id },\r\n formControlName: { value: prop.name }\r\n }\r\n }\"\r\n [inputId]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n ></abp-password>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i4.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i4.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i5.PasswordComponent, selector: "abp-password", inputs: ["inputId", "formControlName"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i6.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i6.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "component", type: i7.DateTimePickerComponent, selector: "abp-date-time-picker", inputs: ["prop", "meridian"], exportAs: ["abpDateTimePicker"] }, { kind: "directive", type: i8.DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], viewProviders: [
163
+ ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container\r\n [ngSwitch]=\"getComponent(prop)\"\r\n *abpPermission=\"prop.permission; runChangeDetection: false\"\r\n>\r\n <ng-template ngSwitchCase=\"template\">\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-3\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"passwordinputgroup\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-password\r\n *abpReplaceableTemplate=\"{\r\n componentKey: passwordKey,\r\n inputs: {\r\n inputId: { value: prop.id },\r\n formControlName: { value: prop.name }\r\n }\r\n }\"\r\n [inputId]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n ></abp-password>\r\n </ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\">\r\n <ng-container *ngIf=\"prop.displayTextResolver; else displayNameTemplate\">\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n </ng-container>\r\n <ng-template #displayNameTemplate> {{ prop.displayName | abpLocalization }}</ng-template>\r\n {{ asterisk }}\r\n </label>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i4.ValidationStyleDirective, selector: "[validationStyle]", exportAs: ["validationStyle"] }, { kind: "directive", type: i4.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i5.PasswordComponent, selector: "abp-password", inputs: ["inputId", "formControlName"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i6.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i6.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "container", "editable", "focusFirst", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "selectOnExact", "showHint", "placement", "popperOptions", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { kind: "component", type: i7.DateTimePickerComponent, selector: "abp-date-time-picker", inputs: ["prop", "meridian"], exportAs: ["abpDateTimePicker"] }, { kind: "directive", type: i8.DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], viewProviders: [
164
164
  {
165
165
  provide: ControlContainer,
166
166
  useFactory: selfFactory,
@@ -195,4 +195,4 @@ function isRequired(validator) {
195
195
  validator === AbpValidators.required ||
196
196
  validator.name === 'required');
197
197
  }
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL2V4dGVuc2lvbnMvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtZm9ybS9leHRlbnNpYmxlLWZvcm0tcHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS1mb3JtL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBTyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUdsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdB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LFdBQVc7WUFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUMzRDtRQUNELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO1FBQ2xELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0tBQ25EOzJGQUVVLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFVBQVUsRUFBRSxXQUFXOzRCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTt3QkFDbEQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7cUJBQ25EOzhOQUdRLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVzQixRQUFRO3NCQUFuQyxTQUFTO3VCQUFDLE9BQU87O0FBZ0xwQixTQUFTLFVBQVUsQ0FBQyxTQUFzQjtJQUN4QyxPQUFPLENBQ0wsU0FBUyxLQUFLLFVBQVUsQ0FBQyxRQUFRO1FBQ2pDLFNBQVMsS0FBSyxhQUFhLENBQUMsUUFBUTtRQUNwQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFRFTlNJT05TX0ZPUk1fUFJPUCwgRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSB9IGZyb20gJy4vLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBBQlAsIEFicFZhbGlkYXRvcnMsIENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyLCBOZ2JUaW1lQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2RhdGUuYWRhcHRlcic7XHJcbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGltZS5hZGFwdGVyJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgUHJvcERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBzZWxmRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZhY3RvcnkudXRpbCc7XHJcbmltcG9ydCB7IGFkZFR5cGVhaGVhZFRleHRTdWZmaXggfSBmcm9tICcuLi8uLi91dGlscy90eXBlYWhlYWQudXRpbCc7XHJcbmltcG9ydCB7IGVUaGVtZVNoYXJlZENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21wb25lbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXHJcbiAgICAgIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBDb250cm9sQ29udGFpbmVyXV0sXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYlRpbWVBZGFwdGVyLCB1c2VDbGFzczogVGltZUFkYXB0ZXIgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUZvcm1Qcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhITogUHJvcERhdGE7XHJcblxyXG4gIEBJbnB1dCgpIHByb3AhOiBGb3JtUHJvcDtcclxuXHJcbiAgQElucHV0KCkgZmlyc3Q/OiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWVsZCcpIHByaXZhdGUgZmllbGRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgcHVibGljIGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50PzogSW5qZWN0b3I7XHJcblxyXG4gIGFzdGVyaXNrID0gJyc7XHJcblxyXG4gIGNvbnRhaW5lckNsYXNzTmFtZSA9ICdtYi0zJztcclxuXHJcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8QUJQLk9wdGlvbjxhbnk+W10+ID0gb2YoW10pO1xyXG5cclxuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuXHJcbiAgdHlwZWFoZWFkTW9kZWw6IGFueTtcclxuXHJcbiAgcGFzc3dvcmRLZXkgPSBlVGhlbWVTaGFyZWRDb21wb25lbnRzLlBhc3N3b3JkQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIGRpc2FibGVkRm4gPSAoZGF0YTogUHJvcERhdGEpID0+IGZhbHNlO1xyXG5cclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZEZuKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBzZXRUeXBlYWhlYWRWYWx1ZShzZWxlY3RlZE9wdGlvbjogQUJQLk9wdGlvbjxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLnR5cGVhaGVhZE1vZGVsID0gc2VsZWN0ZWRPcHRpb24gfHwgeyBrZXk6IG51bGwsIHZhbHVlOiBudWxsIH07XHJcbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHRoaXMudHlwZWFoZWFkTW9kZWw7XHJcbiAgICBjb25zdCBba2V5Q29udHJvbCwgdmFsdWVDb250cm9sXSA9IHRoaXMuZ2V0VHlwZWFoZWFkQ29udHJvbHMoKTtcclxuICAgIGlmICh2YWx1ZUNvbnRyb2w/LnZhbHVlICYmICF2YWx1ZSkgdmFsdWVDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICBrZXlDb250cm9sPy5zZXRWYWx1ZShrZXkpO1xyXG4gICAgdmFsdWVDb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2ggPSAodGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT5cclxuICAgIHRleHQkXHJcbiAgICAgID8gdGV4dCQucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCh0ZXh0ID0+IHRoaXMucHJvcD8ub3B0aW9ucz8uKHRoaXMuZGF0YSwgdGV4dCkgfHwgb2YoW10pKSxcclxuICAgICAgICApXHJcbiAgICAgIDogb2YoW10pO1xyXG5cclxuICB0eXBlYWhlYWRGb3JtYXR0ZXIgPSAob3B0aW9uOiBBQlAuT3B0aW9uPGFueT4pID0+IG9wdGlvbi5rZXk7XHJcblxyXG4gIGdldCBtZXJpZGlhbigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmRhdGVUaW1lRm9ybWF0LnNob3J0VGltZVBhdHRlcm4nKSB8fCAnJ1xyXG4gICAgKS5pbmNsdWRlcygndHQnKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ludmFsaWQoKSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLnByb3AubmFtZSk7XHJcbiAgICByZXR1cm4gY29udHJvbD8udG91Y2hlZCAmJiBjb250cm9sLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgICBncm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm0gPSBncm91cERpcmVjdGl2ZS5mb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlYWhlYWRDb250cm9scygpIHtcclxuICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5wcm9wO1xyXG4gICAgY29uc3QgZXh0cmFQcm9wTmFtZSA9IGAke0VYVFJBX1BST1BFUlRJRVNfS0VZfS4ke25hbWV9YDtcclxuICAgIGNvbnN0IGtleUNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KGFkZFR5cGVhaGVhZFRleHRTdWZmaXgoZXh0cmFQcm9wTmFtZSkpIHx8XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoYWRkVHlwZWFoZWFkVGV4dFN1ZmZpeChuYW1lKSk7XHJcbiAgICBjb25zdCB2YWx1ZUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGV4dHJhUHJvcE5hbWUpIHx8IHRoaXMuZm9ybS5nZXQobmFtZSk7XHJcbiAgICByZXR1cm4gW2tleUNvbnRyb2wsIHZhbHVlQ29udHJvbF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFzdGVyaXNrKCkge1xyXG4gICAgdGhpcy5hc3RlcmlzayA9IHRoaXMudmFsaWRhdG9ycy5zb21lKGlzUmVxdWlyZWQpID8gJyonIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5maXJzdCAmJiB0aGlzLmZpZWxkUmVmKSB7XHJcbiAgICAgIHRoaXMuZmllbGRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChwcm9wOiBGb3JtUHJvcCk6IHN0cmluZyB7XHJcbiAgICBpZiAocHJvcC50ZW1wbGF0ZSkge1xyXG4gICAgICByZXR1cm4gJ3RlbXBsYXRlJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlVGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkhpZGRlbjpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk11bHRpU2VsZWN0OlxyXG4gICAgICAgIHJldHVybiAnbXVsdGlzZWxlY3QnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UZXh0OlxyXG4gICAgICAgIHJldHVybiAndGV4dGFyZWEnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgIHJldHVybiAndGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlR5cGVhaGVhZDpcclxuICAgICAgICByZXR1cm4gJ3R5cGVhaGVhZCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlBhc3N3b3JkSW5wdXRHcm91cDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkaW5wdXRncm91cCc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHByb3Aub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2lucHV0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFR5cGUocHJvcDogRm9ybVByb3ApOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk51bWJlcjpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkVtYWlsOlxyXG4gICAgICAgIHJldHVybiAnZW1haWwnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5QYXNzd29yZDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuUGFzc3dvcmRJbnB1dEdyb3VwOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmRpbnB1dGdyb3VwJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IHByb3AsIGRhdGEgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgY3VycmVudFByb3AgPSBwcm9wPy5jdXJyZW50VmFsdWUgYXMgRm9ybVByb3A7XHJcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlYWRvbmx5LCBkaXNhYmxlZCwgdmFsaWRhdG9ycywgY2xhc3NOYW1lLCB0ZW1wbGF0ZSB9ID0gY3VycmVudFByb3AgfHwge307XHJcbiAgICBpZiAodGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbmplY3RvckZvckN1c3RvbUNvbXBvbmVudCA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfRk9STV9QUk9QLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogY3VycmVudFByb3AsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0ZPUk1fUFJPUF9EQVRBLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogKGRhdGE/LmN1cnJlbnRWYWx1ZSBhcyBQcm9wRGF0YSk/LnJlY29yZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMpIHRoaXMub3B0aW9ucyQgPSBvcHRpb25zKHRoaXMuZGF0YSk7XHJcbiAgICBpZiAocmVhZG9ubHkpIHRoaXMucmVhZG9ubHkgPSByZWFkb25seSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRm4gPSBkaXNhYmxlZDtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0b3JzKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnModGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRBc3RlcmlzaygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdID0gdGhpcy5nZXRUeXBlYWhlYWRDb250cm9scygpO1xyXG4gICAgaWYgKGtleUNvbnRyb2wgJiYgdmFsdWVDb250cm9sKVxyXG4gICAgICB0aGlzLnR5cGVhaGVhZE1vZGVsID0geyBrZXk6IGtleUNvbnRyb2wudmFsdWUsIHZhbHVlOiB2YWx1ZUNvbnRyb2wudmFsdWUgfTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmVxdWlyZWQodmFsaWRhdG9yOiBWYWxpZGF0b3JGbikge1xyXG4gIHJldHVybiAoXHJcbiAgICB2YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQgfHxcclxuICAgIHZhbGlkYXRvciA9PT0gQWJwVmFsaWRhdG9ycy5yZXF1aXJlZCB8fFxyXG4gICAgdmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCdcclxuICApO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXJcclxuICBbbmdTd2l0Y2hdPVwiZ2V0Q29tcG9uZW50KHByb3ApXCJcclxuICAqYWJwUGVybWlzc2lvbj1cInByb3AucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGVtcGxhdGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwicHJvcC50ZW1wbGF0ZTsgaW5qZWN0b3I6IGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzTmFtZVwiIGNsYXNzPVwibWItM1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImlucHV0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgW3R5cGVdPVwiZ2V0VHlwZShwcm9wKVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImhpZGRlblwiPlxyXG4gICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImNoZWNrYm94XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6ICdmb3JtLWNoZWNrLWxhYmVsJyB9XCJcclxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJzZWxlY3RcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHNlbGVjdFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrLmJ5KCd2YWx1ZScpXCJcclxuICAgICAgICAgIFtuZ1ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxzZWxlY3RcclxuICAgICAgICAjZmllbGRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgbXVsdGlwbGU9XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFjay5ieSgndmFsdWUnKVwiXHJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGRpdiAjdHlwZWFoZWFkIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIiB2YWxpZGF0aW9uU3R5bGUgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW25nYlR5cGVhaGVhZF09XCJzZWFyY2hcIlxyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW3Jlc3VsdEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidHlwZWFoZWFkTW9kZWxcIlxyXG4gICAgICAgICAgKHNlbGVjdEl0ZW0pPVwic2V0VHlwZWFoZWFkVmFsdWUoJGV2ZW50Lml0ZW0pXCJcclxuICAgICAgICAgIChibHVyKT1cInNldFR5cGVhaGVhZFZhbHVlKHR5cGVhaGVhZE1vZGVsKVwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJ0eXBlYWhlYWQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1pbnZhbGlkJylcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCIgdHlwZT1cImhpZGRlblwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGltZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIj48L25nYi10aW1lcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVRpbWVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGFicC1kYXRlLXRpbWUtcGlja2VyIFtwcm9wXT1cInByb3BcIiBbbWVyaWRpYW5dPVwibWVyaWRpYW5cIj48L2FicC1kYXRlLXRpbWUtcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGV4dGFyZWFcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInBhc3N3b3JkaW5wdXRncm91cFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8YWJwLXBhc3N3b3JkXHJcbiAgICAgICAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJ7XHJcbiAgICAgICAgICBjb21wb25lbnRLZXk6IHBhc3N3b3JkS2V5LFxyXG4gICAgICAgICAgaW5wdXRzOiB7XHJcbiAgICAgICAgICAgIGlucHV0SWQ6IHsgdmFsdWU6IHByb3AuaWQgfSxcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lOiB7IHZhbHVlOiBwcm9wLm5hbWUgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtpbnB1dElkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgPjwvYWJwLXBhc3N3b3JkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhYmVsIGxldC1jbGFzc2VzPlxyXG4gIDxsYWJlbCBbaHRtbEZvcl09XCJwcm9wLmlkXCIgW25nQ2xhc3NdPVwiY2xhc3NlcyB8fCAnZm9ybS1sYWJlbCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXI7IGVsc2UgZGlzcGxheU5hbWVUZW1wbGF0ZVwiPlxyXG4gICAgICB7eyBwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXIoZGF0YSkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5TmFtZVRlbXBsYXRlPiB7eyBwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIHt7IGFzdGVyaXNrIH19XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL2V4dGVuc2lvbnMvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtZm9ybS9leHRlbnNpYmxlLWZvcm0tcHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS1mb3JtL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBTyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUdsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdB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LFdBQVc7WUFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUMzRDtRQUNELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO1FBQ2xELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0tBQ25EOzJGQUVVLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFVBQVUsRUFBRSxXQUFXOzRCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTt3QkFDbEQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7cUJBQ25EOzhOQUdRLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVzQixRQUFRO3NCQUFuQyxTQUFTO3VCQUFDLE9BQU87O0FBZ0xwQixTQUFTLFVBQVUsQ0FBQyxTQUFzQjtJQUN4QyxPQUFPLENBQ0wsU0FBUyxLQUFLLFVBQVUsQ0FBQyxRQUFRO1FBQ2pDLFNBQVMsS0FBSyxhQUFhLENBQUMsUUFBUTtRQUNwQyxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFRFTlNJT05TX0ZPUk1fUFJPUCwgRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSB9IGZyb20gJy4vLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBBQlAsIEFicFZhbGlkYXRvcnMsIENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyLCBOZ2JUaW1lQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2RhdGUuYWRhcHRlcic7XHJcbmltcG9ydCB7IFRpbWVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGltZS5hZGFwdGVyJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgUHJvcERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBzZWxmRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZhY3RvcnkudXRpbCc7XHJcbmltcG9ydCB7IGFkZFR5cGVhaGVhZFRleHRTdWZmaXggfSBmcm9tICcuLi8uLi91dGlscy90eXBlYWhlYWQudXRpbCc7XHJcbmltcG9ydCB7IGVUaGVtZVNoYXJlZENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21wb25lbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcclxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXHJcbiAgICAgIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBDb250cm9sQ29udGFpbmVyXV0sXHJcbiAgICB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYlRpbWVBZGFwdGVyLCB1c2VDbGFzczogVGltZUFkYXB0ZXIgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUZvcm1Qcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhITogUHJvcERhdGE7XHJcblxyXG4gIEBJbnB1dCgpIHByb3AhOiBGb3JtUHJvcDtcclxuXHJcbiAgQElucHV0KCkgZmlyc3Q/OiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWVsZCcpIHByaXZhdGUgZmllbGRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgcHVibGljIGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50PzogSW5qZWN0b3I7XHJcblxyXG4gIGFzdGVyaXNrID0gJyc7XHJcblxyXG4gIGNvbnRhaW5lckNsYXNzTmFtZSA9ICdtYi0zJztcclxuXHJcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8QUJQLk9wdGlvbjxhbnk+W10+ID0gb2YoW10pO1xyXG5cclxuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuXHJcbiAgdHlwZWFoZWFkTW9kZWw6IGFueTtcclxuXHJcbiAgcGFzc3dvcmRLZXkgPSBlVGhlbWVTaGFyZWRDb21wb25lbnRzLlBhc3N3b3JkQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIGRpc2FibGVkRm4gPSAoZGF0YTogUHJvcERhdGEpID0+IGZhbHNlO1xyXG5cclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZEZuKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBzZXRUeXBlYWhlYWRWYWx1ZShzZWxlY3RlZE9wdGlvbjogQUJQLk9wdGlvbjxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLnR5cGVhaGVhZE1vZGVsID0gc2VsZWN0ZWRPcHRpb24gfHwgeyBrZXk6IG51bGwsIHZhbHVlOiBudWxsIH07XHJcbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHRoaXMudHlwZWFoZWFkTW9kZWw7XHJcbiAgICBjb25zdCBba2V5Q29udHJvbCwgdmFsdWVDb250cm9sXSA9IHRoaXMuZ2V0VHlwZWFoZWFkQ29udHJvbHMoKTtcclxuICAgIGlmICh2YWx1ZUNvbnRyb2w/LnZhbHVlICYmICF2YWx1ZSkgdmFsdWVDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICBrZXlDb250cm9sPy5zZXRWYWx1ZShrZXkpO1xyXG4gICAgdmFsdWVDb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2ggPSAodGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT5cclxuICAgIHRleHQkXHJcbiAgICAgID8gdGV4dCQucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCh0ZXh0ID0+IHRoaXMucHJvcD8ub3B0aW9ucz8uKHRoaXMuZGF0YSwgdGV4dCkgfHwgb2YoW10pKSxcclxuICAgICAgICApXHJcbiAgICAgIDogb2YoW10pO1xyXG5cclxuICB0eXBlYWhlYWRGb3JtYXR0ZXIgPSAob3B0aW9uOiBBQlAuT3B0aW9uPGFueT4pID0+IG9wdGlvbi5rZXk7XHJcblxyXG4gIGdldCBtZXJpZGlhbigpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmRhdGVUaW1lRm9ybWF0LnNob3J0VGltZVBhdHRlcm4nKSB8fCAnJ1xyXG4gICAgKS5pbmNsdWRlcygndHQnKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ludmFsaWQoKSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLnByb3AubmFtZSk7XHJcbiAgICByZXR1cm4gY29udHJvbD8udG91Y2hlZCAmJiBjb250cm9sLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgICBncm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm0gPSBncm91cERpcmVjdGl2ZS5mb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlYWhlYWRDb250cm9scygpIHtcclxuICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpcy5wcm9wO1xyXG4gICAgY29uc3QgZXh0cmFQcm9wTmFtZSA9IGAke0VYVFJBX1BST1BFUlRJRVNfS0VZfS4ke25hbWV9YDtcclxuICAgIGNvbnN0IGtleUNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KGFkZFR5cGVhaGVhZFRleHRTdWZmaXgoZXh0cmFQcm9wTmFtZSkpIHx8XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoYWRkVHlwZWFoZWFkVGV4dFN1ZmZpeChuYW1lKSk7XHJcbiAgICBjb25zdCB2YWx1ZUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGV4dHJhUHJvcE5hbWUpIHx8IHRoaXMuZm9ybS5nZXQobmFtZSk7XHJcbiAgICByZXR1cm4gW2tleUNvbnRyb2wsIHZhbHVlQ29udHJvbF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFzdGVyaXNrKCkge1xyXG4gICAgdGhpcy5hc3RlcmlzayA9IHRoaXMudmFsaWRhdG9ycy5zb21lKGlzUmVxdWlyZWQpID8gJyonIDogJyc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5maXJzdCAmJiB0aGlzLmZpZWxkUmVmKSB7XHJcbiAgICAgIHRoaXMuZmllbGRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChwcm9wOiBGb3JtUHJvcCk6IHN0cmluZyB7XHJcbiAgICBpZiAocHJvcC50ZW1wbGF0ZSkge1xyXG4gICAgICByZXR1cm4gJ3RlbXBsYXRlJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlVGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkhpZGRlbjpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk11bHRpU2VsZWN0OlxyXG4gICAgICAgIHJldHVybiAnbXVsdGlzZWxlY3QnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UZXh0OlxyXG4gICAgICAgIHJldHVybiAndGV4dGFyZWEnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgIHJldHVybiAndGltZSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlR5cGVhaGVhZDpcclxuICAgICAgICByZXR1cm4gJ3R5cGVhaGVhZCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlBhc3N3b3JkSW5wdXRHcm91cDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkaW5wdXRncm91cCc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHByb3Aub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2lucHV0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFR5cGUocHJvcDogRm9ybVByb3ApOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk51bWJlcjpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkVtYWlsOlxyXG4gICAgICAgIHJldHVybiAnZW1haWwnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5QYXNzd29yZDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuUGFzc3dvcmRJbnB1dEdyb3VwOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmRpbnB1dGdyb3VwJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7IHByb3AsIGRhdGEgfTogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgY3VycmVudFByb3AgPSBwcm9wPy5jdXJyZW50VmFsdWUgYXMgRm9ybVByb3A7XHJcbiAgICBjb25zdCB7IG9wdGlvbnMsIHJlYWRvbmx5LCBkaXNhYmxlZCwgdmFsaWRhdG9ycywgY2xhc3NOYW1lLCB0ZW1wbGF0ZSB9ID0gY3VycmVudFByb3AgfHwge307XHJcbiAgICBpZiAodGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbmplY3RvckZvckN1c3RvbUNvbXBvbmVudCA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfRk9STV9QUk9QLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogY3VycmVudFByb3AsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0ZPUk1fUFJPUF9EQVRBLFxyXG4gICAgICAgICAgICB1c2VWYWx1ZTogKGRhdGE/LmN1cnJlbnRWYWx1ZSBhcyBQcm9wRGF0YSk/LnJlY29yZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMpIHRoaXMub3B0aW9ucyQgPSBvcHRpb25zKHRoaXMuZGF0YSk7XHJcbiAgICBpZiAocmVhZG9ubHkpIHRoaXMucmVhZG9ubHkgPSByZWFkb25seSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGlmIChkaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRm4gPSBkaXNhYmxlZDtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0b3JzKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnModGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5zZXRBc3RlcmlzaygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdID0gdGhpcy5nZXRUeXBlYWhlYWRDb250cm9scygpO1xyXG4gICAgaWYgKGtleUNvbnRyb2wgJiYgdmFsdWVDb250cm9sKVxyXG4gICAgICB0aGlzLnR5cGVhaGVhZE1vZGVsID0geyBrZXk6IGtleUNvbnRyb2wudmFsdWUsIHZhbHVlOiB2YWx1ZUNvbnRyb2wudmFsdWUgfTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmVxdWlyZWQodmFsaWRhdG9yOiBWYWxpZGF0b3JGbikge1xyXG4gIHJldHVybiAoXHJcbiAgICB2YWxpZGF0b3IgPT09IFZhbGlkYXRvcnMucmVxdWlyZWQgfHxcclxuICAgIHZhbGlkYXRvciA9PT0gQWJwVmFsaWRhdG9ycy5yZXF1aXJlZCB8fFxyXG4gICAgdmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCdcclxuICApO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXJcclxuICBbbmdTd2l0Y2hdPVwiZ2V0Q29tcG9uZW50KHByb3ApXCJcclxuICAqYWJwUGVybWlzc2lvbj1cInByb3AucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGVtcGxhdGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwicHJvcC50ZW1wbGF0ZTsgaW5qZWN0b3I6IGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzTmFtZVwiIGNsYXNzPVwibWItM1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImlucHV0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgW3R5cGVdPVwiZ2V0VHlwZShwcm9wKVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImhpZGRlblwiPlxyXG4gICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImNoZWNrYm94XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6ICdmb3JtLWNoZWNrLWxhYmVsJyB9XCJcclxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJzZWxlY3RcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHNlbGVjdFxyXG4gICAgICAgICNmaWVsZFxyXG4gICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrLmJ5KCd2YWx1ZScpXCJcclxuICAgICAgICAgIFtuZ1ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgb3B0aW9uLmtleSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxzZWxlY3RcclxuICAgICAgICAjZmllbGRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgbXVsdGlwbGU9XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFjay5ieSgndmFsdWUnKVwiXHJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaENhc2U9XCJ0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGRpdiAjdHlwZWFoZWFkIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIiB2YWxpZGF0aW9uU3R5bGUgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJwcm9wLmF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW25nYlR5cGVhaGVhZF09XCJzZWFyY2hcIlxyXG4gICAgICAgICAgW2VkaXRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW3Jlc3VsdEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidHlwZWFoZWFkTW9kZWxcIlxyXG4gICAgICAgICAgKHNlbGVjdEl0ZW0pPVwic2V0VHlwZWFoZWFkVmFsdWUoJGV2ZW50Lml0ZW0pXCJcclxuICAgICAgICAgIChibHVyKT1cInNldFR5cGVhaGVhZFZhbHVlKHR5cGVhaGVhZE1vZGVsKVwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJ0eXBlYWhlYWQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1pbnZhbGlkJylcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCIgdHlwZT1cImhpZGRlblwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLm9wZW4oKVwiXHJcbiAgICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICAgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGltZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIj48L25nYi10aW1lcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwiZGF0ZVRpbWVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPGFicC1kYXRlLXRpbWUtcGlja2VyIFtwcm9wXT1cInByb3BcIiBbbWVyaWRpYW5dPVwibWVyaWRpYW5cIj48L2FicC1kYXRlLXRpbWUtcGlja2VyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmdTd2l0Y2hDYXNlPVwidGV4dGFyZWFcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cInBhc3N3b3JkaW5wdXRncm91cFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8YWJwLXBhc3N3b3JkXHJcbiAgICAgICAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJ7XHJcbiAgICAgICAgICBjb21wb25lbnRLZXk6IHBhc3N3b3JkS2V5LFxyXG4gICAgICAgICAgaW5wdXRzOiB7XHJcbiAgICAgICAgICAgIGlucHV0SWQ6IHsgdmFsdWU6IHByb3AuaWQgfSxcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lOiB7IHZhbHVlOiBwcm9wLm5hbWUgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtpbnB1dElkXT1cInByb3AuaWRcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgPjwvYWJwLXBhc3N3b3JkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhYmVsIGxldC1jbGFzc2VzPlxyXG4gIDxsYWJlbCBbaHRtbEZvcl09XCJwcm9wLmlkXCIgW25nQ2xhc3NdPVwiY2xhc3NlcyB8fCAnZm9ybS1sYWJlbCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXI7IGVsc2UgZGlzcGxheU5hbWVUZW1wbGF0ZVwiPlxyXG4gICAgICB7eyBwcm9wLmRpc3BsYXlUZXh0UmVzb2x2ZXIoZGF0YSkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5TmFtZVRlbXBsYXRlPiB7eyBwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIHt7IGFzdGVyaXNrIH19XHJcbiAgPC9sYWJlbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -12,14 +12,13 @@ export class FormInputComponent extends AbstractNgModelComponent {
12
12
  this.label = '';
13
13
  this.labelClass = 'form-label';
14
14
  this.inputPlaceholder = '';
15
- this.inputType = 'text';
16
15
  this.inputClass = 'form-control';
17
16
  this.formBlur = new EventEmitter();
18
17
  this.formFocus = new EventEmitter();
19
18
  }
20
19
  }
21
20
  FormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
22
- FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FormInputComponent, selector: "abp-form-input", inputs: { inputId: "inputId", inputReadonly: "inputReadonly", label: "label", labelClass: "labelClass", inputPlaceholder: "inputPlaceholder", inputType: "inputType", inputStyle: "inputStyle", inputClass: "inputClass" }, outputs: { formBlur: "formBlur", formFocus: "formFocus" }, providers: [
21
+ FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FormInputComponent, selector: "abp-form-input", inputs: { inputId: "inputId", inputReadonly: "inputReadonly", label: "label", labelClass: "labelClass", inputPlaceholder: "inputPlaceholder", inputStyle: "inputStyle", inputClass: "inputClass" }, outputs: { formBlur: "formBlur", formFocus: "formFocus" }, providers: [
23
22
  {
24
23
  provide: NG_VALUE_ACCESSOR,
25
24
  useExisting: forwardRef(() => FormInputComponent),
@@ -83,8 +82,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
83
82
  type: Input
84
83
  }], inputPlaceholder: [{
85
84
  type: Input
86
- }], inputType: [{
87
- type: Input
88
85
  }], inputStyle: [{
89
86
  type: Input
90
87
  }], inputClass: [{
@@ -94,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
94
91
  }], formFocus: [{
95
92
  type: Output
96
93
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE4Qm5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx3QkFBd0I7SUFpQjlELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBaEJULGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsWUFBWSxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBT25CLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJL0MsQ0FBQzs7K0dBbkJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdVQVJsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixpREF4QlM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzJGQVNVLGtCQUFrQjtrQkE1QjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytGQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdE5nTW9kZWxDb21wb25lbnQgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1mb3JtLWlucHV0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbbmdDbGFzc109XCJsYWJlbENsYXNzXCIgW2Zvcl09XCJpbnB1dElkXCI+XHJcbiAgICAgICAge3sgbGFiZWwgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIFtpZF09XCJpbnB1dElkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaW5wdXRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZG9ubHlcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIlxyXG4gICAgICAgIChibHVyKT1cImZvcm1CbHVyLm5leHQoKVwiXHJcbiAgICAgICAgKGZvY3VzKT1cImZvcm1Gb2N1cy5uZXh0KClcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1JbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3ROZ01vZGVsQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBpbnB1dElkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlucHV0UmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIGxhYmVsQ2xhc3MgPSAnZm9ybS1sYWJlbCc7XHJcbiAgQElucHV0KCkgaW5wdXRQbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIGlucHV0VHlwZSA9ICd0ZXh0JztcclxuICBASW5wdXQoKSBpbnB1dFN0eWxlOlxyXG4gICAgfCB7XHJcbiAgICAgICAgW2tsYXNzOiBzdHJpbmddOiBhbnk7XHJcbiAgICAgIH1cclxuICAgIHwgbnVsbFxyXG4gICAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4gIEBPdXRwdXQoKSBmb3JtQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcbn1cclxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE4Qm5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx3QkFBd0I7SUFnQjlELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBZlQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBT3RCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJL0MsQ0FBQzs7K0dBbEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdTQVJsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixpREF4QlM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzJGQVNVLGtCQUFrQjtrQkE1QjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytGQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3ROZ01vZGVsQ29tcG9uZW50IH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtZm9ybS1pbnB1dCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW25nQ2xhc3NdPVwibGFiZWxDbGFzc1wiIFtmb3JdPVwiaW5wdXRJZFwiPlxyXG4gICAgICAgIHt7IGxhYmVsIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlucHV0UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRvbmx5XCJcclxuICAgICAgICBbbmdDbGFzc109XCJpbnB1dENsYXNzXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICAoYmx1cik9XCJmb3JtQmx1ci5uZXh0KClcIlxyXG4gICAgICAgIChmb2N1cyk9XCJmb3JtRm9jdXMubmV4dCgpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgaW5wdXRJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnB1dFJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBsYWJlbENsYXNzID0gJ2Zvcm0tbGFiZWwnO1xyXG4gIEBJbnB1dCgpIGlucHV0UGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBpbnB1dFN0eWxlOlxyXG4gICAgfCB7XHJcbiAgICAgICAgW2tsYXNzOiBzdHJpbmddOiBhbnk7XHJcbiAgICAgIH1cclxuICAgIHwgbnVsbFxyXG4gICAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4gIEBPdXRwdXQoKSBmb3JtQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcbn1cclxuIl19
@@ -58,8 +58,10 @@ export class ErrorHandler {
58
58
  this.componentRef = null;
59
59
  this.httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err) => throwError(err));
60
60
  this.executeErrorHandler = (error) => {
61
- const returnValue = this.httpErrorHandler(this.injector, error);
62
- return (returnValue instanceof Observable ? returnValue : of(null)).pipe(catchError(err => {
61
+ const errHandler = this.httpErrorHandler(this.injector, error);
62
+ const isObservable = errHandler instanceof Observable;
63
+ const response = isObservable ? errHandler : of(null);
64
+ return response.pipe(catchError(err => {
63
65
  this.handleError(err);
64
66
  return of(null);
65
67
  }));
@@ -111,6 +113,10 @@ export class ErrorHandler {
111
113
  key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
112
114
  defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
113
115
  };
116
+ if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
117
+ this.authService.logout().subscribe();
118
+ return;
119
+ }
114
120
  if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
115
121
  const confirmation$ = this.showErrorWithRequestBody(body);
116
122
  if (err.status === 401) {
@@ -119,9 +125,6 @@ export class ErrorHandler {
119
125
  });
120
126
  }
121
127
  }
122
- if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
123
- this.authService.logout().subscribe();
124
- }
125
128
  else {
126
129
  switch (err.status) {
127
130
  case 401:
@@ -148,7 +151,7 @@ export class ErrorHandler {
148
151
  status: 403,
149
152
  });
150
153
  break;
151
- case 404: {
154
+ case 404:
152
155
  this.canCreateCustomError(404)
153
156
  ? this.show404Page()
154
157
  : this.showError({
@@ -159,7 +162,6 @@ export class ErrorHandler {
159
162
  defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
160
163
  });
161
164
  break;
162
- }
163
165
  case 500:
164
166
  this.createErrorComponent({
165
167
  title: {
@@ -288,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
288
290
  type: Injectable,
289
291
  args: [{ providedIn: 'root' }]
290
292
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCx3QkFBd0IsRUFFeEIsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUcxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixPQUFPLEVBQUUsa0NBQWtDO0tBQzVDO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLDRCQUE0QjtRQUNuQyxPQUFPLEVBQUUsMkVBQTJFO0tBQ3JGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxPQUFPLEVBQUUsZ0RBQWdE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LGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUztZQUM1QyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDOzt5R0F6UVUsWUFBWTs2R0FBWixZQUFZLGNBREMsTUFBTTsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSxcclxuICBMb2NhbGl6YXRpb25QYXJhbSxcclxuICBSb3V0ZXJFdmVudHMsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3RvcixcclxuICBSZW5kZXJlckZhY3RvcnkyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXJyb3IsIFJlc29sdmVFbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaHR0cC1lcnJvci13cmFwcGVyL2h0dHAtZXJyb3Itd3JhcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvclNjcmVlbkVycm9yQ29kZXMsIEh0dHBFcnJvckNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSFRUUF9FUlJPUl9IQU5ETEVSIH0gZnJvbSAnLi4vdG9rZW5zL2h0dHAtZXJyb3IudG9rZW4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgPSB7XHJcbiAgZGVmYXVsdEVycm9yOiB7XHJcbiAgICB0aXRsZTogJ0FuIGVycm9yIGhhcyBvY2N1cnJlZCEnLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdZb3UgYXJlIG5vdCBhdXRoZW50aWNhdGVkIScsXHJcbiAgICBkZXRhaWxzOiAnWW91IHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIChzaWduIGluKSBpbiBvcmRlciB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLicsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDM6IHtcclxuICAgIHRpdGxlOiAnWW91IGFyZSBub3QgYXV0aG9yaXplZCEnLFxyXG4gICAgZGV0YWlsczogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDA0OiB7XHJcbiAgICB0aXRsZTogJ1Jlc291cmNlIG5vdCBmb3VuZCEnLFxyXG4gICAgZGV0YWlsczogJ1RoZSByZXNvdXJjZSByZXF1ZXN0ZWQgY291bGQgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUyA9IHtcclxuICBkZWZhdWx0RXJyb3I6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlRGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwMScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDFEZXRhaWwnLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDAzOiB7XHJcbiAgICB0aXRsZTogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDAzJyxcclxuICAgIGRldGFpbHM6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwM0RldGFpbCcsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDQ6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDQnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDA0RGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6NTAwTWVzc2FnZScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gIH0sXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyIHtcclxuICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9ySGFuZGxlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBfRVJST1JfSEFORExFUiwgKF8sIGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+XHJcbiAgICB0aHJvd0Vycm9yKGVyciksXHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlckV2ZW50czogUm91dGVyRXZlbnRzO1xyXG4gIHByb3RlY3RlZCBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBjZlJlczogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG4gIHByb3RlY3RlZCByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTI7XHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvckNvbmZpZzogSHR0cEVycm9yQ29uZmlnO1xyXG4gIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0b3IuZ2V0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcbiAgICB0aGlzLnJvdXRlckV2ZW50cyA9IGluamVjdG9yLmdldChSb3V0ZXJFdmVudHMpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbmZpcm1hdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5jZlJlcyA9IGluamVjdG9yLmdldChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xyXG4gICAgdGhpcy5yZW5kZXJlckZhY3RvcnkgPSBpbmplY3Rvci5nZXQoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICB0aGlzLmh0dHBFcnJvckNvbmZpZyA9IGluamVjdG9yLmdldCgnSFRUUF9FUlJPUl9DT05GSUcnKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5Ub1Jlc3RFcnJvcigpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub1JvdXRlckVycm9yKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVG9Sb3V0ZXJFcnJvcigpIHtcclxuICAgIHRoaXMucm91dGVyRXZlbnRzXHJcbiAgICAgIC5nZXROYXZpZ2F0aW9uRXZlbnRzKCdFcnJvcicpXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJvdXRlRXJyb3JzKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3c0MDRQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJFdmVudHNcclxuICAgICAgLmdldEV2ZW50cyhSZXNvbHZlRW5kKVxyXG4gICAgICAucGlwZShmaWx0ZXIoKCkgPT4gISF0aGlzLmNvbXBvbmVudFJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub1Jlc3RFcnJvcigpIHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0ZXIkXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJlc3RFcnJvcnMpLCBzd2l0Y2hNYXAodGhpcy5leGVjdXRlRXJyb3JIYW5kbGVyKSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlRXJyb3JIYW5kbGVyID0gKGVycm9yOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gdGhpcy5odHRwRXJyb3JIYW5kbGVyKHRoaXMuaW5qZWN0b3IsIGVycm9yKTtcclxuXHJcbiAgICByZXR1cm4gKHJldHVyblZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHJldHVyblZhbHVlIDogb2YobnVsbCkpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSkge1xyXG4gICAgY29uc3QgYm9keSA9IGVycj8uZXJyb3I/LmVycm9yIHx8IHtcclxuICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyLmhlYWRlcnMuZ2V0KCdfQWJwRXJyb3JGb3JtYXQnKSkge1xyXG4gICAgICBjb25zdCBjb25maXJtYXRpb24kID0gdGhpcy5zaG93RXJyb3JXaXRoUmVxdWVzdEJvZHkoYm9keSk7XHJcblxyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBpZihlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnIuaGVhZGVycy5nZXQoJ0FicC1UZW5hbnQtUmVzb2x2ZS1FcnJvcicpKXtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAoZXJyLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgdGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcig0MDEpXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93NDAxUGFnZSgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDAxLmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDMudGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMy50aXRsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV0YWlsczoge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMy5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDMuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiA0MDMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDA0OntcclxuICAgICAgICAgIHRoaXMuY2FuQ3JlYXRlQ3VzdG9tRXJyb3IoNDA0KVxyXG4gICAgICAgICAgICA/IHRoaXMuc2hvdzQwNFBhZ2UoKVxyXG4gICAgICAgICAgICA6IHRoaXMuc2hvd0Vycm9yKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDQuZGV0YWlscyxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwNC5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgdGhpcy5jcmVhdGVFcnJvckNvbXBvbmVudCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNTAwLnRpdGxlLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I1MDAudGl0bGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRldGFpbHM6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I1MDAuZGV0YWlscyxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNTAwLmRldGFpbHMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YXR1czogNTAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1c1RleHQgPT09ICdVbmtub3duIEVycm9yJykge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGRldGFpbHM6IGVyci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgIGlzSG9tZVNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcihcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2hvdzQwMVBhZ2UoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDEudGl0bGUsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgfSxcclxuICAgICAgc3RhdHVzOiA0MDEsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93NDA0UGFnZSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xyXG4gICAgICB0aXRsZToge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwNC50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICB9LFxyXG4gICAgICBzdGF0dXM6IDQwNCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvcldpdGhSZXF1ZXN0Qm9keShib2R5OiBhbnkpIHtcclxuICAgIGxldCBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbTtcclxuICAgIGxldCB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW07XHJcblxyXG4gICAgaWYgKGJvZHkuZGV0YWlscykge1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5kZXRhaWxzO1xyXG4gICAgICB0aXRsZSA9IGJvZHkubWVzc2FnZTtcclxuICAgIH0gZWxzZSBpZiAoYm9keS5tZXNzYWdlKSB7XHJcbiAgICAgIHRpdGxlID0ge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICB9O1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5tZXNzYWdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWVzc2FnZSA9IGJvZHkubWVzc2FnZSB8fCB7XHJcbiAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRpdGxlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UsIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93RXJyb3IoXHJcbiAgICBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIHRpdGxlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuZXJyb3IobWVzc2FnZSwgdGl0bGUsIHtcclxuICAgICAgaGlkZUNhbmNlbEJ0bjogdHJ1ZSxcclxuICAgICAgeWVzVGV4dDogJ0FicEFjY291bnQ6OkNsb3NlJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvTG9naW4oKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbigpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRXJyb3JDb21wb25lbnQoaW5zdGFuY2U6IFBhcnRpYWw8SHR0cEVycm9yV3JhcHBlckNvbXBvbmVudD4pIHtcclxuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICBjb25zdCBob3N0ID0gcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoZG9jdW1lbnQuYm9keSwgdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmUmVzXHJcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50KVxyXG4gICAgICAuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluc3RhbmNlKSB7XHJcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIGtleSkpIHtcclxuICAgICAgICAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KVtrZXldID0gKGluc3RhbmNlIGFzIGFueSlba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVDbG9zZUljb24gPSAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5oaWRlQ2xvc2VJY29uO1xyXG4gICAgY29uc3QgYXBwUmVmID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUN1c3RvbUVycm9yKGluc3RhbmNlLnN0YXR1cyBhcyBFcnJvclNjcmVlbkVycm9yQ29kZXMpKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNmUmVzID0gdGhpcy5jZlJlcztcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXBwUmVmID0gYXBwUmVmO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbmplY3RvciA9IHRoaXMuaW5qZWN0b3I7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmN1c3RvbUNvbXBvbmVudCA9IHRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5jb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoaG9zdCwgKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0pO1xyXG5cclxuICAgIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmRlc3Ryb3kkID0gZGVzdHJveSQ7XHJcbiAgICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZUN1c3RvbUVycm9yKHN0YXR1czogRXJyb3JTY3JlZW5FcnJvckNvZGVzKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uY29tcG9uZW50ICYmXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uZm9yV2hpY2hFcnJvcnMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWc/LmVycm9yU2NyZWVuPy5mb3JXaGljaEVycm9ycy5pbmRleE9mKHN0YXR1cykgPiAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBmaWx0ZXJSZXN0RXJyb3JzID0gKHsgc3RhdHVzIH06IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodHlwZW9mIHN0YXR1cyAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLnNraXBIYW5kbGVkRXJyb3JDb2RlcyAmJlxyXG4gICAgICB0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMuZmluZEluZGV4KGNvZGUgPT4gY29kZSA9PT0gc3RhdHVzKSA8IDBcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGZpbHRlclJvdXRlRXJyb3JzID0gKG5hdmlnYXRpb25FcnJvcjogTmF2aWdhdGlvbkVycm9yKTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBuYXZpZ2F0aW9uRXJyb3IuZXJyb3I/Lm1lc3NhZ2U/LmluZGV4T2YoJ0Nhbm5vdCBtYXRjaCcpID4gLTEgJiZcclxuICAgICAgISF0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWcuc2tpcEhhbmRsZWRFcnJvckNvZGVzLmZpbmRJbmRleChjb2RlID0+IGNvZGUgPT09IDQwNCkgPCAwXHJcbiAgICApO1xyXG4gIH07XHJcbn1cclxuIl19
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCx3QkFBd0IsRUFFeEIsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUcxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixPQUFPLEVBQUUsa0NBQWtDO0tBQzVDO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLDRCQUE0QjtRQUNuQyxPQUFPLEVBQUUsMkVBQTJFO0tBQ3JGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxPQUFPLEVBQUUsZ0RBQWdE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Q0FBQyxNQUE2QjtRQUNoRCxPQUFPLENBQUMsQ0FBQyxDQUNQLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYztZQUNqRCxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQzs7eUdBNVFVLFlBQVk7NkdBQVosWUFBWSxjQURDLE1BQU07MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSxcclxuICBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXHJcbiAgTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgUm91dGVyRXZlbnRzLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIEFwcGxpY2F0aW9uUmVmLFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5qZWN0b3IsXHJcbiAgUmVuZGVyZXJGYWN0b3J5MixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVycm9yLCBSZXNvbHZlRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBFcnJvcldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2h0dHAtZXJyb3Itd3JhcHBlci9odHRwLWVycm9yLXdyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXJyb3JTY3JlZW5FcnJvckNvZGVzLCBIdHRwRXJyb3JDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpcm1hdGlvbic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEhUVFBfRVJST1JfSEFORExFUiB9IGZyb20gJy4uL3Rva2Vucy9odHRwLWVycm9yLnRva2VuJztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VSUk9SX01FU1NBR0VTID0ge1xyXG4gIGRlZmF1bHRFcnJvcjoge1xyXG4gICAgdGl0bGU6ICdBbiBlcnJvciBoYXMgb2NjdXJyZWQhJyxcclxuICAgIGRldGFpbHM6ICdFcnJvciBkZXRhaWwgbm90IHNlbnQgYnkgc2VydmVyLicsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDE6IHtcclxuICAgIHRpdGxlOiAnWW91IGFyZSBub3QgYXV0aGVudGljYXRlZCEnLFxyXG4gICAgZGV0YWlsczogJ1lvdSBzaG91bGQgYmUgYXV0aGVudGljYXRlZCAoc2lnbiBpbikgaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDAzOiB7XHJcbiAgICB0aXRsZTogJ1lvdSBhcmUgbm90IGF1dGhvcml6ZWQhJyxcclxuICAgIGRldGFpbHM6ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwNDoge1xyXG4gICAgdGl0bGU6ICdSZXNvdXJjZSBub3QgZm91bmQhJyxcclxuICAgIGRldGFpbHM6ICdUaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLicsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I1MDA6IHtcclxuICAgIHRpdGxlOiAnSW50ZXJuYWwgc2VydmVyIGVycm9yJyxcclxuICAgIGRldGFpbHM6ICdFcnJvciBkZXRhaWwgbm90IHNlbnQgYnkgc2VydmVyLicsXHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMgPSB7XHJcbiAgZGVmYXVsdEVycm9yOiB7XHJcbiAgICB0aXRsZTogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlJyxcclxuICAgIGRldGFpbHM6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZURldGFpbCcsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDE6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDEnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDAxRGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMzoge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwMycsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDNEZXRhaWwnLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDA0OiB7XHJcbiAgICB0aXRsZTogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDA0JyxcclxuICAgIGRldGFpbHM6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwNERldGFpbCcsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I1MDA6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OjUwME1lc3NhZ2UnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlJyxcclxuICB9LFxyXG59O1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlciB7XHJcbiAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8SHR0cEVycm9yV3JhcHBlckNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvckhhbmRsZXIgPSB0aGlzLmluamVjdG9yLmdldChIVFRQX0VSUk9SX0hBTkRMRVIsIChfLCBlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PlxyXG4gICAgdGhyb3dFcnJvcihlcnIpLFxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBodHRwRXJyb3JSZXBvcnRlcjogSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCByb3V0ZXJFdmVudHM6IFJvdXRlckV2ZW50cztcclxuICBwcm90ZWN0ZWQgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZTtcclxuICBwcm90ZWN0ZWQgY2ZSZXM6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjtcclxuICBwcm90ZWN0ZWQgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyO1xyXG4gIHByb3RlY3RlZCBodHRwRXJyb3JDb25maWc6IEh0dHBFcnJvckNvbmZpZztcclxuICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5odHRwRXJyb3JSZXBvcnRlciA9IGluamVjdG9yLmdldChIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UpO1xyXG4gICAgdGhpcy5yb3V0ZXJFdmVudHMgPSBpbmplY3Rvci5nZXQoUm91dGVyRXZlbnRzKTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb25maXJtYXRpb25TZXJ2aWNlKTtcclxuICAgIHRoaXMuY2ZSZXMgPSBpbmplY3Rvci5nZXQoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcclxuICAgIHRoaXMucmVuZGVyZXJGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KFJlbmRlcmVyRmFjdG9yeTIpO1xyXG4gICAgdGhpcy5odHRwRXJyb3JDb25maWcgPSBpbmplY3Rvci5nZXQoJ0hUVFBfRVJST1JfQ09ORklHJyk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMubGlzdGVuVG9SZXN0RXJyb3IoKTtcclxuICAgIHRoaXMubGlzdGVuVG9Sb3V0ZXJFcnJvcigpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub1JvdXRlckRhdGFSZXNvbHZlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvUm91dGVyRXJyb3IoKSB7XHJcbiAgICB0aGlzLnJvdXRlckV2ZW50c1xyXG4gICAgICAuZ2V0TmF2aWdhdGlvbkV2ZW50cygnRXJyb3InKVxyXG4gICAgICAucGlwZShmaWx0ZXIodGhpcy5maWx0ZXJSb3V0ZUVycm9ycykpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93NDA0UGFnZSgpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub1JvdXRlckRhdGFSZXNvbHZlZCgpIHtcclxuICAgIHRoaXMucm91dGVyRXZlbnRzXHJcbiAgICAgIC5nZXRFdmVudHMoUmVzb2x2ZUVuZClcclxuICAgICAgLnBpcGUoZmlsdGVyKCgpID0+ICEhdGhpcy5jb21wb25lbnRSZWYpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVG9SZXN0RXJyb3IoKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydGVyJFxyXG4gICAgICAucGlwZShmaWx0ZXIodGhpcy5maWx0ZXJSZXN0RXJyb3JzKSwgc3dpdGNoTWFwKHRoaXMuZXhlY3V0ZUVycm9ySGFuZGxlcikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhlY3V0ZUVycm9ySGFuZGxlciA9IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICBjb25zdCBlcnJIYW5kbGVyID0gdGhpcy5odHRwRXJyb3JIYW5kbGVyKHRoaXMuaW5qZWN0b3IsIGVycm9yKTtcclxuICAgIGNvbnN0IGlzT2JzZXJ2YWJsZSA9IGVyckhhbmRsZXIgaW5zdGFuY2VvZiBPYnNlcnZhYmxlO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBpc09ic2VydmFibGUgPyBlcnJIYW5kbGVyIDogb2YobnVsbCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSkge1xyXG4gICAgY29uc3QgYm9keSA9IGVycj8uZXJyb3I/LmVycm9yIHx8IHtcclxuICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyLmhlYWRlcnMuZ2V0KCdBYnAtVGVuYW50LVJlc29sdmUtRXJyb3InKSkge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpLnN1YnNjcmliZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIGVyci5oZWFkZXJzLmdldCgnX0FicEVycm9yRm9ybWF0JykpIHtcclxuICAgICAgY29uc3QgY29uZmlybWF0aW9uJCA9IHRoaXMuc2hvd0Vycm9yV2l0aFJlcXVlc3RCb2R5KGJvZHkpO1xyXG5cclxuICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMSkge1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbiQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb0xvZ2luKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAoZXJyLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgdGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcig0MDEpXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93NDAxUGFnZSgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDAxLmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDMudGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMy50aXRsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV0YWlsczoge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMy5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDMuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiA0MDMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDA0OlxyXG4gICAgICAgICAgdGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcig0MDQpXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93NDA0UGFnZSgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwNC5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDUwMDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xyXG4gICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjUwMC50aXRsZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNTAwLnRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXRhaWxzOiB7XHJcbiAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNTAwLmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjUwMC5kZXRhaWxzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdGF0dXM6IDUwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgaWYgKGVyci5zdGF0dXNUZXh0ID09PSAnVW5rbm93biBFcnJvcicpIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVFcnJvckNvbXBvbmVudCh7XHJcbiAgICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBkZXRhaWxzOiBlcnIubWVzc2FnZSxcclxuICAgICAgICAgICAgICBpc0hvbWVTaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3IuZGV0YWlscyxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLmRldGFpbHMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNob3c0MDFQYWdlKCkge1xyXG4gICAgdGhpcy5jcmVhdGVFcnJvckNvbXBvbmVudCh7XHJcbiAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNDAxLnRpdGxlLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDEudGl0bGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0YXR1czogNDAxLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2hvdzQwNFBhZ2UoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDQudGl0bGUsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwNC50aXRsZSxcclxuICAgICAgfSxcclxuICAgICAgc3RhdHVzOiA0MDQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93RXJyb3JXaXRoUmVxdWVzdEJvZHkoYm9keTogYW55KSB7XHJcbiAgICBsZXQgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW07XHJcbiAgICBsZXQgdGl0bGU6IExvY2FsaXphdGlvblBhcmFtO1xyXG5cclxuICAgIGlmIChib2R5LmRldGFpbHMpIHtcclxuICAgICAgbWVzc2FnZSA9IGJvZHkuZGV0YWlscztcclxuICAgICAgdGl0bGUgPSBib2R5Lm1lc3NhZ2U7XHJcbiAgICB9IGVsc2UgaWYgKGJvZHkubWVzc2FnZSkge1xyXG4gICAgICB0aXRsZSA9IHtcclxuICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgfTtcclxuICAgICAgbWVzc2FnZSA9IGJvZHkubWVzc2FnZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1lc3NhZ2UgPSBib2R5Lm1lc3NhZ2UgfHwge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aXRsZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnNob3dFcnJvcihtZXNzYWdlLCB0aXRsZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2hvd0Vycm9yKFxyXG4gICAgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb25maXJtYXRpb24uU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmVycm9yKG1lc3NhZ2UsIHRpdGxlLCB7XHJcbiAgICAgIGhpZGVDYW5jZWxCdG46IHRydWUsXHJcbiAgICAgIHllc1RleHQ6ICdBYnBBY2NvdW50OjpDbG9zZScsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVUb0xvZ2luKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5uYXZpZ2F0ZVRvTG9naW4oKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUVycm9yQ29tcG9uZW50KGluc3RhbmNlOiBQYXJ0aWFsPEh0dHBFcnJvcldyYXBwZXJDb21wb25lbnQ+KSB7XHJcbiAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgY29uc3QgaG9zdCA9IHJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KGRvY3VtZW50LmJvZHksIHRydWUpO1xyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jZlJlc1xyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoSHR0cEVycm9yV3JhcHBlckNvbXBvbmVudClcclxuICAgICAgLmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnN0YW5jZSkge1xyXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCBrZXkpKSB7XHJcbiAgICAgICAgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSlba2V5XSA9IChpbnN0YW5jZSBhcyBhbnkpW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlQ2xvc2VJY29uID0gISF0aGlzLmh0dHBFcnJvckNvbmZpZy5lcnJvclNjcmVlbj8uaGlkZUNsb3NlSWNvbjtcclxuICAgIGNvbnN0IGFwcFJlZiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcclxuXHJcbiAgICBpZiAodGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcihpbnN0YW5jZS5zdGF0dXMgYXMgRXJyb3JTY3JlZW5FcnJvckNvZGVzKSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jZlJlcyA9IHRoaXMuY2ZSZXM7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmFwcFJlZiA9IGFwcFJlZjtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5qZWN0b3IgPSB0aGlzLmluamVjdG9yO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jdXN0b21Db21wb25lbnQgPSB0aGlzLmh0dHBFcnJvckNvbmZpZy5lcnJvclNjcmVlbj8uY29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKGhvc3QsICh0aGlzLmNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdKTtcclxuXHJcbiAgICBjb25zdCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5kZXN0cm95JCA9IGRlc3Ryb3kkO1xyXG4gICAgZGVzdHJveSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5DcmVhdGVDdXN0b21FcnJvcihzdGF0dXM6IEVycm9yU2NyZWVuRXJyb3JDb2Rlcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKFxyXG4gICAgICB0aGlzLmh0dHBFcnJvckNvbmZpZz8uZXJyb3JTY3JlZW4/LmNvbXBvbmVudCAmJlxyXG4gICAgICB0aGlzLmh0dHBFcnJvckNvbmZpZz8uZXJyb3JTY3JlZW4/LmZvcldoaWNoRXJyb3JzICYmXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uZm9yV2hpY2hFcnJvcnMuaW5kZXhPZihzdGF0dXMpID4gLTFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZmlsdGVyUmVzdEVycm9ycyA9ICh7IHN0YXR1cyB9OiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0dXMgIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgISF0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWcuc2tpcEhhbmRsZWRFcnJvckNvZGVzLmZpbmRJbmRleChjb2RlID0+IGNvZGUgPT09IHN0YXR1cykgPCAwXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHByb3RlY3RlZCBmaWx0ZXJSb3V0ZUVycm9ycyA9IChuYXZpZ2F0aW9uRXJyb3I6IE5hdmlnYXRpb25FcnJvcik6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgbmF2aWdhdGlvbkVycm9yLmVycm9yPy5tZXNzYWdlPy5pbmRleE9mKCdDYW5ub3QgbWF0Y2gnKSA+IC0xICYmXHJcbiAgICAgICEhdGhpcy5odHRwRXJyb3JDb25maWcuc2tpcEhhbmRsZWRFcnJvckNvZGVzICYmXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnLnNraXBIYW5kbGVkRXJyb3JDb2Rlcy5maW5kSW5kZXgoY29kZSA9PiBjb2RlID09PSA0MDQpIDwgMFxyXG4gICAgKTtcclxuICB9O1xyXG59XHJcbiJdfQ==