gamma-app-controller 1.2.18 → 1.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +2 -1
- package/esm2020/lib/shared/advanced-component/app-advance-header/app-header.component.mjs +21 -8
- package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.component.mjs +1249 -0
- package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.module.mjs +151 -0
- package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.service.mjs +121 -0
- package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing-dataset-call.service.mjs +364 -0
- package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing.tokenStorage.servce.mjs +36 -0
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/gamma-app-controller.mjs +1923 -16
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +1900 -16
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/shared/advanced-component/app-advance-header/app-header.component.d.ts +8 -3
- package/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.component.d.ts +141 -0
- package/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.module.d.ts +16 -0
- package/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.service.d.ts +33 -0
- package/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing-dataset-call.service.d.ts +24 -0
- package/lib/template-module/defaulLandingMultiLayoutComponent/multi-landing.tokenStorage.servce.d.ts +12 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -38,6 +38,7 @@ export class PageControlerComponent {
|
|
|
38
38
|
{ "compName": "KpiWithDataSetTestComponent", "item": "Default KPI Layout" },
|
|
39
39
|
{ "compName": "KpiWithMultilayoutSetTestComponent", "item": "Multiple Layout KPI" },
|
|
40
40
|
{ "compName": "LandingComponentComponent", "item": "Default Page" },
|
|
41
|
+
{ "compName": "MultiLayoutLandingComponentComponent", "item": "Multiple Layout Page" },
|
|
41
42
|
{ "compName": "CdrConfigComponent", "item": "CDR Config" },
|
|
42
43
|
{ "compName": "CreateKpiTreeComponent", "item": "Create KPI Config" },
|
|
43
44
|
{ "compName": "CreateMetricsComponent", "item": "Create Metrics" },
|
|
@@ -195,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
195
196
|
type: ViewChild,
|
|
196
197
|
args: ['scrollContainer']
|
|
197
198
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBNkJqQyxZQUNVLE1BQWMsRUFBUyxhQUE0QixFQUFVLE9BQWtDLEVBQy9GLE1BQXFCLEVBQVUsbUJBQXdDO1FBRHZFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQy9GLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBOUJqRixvQkFBZSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFlBQVksRUFBRSxFQUFFO1lBQ2hCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFD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Q0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUM7UUFDeEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7bUhBbE1VLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG1MQ2RuQywrNVBBZ0pNOzJGRGxJTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UseUJBQXlCOytOQStCRyxlQUFlO3NCQUFwRCxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGFnZS10ZW1wbGF0ZXMvZHluYW1pYy1yb3V0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXNoYm9yZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250cm9sZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXNoYm9hcmRDb25maWcgPSB7XG4gICAgcGFnZU5hbWU6IFwiXCIsXG4gICAgcGFnZVRpdGxlOiBcIlwiLFxuICAgIHBhZ2VVcmw6IFwiXCIsXG4gICAgcGFnZVRlbXBsYXRlOiBcIlwiLFxuICAgIHBhZ2VEb2N1bWVudGF0aW9uVXJsOiBcIlwiLFxuICAgIHdpZGdldHM6IFtdLFxuICAgIGZpbHRlcklkOiBcIlwiXG4gIH1cbiAgaXNOZXdUYW1wbGV0ZUNyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHRlbXBsYXRlRGF0YVNvdXJjZTogYW55ID0gW107XG5cbiAgZmlsdGVyRGF0YVNvdXJjZTogYW55O1xuXG4gIGNvbXBvbmVudFRlbXBsYXRlcyA9IFtcbiAgICB7IFwiY29tcE5hbWVcIjogXCJLcGlXaXRoRGF0YVNldFRlc3RDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiRGVmYXVsdCBLUEkgTGF5b3V0XCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJLcGlXaXRoTXVsdGlsYXlvdXRTZXRUZXN0Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIk11bHRpcGxlIExheW91dCBLUElcIiB9LFxuICAgIHsgXCJjb21wTmFtZVwiOiBcIkxhbmRpbmdDb21wb25lbnRDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiRGVmYXVsdCBQYWdlXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJDZHJDb25maWdDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiQ0RSIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlS3BpVHJlZUNvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgS1BJIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlTWV0cmljc0NvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgTWV0cmljc1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiRXhjZXB0aW9uT3BlcmF0aW9uQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkV4Y2VwdGlvbiBPcHJhdGlvblwiIH0sXG4gIF1cblxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKSBwcml2YXRlIHNjcm9sbENvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgc2VsZWN0ZWRfcGFnZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsIHByaXZhdGUgZHluYW1pY1JvdXRlU2VydmljZTogRHluYW1pY1JvdXRlU2VydmljZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICB9XG4gIGdldEZpbHRlckRhdGFTZXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcEZpbHRlckNvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckRhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldEFwcFBhZ2VDb25maWdzKCkge1xuICAgIHRoaXMuc2VydmljZS5nZXRBcHBQYWdlQ29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1BhZ2UgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNyZWF0ZU5ld1RhbXBsZXRlKCkge1xuICAgIHRoaXMuaXNOZXdUYW1wbGV0ZUNyZWF0ZSA9IHRydWU7XG4gICAgdGhpcy5kYXNoYm9hcmRDb25maWcgPSB7XG4gICAgICBwYWdlTmFtZTogXCJcIixcbiAgICAgIHBhZ2VUaXRsZTogXCJcIixcbiAgICAgIHBhZ2VVcmw6IFwiXCIsXG4gICAgICBwYWdlVGVtcGxhdGU6IFwiXCIsXG4gICAgICBwYWdlRG9jdW1lbnRhdGlvblVybDogXCJcIixcbiAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgZmlsdGVySWQ6IFwiXCJcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHZpZXdzUGFnZShpdGVtKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBcInBhZ2VJZFwiOiBpdGVtLnBhZ2VJZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS5wYWdlVXJsXSwgbmF2aWdhdGlvbkV4dHJhcylcbiAgfVxuICBkZWxldGVUYW1wbGV0ZShpdGVtKSB7XG4gICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkRlbGV0ZSBGaWx0ZXJcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcFBhZ2VDb25maWcoaXRlbS5wYWdlSWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdSdWxlIE1vZHVsZScpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZWRpdFRlbXBsYXRlKGl0ZW0pIHtcbiAgICB0aGlzLmRhc2hib2FyZENvbmZpZyA9IGl0ZW07XG4gICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBnZXRTYXZlQ2hhcnRDb25maWcoKSB7XG5cbiAgICBpZiAodGhpcy5kYXNoYm9hcmRDb25maWdbJ3BhZ2VJZCddKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZWRpdEFwcFBhZ2VDb25maWcodGhpcy5kYXNoYm9hcmRDb25maWcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTmV3VGFtcGxldGVDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnZSBVcGRhdGUgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVBcHBQYWdlQ29uZmlnKHRoaXMuZGFzaGJvYXJkQ29uZmlnKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdQYWdlIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2aWV3Q29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcbiAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICdwYWdlSWQnOiBpdGVtLnBhZ2VJZCxcbiAgICAgICAgJ2NvbnRlbnRUeXBlJzogXCJ2aWV3XCIsXG5cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICB9XG5cbiAgY29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcblxuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGl0ZW0ucGFnZUlkLFxuICAgICAgICAnY29udGVudFR5cGUnOiBcImVkaXRcIixcblxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGl0ZW0ucGFnZVRlbXBsYXRlID09IFwiS3BpV2l0aE11bHRpbGF5b3V0U2V0VGVzdENvbXBvbmVudFwiKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9tdWx0aVBhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9XG4gIH1cblxuXG4gIGdldENyZWF0ZURhc2hib2FyZCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwcy9jb250cm9sUGFuZWwvcGFnZUNvbmZpZ0NvbnRyb2xsZXInKVxuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcgfSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBpc1NlbGVjdGlvbkNoYW5nZShldmVudCkge1xuXG4gICAgdGhpcy5zZWxlY3RlZF9wYWdlID0gZXZlbnQuc2VsZWN0ZWRSb3dzRGF0YTtcblxuXG4gIH1cblxuICBnZXREb3dubG9hZFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRfcGFnZS5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGV4cG9ydC4nLCAnRXhwb3J0IEVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRfcGFnZSwgbnVsbCwgMik7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIGFuY2hvci5kb3dubG9hZCA9IGBleHBvcnRlZF9wYWdlcy5qc29uYDtcbiAgICBhbmNob3IuY2xpY2soKTtcbiAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG4gICAgLy8gc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgLy8gICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIC8vIH1cblxuXG5cbiAgICAvLyBhZGRSb3V0ZXNBbmROYXZpZ2F0ZShyb3V0ZUNvbmZpZykge1xuICAgIC8vICAgY29uc3QgY29tcG9uZW50TWFwID0ge1xuICAgIC8vICAgICAnS3BpVHJlZVZpZXdDb21wb25lbnQnOiBLcGlUcmVlVmlld0NvbXBvbmVudCxcbiAgICAvLyAgICAgJ0Jvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudCc6IEJvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudFxuICAgIC8vICAgfTtcbiAgICAvLyAgIGNvbnN0IGR5bmFtaWNSb3V0ZSA9IHtcbiAgICAvLyAgICAgcGF0aDogcm91dGVDb25maWcucGF0aCxcbiAgICAvLyAgICAgY29tcG9uZW50OiBjb21wb25lbnRNYXBbcm91dGVDb25maWcuY29tcE5hbWVdLFxuICAgIC8vICAgfTtcblxuICAgIC8vICAgLy8gRmluZCB0aGUgcGFyZW50IHJvdXRlIChlLmcuLCBNYWluTGF5b3V0Q29tcG9uZW50KVxuICAgIC8vICAgY29uc3QgbWFpbkxheW91dFJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQocm91dGUgPT4gcm91dGUuY29tcG9uZW50ID09PSBMYXlvdXRDb21wb25lbnQpO1xuXG4gICAgLy8gICBpZiAobWFpbkxheW91dFJvdXRlKSB7XG4gICAgLy8gICAgIGlmICghbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgLy8gICAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICAvLyBBZGQgdGhlIGR5bmFtaWMgcm91dGUgYXMgYSBjaGlsZCBvZiB0aGUgbWFpbiBsYXlvdXQgcm91dGVcbiAgICAvLyAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuLnB1c2goZHluYW1pY1JvdXRlKTtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIC8vIEZhbGxiYWNrOiBBZGQgdGhlIHJvdXRlIGRpcmVjdGx5ICh0aGlzIG1heSBjYXVzZSBpc3N1ZXMgaWYgdGhlIGxheW91dCBpcyBtaXNzaW5nKVxuICAgIC8vICAgICB0aGlzLnJvdXRlci5jb25maWcucHVzaChkeW5hbWljUm91dGUpO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV3bHkgYWRkZWQgcm91dGVcbiAgICAvLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZUNvbmZpZy5wYXRoXSk7XG4gICAgLy8gfVxuXG4gIH1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInIEFwcGxpY2F0aW9uIFBhZ2VzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0yIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFBhZ2VzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImNyZWF0ZU5ld1RhbXBsZXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgUGFnZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJnZXREb3dubG9hZFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkX3BhZ2UubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHBvcnQgUGFnZXNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwidGVtcGxhdGVEYXRhU291cmNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGVyXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiAob25TZWxlY3Rpb25DaGFuZ2VkKT1cImlzU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gW3NlbGVjdEFsbE1vZGVdPVwiJ2FsbE1vZGUnXCIgW3Nob3dDaGVja0JveGVzTW9kZV09XCInYWx3YXlzJ1wiIG1vZGU9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlYXJjaC1wYW5lbD5cblxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VOYW1lXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZVRpdGxlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VUZW1wbGF0ZVwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZUlkXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VVcmxcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGlvbkRhdGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIkNvbmZpZ3VyZWRcIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGUyXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cImxlZnRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdFRlbXBsYXRlKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJ2aWV3c1BhZ2UoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBQYWdlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVUYW1wbGV0ZShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUyJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJjb25maWd1cmVkVGVtcGxhdGUoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICNzY3JvbGxDb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIiAqbmdJZj1cImlzTmV3VGFtcGxldGVDcmVhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgPGg2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gQ3JlYXRlIFBhZ2VcbiAgICAgICAgICAgICAgICA8L2g2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGbGV4IGNvbnRhaW5lciBmb3IgZm9ybSBmaWVsZHMgLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIHNlYXJjaEVuYWJsZWQ9XCJ0cnVlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yIHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgRG9jdW1lbnRhdGlvbiBVcmw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlRG9jdW1lbnRhdGlvblVybFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJmaWx0ZXJEYXRhU291cmNlXCIgZGlzcGxheUV4cHI9XCJmaWx0ZXJOYW1lXCIgdmFsdWVFeHByPVwiZmlsdGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLmZpbHRlcklkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBEb2N1bWVudGF0aW9uIFVybDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VEb2N1bWVudGF0aW9uVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlckRhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cImZpbHRlck5hbWVcIiB2YWx1ZUV4cHI9XCJmaWx0ZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcuZmlsdGVySWRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTdWJtaXQgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG14LTEgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnZXRTYXZlQ2hhcnRDb25maWcoKVwiPlN1Ym1pdCBUZW1wbGF0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cblxuPC9kaXY+Il19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBOEJqQyxZQUNVLE1BQWMsRUFBUyxhQUE0QixFQUFVLE9BQWtDLEVBQy9GLE1BQXFCLEVBQVUsbUJBQXdDO1FBRHZFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQy9GLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBL0JqRixvQkFBZSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFlBQVksRUFBRSxFQUFFO1lBQ2hCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFD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QUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNsQixNQUFNLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O21IQW5NVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixtTENkbkMsKzVQQWdKTTsyRkRsSU8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHlCQUF5QjsrTkFnQ0csZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY1JvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3BhZ2UtdGVtcGxhdGVzL2R5bmFtaWMtcm91dGUtc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGFzaGJvcmQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udHJvbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGFzaGJvYXJkQ29uZmlnID0ge1xuICAgIHBhZ2VOYW1lOiBcIlwiLFxuICAgIHBhZ2VUaXRsZTogXCJcIixcbiAgICBwYWdlVXJsOiBcIlwiLFxuICAgIHBhZ2VUZW1wbGF0ZTogXCJcIixcbiAgICBwYWdlRG9jdW1lbnRhdGlvblVybDogXCJcIixcbiAgICB3aWRnZXRzOiBbXSxcbiAgICBmaWx0ZXJJZDogXCJcIlxuICB9XG4gIGlzTmV3VGFtcGxldGVDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB0ZW1wbGF0ZURhdGFTb3VyY2U6IGFueSA9IFtdO1xuXG4gIGZpbHRlckRhdGFTb3VyY2U6IGFueTtcblxuICBjb21wb25lbnRUZW1wbGF0ZXMgPSBbXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiS3BpV2l0aERhdGFTZXRUZXN0Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkRlZmF1bHQgS1BJIExheW91dFwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiS3BpV2l0aE11bHRpbGF5b3V0U2V0VGVzdENvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJNdWx0aXBsZSBMYXlvdXQgS1BJXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJMYW5kaW5nQ29tcG9uZW50Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkRlZmF1bHQgUGFnZVwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiTXVsdGlMYXlvdXRMYW5kaW5nQ29tcG9uZW50Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIk11bHRpcGxlIExheW91dCBQYWdlXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJDZHJDb25maWdDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiQ0RSIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlS3BpVHJlZUNvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgS1BJIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlTWV0cmljc0NvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgTWV0cmljc1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiRXhjZXB0aW9uT3BlcmF0aW9uQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkV4Y2VwdGlvbiBPcHJhdGlvblwiIH0sXG4gIF1cblxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKSBwcml2YXRlIHNjcm9sbENvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgc2VsZWN0ZWRfcGFnZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsIHByaXZhdGUgZHluYW1pY1JvdXRlU2VydmljZTogRHluYW1pY1JvdXRlU2VydmljZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICB9XG4gIGdldEZpbHRlckRhdGFTZXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcEZpbHRlckNvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckRhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldEFwcFBhZ2VDb25maWdzKCkge1xuICAgIHRoaXMuc2VydmljZS5nZXRBcHBQYWdlQ29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1BhZ2UgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNyZWF0ZU5ld1RhbXBsZXRlKCkge1xuICAgIHRoaXMuaXNOZXdUYW1wbGV0ZUNyZWF0ZSA9IHRydWU7XG4gICAgdGhpcy5kYXNoYm9hcmRDb25maWcgPSB7XG4gICAgICBwYWdlTmFtZTogXCJcIixcbiAgICAgIHBhZ2VUaXRsZTogXCJcIixcbiAgICAgIHBhZ2VVcmw6IFwiXCIsXG4gICAgICBwYWdlVGVtcGxhdGU6IFwiXCIsXG4gICAgICBwYWdlRG9jdW1lbnRhdGlvblVybDogXCJcIixcbiAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgZmlsdGVySWQ6IFwiXCJcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHZpZXdzUGFnZShpdGVtKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBcInBhZ2VJZFwiOiBpdGVtLnBhZ2VJZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS5wYWdlVXJsXSwgbmF2aWdhdGlvbkV4dHJhcylcbiAgfVxuICBkZWxldGVUYW1wbGV0ZShpdGVtKSB7XG4gICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkRlbGV0ZSBGaWx0ZXJcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcFBhZ2VDb25maWcoaXRlbS5wYWdlSWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdSdWxlIE1vZHVsZScpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZWRpdFRlbXBsYXRlKGl0ZW0pIHtcbiAgICB0aGlzLmRhc2hib2FyZENvbmZpZyA9IGl0ZW07XG4gICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBnZXRTYXZlQ2hhcnRDb25maWcoKSB7XG5cbiAgICBpZiAodGhpcy5kYXNoYm9hcmRDb25maWdbJ3BhZ2VJZCddKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZWRpdEFwcFBhZ2VDb25maWcodGhpcy5kYXNoYm9hcmRDb25maWcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTmV3VGFtcGxldGVDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnZSBVcGRhdGUgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVBcHBQYWdlQ29uZmlnKHRoaXMuZGFzaGJvYXJkQ29uZmlnKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdQYWdlIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2aWV3Q29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcbiAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICdwYWdlSWQnOiBpdGVtLnBhZ2VJZCxcbiAgICAgICAgJ2NvbnRlbnRUeXBlJzogXCJ2aWV3XCIsXG5cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICB9XG5cbiAgY29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcblxuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGl0ZW0ucGFnZUlkLFxuICAgICAgICAnY29udGVudFR5cGUnOiBcImVkaXRcIixcblxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGl0ZW0ucGFnZVRlbXBsYXRlID09IFwiS3BpV2l0aE11bHRpbGF5b3V0U2V0VGVzdENvbXBvbmVudFwiKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9tdWx0aVBhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9XG4gIH1cblxuXG4gIGdldENyZWF0ZURhc2hib2FyZCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwcy9jb250cm9sUGFuZWwvcGFnZUNvbmZpZ0NvbnRyb2xsZXInKVxuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcgfSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBpc1NlbGVjdGlvbkNoYW5nZShldmVudCkge1xuXG4gICAgdGhpcy5zZWxlY3RlZF9wYWdlID0gZXZlbnQuc2VsZWN0ZWRSb3dzRGF0YTtcblxuXG4gIH1cblxuICBnZXREb3dubG9hZFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRfcGFnZS5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGV4cG9ydC4nLCAnRXhwb3J0IEVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRfcGFnZSwgbnVsbCwgMik7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIGFuY2hvci5kb3dubG9hZCA9IGBleHBvcnRlZF9wYWdlcy5qc29uYDtcbiAgICBhbmNob3IuY2xpY2soKTtcbiAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG4gICAgLy8gc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgLy8gICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIC8vIH1cblxuXG5cbiAgICAvLyBhZGRSb3V0ZXNBbmROYXZpZ2F0ZShyb3V0ZUNvbmZpZykge1xuICAgIC8vICAgY29uc3QgY29tcG9uZW50TWFwID0ge1xuICAgIC8vICAgICAnS3BpVHJlZVZpZXdDb21wb25lbnQnOiBLcGlUcmVlVmlld0NvbXBvbmVudCxcbiAgICAvLyAgICAgJ0Jvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudCc6IEJvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudFxuICAgIC8vICAgfTtcbiAgICAvLyAgIGNvbnN0IGR5bmFtaWNSb3V0ZSA9IHtcbiAgICAvLyAgICAgcGF0aDogcm91dGVDb25maWcucGF0aCxcbiAgICAvLyAgICAgY29tcG9uZW50OiBjb21wb25lbnRNYXBbcm91dGVDb25maWcuY29tcE5hbWVdLFxuICAgIC8vICAgfTtcblxuICAgIC8vICAgLy8gRmluZCB0aGUgcGFyZW50IHJvdXRlIChlLmcuLCBNYWluTGF5b3V0Q29tcG9uZW50KVxuICAgIC8vICAgY29uc3QgbWFpbkxheW91dFJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQocm91dGUgPT4gcm91dGUuY29tcG9uZW50ID09PSBMYXlvdXRDb21wb25lbnQpO1xuXG4gICAgLy8gICBpZiAobWFpbkxheW91dFJvdXRlKSB7XG4gICAgLy8gICAgIGlmICghbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgLy8gICAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICAvLyBBZGQgdGhlIGR5bmFtaWMgcm91dGUgYXMgYSBjaGlsZCBvZiB0aGUgbWFpbiBsYXlvdXQgcm91dGVcbiAgICAvLyAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuLnB1c2goZHluYW1pY1JvdXRlKTtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIC8vIEZhbGxiYWNrOiBBZGQgdGhlIHJvdXRlIGRpcmVjdGx5ICh0aGlzIG1heSBjYXVzZSBpc3N1ZXMgaWYgdGhlIGxheW91dCBpcyBtaXNzaW5nKVxuICAgIC8vICAgICB0aGlzLnJvdXRlci5jb25maWcucHVzaChkeW5hbWljUm91dGUpO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV3bHkgYWRkZWQgcm91dGVcbiAgICAvLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZUNvbmZpZy5wYXRoXSk7XG4gICAgLy8gfVxuXG4gIH1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInIEFwcGxpY2F0aW9uIFBhZ2VzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0yIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFBhZ2VzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImNyZWF0ZU5ld1RhbXBsZXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgUGFnZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJnZXREb3dubG9hZFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkX3BhZ2UubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHBvcnQgUGFnZXNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwidGVtcGxhdGVEYXRhU291cmNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGVyXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiAob25TZWxlY3Rpb25DaGFuZ2VkKT1cImlzU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gW3NlbGVjdEFsbE1vZGVdPVwiJ2FsbE1vZGUnXCIgW3Nob3dDaGVja0JveGVzTW9kZV09XCInYWx3YXlzJ1wiIG1vZGU9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlYXJjaC1wYW5lbD5cblxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VOYW1lXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZVRpdGxlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VUZW1wbGF0ZVwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZUlkXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VVcmxcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGlvbkRhdGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIkNvbmZpZ3VyZWRcIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGUyXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cImxlZnRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdFRlbXBsYXRlKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJ2aWV3c1BhZ2UoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBQYWdlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVUYW1wbGV0ZShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUyJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJjb25maWd1cmVkVGVtcGxhdGUoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICNzY3JvbGxDb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIiAqbmdJZj1cImlzTmV3VGFtcGxldGVDcmVhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgPGg2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gQ3JlYXRlIFBhZ2VcbiAgICAgICAgICAgICAgICA8L2g2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGbGV4IGNvbnRhaW5lciBmb3IgZm9ybSBmaWVsZHMgLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIHNlYXJjaEVuYWJsZWQ9XCJ0cnVlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yIHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgRG9jdW1lbnRhdGlvbiBVcmw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlRG9jdW1lbnRhdGlvblVybFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJmaWx0ZXJEYXRhU291cmNlXCIgZGlzcGxheUV4cHI9XCJmaWx0ZXJOYW1lXCIgdmFsdWVFeHByPVwiZmlsdGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLmZpbHRlcklkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBEb2N1bWVudGF0aW9uIFVybDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VEb2N1bWVudGF0aW9uVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlckRhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cImZpbHRlck5hbWVcIiB2YWx1ZUV4cHI9XCJmaWx0ZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcuZmlsdGVySWRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTdWJtaXQgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG14LTEgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnZXRTYXZlQ2hhcnRDb25maWcoKVwiPlN1Ym1pdCBUZW1wbGF0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cblxuPC9kaXY+Il19
|
|
@@ -49,10 +49,12 @@ export class AppAdvanceHeaderComponent {
|
|
|
49
49
|
};
|
|
50
50
|
this.srvTypeDataSource = [];
|
|
51
51
|
this.srvTypeDisplayValue = [];
|
|
52
|
+
this.selectedDetesforView = '';
|
|
52
53
|
this.selectedDateRangeOrServtype = new EventEmitter();
|
|
53
54
|
this.getFilterPageConfig = new EventEmitter();
|
|
54
55
|
this.getOperatorName = new EventEmitter();
|
|
55
56
|
this.getContextFilterData = new EventEmitter();
|
|
57
|
+
this.selectedDatesMap = {};
|
|
56
58
|
}
|
|
57
59
|
set filterItems(value) {
|
|
58
60
|
if (value === undefined || value.length === 0) {
|
|
@@ -132,6 +134,12 @@ export class AppAdvanceHeaderComponent {
|
|
|
132
134
|
});
|
|
133
135
|
}
|
|
134
136
|
}
|
|
137
|
+
ngOnChanges(changes) {
|
|
138
|
+
if (changes['filterObjects'] && this.filterObjects?.widgetId) {
|
|
139
|
+
const widgetId = this.filterObjects.widgetId;
|
|
140
|
+
this.selectedDatesMap[widgetId] = this.selectedDetesforView;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
135
143
|
getContextMenuChange(event) {
|
|
136
144
|
if (event.event) {
|
|
137
145
|
const foundObject = this.contextFilterItemsForFilter.find(item => item.defaultFilterValue === event.value);
|
|
@@ -217,18 +225,21 @@ export class AppAdvanceHeaderComponent {
|
|
|
217
225
|
}
|
|
218
226
|
}
|
|
219
227
|
});
|
|
228
|
+
let selectedText = '';
|
|
220
229
|
if (displayStartDate && displayEndDate) {
|
|
221
|
-
|
|
230
|
+
selectedText = `${displayStartDate} - ${displayEndDate}`;
|
|
222
231
|
}
|
|
223
232
|
else if (displayStartDate) {
|
|
224
|
-
|
|
233
|
+
selectedText = displayStartDate;
|
|
225
234
|
}
|
|
226
235
|
else if (displayEndDate) {
|
|
227
|
-
|
|
236
|
+
selectedText = displayEndDate;
|
|
228
237
|
}
|
|
229
|
-
|
|
230
|
-
|
|
238
|
+
const element = document.getElementById(this.filterObjects.widgetId);
|
|
239
|
+
if (element) {
|
|
240
|
+
element.innerText = selectedText;
|
|
231
241
|
}
|
|
242
|
+
filter['filterObjects'] = (this.filterObjects) ? this.filterObjects : null;
|
|
232
243
|
this.getFilterPageConfig.emit(filter);
|
|
233
244
|
}
|
|
234
245
|
getOperatorDataSource(event) {
|
|
@@ -280,10 +291,10 @@ export class AppAdvanceHeaderComponent {
|
|
|
280
291
|
}
|
|
281
292
|
}
|
|
282
293
|
AppAdvanceHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppAdvanceHeaderComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.CommonService }, { token: i3.AppLocalStorage }], target: i0.ɵɵFactoryTarget.Component });
|
|
283
|
-
AppAdvanceHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AppAdvanceHeaderComponent, selector: "app-advance-header", inputs: { pageTitle: "pageTitle", bread_crumbs_container: "bread_crumbs_container", isEditButton: "isEditButton", isAdvanceButton: "isAdvanceButton", selectedDates: "selectedDates", filterItems: "filterItems", contextFilterItems: "contextFilterItems" }, outputs: { toggleEvent: "toggleEvent", selectedDateRangeOrServtype: "selectedDateRangeOrServtype", getFilterPageConfig: "getFilterPageConfig", getOperatorName: "getOperatorName", getContextFilterData: "getContextFilterData" }, ngImport: i0, template: "<div class=\"flex flex-col mb-2\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n {{ getPageTitle(pageTitle) }}\n </h2>\n </div>\n <div class=\"\">\n <!-- INCOMING -->\n <gamma-bread-crumbs [kpi_data_container]=\"bread_crumbs_container\"></gamma-bread-crumbs>\n </div>\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n <div class=\"mx-2\" *ngIf=\"isEditButton\">\n <div (click)=\"editKpi()\"\n class=\"bg-blue-700 cursor-pointer dark:bg-blue-600 dark:focus:ring-blue-800 dark:hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 font-medium hover:bg-blue-800 mr-2 px-2.5 py-2 rounded text-sm text-white ng-star-inserted\">\n Edit\n </div>\n </div>\n <ng-container *ngIf=\"contextFilterItemsForFilter && contextFilterItemsForFilter.length !== 0 \">\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\" >\n <dx-select-box [items]=\"contextFilterItemsForFilter\" (onValueChanged)=\"getContextMenuChange($event)\" displayExpr=\"label\" valueExpr=\"defaultFilterValue\"\n [(ngModel)]=\"defaultFilterValue\"></dx-select-box>\n </div>\n </ng-container>\n \n <div class=\"w-1 h-full border-l-2\" *ngIf=\"isEditButton\"></div>\n\n <div class=\"mx-2\">\n <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\"> {{selectedDetesforView}}</div>\n </div>\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\" *ngIf=\"isAdvanceButton\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\" (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n </div>\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <!-- <div class=\"mx-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon (click)=\"callPageDocumentation()\" title=\"Add Filters\" [svgIcon]=\"\n 'heroicons_outline:question-mark-circle'\n \">\n </mat-icon>\n </span>\n </span>\n <span class=\"mat-button-focus-overlay\"></span>\n </button>\n </div> -->\n\n </div>\n </div>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.GammaAdvanceFilterComponent, selector: "app-gamma-advance-filter", inputs: ["kpiId", "filterStartDate", "filterEndDate", "browser_api_config", "isButtonDesiable", "filterOperatorData"], outputs: ["filterDataObject"] }, { kind: "component", type: i11.BreadCrumbsComponent, selector: "gamma-bread-crumbs", inputs: ["kpi_data_container"] }] });
|
|
294
|
+
AppAdvanceHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AppAdvanceHeaderComponent, selector: "app-advance-header", inputs: { pageTitle: "pageTitle", bread_crumbs_container: "bread_crumbs_container", isEditButton: "isEditButton", isAdvanceButton: "isAdvanceButton", selectedDates: "selectedDates", filterObjects: "filterObjects", filterItems: "filterItems", contextFilterItems: "contextFilterItems" }, outputs: { toggleEvent: "toggleEvent", selectedDateRangeOrServtype: "selectedDateRangeOrServtype", getFilterPageConfig: "getFilterPageConfig", getOperatorName: "getOperatorName", getContextFilterData: "getContextFilterData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col mb-2\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n {{ getPageTitle(pageTitle) }}\n </h2>\n </div>\n <div class=\"\">\n <!-- INCOMING -->\n <gamma-bread-crumbs [kpi_data_container]=\"bread_crumbs_container\"></gamma-bread-crumbs>\n </div>\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n <div class=\"mx-2\" *ngIf=\"isEditButton\">\n <div (click)=\"editKpi()\"\n class=\"bg-blue-700 cursor-pointer dark:bg-blue-600 dark:focus:ring-blue-800 dark:hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 font-medium hover:bg-blue-800 mr-2 px-2.5 py-2 rounded text-sm text-white ng-star-inserted\">\n Edit\n </div>\n </div>\n <ng-container *ngIf=\"contextFilterItemsForFilter && contextFilterItemsForFilter.length !== 0 \">\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n <dx-select-box [items]=\"contextFilterItemsForFilter\" (onValueChanged)=\"getContextMenuChange($event)\"\n displayExpr=\"label\" valueExpr=\"defaultFilterValue\"\n [(ngModel)]=\"defaultFilterValue\"></dx-select-box>\n </div>\n </ng-container>\n\n <div class=\"w-1 h-full border-l-2\" *ngIf=\"isEditButton\"></div>\n\n <div class=\"mx-2\">\n <!-- <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\" id=\"{{filterObjects.widgetId}}\"> {{selectedDetesforView}}</div> -->\n<!-- [id]=\"filterObjects.widgetId\" -->\n <div class=\"mx-2\">\n <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\" >\n {{selectedDetesforView}}\n </div>\n </div>\n\n </div>\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\" *ngIf=\"isAdvanceButton\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\" (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n </div>\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <!-- <div class=\"mx-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon (click)=\"callPageDocumentation()\" title=\"Add Filters\" [svgIcon]=\"\n 'heroicons_outline:question-mark-circle'\n \">\n </mat-icon>\n </span>\n </span>\n <span class=\"mat-button-focus-overlay\"></span>\n </button>\n </div> -->\n\n </div>\n </div>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.GammaAdvanceFilterComponent, selector: "app-gamma-advance-filter", inputs: ["kpiId", "filterStartDate", "filterEndDate", "browser_api_config", "isButtonDesiable", "filterOperatorData"], outputs: ["filterDataObject"] }, { kind: "component", type: i11.BreadCrumbsComponent, selector: "gamma-bread-crumbs", inputs: ["kpi_data_container"] }] });
|
|
284
295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppAdvanceHeaderComponent, decorators: [{
|
|
285
296
|
type: Component,
|
|
286
|
-
args: [{ selector: 'app-advance-header', template: "<div class=\"flex flex-col mb-2\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n {{ getPageTitle(pageTitle) }}\n </h2>\n </div>\n <div class=\"\">\n <!-- INCOMING -->\n <gamma-bread-crumbs [kpi_data_container]=\"bread_crumbs_container\"></gamma-bread-crumbs>\n </div>\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n <div class=\"mx-2\" *ngIf=\"isEditButton\">\n <div (click)=\"editKpi()\"\n class=\"bg-blue-700 cursor-pointer dark:bg-blue-600 dark:focus:ring-blue-800 dark:hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 font-medium hover:bg-blue-800 mr-2 px-2.5 py-2 rounded text-sm text-white ng-star-inserted\">\n Edit\n </div>\n </div>\n <ng-container *ngIf=\"contextFilterItemsForFilter && contextFilterItemsForFilter.length !== 0 \">\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\"
|
|
297
|
+
args: [{ selector: 'app-advance-header', template: "<div class=\"flex flex-col mb-2\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n {{ getPageTitle(pageTitle) }}\n </h2>\n </div>\n <div class=\"\">\n <!-- INCOMING -->\n <gamma-bread-crumbs [kpi_data_container]=\"bread_crumbs_container\"></gamma-bread-crumbs>\n </div>\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n <div class=\"mx-2\" *ngIf=\"isEditButton\">\n <div (click)=\"editKpi()\"\n class=\"bg-blue-700 cursor-pointer dark:bg-blue-600 dark:focus:ring-blue-800 dark:hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 font-medium hover:bg-blue-800 mr-2 px-2.5 py-2 rounded text-sm text-white ng-star-inserted\">\n Edit\n </div>\n </div>\n <ng-container *ngIf=\"contextFilterItemsForFilter && contextFilterItemsForFilter.length !== 0 \">\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n <dx-select-box [items]=\"contextFilterItemsForFilter\" (onValueChanged)=\"getContextMenuChange($event)\"\n displayExpr=\"label\" valueExpr=\"defaultFilterValue\"\n [(ngModel)]=\"defaultFilterValue\"></dx-select-box>\n </div>\n </ng-container>\n\n <div class=\"w-1 h-full border-l-2\" *ngIf=\"isEditButton\"></div>\n\n <div class=\"mx-2\">\n <!-- <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\" id=\"{{filterObjects.widgetId}}\"> {{selectedDetesforView}}</div> -->\n<!-- [id]=\"filterObjects.widgetId\" -->\n <div class=\"mx-2\">\n <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\" >\n {{selectedDetesforView}}\n </div>\n </div>\n\n </div>\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\" *ngIf=\"isAdvanceButton\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\" (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n </div>\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <!-- <div class=\"mx-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon (click)=\"callPageDocumentation()\" title=\"Add Filters\" [svgIcon]=\"\n 'heroicons_outline:question-mark-circle'\n \">\n </mat-icon>\n </span>\n </span>\n <span class=\"mat-button-focus-overlay\"></span>\n </button>\n </div> -->\n\n </div>\n </div>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>" }]
|
|
287
298
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CommonService }, { type: i3.AppLocalStorage }]; }, propDecorators: { pageTitle: [{
|
|
288
299
|
type: Input
|
|
289
300
|
}], bread_crumbs_container: [{
|
|
@@ -304,6 +315,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
304
315
|
type: Output
|
|
305
316
|
}], getContextFilterData: [{
|
|
306
317
|
type: Output
|
|
318
|
+
}], filterObjects: [{
|
|
319
|
+
type: Input
|
|
307
320
|
}], filterItems: [{
|
|
308
321
|
type: Input,
|
|
309
322
|
args: ['filterItems']
|
|
@@ -311,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
311
324
|
type: Input,
|
|
312
325
|
args: ['contextFilterItems']
|
|
313
326
|
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvYXBwLWFkdmFuY2UtaGVhZGVyL2FwcC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2FwcC1hZHZhbmNlLWhlYWRlci9hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxNQUFNLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLHlCQUF5QjtJQTZEbEMsWUFDWSxjQUE4QixFQUM5QixLQUFhLEVBQ2IsYUFBNEIsRUFDNUIsT0FBd0I7UUFIeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQXpEMUIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVN6RSxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUM5Qiw0QkFBdUIsR0FBRyxPQUFPLENBQUM7UUFNbEMsaUJBQVksR0FBRztZQUNYLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2pDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2xD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QUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7YUFDaEU7U0FDSjtRQUVELE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFHRCxZQUFZLENBQUMsU0FBaUI7UUFDMUIsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUVyRSxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3JELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztzSEF2VlEseUJBQXlCOzBHQUF6Qix5QkFBeUIsMmhCQ1R0QyxzcElBK0VXOzJGRHRFRSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0ksb0JBQW9CO29MQUlyQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQWlEVSwyQkFBMkI7c0JBQTNDLE1BQU07Z0JBQ1UsbUJBQW1CO3NCQUFuQyxNQUFNO2dCQUNVLGVBQWU7c0JBQS9CLE1BQU07Z0JBQ1Usb0JBQW9CO3NCQUFwQyxNQUFNO2dCQWFILFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhO2dCQXNFaEIsa0JBQWtCO3NCQURyQixLQUFLO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uJztcbmltcG9ydCB7IEFwcExvY2FsU3RvcmFnZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvdG9rZW5TdG9yYWdlLnNlcnZjZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1hZHZhbmNlLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBBZHZhbmNlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwYWdlVGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBicmVhZF9jcnVtYnNfY29udGFpbmVyOiBhbnk7XG4gICAgQElucHV0KCkgaXNFZGl0QnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzQWR2YW5jZUJ1dHRvbjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZXM6IGFueTtcblxuICAgIEBPdXRwdXQoKSB0b2dnbGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpc0FkdmFuY2VGaWx0ZXI6IGJvb2xlYW47XG4gICAgYnJvd3Nlcl9jb25maWc6IGFueTtcbiAgICBrcGlfaWQ6IGFueTtcblxuICAgIGZpbHRlclN0YXJ0RGF0ZTtcbiAgICBmaWx0ZXJFbmREYXRlO1xuICAgIGZpbHRlck9wdGlvbnM7XG5cbiAgICBhdXRvbG9hZF9idXR0b24gPSB0cnVlO1xuICAgIHByaXZhdGUgdGltZV9vdXRfaWQ7XG4gICAgdG9vbFRpcFRleHQgPSAnQnkgRGF0ZSBSYW5nZSc7XG4gICAgZGVmYXVsdFNlbGVjdGVkT3BlcmF0b3IgPSAnQUZHQVQnO1xuXG4gICAgaXNvcGVyYXRvcktleTogYm9vbGVhbjtcblxuICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZTogYW55O1xuXG4gICAgb3BlcmFUb3JMaXN0ID0gW1xuICAgICAgICB7IG5hbWU6IFwiQUZURUxcIiwgdmFsdWU6IFwiQUZHQVRcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiUk9TSEFOXCIsIHZhbHVlOiBcIkFGR1REXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIk1UTkFGXCIsIHZhbHVlOiBcIkFGR0FSXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIkVUSVNBTEFUXCIsIHZhbHVlOiBcIkFGR0VBXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIkFXQ0NcIiwgdmFsdWU6IFwiQUZHQVdcIiB9LFxuICAgIF1cblxuICAgIHB1YmxpYyBkYXRlcmFuZ2U6IGFueSA9IHt9O1xuICAgIHB1YmxpYyBkYXRlcmFuZ2Vfb3B0aW9uczogYW55ID0ge1xuICAgICAgICBsb2NhbGU6IHsgZm9ybWF0OiAnWVlZWS1NTS1ERCcgfSxcbiAgICAgICAgYWx3YXlzU2hvd0NhbGVuZGFyczogdHJ1ZSxcbiAgICAgICAgc2hvd0N1c3RvbVJhbmdlTGFiZWw6IHRydWUsXG4gICAgICAgIHJhbmdlczoge1xuICAgICAgICAgICAgVG9kYXk6IFttb21lbnQoKSwgbW9tZW50KCldLFxuICAgICAgICAgICAgLy8gWWVzdGVyZGF5OiBbbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheXMnKSwgbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheXMnKV0sXG4gICAgICAgICAgICAnTGFzdCAxIE1vbnRoJzogW21vbWVudCgpLnN1YnRyYWN0KDMwLCAnZGF5cycpLCBtb21lbnQoKV0sXG4gICAgICAgICAgICAnTGFzdCAzIE1vbnRoJzogW21vbWVudCgpLnN1YnRyYWN0KDkxLCAnZGF5cycpLCBtb21lbnQoKV0sXG4gICAgICAgICAgICAnTGFzdCA2IE1vbnRoJzogW21vbWVudCgpLnN1YnRyYWN0KDE4MiwgJ2RheXMnKSwgbW9tZW50KCldLFxuICAgICAgICAgICAgJ0xhc3QgMTIgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoMzY1LCAnZGF5cycpLCBtb21lbnQoKV0sXG4gICAgICAgICAgICAnTGFzdCAxMyBNb250aHMnOiBbXG4gICAgICAgICAgICAgICAgbW9tZW50KCkuc3VidHJhY3QoMTIsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJyksXG4gICAgICAgICAgICAgICAgbW9tZW50KCksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ1RoaXMgTW9udGgnOiBbbW9tZW50KCkuc3RhcnRPZignbW9udGgnKSwgbW9tZW50KCkuZW5kT2YoJ21vbnRoJyldLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBzcnZUeXBlRGF0YVNvdXJjZTogYW55ID0gW107XG4gICAgc3J2VHlwZURpc3BsYXlWYWx1ZTogYW55ID0gW107XG4gICAgc2VsZWN0ZWREZXRlc2ZvclZpZXc6IGFueTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkRGF0ZVJhbmdlT3JTZXJ2dHlwZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBnZXRGaWx0ZXJQYWdlQ29uZmlnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGdldE9wZXJhdG9yTmFtZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBnZXRDb250ZXh0RmlsdGVyRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdG9yYWdlOiBBcHBMb2NhbFN0b3JhZ2VcbiAgICApIHtcblxuICAgIH1cblxuICAgIGZpbHRlckl0ZW1zRm9yRmlsdGVyOiBhbnk7XG4gICAgb3BlcmF0b3JMb2dvOiBzdHJpbmc7XG4gICAgQElucHV0KCdmaWx0ZXJJdGVtcycpXG4gICAgc2V0IGZpbHRlckl0ZW1zKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBsZXQgZGlzcGxheVN0YXJ0RGF0ZSA9ICcnO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXlFbmREYXRlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zRm9yRmlsdGVyID0gdmFsdWU7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwiZHluYW1pY1wiICYmIGVsZW1lbnQubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIgJiYgZWxlbWVudC5tb21lbnRGb3JtYXQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAvLyBsZXQgZm9ybWF0dGVkRGF0ZSA9IG1vbWVudCgpW2VsZW1lbnQubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubW9tZW50RnVuY3Rpb24gPT0gXCJtb250aFBpY2tlclwiIHx8IGVsZW1lbnQubW9tZW50RnVuY3Rpb24gPT0gXCJ3ZWVrUGlja2VyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwic3RhcnREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGFydERhdGUgPSBtb21lbnQodGhpcy5zZWxlY3RlZERhdGVzW2VsZW1lbnQuYXBpTmFtZV0pLmZvcm1hdCgnTU1NLVlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUVuZERhdGUgPSBtb21lbnQodGhpcy5zZWxlY3RlZERhdGVzW2VsZW1lbnQuYXBpTmFtZV0pLmZvcm1hdCgnTU1NLVlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhcnREYXRlID0gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlc1tlbGVtZW50LmFwaU5hbWVdKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RW5kRGF0ZSA9IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZXNbZWxlbWVudC5hcGlOYW1lXSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwic3RhdGljXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZXNbZWxlbWVudC5hcGlOYW1lXSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFbmREYXRlID0gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlc1tlbGVtZW50LmFwaU5hbWVdKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHRoaXMuZ2V0RmlsdGVyUGFnZUNvbmZpZy5lbWl0KGZpbHRlcl9jb25maWcpXG5cbiAgICAgICAgICAgIGlmIChkaXNwbGF5U3RhcnREYXRlICYmIGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGAke2Rpc3BsYXlTdGFydERhdGV9IC0gJHtkaXNwbGF5RW5kRGF0ZX1gO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5U3RhcnREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGRpc3BsYXlTdGFydERhdGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGRpc3BsYXlFbmREYXRlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0ZXNmb3JWaWV3ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgfVxuXG4gICAgY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyOiBhbnk7XG4gICAgQElucHV0KCdjb250ZXh0RmlsdGVySXRlbXMnKVxuICAgIHNldCBjb250ZXh0RmlsdGVySXRlbXModmFsdWUpIHtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlciA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0RmlsdGVySXRlbXNGb3JGaWx0ZXIgPSBbXTtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZmlsdGVyVHlwZSA9PSBcImNvbnRleHRcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlci5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdEZpbHRlclZhbHVlKHBhcmFtcyk7XG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGdldENvbnRleHRNZW51Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5ldmVudCkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRPYmplY3QgPSB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlci5maW5kKGl0ZW0gPT4gaXRlbS5kZWZhdWx0RmlsdGVyVmFsdWUgPT09IGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udGV4dEZpbHRlckRhdGEuZW1pdChmb3VuZE9iamVjdCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnN0b3JhZ2UuZ2V0KCd1c2VyX25hbWUnKTtcbiAgICAgICAgaWYgKHVzZXJEYXRhID09ICdhZG1pbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0QnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbiAgICBwYWdlQXV0b2xvYWRTdG9wUnVuKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvbG9hZF9idXR0b24gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvbG9hZF9idXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lX291dF9pZCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVfb3V0X2lkID0gMDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dG9sb2FkX2J1dHRvbiA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvbG9hZF9idXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50aW1lX291dF9pZCA9IDE7XG4gICAgICAgICAgICAvLyB0aGlzLmRhdGVzVXBkYXRlZCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxQYWdlRG9jdW1lbnRhdGlvbigpIHtcblxuICAgIH1cblxuXG4gICAgZ2V0RGF0ZU9yU2VydmVUeXBlVmFsdWVDaGFuZ2Uobm9kZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VPclNlcnZ0eXBlLmVtaXQobm9kZSlcbiAgICB9XG5cblxuICAgIGVkaXRLcGkoKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgICAgICBsZXQgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgcGFnZUlkOiBwYWdlSWQsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiZWRpdFwiXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb25FeHRyYXMpO1xuICAgIH1cblxuXG4gICAgYWR2YW5jZUZpbHRlcktwaSgpIHtcbiAgICAgICAgdGhpcy5pc0FkdmFuY2VGaWx0ZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGdldFNlcmNoRmlsdGVyKGZpbHRlcikge1xuICAgICAgICB0aGlzLmlzQWR2YW5jZUZpbHRlciA9IGZhbHNlO1xuICAgICAgICBsZXQgZGlzcGxheVN0YXJ0RGF0ZSA9ICcnO1xuICAgICAgICBsZXQgZGlzcGxheUVuZERhdGUgPSAnJztcblxuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zRm9yRmlsdGVyLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09PSAnZGF0ZScgfHwgZWxlbWVudC5maWx0ZXJUeXBlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwiZHluYW1pY1wiICYmIGVsZW1lbnQubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIgJiYgZWxlbWVudC5tb21lbnRGb3JtYXQgIT09IFwiXCIpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5tb21lbnRGdW5jdGlvbiA9PSBcIm1vbnRoUGlja2VyXCIgfHwgZWxlbWVudC5tb21lbnRGdW5jdGlvbiA9PSBcIndlZWtQaWNrZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXJ0RGF0ZSA9IG1vbWVudChmaWx0ZXIuc3RhcnREYXRlKS5mb3JtYXQoJ01NTS1ZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUVuZERhdGUgPSBtb21lbnQoZmlsdGVyLmVuZERhdGUpLmZvcm1hdCgnTU1NLVlZWVknKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmVuZERhdGUgPSBtb21lbnQoZmlsdGVyLmVuZERhdGUpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RW5kRGF0ZSA9IG1vbWVudChmaWx0ZXIuZW5kRGF0ZSkuZm9ybWF0KCdNTU0tWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnN0YXJ0RGF0ZSA9IG1vbWVudChmaWx0ZXIuc3RhcnREYXRlKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhcnREYXRlID0gZmlsdGVyLnN0YXJ0RGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnREYXRlID0gbW9tZW50KGZpbHRlci5lbmREYXRlKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXIuZW5kRGF0ZSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFbmREYXRlID0gZmlsdGVyLmVuZERhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZGlzcGxheVN0YXJ0RGF0ZSAmJiBkaXNwbGF5RW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGAke2Rpc3BsYXlTdGFydERhdGV9IC0gJHtkaXNwbGF5RW5kRGF0ZX1gO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlTdGFydERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREZXRlc2ZvclZpZXcgPSBkaXNwbGF5U3RhcnREYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0ZXNmb3JWaWV3ID0gZGlzcGxheUVuZERhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0ZXNmb3JWaWV3ID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldEZpbHRlclBhZ2VDb25maWcuZW1pdChmaWx0ZXIpXG4gICAgfVxuXG5cblxuICAgIGdldE9wZXJhdG9yRGF0YVNvdXJjZShldmVudCkge1xuICAgICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZE9wZXJhdG9yID0gZXZlbnQudmFsdWU7XG4gICAgICAgIGxldCBvcGVyYXRvcl9sb2dvX21hcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRPcGVyYXRvckJ5bG9nbygpO1xuICAgICAgICB0aGlzLm9wZXJhdG9yTG9nbyA9IG9wZXJhdG9yX2xvZ29fbWFwW2V2ZW50LnZhbHVlXVxuICAgICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZE9wZXJhdG9yID0gZXZlbnQudmFsdWU7XG4gICAgICAgIGlmIChldmVudC5ldmVudCkge1xuICAgICAgICAgICAgbGV0IG5hdmlnYXRpb246IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogZXZlbnQudmFsdWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoW10sIG5hdmlnYXRpb24pO1xuICAgICAgICAgICAgY29uc3Qgb3BOYW1lID0gdGhpcy5zdG9yYWdlLmdldCgnb3BlcmF0b3Jfa2V5JylcbiAgICAgICAgICAgIGlmIChvcE5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UuZGVsZXRlKCdvcGVyYXRvcl9rZXknKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2F2ZSgnb3BlcmF0b3Jfa2V5JywgZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2F2ZSgnb3BlcmF0b3Jfa2V5JywgZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRPcGVyYXRvck5hbWUuZW1pdChldmVudC52YWx1ZSlcbiAgICAgICAgfVxuXG5cbiAgICB9XG5cblxuICAgIGdldERlZmF1bHRGaWx0ZXJWYWx1ZShwYXJhbXM6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb250ZXh0RmlsdGVySXRlbXNGb3JGaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChwYXJhbXNbaXRlbS5vcGVyYXRvck5hbWVdID09PSBpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRPcGVyYXRpb25GaWx0ZXIocGFyYW1zOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBvcGVyYXRpb25GaWx0ZXI6IGFueSA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlcikge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhcmFtZXRlciBtYXRjaGVzIHRoZSBvcGVyYXRvck5hbWUgYW5kIGl0cyB2YWx1ZVxuICAgICAgICAgICAgaWYgKHBhcmFtc1tpdGVtLm9wZXJhdG9yTmFtZV0gPT09IGl0ZW0uZGVmYXVsdEZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uRmlsdGVyW2l0ZW0ub3BlcmF0b3JOYW1lXSA9IGl0ZW0uZGVmYXVsdEZpbHRlclZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkZpbHRlcjtcbiAgICB9XG5cblxuICAgIGdldFBhZ2VUaXRsZShwYWdlVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCB7IHBhZ2VJZCwgLi4ucGFyYW1zIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIHJldHVybiBwYWdlVGl0bGUucmVwbGFjZSgvXFwkUFxceyguKj8pXFx9L2csIChtYXRjaCwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCA/IHBhcmFtc1trZXldIDogbWF0Y2g7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1iLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgZGFyazpiZy10cmFuc3BhcmVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtbC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZmxvYXQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS0yXCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp0ZW1wbGF0ZSdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoMlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtMnhsIG1kOnRleHQtMnhsIHB5LTMgZm9udC1leHRyYWJvbGQgaXRlbXMtY2VudGVyIG1sLTIgdHJhY2tpbmctdGlnaHQgbGVhZGluZy01IHRydW5jYXRlIGNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0UGFnZVRpdGxlKHBhZ2VUaXRsZSkgfX1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBJTkNPTUlORyAtLT5cbiAgICAgICAgICAgICAgICA8Z2FtbWEtYnJlYWQtY3J1bWJzIFtrcGlfZGF0YV9jb250YWluZXJdPVwiYnJlYWRfY3J1bWJzX2NvbnRhaW5lclwiPjwvZ2FtbWEtYnJlYWQtY3J1bWJzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGJvcmRlci1sLTIgcC0wIG0tMFwiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiICpuZ0lmPVwiaXNFZGl0QnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiZWRpdEtwaSgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ibHVlLTcwMCBjdXJzb3ItcG9pbnRlciBkYXJrOmJnLWJsdWUtNjAwIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSBob3ZlcjpiZy1ibHVlLTgwMCBtci0yIHB4LTIuNSBweS0yIHJvdW5kZWQgdGV4dC1zbSB0ZXh0LXdoaXRlIG5nLXN0YXItaW5zZXJ0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyICYmIGNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlci5sZW5ndGggIT09IDAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCIgPlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyXCIgKG9uVmFsdWVDaGFuZ2VkKT1cImdldENvbnRleHRNZW51Q2hhbmdlKCRldmVudClcIiBkaXNwbGF5RXhwcj1cImxhYmVsXCIgdmFsdWVFeHByPVwiZGVmYXVsdEZpbHRlclZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZWZhdWx0RmlsdGVyVmFsdWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiICpuZ0lmPVwiaXNFZGl0QnV0dG9uXCI+PC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkdmFuY2VGaWx0ZXJLcGkoKVwiPiB7e3NlbGVjdGVkRGV0ZXNmb3JWaWV3fX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIiAqbmdJZj1cImlzQWR2YW5jZUJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtZm9jdXMtaW5kaWNhdG9yIG1hdC1tZW51LXRyaWdnZXIgbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJtZW51XCIgKGNsaWNrKT1cImFkdmFuY2VGaWx0ZXJLcGkoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1idXR0b24td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiB0aXRsZT1cIkZpbHRlcnNcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX291dGxpbmU6YWRqdXN0bWVudHMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtZm9jdXMtaW5kaWNhdG9yIG1hdC1tZW51LXRyaWdnZXIgbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjYWxsUGFnZURvY3VtZW50YXRpb24oKVwiIHRpdGxlPVwiQWRkIEZpbHRlcnNcIiBbc3ZnSWNvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZXJvaWNvbnNfb3V0bGluZTpxdWVzdGlvbi1tYXJrLWNpcmNsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJpc0FkdmFuY2VGaWx0ZXJcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiIFtkcmFnRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCI2MDBcIlxuICAgIFtoZWlnaHRdPVwiJ2F1dG8nXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCIgY2xhc3M9XCJwb3B1cFwiIHRpdGxlPVwiRmlsdGVyXCI+XG4gICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxuICAgICAgICA8YXBwLWdhbW1hLWFkdmFuY2UtZmlsdGVyIFtrcGlJZF09XCInMjMxMjEyJ1wiIFtmaWx0ZXJPcGVyYXRvckRhdGFdPVwiZmlsdGVySXRlbXNGb3JGaWx0ZXJcIlxuICAgICAgICAgICAgW2lzQnV0dG9uRGVzaWFibGVdPVwiaXNBZHZhbmNlRmlsdGVyXCIgW2ZpbHRlclN0YXJ0RGF0ZV09XCJmaWx0ZXJTdGFydERhdGVcIiBbZmlsdGVyRW5kRGF0ZV09XCJmaWx0ZXJFbmREYXRlXCJcbiAgICAgICAgICAgIChmaWx0ZXJEYXRhT2JqZWN0KT1cImdldFNlcmNoRmlsdGVyKCRldmVudClcIj48L2FwcC1nYW1tYS1hZHZhbmNlLWZpbHRlcj5cbiAgICA8L2Rpdj5cbjwvZHgtcG9wdXA+Il19
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvYXBwLWFkdmFuY2UtaGVhZGVyL2FwcC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2FwcC1hZHZhbmNlLWhlYWRlci9hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sTUFBTSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBT25FLE1BQU0sT0FBTyx5QkFBeUI7SUE0RGxDLFlBQ1ksY0FBOEIsRUFDOUIsS0FBYSxFQUNiLGFBQTRCLEVBQzVCLE9BQXdCO1FBSHhCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUF6RDFCLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFTekUsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsNEJBQXVCLEdBQUcsT0FBTyxDQUFDO1FBTWxDLGlCQUFZLEdBQUc7WUFDWCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNqQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNs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bEJDVHRDLCs5SUF1Rlc7MkZEOUVFLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSxvQkFBb0I7b0xBSXJCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBaURVLDJCQUEyQjtzQkFBM0MsTUFBTTtnQkFDVSxtQkFBbUI7c0JBQW5DLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFDVSxvQkFBb0I7c0JBQXBDLE1BQU07Z0JBV0UsYUFBYTtzQkFBckIsS0FBSztnQkFNRixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFxRWhCLGtCQUFrQjtzQkFEckIsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBMb2NhbFN0b3JhZ2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3Rva2VuU3RvcmFnZS5zZXJ2Y2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwQWR2YW5jZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcGFnZVRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYnJlYWRfY3J1bWJzX2NvbnRhaW5lcjogYW55O1xuICAgIEBJbnB1dCgpIGlzRWRpdEJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0FkdmFuY2VCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWREYXRlczogYW55O1xuXG4gICAgQE91dHB1dCgpIHRvZ2dsZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIGlzQWR2YW5jZUZpbHRlcjogYm9vbGVhbjtcbiAgICBicm93c2VyX2NvbmZpZzogYW55O1xuICAgIGtwaV9pZDogYW55O1xuXG4gICAgZmlsdGVyU3RhcnREYXRlO1xuICAgIGZpbHRlckVuZERhdGU7XG4gICAgZmlsdGVyT3B0aW9ucztcblxuICAgIGF1dG9sb2FkX2J1dHRvbiA9IHRydWU7XG4gICAgcHJpdmF0ZSB0aW1lX291dF9pZDtcbiAgICB0b29sVGlwVGV4dCA9ICdCeSBEYXRlIFJhbmdlJztcbiAgICBkZWZhdWx0U2VsZWN0ZWRPcGVyYXRvciA9ICdBRkdBVCc7XG5cbiAgICBpc29wZXJhdG9yS2V5OiBib29sZWFuO1xuXG4gICAgZGVmYXVsdEZpbHRlclZhbHVlOiBhbnk7XG5cbiAgICBvcGVyYVRvckxpc3QgPSBbXG4gICAgICAgIHsgbmFtZTogXCJBRlRFTFwiLCB2YWx1ZTogXCJBRkdBVFwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJST1NIQU5cIiwgdmFsdWU6IFwiQUZHVERcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiTVROQUZcIiwgdmFsdWU6IFwiQUZHQVJcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiRVRJU0FMQVRcIiwgdmFsdWU6IFwiQUZHRUFcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiQVdDQ1wiLCB2YWx1ZTogXCJBRkdBV1wiIH0sXG4gICAgXVxuXG4gICAgcHVibGljIGRhdGVyYW5nZTogYW55ID0ge307XG4gICAgcHVibGljIGRhdGVyYW5nZV9vcHRpb25zOiBhbnkgPSB7XG4gICAgICAgIGxvY2FsZTogeyBmb3JtYXQ6ICdZWVlZLU1NLUREJyB9LFxuICAgICAgICBhbHdheXNTaG93Q2FsZW5kYXJzOiB0cnVlLFxuICAgICAgICBzaG93Q3VzdG9tUmFuZ2VMYWJlbDogdHJ1ZSxcbiAgICAgICAgcmFuZ2VzOiB7XG4gICAgICAgICAgICBUb2RheTogW21vbWVudCgpLCBtb21lbnQoKV0sXG4gICAgICAgICAgICAvLyBZZXN0ZXJkYXk6IFttb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcbiAgICAgICAgICAgICdMYXN0IDEgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoMzAsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICAgICAgICdMYXN0IDMgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoOTEsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICAgICAgICdMYXN0IDYgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoMTgyLCAnZGF5cycpLCBtb21lbnQoKV0sXG4gICAgICAgICAgICAnTGFzdCAxMiBNb250aCc6IFttb21lbnQoKS5zdWJ0cmFjdCgzNjUsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICAgICAgICdMYXN0IDEzIE1vbnRocyc6IFtcbiAgICAgICAgICAgICAgICBtb21lbnQoKS5zdWJ0cmFjdCgxMiwgJ21vbnRoJykuc3RhcnRPZignbW9udGgnKSxcbiAgICAgICAgICAgICAgICBtb21lbnQoKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnVGhpcyBNb250aCc6IFttb21lbnQoKS5zdGFydE9mKCdtb250aCcpLCBtb21lbnQoKS5lbmRPZignbW9udGgnKV0sXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHNydlR5cGVEYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgICBzcnZUeXBlRGlzcGxheVZhbHVlOiBhbnkgPSBbXTtcbiAgICBzZWxlY3RlZERldGVzZm9yVmlldzogc3RyaW5nID0gJyc7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVSYW5nZU9yU2VydnR5cGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZ2V0RmlsdGVyUGFnZUNvbmZpZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBnZXRPcGVyYXRvck5hbWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZ2V0Q29udGV4dEZpbHRlckRhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3RvcmFnZTogQXBwTG9jYWxTdG9yYWdlXG4gICAgKSB7XG5cbiAgICB9XG5cbiAgICBzZWxlY3RlZERhdGVzTWFwOiB7IFt3aWRnZXRJZDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBASW5wdXQoKSBmaWx0ZXJPYmplY3RzOiBhbnk7XG5cblxuICAgIGZpbHRlckl0ZW1zRm9yRmlsdGVyOiBhbnk7XG4gICAgb3BlcmF0b3JMb2dvOiBzdHJpbmc7XG4gICAgQElucHV0KCdmaWx0ZXJJdGVtcycpXG4gICAgc2V0IGZpbHRlckl0ZW1zKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBsZXQgZGlzcGxheVN0YXJ0RGF0ZSA9ICcnO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXlFbmREYXRlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zRm9yRmlsdGVyID0gdmFsdWU7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwiZHluYW1pY1wiICYmIGVsZW1lbnQubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIgJiYgZWxlbWVudC5tb21lbnRGb3JtYXQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAvLyBsZXQgZm9ybWF0dGVkRGF0ZSA9IG1vbWVudCgpW2VsZW1lbnQubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubW9tZW50RnVuY3Rpb24gPT0gXCJtb250aFBpY2tlclwiIHx8IGVsZW1lbnQubW9tZW50RnVuY3Rpb24gPT0gXCJ3ZWVrUGlja2VyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwic3RhcnREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGFydERhdGUgPSBtb21lbnQodGhpcy5zZWxlY3RlZERhdGVzW2VsZW1lbnQuYXBpTmFtZV0pLmZvcm1hdCgnTU1NLVlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUVuZERhdGUgPSBtb21lbnQodGhpcy5zZWxlY3RlZERhdGVzW2VsZW1lbnQuYXBpTmFtZV0pLmZvcm1hdCgnTU1NLVlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhcnREYXRlID0gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlc1tlbGVtZW50LmFwaU5hbWVdKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RW5kRGF0ZSA9IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZXNbZWxlbWVudC5hcGlOYW1lXSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwic3RhdGljXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZXNbZWxlbWVudC5hcGlOYW1lXSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFbmREYXRlID0gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlc1tlbGVtZW50LmFwaU5hbWVdKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChkaXNwbGF5U3RhcnREYXRlICYmIGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGAke2Rpc3BsYXlTdGFydERhdGV9IC0gJHtkaXNwbGF5RW5kRGF0ZX1gO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5U3RhcnREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGRpc3BsYXlTdGFydERhdGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGRpc3BsYXlFbmREYXRlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGV0ZXNmb3JWaWV3ID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICBjb250ZXh0RmlsdGVySXRlbXNGb3JGaWx0ZXI6IGFueTtcbiAgICBASW5wdXQoJ2NvbnRleHRGaWx0ZXJJdGVtcycpXG4gICAgc2V0IGNvbnRleHRGaWx0ZXJJdGVtcyh2YWx1ZSkge1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlciA9IFtdO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09IFwiY29udGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclZhbHVlID0gdGhpcy5nZXREZWZhdWx0RmlsdGVyVmFsdWUocGFyYW1zKTtcbiAgICAgICAgICAgIH0pO1xuXG5cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snZmlsdGVyT2JqZWN0cyddICYmIHRoaXMuZmlsdGVyT2JqZWN0cz8ud2lkZ2V0SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldElkID0gdGhpcy5maWx0ZXJPYmplY3RzLndpZGdldElkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzTWFwW3dpZGdldElkXSA9IHRoaXMuc2VsZWN0ZWREZXRlc2ZvclZpZXc7IC8vIGRlZmF1bHRcbiAgICAgICAgfVxuICAgIH1cblxuXG5cblxuICAgIGdldENvbnRleHRNZW51Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5ldmVudCkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRPYmplY3QgPSB0aGlzLmNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlci5maW5kKGl0ZW0gPT4gaXRlbS5kZWZhdWx0RmlsdGVyVmFsdWUgPT09IGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udGV4dEZpbHRlckRhdGEuZW1pdChmb3VuZE9iamVjdCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnN0b3JhZ2UuZ2V0KCd1c2VyX25hbWUnKTtcbiAgICAgICAgaWYgKHVzZXJEYXRhID09ICdhZG1pbicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0QnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbiAgICBwYWdlQXV0b2xvYWRTdG9wUnVuKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvbG9hZF9idXR0b24gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvbG9hZF9idXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lX291dF9pZCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVfb3V0X2lkID0gMDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmF1dG9sb2FkX2J1dHRvbiA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvbG9hZF9idXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50aW1lX291dF9pZCA9IDE7XG4gICAgICAgICAgICAvLyB0aGlzLmRhdGVzVXBkYXRlZCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxQYWdlRG9jdW1lbnRhdGlvbigpIHtcblxuICAgIH1cblxuXG4gICAgZ2V0RGF0ZU9yU2VydmVUeXBlVmFsdWVDaGFuZ2Uobm9kZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VPclNlcnZ0eXBlLmVtaXQobm9kZSlcbiAgICB9XG5cblxuICAgIGVkaXRLcGkoKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgICAgICBsZXQgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgcGFnZUlkOiBwYWdlSWQsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiZWRpdFwiXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb25FeHRyYXMpO1xuICAgIH1cblxuXG4gICAgYWR2YW5jZUZpbHRlcktwaSgpIHtcbiAgICAgICAgLy8gdGhpcy51cGRhdGVTZWxlY3RlZERhdGVzKHdpZGdldElkLCBkaXNwbGF5U3RhcnREYXRlLCBkaXNwbGF5RW5kRGF0ZSk7XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlRmlsdGVyID0gdHJ1ZTtcbiAgICB9XG5cblxuXG5cblxuICAgIGdldFNlcmNoRmlsdGVyKGZpbHRlcikge1xuICAgICAgICB0aGlzLmlzQWR2YW5jZUZpbHRlciA9IGZhbHNlO1xuICAgICAgICBsZXQgZGlzcGxheVN0YXJ0RGF0ZSA9ICcnO1xuICAgICAgICBsZXQgZGlzcGxheUVuZERhdGUgPSAnJztcblxuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zRm9yRmlsdGVyLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09PSAnZGF0ZScgfHwgZWxlbWVudC5maWx0ZXJUeXBlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT09IFwiZHluYW1pY1wiICYmIGVsZW1lbnQubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIgJiYgZWxlbWVudC5tb21lbnRGb3JtYXQgIT09IFwiXCIpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5tb21lbnRGdW5jdGlvbiA9PSBcIm1vbnRoUGlja2VyXCIgfHwgZWxlbWVudC5tb21lbnRGdW5jdGlvbiA9PSBcIndlZWtQaWNrZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXJ0RGF0ZSA9IG1vbWVudChmaWx0ZXIuc3RhcnREYXRlKS5mb3JtYXQoJ01NTS1ZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUVuZERhdGUgPSBtb21lbnQoZmlsdGVyLmVuZERhdGUpLmZvcm1hdCgnTU1NLVlZWVknKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmVuZERhdGUgPSBtb21lbnQoZmlsdGVyLmVuZERhdGUpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RW5kRGF0ZSA9IG1vbWVudChmaWx0ZXIuZW5kRGF0ZSkuZm9ybWF0KCdNTU0tWVlZWScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnN0YXJ0RGF0ZSA9IG1vbWVudChmaWx0ZXIuc3RhcnREYXRlKS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhcnREYXRlID0gZmlsdGVyLnN0YXJ0RGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnREYXRlID0gbW9tZW50KGZpbHRlci5lbmREYXRlKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXIuZW5kRGF0ZSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFbmREYXRlID0gZmlsdGVyLmVuZERhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgc2VsZWN0ZWRUZXh0ID0gJyc7XG4gICAgICAgIGlmIChkaXNwbGF5U3RhcnREYXRlICYmIGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRleHQgPSBgJHtkaXNwbGF5U3RhcnREYXRlfSAtICR7ZGlzcGxheUVuZERhdGV9YDtcbiAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5U3RhcnREYXRlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRleHQgPSBkaXNwbGF5U3RhcnREYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRleHQgPSBkaXNwbGF5RW5kRGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIChkaXNwbGF5U3RhcnREYXRlICYmIGRpc3BsYXlFbmREYXRlKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkRGV0ZXNmb3JWaWV3ID0gYCR7ZGlzcGxheVN0YXJ0RGF0ZX0gLSAke2Rpc3BsYXlFbmREYXRlfWA7XG4gICAgICAgIC8vIH0gZWxzZSBpZiAoZGlzcGxheVN0YXJ0RGF0ZSkge1xuICAgICAgICAvLyAgICAgdGhpcy5zZWxlY3RlZERldGVzZm9yVmlldyA9IGRpc3BsYXlTdGFydERhdGU7XG4gICAgICAgIC8vIH0gZWxzZSBpZiAoZGlzcGxheUVuZERhdGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWREZXRlc2ZvclZpZXcgPSBkaXNwbGF5RW5kRGF0ZTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWREZXRlc2ZvclZpZXcgPSAnJztcbiAgICAgICAgLy8gfVxuICAgICAgICBcblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJPYmplY3RzLndpZGdldElkKTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gc2VsZWN0ZWRUZXh0O1xuICAgICAgICB9XG5cblxuICAgICAgICBmaWx0ZXJbJ2ZpbHRlck9iamVjdHMnXSA9ICh0aGlzLmZpbHRlck9iamVjdHMpID8gdGhpcy5maWx0ZXJPYmplY3RzIDogbnVsbDtcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJQYWdlQ29uZmlnLmVtaXQoZmlsdGVyKVxuICAgIH1cblxuXG5cblxuXG5cbiAgICBnZXRPcGVyYXRvckRhdGFTb3VyY2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRPcGVyYXRvciA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBsZXQgb3BlcmF0b3JfbG9nb19tYXAgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0T3BlcmF0b3JCeWxvZ28oKTtcbiAgICAgICAgdGhpcy5vcGVyYXRvckxvZ28gPSBvcGVyYXRvcl9sb2dvX21hcFtldmVudC52YWx1ZV1cbiAgICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRPcGVyYXRvciA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBpZiAoZXZlbnQuZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IGV2ZW50LnZhbHVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFtdLCBuYXZpZ2F0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IG9wTmFtZSA9IHRoaXMuc3RvcmFnZS5nZXQoJ29wZXJhdG9yX2tleScpXG4gICAgICAgICAgICBpZiAob3BOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmRlbGV0ZSgnb3BlcmF0b3Jfa2V5Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUoJ29wZXJhdG9yX2tleScsIGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUoJ29wZXJhdG9yX2tleScsIGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0T3BlcmF0b3JOYW1lLmVtaXQoZXZlbnQudmFsdWUpXG4gICAgICAgIH1cblxuXG4gICAgfVxuXG5cbiAgICBnZXREZWZhdWx0RmlsdGVyVmFsdWUocGFyYW1zOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyKSB7XG4gICAgICAgICAgICBpZiAocGFyYW1zW2l0ZW0ub3BlcmF0b3JOYW1lXSA9PT0gaXRlbS5kZWZhdWx0RmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5kZWZhdWx0RmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0aW9uRmlsdGVyKHBhcmFtczogYW55KTogYW55IHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uRmlsdGVyOiBhbnkgPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb250ZXh0RmlsdGVySXRlbXNGb3JGaWx0ZXIpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXJhbWV0ZXIgbWF0Y2hlcyB0aGUgb3BlcmF0b3JOYW1lIGFuZCBpdHMgdmFsdWVcbiAgICAgICAgICAgIGlmIChwYXJhbXNbaXRlbS5vcGVyYXRvck5hbWVdID09PSBpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltpdGVtLm9wZXJhdG9yTmFtZV0gPSBpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcGVyYXRpb25GaWx0ZXI7XG4gICAgfVxuXG5cbiAgICBnZXRQYWdlVGl0bGUocGFnZVRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgeyBwYWdlSWQsIC4uLnBhcmFtcyB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgICAgICByZXR1cm4gcGFnZVRpdGxlLnJlcGxhY2UoL1xcJFBcXHsoLio/KVxcfS9nLCAobWF0Y2gsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQgPyBwYXJhbXNba2V5XSA6IG1hdGNoO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtYi0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGRhcms6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWwtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGZsb2F0LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtMlwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6dGVtcGxhdGUnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LTJ4bCBtZDp0ZXh0LTJ4bCBweS0zIGZvbnQtZXh0cmFib2xkIGl0ZW1zLWNlbnRlciBtbC0yIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctNSB0cnVuY2F0ZSBjYXBpdGFsaXplXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFBhZ2VUaXRsZShwYWdlVGl0bGUpIH19XG4gICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSU5DT01JTkcgLS0+XG4gICAgICAgICAgICAgICAgPGdhbW1hLWJyZWFkLWNydW1icyBba3BpX2RhdGFfY29udGFpbmVyXT1cImJyZWFkX2NydW1ic19jb250YWluZXJcIj48L2dhbW1hLWJyZWFkLWNydW1icz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBib3JkZXItbC0yIHAtMCBtLTBcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIiAqbmdJZj1cImlzRWRpdEJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImVkaXRLcGkoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctYmx1ZS03MDAgY3Vyc29yLXBvaW50ZXIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gaG92ZXI6YmctYmx1ZS04MDAgbXItMiBweC0yLjUgcHktMiByb3VuZGVkIHRleHQtc20gdGV4dC13aGl0ZSBuZy1zdGFyLWluc2VydGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRGaWx0ZXJJdGVtc0ZvckZpbHRlciAmJiBjb250ZXh0RmlsdGVySXRlbXNGb3JGaWx0ZXIubGVuZ3RoICE9PSAwIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEgaC1mdWxsIGJvcmRlci1sLTJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29udGV4dEZpbHRlckl0ZW1zRm9yRmlsdGVyXCIgKG9uVmFsdWVDaGFuZ2VkKT1cImdldENvbnRleHRNZW51Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJsYWJlbFwiIHZhbHVlRXhwcj1cImRlZmF1bHRGaWx0ZXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRlZmF1bHRGaWx0ZXJWYWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xIGgtZnVsbCBib3JkZXItbC0yXCIgKm5nSWY9XCJpc0VkaXRCdXR0b25cIj48L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZHZhbmNlRmlsdGVyS3BpKClcIiBpZD1cInt7ZmlsdGVyT2JqZWN0cy53aWRnZXRJZH19XCI+IHt7c2VsZWN0ZWREZXRlc2ZvclZpZXd9fTwvZGl2PiAtLT5cbjwhLS0gW2lkXT1cImZpbHRlck9iamVjdHMud2lkZ2V0SWRcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWR2YW5jZUZpbHRlcktwaSgpXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRGV0ZXNmb3JWaWV3fX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIiAqbmdJZj1cImlzQWR2YW5jZUJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtZm9jdXMtaW5kaWNhdG9yIG1hdC1tZW51LXRyaWdnZXIgbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJtZW51XCIgKGNsaWNrKT1cImFkdmFuY2VGaWx0ZXJLcGkoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1idXR0b24td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiB0aXRsZT1cIkZpbHRlcnNcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX291dGxpbmU6YWRqdXN0bWVudHMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMSBoLWZ1bGwgYm9yZGVyLWwtMlwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtZm9jdXMtaW5kaWNhdG9yIG1hdC1tZW51LXRyaWdnZXIgbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjYWxsUGFnZURvY3VtZW50YXRpb24oKVwiIHRpdGxlPVwiQWRkIEZpbHRlcnNcIiBbc3ZnSWNvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZXJvaWNvbnNfb3V0bGluZTpxdWVzdGlvbi1tYXJrLWNpcmNsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJpc0FkdmFuY2VGaWx0ZXJcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiIFtkcmFnRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCI2MDBcIlxuICAgIFtoZWlnaHRdPVwiJ2F1dG8nXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCIgY2xhc3M9XCJwb3B1cFwiIHRpdGxlPVwiRmlsdGVyXCI+XG4gICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxuICAgICAgICA8YXBwLWdhbW1hLWFkdmFuY2UtZmlsdGVyIFtrcGlJZF09XCInMjMxMjEyJ1wiIFtmaWx0ZXJPcGVyYXRvckRhdGFdPVwiZmlsdGVySXRlbXNGb3JGaWx0ZXJcIlxuICAgICAgICAgICAgW2lzQnV0dG9uRGVzaWFibGVdPVwiaXNBZHZhbmNlRmlsdGVyXCIgW2ZpbHRlclN0YXJ0RGF0ZV09XCJmaWx0ZXJTdGFydERhdGVcIiBbZmlsdGVyRW5kRGF0ZV09XCJmaWx0ZXJFbmREYXRlXCJcbiAgICAgICAgICAgIChmaWx0ZXJEYXRhT2JqZWN0KT1cImdldFNlcmNoRmlsdGVyKCRldmVudClcIj48L2FwcC1nYW1tYS1hZHZhbmNlLWZpbHRlcj5cbiAgICA8L2Rpdj5cbjwvZHgtcG9wdXA+Il19
|