mmhglobal-dynamicform 1.1.44 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/bundles/mmhglobal-dynamicform.umd.js +782 -1524
- package/bundles/mmhglobal-dynamicform.umd.js.map +1 -1
- package/bundles/mmhglobal-dynamicform.umd.min.js +2 -2
- package/bundles/mmhglobal-dynamicform.umd.min.js.map +1 -1
- package/esm2015/lib/mmhglobal-dynamicform.module.js +4 -8
- package/esm2015/lib/services/zcomponent.debug.service.js +1 -8
- package/esm2015/lib/services/zcomponent.service.js +1 -3
- package/esm2015/lib/zgrid/zgrid.component.js +130 -18
- package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +16 -0
- package/esm2015/lib/ztree/ztree.component.js +8 -3
- package/esm2015/mmhglobal-dynamicform.js +2 -3
- package/esm2015/public-api.js +2 -2
- package/fesm2015/mmhglobal-dynamicform.js +438 -1135
- package/fesm2015/mmhglobal-dynamicform.js.map +1 -1
- package/lib/zgrid/zgrid.component.d.ts +28 -0
- package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +5 -0
- package/lib/ztree/ztree.component.d.ts +1 -0
- package/mmhglobal-dynamicform.d.ts +1 -2
- package/mmhglobal-dynamicform.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2015/lib/zgridcalendar/zgridcalendar.binding.directive.js +0 -295
- package/esm2015/lib/zgridcalendar/zgridcalendar.component.js +0 -542
- package/lib/zgridcalendar/zgridcalendar.binding.directive.d.ts +0 -47
- package/lib/zgridcalendar/zgridcalendar.component.d.ts +0 -111
|
@@ -38,7 +38,7 @@ import { MmhglobalZmodalModule, ModalService } from 'mmhglobal-zmodal';
|
|
|
38
38
|
import { ScrollbarThemeDirective } from './directives/scrollbar.theme.directive';
|
|
39
39
|
import { FieldElementDirective } from './directives/fieldelement.directive';
|
|
40
40
|
import { ZGridBindingDirective } from './zgrid/zgrid.binding.directive';
|
|
41
|
-
import {
|
|
41
|
+
import { ZGridPopupAnchorDirective } from './zgrid/zgrid.popup.anchor-target.directive';
|
|
42
42
|
import { OpenOnFocusDirective } from './zselectmultiple/zselectmultiple.directive';
|
|
43
43
|
/********** Addon **********/
|
|
44
44
|
import { DateParserFilter } from './zdatetime/dateParser.pipe';
|
|
@@ -71,7 +71,6 @@ import { ZformComponent } from "./zform/zform.component";
|
|
|
71
71
|
import { ZformcontrolComponent } from "./zformcontrol/zformcontrol.component";
|
|
72
72
|
import { ZgaugeComponent } from './zgauge/zgauge.component';
|
|
73
73
|
import { ZgridComponent } from "./zgrid/zgrid.component";
|
|
74
|
-
import { ZgridcalendarComponent } from "./zgridcalendar/zgridcalendar.component";
|
|
75
74
|
import { ZimgComponent } from './zimg/zimg.component';
|
|
76
75
|
import { ZkcardComponent } from './zkcard/zkcard.component';
|
|
77
76
|
import { ZlabelComponent } from './zlabel/zlabel.component';
|
|
@@ -103,7 +102,7 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
103
102
|
ScrollbarThemeDirective,
|
|
104
103
|
FieldElementDirective,
|
|
105
104
|
ZGridBindingDirective,
|
|
106
|
-
|
|
105
|
+
ZGridPopupAnchorDirective,
|
|
107
106
|
OpenOnFocusDirective,
|
|
108
107
|
DateParserFilter,
|
|
109
108
|
EditorFilter,
|
|
@@ -134,7 +133,6 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
134
133
|
ZformcontrolComponent,
|
|
135
134
|
ZgaugeComponent,
|
|
136
135
|
ZgridComponent,
|
|
137
|
-
ZgridcalendarComponent,
|
|
138
136
|
ZimgComponent,
|
|
139
137
|
ZkcardComponent,
|
|
140
138
|
ZlabelComponent,
|
|
@@ -203,7 +201,7 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
203
201
|
ScrollbarThemeDirective,
|
|
204
202
|
FieldElementDirective,
|
|
205
203
|
ZGridBindingDirective,
|
|
206
|
-
|
|
204
|
+
ZGridPopupAnchorDirective,
|
|
207
205
|
OpenOnFocusDirective,
|
|
208
206
|
DateParserFilter,
|
|
209
207
|
EditorFilter,
|
|
@@ -234,7 +232,6 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
234
232
|
ZformcontrolComponent,
|
|
235
233
|
ZgaugeComponent,
|
|
236
234
|
ZgridComponent,
|
|
237
|
-
ZgridcalendarComponent,
|
|
238
235
|
ZimgComponent,
|
|
239
236
|
ZkcardComponent,
|
|
240
237
|
ZlabelComponent,
|
|
@@ -284,7 +281,6 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
284
281
|
ZformcontrolComponent,
|
|
285
282
|
ZgaugeComponent,
|
|
286
283
|
ZgridComponent,
|
|
287
|
-
ZgridcalendarComponent,
|
|
288
284
|
ZimgComponent,
|
|
289
285
|
ZkcardComponent,
|
|
290
286
|
ZlabelComponent,
|
|
@@ -315,4 +311,4 @@ MmhglobalDynamicformModule.decorators = [
|
|
|
315
311
|
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
316
312
|
},] }
|
|
317
313
|
];
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1oZ2xvYmFsLWR5bmFtaWNmb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL21taGdsb2JhbC1keW5hbWljZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0Msa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSw2QkFBNkI7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFD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QUFtQjtvQkFDbkIsaUJBQWlCO29CQUNqQixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIseUJBQXlCO2lCQUMxQjtnQkFDRCxlQUFlLEVBQUU7b0JBQ2YsNEJBQTRCO29CQUM1QiwwQkFBMEI7b0JBQzFCLGlCQUFpQjtvQkFDakIsa0JBQWtCO29CQUNsQixlQUFlO29CQUNmLHNCQUFzQjtvQkFDdEIscUJBQXFCO29CQUNyQix5QkFBeUI7b0JBQ3pCLHVCQUF1QjtvQkFDdkIsNEJBQTRCO29CQUM1QixnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsY0FBYztvQkFDZCxlQUFlO29CQUNmLGtCQUFrQjtvQkFDbEIsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsa0JBQWtCO29CQUNsQixhQUFhO29CQUNiLGNBQWM7b0JBQ2QscUJBQXFCO29CQUNyQixlQUFlO29CQUNmLGNBQWM7b0JBQ2Qsc0JBQXNCO29CQUN0QixhQUFhO29CQUNiLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixhQUFhO29CQUNiLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixpQkFBaUI7b0JBQ2pCLHlCQUF5QjtvQkFDekIsc0JBQXNCO29CQUN0QixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsd0JBQXdCO29CQUN4QixhQUFhO29CQUNiLGNBQWM7b0JBQ2Qsa0JBQWtCO29CQUNsQixvQkFBb0I7b0JBQ3BCLGNBQWM7b0JBQ2Qsa0JBQWtCO29CQUNsQixtQkFBbUI7b0JBQ25CLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFlBQVk7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbi8vIGltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IElvbmljU2VsZWN0YWJsZU1vZHVsZSB9IGZyb20gJ2lvbmljLXNlbGVjdGFibGUnO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IEFjZUVkaXRvck1vZHVsZSB9IGZyb20gJ25nMi1hY2UtZWRpdG9yJztcclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlck1vZHVsZSB9IGZyb20gXCJhbmd1bGFyMi1xdWVyeS1idWlsZGVyXCI7XHJcblxyXG4vKioqKioqKioqKiBLZW5kbyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBBcmNHYXVnZU1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdhdWdlcyc7XHJcbmltcG9ydCB7IEJ1dHRvbnNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1idXR0b25zJztcclxuaW1wb3J0IHsgQ2hhcnRzTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUsIERhdGVJbnB1dHNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kYXRlaW5wdXRzJztcclxuaW1wb3J0IHsgRHJvcERvd25zTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcclxuaW1wb3J0IHsgRWRpdG9yTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgRXhjZWxNb2R1bGUsIEdyaWRNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkJztcclxuaW1wb3J0IHsgSW5kaWNhdG9yc01vZHVsZSB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbmRpY2F0b3JzXCI7XHJcbmltcG9ydCB7IEludGxNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnRsJztcclxuaW1wb3J0IHsgSW5wdXRzTW9kdWxlLCBTd2l0Y2hNb2R1bGUsIFRleHRCb3hNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnB1dHMnO1xyXG5pbXBvcnQgeyBMYWJlbE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWxhYmVsJztcclxuaW1wb3J0IHsgTGF5b3V0TW9kdWxlLCBQYW5lbEJhck1vZHVsZSwgVGFiU3RyaXBNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1sYXlvdXQnO1xyXG5pbXBvcnQgeyBQb3B1cE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXBvcHVwJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgVGVsZXJpa1JlcG9ydGluZ01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy90ZWxlcmlrLWFuZ3VsYXItcmVwb3J0LXZpZXdlcic7XHJcbmltcG9ydCB7IFNjaGVkdWxlck1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXNjaGVkdWxlcic7XHJcbmltcG9ydCB7IFRyZWVMaXN0TW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItdHJlZWxpc3QnO1xyXG5pbXBvcnQgeyBUcmVlVmlld01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXRyZWV2aWV3JztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXRvb2x0aXAnO1xyXG5pbXBvcnQgeyBVcGxvYWRNb2R1bGUsIFVwbG9hZHNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci11cGxvYWQnO1xyXG5cclxuLyoqKioqKioqKiogU2VydmljZSAmIERpcmVjdGl2ZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBaQ29yZU1vZHVsZSwgWkdyb3VwIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuaW1wb3J0IHsgTW1oZ2xvYmFsWm1vZGFsTW9kdWxlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtem1vZGFsJztcclxuaW1wb3J0IHsgTWFpblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21haW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFNjcm9sbGJhclRoZW1lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Njcm9sbGJhci50aGVtZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGaWVsZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmllbGRlbGVtZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFpHcmlkQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vemdyaWQvemdyaWQuYmluZGluZy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBaR3JpZENhbGVuZGFyQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vemdyaWRjYWxlbmRhci96Z3JpZGNhbGVuZGFyLmJpbmRpbmcuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgT3Blbk9uRm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuZGlyZWN0aXZlJztcclxuXHJcbi8qKioqKioqKioqIEFkZG9uICoqKioqKioqKiovXHJcbmltcG9ydCB7IERhdGVQYXJzZXJGaWx0ZXIgfSBmcm9tICcuL3pkYXRldGltZS9kYXRlUGFyc2VyLnBpcGUnO1xyXG5pbXBvcnQgeyBFZGl0b3JGaWx0ZXIgfSBmcm9tICcuL3pjb2RlZWRpdG9yL3pjb2RlZWRpdG9yLnBpcGUnO1xyXG5pbXBvcnQgeyBEaXZ6TGF5b3V0IH0gZnJvbSAnLi96ZGl2L3pkaXYucGlwZSc7XHJcbmltcG9ydCB7IEV4cG9ydE9wdGlvbnMgfSBmcm9tICcuL3pyZXBvcnQvenJlcG9ydC5jb25maWcnO1xyXG5pbXBvcnQgeyBUYWJGaWx0ZXIgfSBmcm9tICcuL3p0YWIvenRhYi5waXBlJztcclxuaW1wb3J0IHsgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vemdyaWQvZGF0ZS1yYW5nZS1jZWxsLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaU2NoZWR1bGVyVG9vbEJhckNvbXBvbmVudCB9IGZyb20gJy4venNjaGVkdWxlci96c2NoZWR1bGVyLnRvb2xiYXIuY29tcG9uZW50JztcclxuXHJcbi8qKioqKioqKioqIHpDb21wb25lbnQgKioqKioqKioqKi9cclxuaW1wb3J0IHsgVWlwYWdlQ29tcG9uZW50IH0gZnJvbSAnLi91aXBhZ2UvdWlwYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpaGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi91aWhlYWRlci91aWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaWNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3VpY29udGVudC91aWNvbnRlbnQuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IFVpbWVudWNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3VpbWVudWNvbnRlbnQvdWltZW51Y29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaW1lbnVidXR0b25Db21wb25lbnQgfSBmcm9tICcuL3VpbWVudWJ1dHRvbi91aW1lbnVidXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWlhcHBtZW51Y29udGVudENvbXBvbmVudCB9IGZyb20gJy4vdWlhcHBtZW51Y29udGVudC91aWFwcG1lbnVjb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpYWN0aW9uYnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi91aWFjdGlvbmJ1dHRvbi91aWFjdGlvbmJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi91aXZhbGlkYXRpb25tZXNzYWdlL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IFpCdWxsZXRDb21wb25lbnQgfSBmcm9tIFwiLi96YnVsbGV0L3pidWxsZXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpidXR0b25zQ29tcG9uZW50IH0gZnJvbSBcIi4vemJ1dHRvbnMvemJ1dHRvbnMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpjYXJkQ29tcG9uZW50IH0gZnJvbSBcIi4vemNhcmQvemNhcmQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpjaGFydENvbXBvbmVudCB9IGZyb20gJy4vemNoYXJ0L3pjaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaY2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL3pjaGVja2JveC96Y2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgWkNoaXBDb21wb25lbnQgfSBmcm9tIFwiLi96Y2hpcC96Y2hpcC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWmNvZGVlZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL3pjb2RlZWRpdG9yL3pjb2RlZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpkYXRlcmFuZ2VDb21wb25lbnQgfSBmcm9tICcuL3pkYXRlcmFuZ2UvemRhdGVyYW5nZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaZGF0ZXRpbWVDb21wb25lbnQgfSBmcm9tICcuL3pkYXRldGltZS96ZGF0ZXRpbWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWmRpdkNvbXBvbmVudCB9IGZyb20gJy4vemRpdi96ZGl2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpmb3JtQ29tcG9uZW50IH0gZnJvbSBcIi4vemZvcm0vemZvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpmb3JtY29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL3pmb3JtY29udHJvbC96Zm9ybWNvbnRyb2wuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpnYXVnZUNvbXBvbmVudCB9IGZyb20gJy4vemdhdWdlL3pnYXVnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaZ3JpZENvbXBvbmVudCB9IGZyb20gXCIuL3pncmlkL3pncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaZ3JpZGNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSBcIi4vemdyaWRjYWxlbmRhci96Z3JpZGNhbGVuZGFyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaaW1nQ29tcG9uZW50IH0gZnJvbSAnLi96aW1nL3ppbWcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWmtjYXJkQ29tcG9uZW50IH0gZnJvbSAnLi96a2NhcmQvemtjYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpsYWJlbENvbXBvbmVudCB9IGZyb20gJy4vemxhYmVsL3psYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBabWZiQ29tcG9uZW50IH0gZnJvbSAnLi96bWZiL3ptZmIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWm1vZGFsQ29tcG9uZW50IH0gZnJvbSBcIi4vem1vZGFsL3ptb2RhbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWm1vZGFsTW9iaWxlQ29tcG9uZW50IH0gZnJvbSBcIi4vem1vZGFsL3ptb2RhbC1tb2JpbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpudW1lcmljQ29tcG9uZW50IH0gZnJvbSAnLi96bnVtZXJpYy96bnVtZXJpYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBacG9zdHNlbGVjdGlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi96cG9zdHNlbGVjdGlucHV0L3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50JzsgXHJcbmltcG9ydCB7IFpxdWVyeWJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuL3pxdWVyeWJ1aWxkZXIvenF1ZXJ5YnVpbGRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBacmVwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnNjaGVkdWxlckNvbXBvbmVudCB9IGZyb20gJy4venNjaGVkdWxlci96c2NoZWR1bGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCB9IGZyb20gXCIuL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFp0YWJDb21wb25lbnQgfSBmcm9tIFwiLi96dGFiL3p0YWIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFp0ZXh0Q29tcG9uZW50IH0gZnJvbSBcIi4venRleHQvenRleHQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFp0ZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4venRleHRhcmVhL3p0ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBadGV4dGVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4venRleHRlZGl0b3IvenRleHRlZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnRyZWVDb21wb25lbnQgfSBmcm9tICcuL3p0cmVlL3p0cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFp0cmVlbGlzdENvbXBvbmVudCB9IGZyb20gJy4venRyZWVsaXN0L3p0cmVlbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBadHJlbmRjYXJkQ29tcG9uZW50IH0gZnJvbSAnLi96dHJlbmRjYXJkL3p0cmVuZGNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnVua25vd25Db21wb25lbnQgfSBmcm9tIFwiLi96dW5rbm93bi96dW5rbm93bi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWnVkZkNvbXBvbmVudCB9IGZyb20gJy4venVkZi96dWRmLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFp1cGxvYWRDb21wb25lbnQgfSBmcm9tICcuL3p1cGxvYWQvenVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBad29ya2Zsb3didXR0b25zQ29tcG9uZW50IH0gZnJvbSBcIi4vendvcmtmbG93YnV0dG9ucy96d29ya2Zsb3didXR0b25zLmNvbXBvbmVudFwiOyBcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBTY3JvbGxiYXJUaGVtZURpcmVjdGl2ZSxcclxuICAgIEZpZWxkRWxlbWVudERpcmVjdGl2ZSxcclxuICAgIFpHcmlkQmluZGluZ0RpcmVjdGl2ZSxcclxuICAgIFpHcmlkQ2FsZW5kYXJCaW5kaW5nRGlyZWN0aXZlLFxyXG4gICAgT3Blbk9uRm9jdXNEaXJlY3RpdmUsXHJcbiAgICBEYXRlUGFyc2VyRmlsdGVyLCAvLyB6Z3JpZCBhZGRvblxyXG4gICAgRWRpdG9yRmlsdGVyLCAvLyB6Y29kZSBhZGRvblxyXG4gICAgRGl2ekxheW91dCwgLy8gemRpdiBhZGRvblxyXG4gICAgRXhwb3J0T3B0aW9ucywgLy8genJlcG9ydCBhZGRvblxyXG4gICAgVGFiRmlsdGVyLCAvLyB6dGFiIGFkZG9uXHJcbiAgICBEYXRlUmFuZ2VGaWx0ZXJDZWxsQ29tcG9uZW50LCAvLyB6Z3JpZCBhZGRvblxyXG4gICAgWlNjaGVkdWxlclRvb2xCYXJDb21wb25lbnQsIC8vIHpzY2hlZHVsZXIgYWRkb24gICAgXHJcbiAgICBVaWhlYWRlckNvbXBvbmVudCxcclxuICAgIFVpY29udGVudENvbXBvbmVudCxcclxuICAgIFVpcGFnZUNvbXBvbmVudCxcclxuICAgIFVpYWN0aW9uYnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVWltZW51Y29udGVudENvbXBvbmVudCxcclxuICAgIFVpbWVudWJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFVpYXBwbWVudWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50LCAgICBcclxuICAgIFpCdWxsZXRDb21wb25lbnQsXHJcbiAgICBaYnV0dG9uc0NvbXBvbmVudCxcclxuICAgIFpjYXJkQ29tcG9uZW50LFxyXG4gICAgWmNoYXJ0Q29tcG9uZW50LFxyXG4gICAgWmNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWkNoaXBDb21wb25lbnQsXHJcbiAgICBaY29kZWVkaXRvckNvbXBvbmVudCxcclxuICAgIFpkYXRlcmFuZ2VDb21wb25lbnQsXHJcbiAgICBaZGF0ZXRpbWVDb21wb25lbnQsXHJcbiAgICBaZGl2Q29tcG9uZW50LFxyXG4gICAgWmZvcm1Db21wb25lbnQsXHJcbiAgICBaZm9ybWNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBaZ2F1Z2VDb21wb25lbnQsXHJcbiAgICBaZ3JpZENvbXBvbmVudCxcclxuICAgIFpncmlkY2FsZW5kYXJDb21wb25lbnQsXHJcbiAgICBaaW1nQ29tcG9uZW50LFxyXG4gICAgWmtjYXJkQ29tcG9uZW50LFxyXG4gICAgWmxhYmVsQ29tcG9uZW50LFxyXG4gICAgWm1mYkNvbXBvbmVudCxcclxuICAgIFptb2RhbENvbXBvbmVudCxcclxuICAgIFptb2RhbE1vYmlsZUNvbXBvbmVudCxcclxuICAgIFpudW1lcmljQ29tcG9uZW50LFxyXG4gICAgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCxcclxuICAgIFpxdWVyeWJ1aWxkZXJDb21wb25lbnQsXHJcbiAgICBacmVwb3J0Q29tcG9uZW50LFxyXG4gICAgWnNjaGVkdWxlckNvbXBvbmVudCxcclxuICAgIFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCxcclxuICAgIFp0YWJDb21wb25lbnQsXHJcbiAgICBadGV4dENvbXBvbmVudCxcclxuICAgIFp0ZXh0YXJlYUNvbXBvbmVudCxcclxuICAgIFp0ZXh0ZWRpdG9yQ29tcG9uZW50LFxyXG4gICAgWnRyZWVDb21wb25lbnQsXHJcbiAgICBadHJlZWxpc3RDb21wb25lbnQsXHJcbiAgICBadHJlbmRjYXJkQ29tcG9uZW50LFxyXG4gICAgWnVua25vd25Db21wb25lbnQsXHJcbiAgICBadWRmQ29tcG9uZW50LFxyXG4gICAgWnVwbG9hZENvbXBvbmVudCxcclxuICAgIFp3b3JrZmxvd2J1dHRvbnNDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIElvbmljTW9kdWxlLFxyXG4gICAgSW9uaWNTZWxlY3RhYmxlTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQWNlRWRpdG9yTW9kdWxlLFxyXG4gICAgRm9udEF3ZXNvbWVNb2R1bGUsXHJcbiAgICBRdWVyeUJ1aWxkZXJNb2R1bGUsXHJcbiAgICBBcmNHYXVnZU1vZHVsZSxcclxuICAgIEJ1dHRvbnNNb2R1bGUsXHJcbiAgICBDaGFydHNNb2R1bGUsXHJcbiAgICBDYWxlbmRhck1vZHVsZSxcclxuICAgIERhdGVJbnB1dHNNb2R1bGUsXHJcbiAgICBEcm9wRG93bnNNb2R1bGUsXHJcbiAgICBFZGl0b3JNb2R1bGUsXHJcbiAgICBHcmlkTW9kdWxlLFxyXG4gICAgRXhjZWxNb2R1bGUsXHJcbiAgICBJbmRpY2F0b3JzTW9kdWxlLFxyXG4gICAgSW50bE1vZHVsZSxcclxuICAgIElucHV0c01vZHVsZSxcclxuICAgIFN3aXRjaE1vZHVsZSxcclxuICAgIFRleHRCb3hNb2R1bGUsXHJcbiAgICBMYWJlbE1vZHVsZSxcclxuICAgIExheW91dE1vZHVsZSxcclxuICAgIFBhbmVsQmFyTW9kdWxlLFxyXG4gICAgVGFiU3RyaXBNb2R1bGUsXHJcbiAgICBQb3B1cE1vZHVsZSxcclxuICAgIFByb2dyZXNzQmFyTW9kdWxlLFxyXG4gICAgVGVsZXJpa1JlcG9ydGluZ01vZHVsZSxcclxuICAgIFNjaGVkdWxlck1vZHVsZSxcclxuICAgIFRyZWVMaXN0TW9kdWxlLFxyXG4gICAgVHJlZVZpZXdNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgVXBsb2FkTW9kdWxlLFxyXG4gICAgVXBsb2Fkc01vZHVsZSxcclxuICAgIFpDb3JlTW9kdWxlLFxyXG4gICAgTW1oZ2xvYmFsWm1vZGFsTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTY3JvbGxiYXJUaGVtZURpcmVjdGl2ZSxcclxuICAgIEZpZWxkRWxlbWVudERpcmVjdGl2ZSxcclxuICAgIFpHcmlkQmluZGluZ0RpcmVjdGl2ZSxcclxuICAgIFpHcmlkQ2FsZW5kYXJCaW5kaW5nRGlyZWN0aXZlLFxyXG4gICAgT3Blbk9uRm9jdXNEaXJlY3RpdmUsXHJcbiAgICBEYXRlUGFyc2VyRmlsdGVyLCAvLyB6ZGF0ZXRpbWUgYWRkb25cclxuICAgIEVkaXRvckZpbHRlciwgLy8gemNvZGUgYWRkb25cclxuICAgIERpdnpMYXlvdXQsIC8vIHpkaXYgYWRkb25cclxuICAgIEV4cG9ydE9wdGlvbnMsIC8vIHpyZXBvcnQgYWRkb25cclxuICAgIFRhYkZpbHRlciwgLy8genRhYiBhZGRvblxyXG4gICAgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCwgLy8gemdyaWQgYWRkb25cclxuICAgIFpTY2hlZHVsZXJUb29sQmFyQ29tcG9uZW50LCAvLyB6c2NoZWR1bGVyIGFkZG9uXHJcbiAgICBVaWhlYWRlckNvbXBvbmVudCxcclxuICAgIFVpY29udGVudENvbXBvbmVudCxcclxuICAgIFVpcGFnZUNvbXBvbmVudCwgICAgXHJcbiAgICBVaW1lbnVjb250ZW50Q29tcG9uZW50LFxyXG4gICAgVWltZW51YnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVWlhcHBtZW51Y29udGVudENvbXBvbmVudCxcclxuICAgIFVpYWN0aW9uYnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVWl2YWxpZGF0aW9ubWVzc2FnZUNvbXBvbmVudCxcclxuICAgIFpCdWxsZXRDb21wb25lbnQsXHJcbiAgICBaYnV0dG9uc0NvbXBvbmVudCxcclxuICAgIFpjYXJkQ29tcG9uZW50LFxyXG4gICAgWmNoYXJ0Q29tcG9uZW50LFxyXG4gICAgWmNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWkNoaXBDb21wb25lbnQsXHJcbiAgICBaY29kZWVkaXRvckNvbXBvbmVudCxcclxuICAgIFpkYXRlcmFuZ2VDb21wb25lbnQsXHJcbiAgICBaZGF0ZXRpbWVDb21wb25lbnQsXHJcbiAgICBaZGl2Q29tcG9uZW50LFxyXG4gICAgWmZvcm1Db21wb25lbnQsXHJcbiAgICBaZm9ybWNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBaZ2F1Z2VDb21wb25lbnQsXHJcbiAgICBaZ3JpZENvbXBvbmVudCxcclxuICAgIFpncmlkY2FsZW5kYXJDb21wb25lbnQsXHJcbiAgICBaaW1nQ29tcG9uZW50LFxyXG4gICAgWmtjYXJkQ29tcG9uZW50LFxyXG4gICAgWmxhYmVsQ29tcG9uZW50LFxyXG4gICAgWm1mYkNvbXBvbmVudCxcclxuICAgIFptb2RhbENvbXBvbmVudCxcclxuICAgIFptb2RhbE1vYmlsZUNvbXBvbmVudCxcclxuICAgIFpudW1lcmljQ29tcG9uZW50LFxyXG4gICAgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCxcclxuICAgIFpxdWVyeWJ1aWxkZXJDb21wb25lbnQsXHJcbiAgICBacmVwb3J0Q29tcG9uZW50LFxyXG4gICAgWnNjaGVkdWxlckNvbXBvbmVudCxcclxuICAgIFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCxcclxuICAgIFp0YWJDb21wb25lbnQsXHJcbiAgICBadGV4dENvbXBvbmVudCxcclxuICAgIFp0ZXh0YXJlYUNvbXBvbmVudCxcclxuICAgIFp0ZXh0ZWRpdG9yQ29tcG9uZW50LFxyXG4gICAgWnRyZWVDb21wb25lbnQsXHJcbiAgICBadHJlZWxpc3RDb21wb25lbnQsXHJcbiAgICBadHJlbmRjYXJkQ29tcG9uZW50LFxyXG4gICAgWnVua25vd25Db21wb25lbnQsXHJcbiAgICBadWRmQ29tcG9uZW50LFxyXG4gICAgWnVwbG9hZENvbXBvbmVudCxcclxuICAgIFp3b3JrZmxvd2J1dHRvbnNDb21wb25lbnRcclxuICBdLFxyXG4gIGVudHJ5Q29tcG9uZW50czogW1xyXG4gICAgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCwgLy8gemdyaWQgYWRkb25cclxuICAgIFpTY2hlZHVsZXJUb29sQmFyQ29tcG9uZW50LCAvLyB6c2NoZWR1bGVyIGFkZG9uXHJcbiAgICBVaWhlYWRlckNvbXBvbmVudCxcclxuICAgIFVpY29udGVudENvbXBvbmVudCxcclxuICAgIFVpcGFnZUNvbXBvbmVudCxcclxuICAgIFVpbWVudWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaW1lbnVidXR0b25Db21wb25lbnQsXHJcbiAgICBVaWFwcG1lbnVjb250ZW50Q29tcG9uZW50LFxyXG4gICAgVWlhY3Rpb25idXR0b25Db21wb25lbnQsXHJcbiAgICBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgWkJ1bGxldENvbXBvbmVudCxcclxuICAgIFpidXR0b25zQ29tcG9uZW50LFxyXG4gICAgWmNhcmRDb21wb25lbnQsXHJcbiAgICBaY2hhcnRDb21wb25lbnQsXHJcbiAgICBaY2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBaQ2hpcENvbXBvbmVudCxcclxuICAgIFpjb2RlZWRpdG9yQ29tcG9uZW50LFxyXG4gICAgWmRhdGVyYW5nZUNvbXBvbmVudCxcclxuICAgIFpkYXRldGltZUNvbXBvbmVudCxcclxuICAgIFpkaXZDb21wb25lbnQsXHJcbiAgICBaZm9ybUNvbXBvbmVudCxcclxuICAgIFpmb3JtY29udHJvbENvbXBvbmVudCxcclxuICAgIFpnYXVnZUNvbXBvbmVudCxcclxuICAgIFpncmlkQ29tcG9uZW50LFxyXG4gICAgWmdyaWRjYWxlbmRhckNvbXBvbmVudCxcclxuICAgIFppbWdDb21wb25lbnQsXHJcbiAgICBaa2NhcmRDb21wb25lbnQsXHJcbiAgICBabGFiZWxDb21wb25lbnQsXHJcbiAgICBabWZiQ29tcG9uZW50LFxyXG4gICAgWm1vZGFsQ29tcG9uZW50LFxyXG4gICAgWm1vZGFsTW9iaWxlQ29tcG9uZW50LFxyXG4gICAgWm51bWVyaWNDb21wb25lbnQsXHJcbiAgICBacG9zdHNlbGVjdGlucHV0Q29tcG9uZW50LFxyXG4gICAgWnF1ZXJ5YnVpbGRlckNvbXBvbmVudCxcclxuICAgIFpyZXBvcnRDb21wb25lbnQsXHJcbiAgICBac2NoZWR1bGVyQ29tcG9uZW50LFxyXG4gICAgWnNlbGVjdG11bHRpcGxlQ29tcG9uZW50LFxyXG4gICAgWnRhYkNvbXBvbmVudCxcclxuICAgIFp0ZXh0Q29tcG9uZW50LFxyXG4gICAgWnRleHRhcmVhQ29tcG9uZW50LFxyXG4gICAgWnRleHRlZGl0b3JDb21wb25lbnQsXHJcbiAgICBadHJlZUNvbXBvbmVudCxcclxuICAgIFp0cmVlbGlzdENvbXBvbmVudCxcclxuICAgIFp0cmVuZGNhcmRDb21wb25lbnQsXHJcbiAgICBadW5rbm93bkNvbXBvbmVudCxcclxuICAgIFp1ZGZDb21wb25lbnQsXHJcbiAgICBadXBsb2FkQ29tcG9uZW50LFxyXG4gICAgWndvcmtmbG93YnV0dG9uc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBNb2RhbFNlcnZpY2VcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE1taGdsb2JhbER5bmFtaWNmb3JtTW9kdWxlIHsgfVxyXG4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1oZ2xvYmFsLWR5bmFtaWNmb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL21taGdsb2JhbC1keW5hbWljZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0Msa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSw2QkFBNkI7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFD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QWUsRUFBRTtvQkFDZiw0QkFBNEI7b0JBQzVCLDBCQUEwQjtvQkFDMUIsaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLGVBQWU7b0JBQ2Ysc0JBQXNCO29CQUN0QixxQkFBcUI7b0JBQ3JCLHlCQUF5QjtvQkFDekIsdUJBQXVCO29CQUN2Qiw0QkFBNEI7b0JBQzVCLGdCQUFnQjtvQkFDaEIsaUJBQWlCO29CQUNqQixjQUFjO29CQUNkLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQixrQkFBa0I7b0JBQ2xCLGFBQWE7b0JBQ2IsY0FBYztvQkFDZCxxQkFBcUI7b0JBQ3JCLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxhQUFhO29CQUNiLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixhQUFhO29CQUNiLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixpQkFBaUI7b0JBQ2pCLHlCQUF5QjtvQkFDekIsc0JBQXNCO29CQUN0QixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsd0JBQXdCO29CQUN4QixhQUFhO29CQUNiLGNBQWM7b0JBQ2Qsa0JBQWtCO29CQUNsQixvQkFBb0I7b0JBQ3BCLGNBQWM7b0JBQ2Qsa0JBQWtCO29CQUNsQixtQkFBbUI7b0JBQ25CLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFlBQVk7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbi8vIGltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IElvbmljU2VsZWN0YWJsZU1vZHVsZSB9IGZyb20gJ2lvbmljLXNlbGVjdGFibGUnO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IEFjZUVkaXRvck1vZHVsZSB9IGZyb20gJ25nMi1hY2UtZWRpdG9yJztcclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlck1vZHVsZSB9IGZyb20gXCJhbmd1bGFyMi1xdWVyeS1idWlsZGVyXCI7XHJcblxyXG4vKioqKioqKioqKiBLZW5kbyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBBcmNHYXVnZU1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdhdWdlcyc7XHJcbmltcG9ydCB7IEJ1dHRvbnNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1idXR0b25zJztcclxuaW1wb3J0IHsgQ2hhcnRzTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUsIERhdGVJbnB1dHNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kYXRlaW5wdXRzJztcclxuaW1wb3J0IHsgRHJvcERvd25zTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zJztcclxuaW1wb3J0IHsgRWRpdG9yTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgRXhjZWxNb2R1bGUsIEdyaWRNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkJztcclxuaW1wb3J0IHsgSW5kaWNhdG9yc01vZHVsZSB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbmRpY2F0b3JzXCI7XHJcbmltcG9ydCB7IEludGxNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnRsJztcclxuaW1wb3J0IHsgSW5wdXRzTW9kdWxlLCBTd2l0Y2hNb2R1bGUsIFRleHRCb3hNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnB1dHMnO1xyXG5pbXBvcnQgeyBMYWJlbE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWxhYmVsJztcclxuaW1wb3J0IHsgTGF5b3V0TW9kdWxlLCBQYW5lbEJhck1vZHVsZSwgVGFiU3RyaXBNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1sYXlvdXQnO1xyXG5pbXBvcnQgeyBQb3B1cE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXBvcHVwJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgVGVsZXJpa1JlcG9ydGluZ01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy90ZWxlcmlrLWFuZ3VsYXItcmVwb3J0LXZpZXdlcic7XHJcbmltcG9ydCB7IFNjaGVkdWxlck1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXNjaGVkdWxlcic7XHJcbmltcG9ydCB7IFRyZWVMaXN0TW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItdHJlZWxpc3QnO1xyXG5pbXBvcnQgeyBUcmVlVmlld01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXRyZWV2aWV3JztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLXRvb2x0aXAnO1xyXG5pbXBvcnQgeyBVcGxvYWRNb2R1bGUsIFVwbG9hZHNNb2R1bGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci11cGxvYWQnO1xyXG5cclxuLyoqKioqKioqKiogU2VydmljZSAmIERpcmVjdGl2ZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBaQ29yZU1vZHVsZSwgWkdyb3VwIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuaW1wb3J0IHsgTW1oZ2xvYmFsWm1vZGFsTW9kdWxlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtem1vZGFsJztcclxuaW1wb3J0IHsgTWFpblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21haW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFNjcm9sbGJhclRoZW1lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Njcm9sbGJhci50aGVtZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGaWVsZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmllbGRlbGVtZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFpHcmlkQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vemdyaWQvemdyaWQuYmluZGluZy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBaR3JpZFBvcHVwQW5jaG9yRGlyZWN0aXZlIH0gZnJvbSAnLi96Z3JpZC96Z3JpZC5wb3B1cC5hbmNob3ItdGFyZ2V0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9wZW5PbkZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi96c2VsZWN0bXVsdGlwbGUvenNlbGVjdG11bHRpcGxlLmRpcmVjdGl2ZSc7XHJcblxyXG4vKioqKioqKioqKiBBZGRvbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBEYXRlUGFyc2VyRmlsdGVyIH0gZnJvbSAnLi96ZGF0ZXRpbWUvZGF0ZVBhcnNlci5waXBlJztcclxuaW1wb3J0IHsgRWRpdG9yRmlsdGVyIH0gZnJvbSAnLi96Y29kZWVkaXRvci96Y29kZWVkaXRvci5waXBlJztcclxuaW1wb3J0IHsgRGl2ekxheW91dCB9IGZyb20gJy4vemRpdi96ZGl2LnBpcGUnO1xyXG5pbXBvcnQgeyBFeHBvcnRPcHRpb25zIH0gZnJvbSAnLi96cmVwb3J0L3pyZXBvcnQuY29uZmlnJztcclxuaW1wb3J0IHsgVGFiRmlsdGVyIH0gZnJvbSAnLi96dGFiL3p0YWIucGlwZSc7XHJcbmltcG9ydCB7IERhdGVSYW5nZUZpbHRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL3pncmlkL2RhdGUtcmFuZ2UtY2VsbC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWlNjaGVkdWxlclRvb2xCYXJDb21wb25lbnQgfSBmcm9tICcuL3pzY2hlZHVsZXIvenNjaGVkdWxlci50b29sYmFyLmNvbXBvbmVudCc7XHJcblxyXG4vKioqKioqKioqKiB6Q29tcG9uZW50ICoqKioqKioqKiovXHJcbmltcG9ydCB7IFVpcGFnZUNvbXBvbmVudCB9IGZyb20gJy4vdWlwYWdlL3VpcGFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaWhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWljb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi91aWNvbnRlbnQvdWljb250ZW50LmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBVaW1lbnVjb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi91aW1lbnVjb250ZW50L3VpbWVudWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWltZW51YnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi91aW1lbnVidXR0b24vdWltZW51YnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpYXBwbWVudWNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3VpYXBwbWVudWNvbnRlbnQvdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaWFjdGlvbmJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vdWlhY3Rpb25idXR0b24vdWlhY3Rpb25idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVWl2YWxpZGF0aW9ubWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vdWl2YWxpZGF0aW9ubWVzc2FnZS91aXZhbGlkYXRpb25tZXNzYWdlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBaQnVsbGV0Q29tcG9uZW50IH0gZnJvbSBcIi4vemJ1bGxldC96YnVsbGV0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaYnV0dG9uc0NvbXBvbmVudCB9IGZyb20gXCIuL3pidXR0b25zL3pidXR0b25zLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaY2FyZENvbXBvbmVudCB9IGZyb20gXCIuL3pjYXJkL3pjYXJkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaY2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3pjaGFydC96Y2hhcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWmNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi96Y2hlY2tib3gvemNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDaGlwQ29tcG9uZW50IH0gZnJvbSBcIi4vemNoaXAvemNoaXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpjb2RlZWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi96Y29kZWVkaXRvci96Y29kZWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaZGF0ZXJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi96ZGF0ZXJhbmdlL3pkYXRlcmFuZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWmRhdGV0aW1lQ29tcG9uZW50IH0gZnJvbSAnLi96ZGF0ZXRpbWUvemRhdGV0aW1lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpkaXZDb21wb25lbnQgfSBmcm9tICcuL3pkaXYvemRpdi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBaZm9ybUNvbXBvbmVudCB9IGZyb20gXCIuL3pmb3JtL3pmb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaZm9ybWNvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi96Zm9ybWNvbnRyb2wvemZvcm1jb250cm9sLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaZ2F1Z2VDb21wb25lbnQgfSBmcm9tICcuL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWmdyaWRDb21wb25lbnQgfSBmcm9tIFwiLi96Z3JpZC96Z3JpZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWmltZ0NvbXBvbmVudCB9IGZyb20gJy4vemltZy96aW1nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFprY2FyZENvbXBvbmVudCB9IGZyb20gJy4vemtjYXJkL3prY2FyZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBabGFiZWxDb21wb25lbnQgfSBmcm9tICcuL3psYWJlbC96bGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWm1mYkNvbXBvbmVudCB9IGZyb20gJy4vem1mYi96bWZiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFptb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL3ptb2RhbC96bW9kYWwuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFptb2RhbE1vYmlsZUNvbXBvbmVudCB9IGZyb20gXCIuL3ptb2RhbC96bW9kYWwtbW9iaWxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBabnVtZXJpY0NvbXBvbmVudCB9IGZyb20gJy4vem51bWVyaWMvem51bWVyaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCB9IGZyb20gJy4venBvc3RzZWxlY3RpbnB1dC96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudCc7IFxyXG5pbXBvcnQgeyBacXVlcnlidWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi96cXVlcnlidWlsZGVyL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnJlcG9ydENvbXBvbmVudCB9IGZyb20gJy4venJlcG9ydC96cmVwb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpzY2hlZHVsZXJDb21wb25lbnQgfSBmcm9tICcuL3pzY2hlZHVsZXIvenNjaGVkdWxlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBac2VsZWN0bXVsdGlwbGVDb21wb25lbnQgfSBmcm9tIFwiLi96c2VsZWN0bXVsdGlwbGUvenNlbGVjdG11bHRpcGxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBadGFiQ29tcG9uZW50IH0gZnJvbSBcIi4venRhYi96dGFiLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBadGV4dENvbXBvbmVudCB9IGZyb20gXCIuL3p0ZXh0L3p0ZXh0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBadGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL3p0ZXh0YXJlYS96dGV4dGFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnRleHRlZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL3p0ZXh0ZWRpdG9yL3p0ZXh0ZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFp0cmVlQ29tcG9uZW50IH0gZnJvbSAnLi96dHJlZS96dHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBadHJlZWxpc3RDb21wb25lbnQgfSBmcm9tICcuL3p0cmVlbGlzdC96dHJlZWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWnRyZW5kY2FyZENvbXBvbmVudCB9IGZyb20gJy4venRyZW5kY2FyZC96dHJlbmRjYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFp1bmtub3duQ29tcG9uZW50IH0gZnJvbSBcIi4venVua25vd24venVua25vd24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFp1ZGZDb21wb25lbnQgfSBmcm9tICcuL3p1ZGYvenVkZi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBadXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi96dXBsb2FkL3p1cGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWndvcmtmbG93YnV0dG9uc0NvbXBvbmVudCB9IGZyb20gXCIuL3p3b3JrZmxvd2J1dHRvbnMvendvcmtmbG93YnV0dG9ucy5jb21wb25lbnRcIjsgXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgU2Nyb2xsYmFyVGhlbWVEaXJlY3RpdmUsXHJcbiAgICBGaWVsZEVsZW1lbnREaXJlY3RpdmUsXHJcbiAgICBaR3JpZEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBaR3JpZFBvcHVwQW5jaG9yRGlyZWN0aXZlLFxyXG4gICAgT3Blbk9uRm9jdXNEaXJlY3RpdmUsXHJcbiAgICBEYXRlUGFyc2VyRmlsdGVyLCAvLyB6Z3JpZCBhZGRvblxyXG4gICAgRWRpdG9yRmlsdGVyLCAvLyB6Y29kZSBhZGRvblxyXG4gICAgRGl2ekxheW91dCwgLy8gemRpdiBhZGRvblxyXG4gICAgRXhwb3J0T3B0aW9ucywgLy8genJlcG9ydCBhZGRvblxyXG4gICAgVGFiRmlsdGVyLCAvLyB6dGFiIGFkZG9uXHJcbiAgICBEYXRlUmFuZ2VGaWx0ZXJDZWxsQ29tcG9uZW50LCAvLyB6Z3JpZCBhZGRvblxyXG4gICAgWlNjaGVkdWxlclRvb2xCYXJDb21wb25lbnQsIC8vIHpzY2hlZHVsZXIgYWRkb24gICAgXHJcbiAgICBVaWhlYWRlckNvbXBvbmVudCxcclxuICAgIFVpY29udGVudENvbXBvbmVudCxcclxuICAgIFVpcGFnZUNvbXBvbmVudCxcclxuICAgIFVpYWN0aW9uYnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVWltZW51Y29udGVudENvbXBvbmVudCxcclxuICAgIFVpbWVudWJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFVpYXBwbWVudWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50LCAgICBcclxuICAgIFpCdWxsZXRDb21wb25lbnQsXHJcbiAgICBaYnV0dG9uc0NvbXBvbmVudCxcclxuICAgIFpjYXJkQ29tcG9uZW50LFxyXG4gICAgWmNoYXJ0Q29tcG9uZW50LFxyXG4gICAgWmNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWkNoaXBDb21wb25lbnQsXHJcbiAgICBaY29kZWVkaXRvckNvbXBvbmVudCxcclxuICAgIFpkYXRlcmFuZ2VDb21wb25lbnQsXHJcbiAgICBaZGF0ZXRpbWVDb21wb25lbnQsXHJcbiAgICBaZGl2Q29tcG9uZW50LFxyXG4gICAgWmZvcm1Db21wb25lbnQsXHJcbiAgICBaZm9ybWNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBaZ2F1Z2VDb21wb25lbnQsXHJcbiAgICBaZ3JpZENvbXBvbmVudCxcclxuICAgIFppbWdDb21wb25lbnQsXHJcbiAgICBaa2NhcmRDb21wb25lbnQsXHJcbiAgICBabGFiZWxDb21wb25lbnQsXHJcbiAgICBabWZiQ29tcG9uZW50LFxyXG4gICAgWm1vZGFsQ29tcG9uZW50LFxyXG4gICAgWm1vZGFsTW9iaWxlQ29tcG9uZW50LFxyXG4gICAgWm51bWVyaWNDb21wb25lbnQsXHJcbiAgICBacG9zdHNlbGVjdGlucHV0Q29tcG9uZW50LFxyXG4gICAgWnF1ZXJ5YnVpbGRlckNvbXBvbmVudCxcclxuICAgIFpyZXBvcnRDb21wb25lbnQsXHJcbiAgICBac2NoZWR1bGVyQ29tcG9uZW50LFxyXG4gICAgWnNlbGVjdG11bHRpcGxlQ29tcG9uZW50LFxyXG4gICAgWnRhYkNvbXBvbmVudCxcclxuICAgIFp0ZXh0Q29tcG9uZW50LFxyXG4gICAgWnRleHRhcmVhQ29tcG9uZW50LFxyXG4gICAgWnRleHRlZGl0b3JDb21wb25lbnQsXHJcbiAgICBadHJlZUNvbXBvbmVudCxcclxuICAgIFp0cmVlbGlzdENvbXBvbmVudCxcclxuICAgIFp0cmVuZGNhcmRDb21wb25lbnQsXHJcbiAgICBadW5rbm93bkNvbXBvbmVudCxcclxuICAgIFp1ZGZDb21wb25lbnQsXHJcbiAgICBadXBsb2FkQ29tcG9uZW50LFxyXG4gICAgWndvcmtmbG93YnV0dG9uc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBJb25pY1NlbGVjdGFibGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBBY2VFZGl0b3JNb2R1bGUsXHJcbiAgICBGb250QXdlc29tZU1vZHVsZSxcclxuICAgIFF1ZXJ5QnVpbGRlck1vZHVsZSxcclxuICAgIEFyY0dhdWdlTW9kdWxlLFxyXG4gICAgQnV0dG9uc01vZHVsZSxcclxuICAgIENoYXJ0c01vZHVsZSxcclxuICAgIENhbGVuZGFyTW9kdWxlLFxyXG4gICAgRGF0ZUlucHV0c01vZHVsZSxcclxuICAgIERyb3BEb3duc01vZHVsZSxcclxuICAgIEVkaXRvck1vZHVsZSxcclxuICAgIEdyaWRNb2R1bGUsXHJcbiAgICBFeGNlbE1vZHVsZSxcclxuICAgIEluZGljYXRvcnNNb2R1bGUsXHJcbiAgICBJbnRsTW9kdWxlLFxyXG4gICAgSW5wdXRzTW9kdWxlLFxyXG4gICAgU3dpdGNoTW9kdWxlLFxyXG4gICAgVGV4dEJveE1vZHVsZSxcclxuICAgIExhYmVsTW9kdWxlLFxyXG4gICAgTGF5b3V0TW9kdWxlLFxyXG4gICAgUGFuZWxCYXJNb2R1bGUsXHJcbiAgICBUYWJTdHJpcE1vZHVsZSxcclxuICAgIFBvcHVwTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NCYXJNb2R1bGUsXHJcbiAgICBUZWxlcmlrUmVwb3J0aW5nTW9kdWxlLFxyXG4gICAgU2NoZWR1bGVyTW9kdWxlLFxyXG4gICAgVHJlZUxpc3RNb2R1bGUsXHJcbiAgICBUcmVlVmlld01vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBVcGxvYWRNb2R1bGUsXHJcbiAgICBVcGxvYWRzTW9kdWxlLFxyXG4gICAgWkNvcmVNb2R1bGUsXHJcbiAgICBNbWhnbG9iYWxabW9kYWxNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFNjcm9sbGJhclRoZW1lRGlyZWN0aXZlLFxyXG4gICAgRmllbGRFbGVtZW50RGlyZWN0aXZlLFxyXG4gICAgWkdyaWRCaW5kaW5nRGlyZWN0aXZlLFxyXG4gICAgWkdyaWRQb3B1cEFuY2hvckRpcmVjdGl2ZSxcclxuICAgIE9wZW5PbkZvY3VzRGlyZWN0aXZlLFxyXG4gICAgRGF0ZVBhcnNlckZpbHRlciwgLy8gemRhdGV0aW1lIGFkZG9uXHJcbiAgICBFZGl0b3JGaWx0ZXIsIC8vIHpjb2RlIGFkZG9uXHJcbiAgICBEaXZ6TGF5b3V0LCAvLyB6ZGl2IGFkZG9uXHJcbiAgICBFeHBvcnRPcHRpb25zLCAvLyB6cmVwb3J0IGFkZG9uXHJcbiAgICBUYWJGaWx0ZXIsIC8vIHp0YWIgYWRkb25cclxuICAgIERhdGVSYW5nZUZpbHRlckNlbGxDb21wb25lbnQsIC8vIHpncmlkIGFkZG9uXHJcbiAgICBaU2NoZWR1bGVyVG9vbEJhckNvbXBvbmVudCwgLy8genNjaGVkdWxlciBhZGRvblxyXG4gICAgVWloZWFkZXJDb21wb25lbnQsXHJcbiAgICBVaWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaXBhZ2VDb21wb25lbnQsICAgIFxyXG4gICAgVWltZW51Y29udGVudENvbXBvbmVudCxcclxuICAgIFVpbWVudWJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFVpYXBwbWVudWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaWFjdGlvbmJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFVpdmFsaWRhdGlvbm1lc3NhZ2VDb21wb25lbnQsXHJcbiAgICBaQnVsbGV0Q29tcG9uZW50LFxyXG4gICAgWmJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBaY2FyZENvbXBvbmVudCxcclxuICAgIFpjaGFydENvbXBvbmVudCxcclxuICAgIFpjaGVja2JveENvbXBvbmVudCxcclxuICAgIFpDaGlwQ29tcG9uZW50LFxyXG4gICAgWmNvZGVlZGl0b3JDb21wb25lbnQsXHJcbiAgICBaZGF0ZXJhbmdlQ29tcG9uZW50LFxyXG4gICAgWmRhdGV0aW1lQ29tcG9uZW50LFxyXG4gICAgWmRpdkNvbXBvbmVudCxcclxuICAgIFpmb3JtQ29tcG9uZW50LFxyXG4gICAgWmZvcm1jb250cm9sQ29tcG9uZW50LFxyXG4gICAgWmdhdWdlQ29tcG9uZW50LFxyXG4gICAgWmdyaWRDb21wb25lbnQsXHJcbiAgICBaaW1nQ29tcG9uZW50LFxyXG4gICAgWmtjYXJkQ29tcG9uZW50LFxyXG4gICAgWmxhYmVsQ29tcG9uZW50LFxyXG4gICAgWm1mYkNvbXBvbmVudCxcclxuICAgIFptb2RhbENvbXBvbmVudCxcclxuICAgIFptb2RhbE1vYmlsZUNvbXBvbmVudCxcclxuICAgIFpudW1lcmljQ29tcG9uZW50LFxyXG4gICAgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCxcclxuICAgIFpxdWVyeWJ1aWxkZXJDb21wb25lbnQsXHJcbiAgICBacmVwb3J0Q29tcG9uZW50LFxyXG4gICAgWnNjaGVkdWxlckNvbXBvbmVudCxcclxuICAgIFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCxcclxuICAgIFp0YWJDb21wb25lbnQsXHJcbiAgICBadGV4dENvbXBvbmVudCxcclxuICAgIFp0ZXh0YXJlYUNvbXBvbmVudCxcclxuICAgIFp0ZXh0ZWRpdG9yQ29tcG9uZW50LFxyXG4gICAgWnRyZWVDb21wb25lbnQsXHJcbiAgICBadHJlZWxpc3RDb21wb25lbnQsXHJcbiAgICBadHJlbmRjYXJkQ29tcG9uZW50LFxyXG4gICAgWnVua25vd25Db21wb25lbnQsXHJcbiAgICBadWRmQ29tcG9uZW50LFxyXG4gICAgWnVwbG9hZENvbXBvbmVudCxcclxuICAgIFp3b3JrZmxvd2J1dHRvbnNDb21wb25lbnRcclxuICBdLFxyXG4gIGVudHJ5Q29tcG9uZW50czogW1xyXG4gICAgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCwgLy8gemdyaWQgYWRkb25cclxuICAgIFpTY2hlZHVsZXJUb29sQmFyQ29tcG9uZW50LCAvLyB6c2NoZWR1bGVyIGFkZG9uXHJcbiAgICBVaWhlYWRlckNvbXBvbmVudCxcclxuICAgIFVpY29udGVudENvbXBvbmVudCxcclxuICAgIFVpcGFnZUNvbXBvbmVudCxcclxuICAgIFVpbWVudWNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBVaW1lbnVidXR0b25Db21wb25lbnQsXHJcbiAgICBVaWFwcG1lbnVjb250ZW50Q29tcG9uZW50LFxyXG4gICAgVWlhY3Rpb25idXR0b25Db21wb25lbnQsXHJcbiAgICBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgWkJ1bGxldENvbXBvbmVudCxcclxuICAgIFpidXR0b25zQ29tcG9uZW50LFxyXG4gICAgWmNhcmRDb21wb25lbnQsXHJcbiAgICBaY2hhcnRDb21wb25lbnQsXHJcbiAgICBaY2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBaQ2hpcENvbXBvbmVudCxcclxuICAgIFpjb2RlZWRpdG9yQ29tcG9uZW50LFxyXG4gICAgWmRhdGVyYW5nZUNvbXBvbmVudCxcclxuICAgIFpkYXRldGltZUNvbXBvbmVudCxcclxuICAgIFpkaXZDb21wb25lbnQsXHJcbiAgICBaZm9ybUNvbXBvbmVudCxcclxuICAgIFpmb3JtY29udHJvbENvbXBvbmVudCxcclxuICAgIFpnYXVnZUNvbXBvbmVudCxcclxuICAgIFpncmlkQ29tcG9uZW50LFxyXG4gICAgWmltZ0NvbXBvbmVudCxcclxuICAgIFprY2FyZENvbXBvbmVudCxcclxuICAgIFpsYWJlbENvbXBvbmVudCxcclxuICAgIFptZmJDb21wb25lbnQsXHJcbiAgICBabW9kYWxDb21wb25lbnQsXHJcbiAgICBabW9kYWxNb2JpbGVDb21wb25lbnQsXHJcbiAgICBabnVtZXJpY0NvbXBvbmVudCxcclxuICAgIFpwb3N0c2VsZWN0aW5wdXRDb21wb25lbnQsXHJcbiAgICBacXVlcnlidWlsZGVyQ29tcG9uZW50LFxyXG4gICAgWnJlcG9ydENvbXBvbmVudCxcclxuICAgIFpzY2hlZHVsZXJDb21wb25lbnQsXHJcbiAgICBac2VsZWN0bXVsdGlwbGVDb21wb25lbnQsXHJcbiAgICBadGFiQ29tcG9uZW50LFxyXG4gICAgWnRleHRDb21wb25lbnQsXHJcbiAgICBadGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBadGV4dGVkaXRvckNvbXBvbmVudCxcclxuICAgIFp0cmVlQ29tcG9uZW50LFxyXG4gICAgWnRyZWVsaXN0Q29tcG9uZW50LFxyXG4gICAgWnRyZW5kY2FyZENvbXBvbmVudCxcclxuICAgIFp1bmtub3duQ29tcG9uZW50LFxyXG4gICAgWnVkZkNvbXBvbmVudCxcclxuICAgIFp1cGxvYWRDb21wb25lbnQsXHJcbiAgICBad29ya2Zsb3didXR0b25zQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1vZGFsU2VydmljZVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTW1oZ2xvYmFsRHluYW1pY2Zvcm1Nb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -418,18 +418,12 @@ export class ZComponentDebugService {
|
|
|
418
418
|
// delete dataItem._DataValue;
|
|
419
419
|
const initialModel = {
|
|
420
420
|
Name: 'Name', DisplayName: 'Name', Value: 'Name', Type: 'text',
|
|
421
|
-
enableHiding: true,
|
|
422
421
|
gridColVisible: true,
|
|
423
422
|
width: 150,
|
|
424
423
|
minWidth: 100,
|
|
425
|
-
cellFilter: "",
|
|
426
|
-
filterCellFiltered: false,
|
|
427
424
|
enableFiltering: true,
|
|
428
425
|
enableSorting: true,
|
|
429
|
-
enablePinning: true,
|
|
430
426
|
pinnedLeft: false,
|
|
431
|
-
pinnedRight: false,
|
|
432
|
-
UpdateOnBlur: true,
|
|
433
427
|
PlaceHolder: "Name",
|
|
434
428
|
IsRequired: false,
|
|
435
429
|
MinLength: 2,
|
|
@@ -439,7 +433,6 @@ export class ZComponentDebugService {
|
|
|
439
433
|
ReadOnly: false,
|
|
440
434
|
ShowLabel: true,
|
|
441
435
|
Visible: true,
|
|
442
|
-
AppendDivClearFix: false,
|
|
443
436
|
};
|
|
444
437
|
const zmodel = {
|
|
445
438
|
nodeModel: JSON.stringify(initialModel, null, 2)
|
|
@@ -630,4 +623,4 @@ ZComponentDebugService.ctorParameters = () => [
|
|
|
630
623
|
{ type: ToastService },
|
|
631
624
|
{ type: WebApiService }
|
|
632
625
|
];
|
|
633
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS2xELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsMkNBQTJDO0FBQzNDLE9BQU8sRUFDUSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQ2pFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQ3pELE1BQU0sRUFDZixNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3pCLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDVSxNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLGFBQTRCO1FBTjVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7SUFLSixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWEsRUFBRSxXQUF3QjtRQUMzRCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHO1lBQ25CLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsYUFBYSxFQUFFLENBQUM7WUFDaEIsd0JBQXdCLEVBQUUsRUFBRTtZQUM1QixtQkFBbUIsRUFBRSxDQUFDO1NBQ3ZCLENBQUM7UUFDRixLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDOUIsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUdNLGVBQWUsQ0FBQyxhQUE0QixFQUFFLEVBQU87UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3BCLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUN0QjtRQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDakIsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQ25CLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0I7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUNmLHdEQUF3RDtZQUN4RCxNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDO1lBQ3pELE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3ZCLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSztZQUNoQixXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDcEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0Msb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUMvQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixzQkFBc0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDcEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3BELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUUsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FDN0Qsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxJQUFJLENBQUMsS0FBSyxFQUNWLHVCQUF1QixDQUN4QjtZQUNELDBCQUEwQixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDeEMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0QsOEJBQThCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FDaEUscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxJQUFJLENBQUMsS0FBSyxFQUNWLDBCQUEwQixDQUMzQjtZQUNELDZCQUE2QixFQUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQzdFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1osQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDekQ7UUFFRCxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBNEIsRUFBRSxFQUFFLENBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDbEMsQ0FBQztRQUNGLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkgsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxlQUFlLENBQUMsRUFBTztRQUM3QixNQUFNLENBQUMsR0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUVsQyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0QsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVksRUFBRSxZQUFvQjtRQUN2RCxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFlBQW9CO1FBQzdDLE1BQU0sQ0FBQyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQix1Q0FBdUM7WUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtnQkFDZixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO2FBQ3JELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsWUFBb0I7UUFDN0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xFLFNBQVMsQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtZQUM5QiwrQ0FBK0M7WUFDL0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO2dCQUNmLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7YUFDckQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFHTyxZQUFZLENBQUMsS0FBNEIsRUFBRSxLQUFhLEVBQUUsRUFBTztRQUN2RSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNyRSxPQUFPO1NBQ1I7UUFDRCxpREFBaUQ7UUFDakQsSUFBSSxRQUFRLENBQUM7UUFFYixJQUFJO1lBQ0YsUUFBUSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDaEQsRUFBRSxFQUNGLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztZQUNGLHVEQUF1RDtTQUN4RDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FDViw0QkFBNEIsRUFDNUIsS0FBSyxDQUFDLE1BQU0sRUFDWixZQUFZLEVBQ1osS0FBSyxDQUNOLENBQUM7U0FDSDtRQUVELG1CQUFtQjtRQUNuQixJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsT0FBTzthQUNSO1lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO2dCQUNwQyxtREFBbUQ7Z0JBQ25ELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLFlBQVk7Z0JBQ1osK0NBQStDO2dCQUMvQywwQ0FBMEM7Z0JBQzFDLDJDQUEyQztnQkFDM0Msb0RBQW9EO2dCQUNwRCwwQ0FBMEM7Z0JBRTFDLHVDQUF1QztnQkFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87YUFDakc7U0FDRjthQUFNLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtnQkFDcEMsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO29CQUN4QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM1QixPQUFPO2lCQUNSO2dCQUVELCtDQUErQztnQkFDL0Msc0RBQXNEO2dCQUN0RCwyQ0FBMkM7Z0JBQzNDLG9EQUFvRDtnQkFDcEQsMENBQTBDO2dCQUMxQyxvREFBb0Q7Z0JBRXBELElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDdkIsdUNBQXVDO29CQUV2QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JILE9BQU87aUJBQ1I7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVix5QkFBeUIsRUFDekIsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixLQUFLLENBQUMsTUFBTSxDQUNiLENBQUM7YUFDSDtZQUNELCtEQUErRDtTQUNoRTthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FDVixxQ0FBcUMsRUFDckMsS0FBSyxDQUFDLE1BQU0sRUFDWixXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxLQUFVO1FBQzNDLHNEQUFzRDtRQUN0RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxtQkFBbUI7Z0JBQ3RCLE1BQU0sY0FBYyxHQUFHLG1DQUFtQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsTUFBTTtZQUNSLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1DQUFtQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixZQUFZO1FBQ1osa0ZBQWtGO1FBQ2xGLHFHQUFxRztRQUNyRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDL0MsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sWUFBWTtRQUNqQixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNGLElBQUksZUFBZSxFQUFFO1lBQ25CLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsU0FBbUMsRUFBRSxVQUFrQixFQUFFLE1BQWMsRUFDM0YsRUFBTyxFQUFFLFFBQWEsRUFBRSxRQUFpQjtRQUV6QyxNQUFNLFNBQVMsR0FBRztZQUNoQixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDeEIsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3ZCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN4QixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM1QixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRTtZQUNwQyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRTtZQUN0QyxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUNuQyxFQUFFLElBQUksRUFBRSxnQ0FBZ0MsRUFBRTtZQUMxQyxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRTtZQUM3QywrQ0FBK0M7WUFDL0MsNkJBQTZCO1lBQzdCLDRCQUE0QjtZQUM1QixnREFBZ0Q7U0FDakQsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRztRQUVELElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDOUIsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNqQzthQUFNLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDMUMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQVUsRUFBRSxLQUFhLEVBQUUsRUFBTztRQUMxRCx3REFBd0Q7UUFDeEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEVBQXlCO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJO1lBQ0YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QywyQkFBMkI7WUFDM0IsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEU7UUFBQyxXQUFNO1lBQ04sUUFBUSxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsRUFBdUI7UUFDOUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNsQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN4QjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxDQUNMLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNoQixNQUFNO1lBQ04sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ2hCLE1BQU07WUFDTixhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVLLFdBQVcsQ0FBQyxLQUE0Qjs7WUFDNUMsWUFBWTtZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FDcEQscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxJQUFJLEVBQ0osSUFBSSxDQUNMLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3JDLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBRztnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM3QyxDQUFDO1lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQXdCLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxTQUFTLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRTtvQkFDdkMsT0FBTztpQkFDUjtnQkFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDakIsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNuQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztpQkFDdEI7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekUsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixrREFBa0Q7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFTyxjQUFjLENBQUMsT0FBWSxFQUFFLFNBQWMsRUFBRSxLQUFhO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLElBQUksU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxPQUFPLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUNoRDtZQUNELFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUNwQztJQUNILENBQUM7SUFJTyxjQUFjLENBQUMsT0FBWSxFQUFFLFNBQWMsRUFBRSxLQUFhO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDbEQsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztpQkFDckM7Z0JBQ0QsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QztpQkFBTTtnQkFDTCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLFNBQWMsRUFBRSxLQUFhO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRDthQUFNO1lBQ0wsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUF5QjtRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sRUFBRSxHQUEwQjtZQUNoQyxJQUFJLEVBQUUsRUFBRTtZQUNSLE9BQU8sRUFBRSxFQUFFO1lBQ1gsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1lBQ1IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVhLFNBQVMsQ0FBQyxFQUF5Qjs7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUNwRCxxQkFBcUIsRUFDckIsV0FBVyxFQUNYLElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQztZQUNGLCtDQUErQztZQUMvQyx3Q0FBd0M7WUFDeEMsOEJBQThCO1lBQzlCLE1BQU0sWUFBWSxHQUFHO2dCQUNuQixJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTTtnQkFDOUQsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixLQUFLLEVBQUUsR0FBRztnQkFDVixRQUFRLEVBQUUsR0FBRztnQkFDYixVQUFVLEVBQUUsRUFBRTtnQkFDZCxrQkFBa0IsRUFBRSxLQUFLO2dCQUN6QixlQUFlLEVBQUUsSUFBSTtnQkFDckIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixVQUFVLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxFQUFFO2dCQUNiLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxzQ0FBc0M7Z0JBQ2hELFFBQVEsRUFBRSxLQUFLO2dCQUNmLFNBQVMsRUFBRSxJQUFJO2dCQUNmLE9BQU8sRUFBRSxJQUFJO2dCQUNiLGlCQUFpQixFQUFFLEtBQUs7YUFDekIsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHO2dCQUNiLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ2pELENBQUM7WUFFRiw0RkFBNEY7WUFDNUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBd0IsRUFBRSxFQUFFO2dCQUMzQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFO29CQUN2QyxPQUFPO2lCQUNSO2dCQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO29CQUNqQixPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2lCQUN0QjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkQsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLGtEQUFrRDtZQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVPLFlBQVksQ0FBQyxFQUF5QjtRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUNuRDtZQUNFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFpQjtZQUNwRCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBaUI7U0FDcEQsQ0FBQzthQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFpQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFO1lBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFO1lBQ2IsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRSxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVELE9BQU87U0FDUjtRQUVELEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQ2IsSUFBSTtRQUNILHdCQUF3QjtRQUN4QixtREFBbUQ7UUFDbkQsMENBQTBDO1FBQzFDLE1BQU07UUFDTixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDaEMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQ3pDLEtBQUssQ0FBQyxNQUFNLENBQ2I7aUJBQ0UsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FDdkUsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUI7WUFDRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsa0NBQWtDO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO2FBQ0osU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUdELDREQUE0RDtJQUNyRCxnQkFBZ0I7UUFDckIsTUFBTSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksd0JBQXdCLEVBQUU7WUFDNUIsd0JBQXdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsS0FBVTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBRXhDLGtCQUFrQjtRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTthQUM1QixHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMzRyxHQUFHLENBQUMsQ0FBTSxHQUFHLEVBQUMsRUFBRTtZQUNkLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFFMUIsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFO2dCQUN0QixRQUFRLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQzthQUMvQjtZQUVELElBQUksR0FBRyxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7b0JBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksR0FBRyxDQUFDLHNCQUFzQixFQUFFO2dCQUM5QixHQUFHLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBa0IsRUFBRSxFQUFFO29CQUN4RCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDOUUsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELE1BQU0sV0FBVyxHQUFHO2dCQUNsQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUN6RCxrQkFBa0IsRUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUMvRCx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTTthQUNsRixDQUFDO1lBRUYsOEJBQThCO1lBQzlCLE1BQU0sV0FBVyxHQUFHO2dCQUNsQixZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDcEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ3hCLGNBQWMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDakMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO2dCQUNqQyxlQUFlLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQ2xDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxVQUFVO2dCQUN4QyxXQUFXLEVBQUUsU0FBUyxDQUFDLEdBQUc7Z0JBQzFCLFlBQVksRUFBRSxTQUFTLENBQUMsSUFBSTthQUM3QixDQUFDO1lBRUYsSUFBSSxlQUFlLEdBQUc7Z0JBQ3BCLGNBQWMsRUFBRSxNQUFNO2dCQUN0QixnQkFBZ0IsRUFBRSxNQUFNO2dCQUN4QixnQkFBZ0IsRUFBRSxNQUFNO2FBQ3pCLENBQUM7WUFFRixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7Z0JBQ2hDLGVBQWUsR0FBRztvQkFDaEIsY0FBYyxFQUFFLFdBQVcsQ0FBQyxFQUFFO29CQUM5QixnQkFBZ0IsRUFBRSxXQUFXLENBQUMsSUFBSTtvQkFDbEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLElBQUk7aUJBQ25DLENBQUE7YUFDRjtZQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUVqRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUNwRCwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQztZQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3pILEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUF3QixFQUFFLEVBQUU7Z0JBQzNDLElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7b0JBQ3ZDLE9BQU87aUJBQ1I7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBR0QsYUFBYSxDQUFDLEdBQW1CLEVBQUUsVUFBa0I7UUFDbkQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEM7YUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO2dCQUNqQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFDOUUsR0FBRyxVQUFVLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQzNDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ25GO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Ozs7WUF0dEJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckJRLE1BQU07WUFZQSxZQUFZO1lBQUUsV0FBVztZQUFFLFlBQVk7WUFDcEQsa0JBQWtCO1lBQUUsWUFBWTtZQUFFLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJb25pY1NlbGVjdGFibGVDb21wb25lbnQgfSBmcm9tICdpb25pYy1zZWxlY3RhYmxlJztcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mLCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIEFsZXJ0QnV0dG9uLCBBbGVydFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBGaWVsZFNlcnZpY2UsIE1FU1NBR0VUWVBFLFxyXG4gIFJlc291cmNlQXBpU2VydmljZSwgVG9hc3RTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsXHJcbiAgWkZpZWxkLCBaR3JvdXAsIFpUcmVlVGVtcGxhdGVQYXJhbXNcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4vbWFpbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1vZGFsUmVzcG9uc2UgfSBmcm9tICdtbWhnbG9iYWwtem1vZGFsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFpDb21wb25lbnREZWJ1Z1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBzY29wZTogYW55O1xyXG4gIHByaXZhdGUgbWFpblNlcnZpY2U6IE1haW5TZXJ2aWNlO1xyXG5cclxuICBnZXQgZGVidWcoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnNjb3BlLmdyb3VwLl9kZWJ1ZztcclxuICB9XHJcblxyXG4gIGdldCBncm91cCgpOiBaR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuc2NvcGUuZ3JvdXA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Jbml0RGVidWdnZXIoZ3JvdXA6IFpHcm91cCwgbWFpblNlcnZpY2U6IE1haW5TZXJ2aWNlKSB7XHJcbiAgICBncm91cC5fZGVidWcgPSBuZXcgWkdyb3VwKHRydWUpO1xyXG4gICAgZ3JvdXAuX2lzRGVidWdnaW5nID0gdHJ1ZTtcclxuICAgIGdyb3VwLl9kZWJ1Zy56RGF0YSA9IHtcclxuICAgICAgY29sbGVjdGVkQWN0aXZpdGllczogW10sXHJcbiAgICAgIGFjdGl2aXR5Q291bnQ6IDAsXHJcbiAgICAgIGNvbGxlY3RlZFdvcmtmbG93QnV0dG9uczogW10sXHJcbiAgICAgIHdvcmtmbG93QnV0dG9uQ291bnQ6IDBcclxuICAgIH07XHJcbiAgICBncm91cC5fZGVidWcuekNvbXBvbmVudHMgPSB7fTtcclxuICAgIGdyb3VwLmlzTGlzdEZvcm0gPSBmYWxzZTtcclxuICAgIHRoaXMubWFpblNlcnZpY2UgPSBtYWluU2VydmljZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb25TdGFydERlYnVnZ2VyKGZpZWxkRWxlbWVudHM6IEFycmF5PFpGaWVsZD4sIG1lOiBhbnkpIHtcclxuICAgIHRoaXMuc2NvcGUgPSBtZTtcclxuICAgIGlmICghbWUuZ3JvdXAuX2RlYnVnKSB7XHJcbiAgICAgIG1lLmdyb3VwLl9kZWJ1ZyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGQ6IFpHcm91cCA9IG1lLmdyb3VwLl9kZWJ1ZztcclxuICAgIG1lLmZvcm0gPSBtZS50b0Zvcm1Hcm91cChmaWVsZEVsZW1lbnRzKTtcclxuICAgIGQuZm9ybSA9IG1lLmZvcm07XHJcbiAgICBpZiAobWUuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIG1lLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZCwge1xyXG4gICAgICAvLyB6RGF0YTogeyBjb2xsZWN0ZWRBY3Rpdml0aWVzOiBbXSwgYWN0aXZpdHlDb3VudDogMCB9LFxyXG4gICAgICB6TW9kZWw6IHt9LFxyXG4gICAgICBzdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0PFpDb21wb25lbnRPdXRwdXRFdmVudD4obnVsbCksXHJcbiAgICAgIGlzRWRpdDogdHJ1ZSxcclxuICAgICAgaXNOZXc6IGZhbHNlLFxyXG4gICAgICBfZGVidWc6IG1lLmdyb3VwLl9kZWJ1ZyxcclxuICAgICAgX2dyb3VwOiBtZS5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVUkw6IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZmllbGQnKSxcclxuICAgICAgdHJlZUl0ZW1UZW1wbGF0ZTogdGhpcy50cmVlSXRlbVRlbXBsYXRlLFxyXG4gICAgICBvbkl0ZW1DbGljazogdGhpcy5vbkl0ZW1DbGljayxcclxuICAgICAgb25UcmVlTm9kZUNoYW5nZTogdGhpcy5vblRyZWVOb2RlQ2hhbmdlLFxyXG4gICAgICBvbkFkZE5vZGU6IHRoaXMub25BZGROb2RlLFxyXG4gICAgICBvblJlbW92ZU5vZGU6IHRoaXMub25SZW1vdmVOb2RlLFxyXG4gICAgICB0cmVlTm9kZXNFeHBhbmRBbGw6IHRoaXMudHJlZU5vZGVzRXhwYW5kQWxsLFxyXG4gICAgICB0cmVlTm9kZXNDb2xsYXBzZUFsbDogdGhpcy50cmVlTm9kZXNDb2xsYXBzZUFsbCxcclxuICAgICAgcmVmcmVzaFRyZWVNb2RlbDogdGhpcy5yZWZyZXNoVHJlZU1vZGVsLFxyXG4gICAgICBhZGROb2RlOiB0aGlzLmFkZE5vZGUsXHJcbiAgICAgIHJlZnJlc2hBY3Rpdml0eUxvZ0RhdGE6IHRoaXMuTG9hZEdyaWREYXRhLmJpbmQodGhpcyksXHJcbiAgICAgIEdvVG9GaWVsZEVsZW1lbnQ6IHRoaXMuZ290b0ZpZWxkRWxlbWVudC5iaW5kKHRoaXMpLFxyXG4gICAgICBMaXN0V2F0Y2hOYW1lOiB0aGlzLmxpc3RXYXRjaE5hbWUsXHJcbiAgICAgIG9uQ2hhbmdlV2F0Y2hOYW1lOiB0aGlzLm9uQ2hhbmdlV2F0Y2hOYW1lLmJpbmQodGhpcyksXHJcbiAgICAgIGdldFdhdGNoTmFtZTogdGhpcy5nZXRXYXRjaE5hbWUuYmluZCh0aGlzKSxcclxuICAgICAgZmllbGRFbGVtZW50b25FZGl0b3JDb2RlQ2hhbmdlOiB0aGlzLmZpZWxkRWxlbWVudG9uRWRpdG9yQ29kZUNoYW5nZS5iaW5kKHRoaXMpLFxyXG4gICAgICBncmlkQWN0aXZpdHlMb2dDb2x1bW5GaWVsZHM6IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUoXHJcbiAgICAgICAgJ2RlYnVnQWN0aXZpdHlMb2cnLFxyXG4gICAgICAgIFwiRm9ybUZpZWxkXCIsXHJcbiAgICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgICBcImRlYnVnQWN0aXZpdHlMb2dGaWVsZFwiXHJcbiAgICAgICksXHJcbiAgICAgIGdyaWRBY3Rpdml0eUxvZ09uSXRlbUNsaWNrOiB0aGlzLmdyaWRBY3Rpdml0eUxvZ09uSXRlbUNsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIHVwZGF0ZU1vZGVsOiB0aGlzLnVwZGF0ZU1vZGVsLmJpbmQodGhpcyksXHJcbiAgICAgIHJlZnJlc2hXb3JrZmxvd0J1dHRvbkRhdGE6IHRoaXMubG9hZFdvcmtmbG93RGF0YS5iaW5kKHRoaXMpLFxyXG4gICAgICBncmlkV29ya2Zsb3dCdXR0b25Db2x1bW5GaWVsZHM6IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUoXHJcbiAgICAgICAgJ2RlYnVnV29ya2Zsb3dCdXR0b24nLFxyXG4gICAgICAgICdGb3JtRmllbGQnLFxyXG4gICAgICAgIHRoaXMuZ3JvdXAsXHJcbiAgICAgICAgXCJkZWJ1Z1dvcmtmbG93QnV0dG9uRmllbGRcIlxyXG4gICAgICApLFxyXG4gICAgICBncmlkV29ya2Zsb3dCdXR0b25Pbkl0ZW1DbGljazogdGhpcy5ncmlkV29ya2Zsb3dCdXR0b25Pbkl0ZW1DbGljay5iaW5kKHRoaXMpXHJcbiAgICB9KTtcclxuICAgIGlmICghZC56RGF0YSkge1xyXG4gICAgICBkLnpEYXRhID0geyBjb2xsZWN0ZWRBY3Rpdml0aWVzOiBbXSwgYWN0aXZpdHlDb3VudDogMCB9O1xyXG4gICAgfVxyXG5cclxuICAgIG1lLnN1YnNjcmlwdGlvbiA9IGQuc3ViamVjdC5zdWJzY3JpYmUoKGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpID0+XHJcbiAgICAgIHRoaXMuc3ViamVjdEV2ZW50KGV2ZW50LCBkLCB0aGlzKVxyXG4gICAgKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0RmllbGRzRGl2Q2xhc3ModGhpcy5ncm91cC5fcHJvamVjdE5hbWUsIHRoaXMuZ3JvdXAuZmllbGROYW1lLCBmaWVsZEVsZW1lbnRzLCB0aGlzLmF1dGhTZXJ2aWNlKTtcclxuICAgIHJldHVybiB0aGlzLmxvYWREZWJ1Z1pNb2RlbChtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWREZWJ1Z1pNb2RlbChtZTogYW55KSB7XHJcbiAgICBjb25zdCBkOiBaR3JvdXAgPSBtZS5ncm91cC5fZGVidWc7XHJcblxyXG4gICAgY29uc3QgZG93bmxvYWRMaXN0ID0gW107XHJcbiAgICBkb3dubG9hZExpc3QucHVzaCh0aGlzLmdldFByb2plY3RJZCgpKTtcclxuXHJcbiAgICBjb25zdCBmb3JtVHlwZSA9IG1lLmdyb3VwLmlzTGlzdEZvcm0gPyAnTGlzdEZpZWxkJyA6ICdGb3JtRmllbGQnO1xyXG4gICAgY29uc3QgZmllbGROYW1lID0gbWUuZ3JvdXAuZmllbGROYW1lO1xyXG4gICAgY29uc3QgZmllbGR6TW9kZWwgPSB0aGlzLmdldEZpZWxkek1vZGVsKGZvcm1UeXBlLCBmaWVsZE5hbWUpO1xyXG4gICAgZG93bmxvYWRMaXN0LnB1c2goZmllbGR6TW9kZWwpO1xyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihkb3dubG9hZExpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcm9qZWN0SWQoKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5kZWJ1ZztcclxuICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgncHJvamVjdHNVUkwnKTtcclxuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuZ2V0QXBpKHVybCwge30sIGQuekRhdGEsICdQcm9qZWN0T3B0aW9ucycsIG51bGwsIGQsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGR6TW9kZWwodHlwZTogc3RyaW5nLCBhY3Rpdml0eU5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdGb3JtRmllbGQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1GaWVsZHpNb2RlbChhY3Rpdml0eU5hbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEZpZWxkek1vZGVsKGFjdGl2aXR5TmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1GaWVsZHpNb2RlbChhY3Rpdml0eU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZDogWkdyb3VwID0gdGhpcy5kZWJ1ZztcclxuICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZmllbGQnKTtcclxuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodXJsLCB7IG5hbWU6IGFjdGl2aXR5TmFtZSwgdHlwZTogJ0Zvcm1GaWVsZCcgfSkucGlwZShcclxuICAgICAgdGFwKChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3BEYXRhOiAnLCByZXNwRGF0YSk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkLnpNb2RlbCwgcmVzcERhdGEpO1xyXG4gICAgICAgIGQuZm9ybS5wYXRjaFZhbHVlKGQuek1vZGVsKTtcclxuICAgICAgICBkLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICBjb25zdCBmaWVsZHMgPSBKU09OLnBhcnNlKGQuek1vZGVsLkNvZGUpO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZCwge1xyXG4gICAgICAgICAgdHJlZU1vZGVsOiBaQ29tcG9uZW50SGVscGVyLmNvbnZlcnRUcmVlTW9kZWwoZmllbGRzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGlzdEZpZWxkek1vZGVsKGFjdGl2aXR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5kZWJ1ZztcclxuICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZmllbGRzTWFwcGluZycpO1xyXG4gICAgY29uc3QgdXJsMiA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZmllbGQnKTtcclxuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodXJsLCB7IG5hbWU6IGFjdGl2aXR5TmFtZSB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKGZpZWxkTWFwcGluZzogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2ZpZWxkTWFwcGluZzogJywgZmllbGRNYXBwaW5nKTtcclxuICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBHZXQkKHVybDIsIHsgaWQ6IGZpZWxkTWFwcGluZy5GaWVsZEVsZW1lbnRNYXN0ZXJJZCB9KTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZC56TW9kZWwsIHJlc3BEYXRhKTtcclxuICAgICAgICBkLmZvcm0ucGF0Y2hWYWx1ZShkLnpNb2RlbCk7XHJcbiAgICAgICAgZC5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgY29uc3QgZmllbGRzID0gSlNPTi5wYXJzZShkLnpNb2RlbC5Db2RlKTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKGQsIHtcclxuICAgICAgICAgIHRyZWVNb2RlbDogWkNvbXBvbmVudEhlbHBlci5jb252ZXJ0VHJlZU1vZGVsKGZpZWxkcylcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN1YmplY3RFdmVudChldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50LCBncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFldmVudC50YXJnZXQgfHwgZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoXCJtb2RhbEdyb3VwLlwiKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIioqIERlYnVnIC0gU3ViamVjdEV2ZW50XCIsIGV2ZW50KTtcclxuICAgIGxldCBjYWxsRnVuYztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjYWxsRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICBtZSxcclxuICAgICAgICBldmVudC50YXJnZXRcclxuICAgICAgKTtcclxuICAgICAgLy8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKGV2ZW50LlRhcmdldCwgZ3JvdXApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIFwiRXJyb3Igd2hlbiBnZXRHcm91cFZhbHVlOiBcIixcclxuICAgICAgICBldmVudC50YXJnZXQsXHJcbiAgICAgICAgXCIgPiBFcnJvcjogXCIsXHJcbiAgICAgICAgZXJyb3JcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjYWxsRnVuYyhldmVudCk7XHJcbiAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQobWUpO1xyXG4gICAgICBuZXdGdW5jKGV2ZW50LCBncm91cCwgbWUpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgaWYgKGV2ZW50LnR5cGUuZW5kc1dpdGgoXCJvbk5hdmlnYXRlVG9cIikpIHtcclxuICAgICAgICBjb25zdCBuVXJsID0gZXZlbnQudGFyZ2V0LnJlcGxhY2UoXCIvOmlkXCIsIFwiL1wiICsgZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW25VcmxdKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChldmVudC50eXBlID09PSBcInpncmlkLWNlbGxDbGlja1wiKSB7XHJcbiAgICAgICAgLy8gKGNhbGxGdW5jLnN0YXJ0c1dpdGgoJ2VkaXQnKSkgeyAgemdyaWQtY2VsbENsaWNrXHJcbiAgICAgICAgY29uc3QgY05hbWUgPSBjYWxsRnVuYy5zbGljZSg0KTtcclxuICAgICAgICAvLyBkZWJ1Z2dlcjtcclxuICAgICAgICAvLyBjb25zdCBtb2RhbEdyb3VwUGFyYW06IE1vZGFsUGFnZVBhcmFtcyA9IHt9O1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5jb250cm9sbGVyTmFtZSA9IGNOYW1lO1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5yZWZlcklkID0gZXZlbnQuZGF0YS5JZDtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0uY29sRmllbGRzJCA9IGV2ZW50LmNvbHVtbkZpZWxkcyQ7XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLnBhcmVudEdyb3VwID0gbWUuZ3JvdXA7XHJcblxyXG4gICAgICAgIC8vIHRoaXMub3Blbk1vZGFsRm9ybShtb2RhbEdyb3VwUGFyYW0pO1xyXG4gICAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2hvd3pNb2RhbChldmVudC5jb2x1bW5GaWVsZHMkIHx8IGNOYW1lLCBncm91cCwgJycsIHt9LCBldmVudC5kYXRhLklkKTsgLy8gVE9ET1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJ6Z3JpZC1jZWxsQ2xpY2tcIikge1xyXG4gICAgICAgIGlmIChjYWxsRnVuYy5uYXZpZ2F0ZVVybCkge1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gY2FsbEZ1bmMubmF2aWdhdGVVcmwucmVwbGFjZShcIjppZFwiLCBldmVudC5kYXRhLklkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IG1vZGFsR3JvdXBQYXJhbTogTW9kYWxQYWdlUGFyYW1zID0ge307XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLmNvbnRyb2xsZXJOYW1lID0gY2FsbEZ1bmMuY3RybE5hbWU7XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLnJlZmVySWQgPSBldmVudC5kYXRhLklkO1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5jb2xGaWVsZHMkID0gZXZlbnQuY29sdW1uRmllbGRzJDtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0ucGFyZW50R3JvdXAgPSBtZS5ncm91cDtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0uZm9ybUhlYWRlciA9IGNhbGxGdW5jLmZvcm1IZWFkZXI7XHJcblxyXG4gICAgICAgIGlmIChjYWxsRnVuYy5mb3JtSGVhZGVyKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLm9wZW5Nb2RhbEZvcm0obW9kYWxHcm91cFBhcmFtKTtcclxuXHJcbiAgICAgICAgICB0aGlzLm1haW5TZXJ2aWNlLnNob3d6TW9kYWwoZXZlbnQuY29sdW1uRmllbGRzJCB8fCBjYWxsRnVuYy5jdHJsTmFtZSwgZ3JvdXAsIGNhbGxGdW5jLmZvcm1IZWFkZXIsIHt9LCBldmVudC5kYXRhLklkKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgXCJJbnZhbGlkIGNhbGxGdW5jIHR5cGU6IFwiLFxyXG4gICAgICAgICAgY2FsbEZ1bmMsXHJcbiAgICAgICAgICBcIiBldmVudC5UYXJnZXQ6IFwiLFxyXG4gICAgICAgICAgZXZlbnQudGFyZ2V0XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLm9wZW5Nb2RhbEZvcm1CeUNvbXBvbmVudChjYWxsRnVuYy50eXBlLCBldmVudC5EYXRhLklkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBcIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIGluIGdyb3VwIGZvcjogXCIsXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LFxyXG4gICAgICAgIFwiLCBFdmVudDogXCIsXHJcbiAgICAgICAgZXZlbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JpZEFjdGl2aXR5TG9nT25JdGVtQ2xpY2soZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dyaWRBY3Rpdml0eUxvZ09uSXRlbUNsaWNrOiAnLCBldmVudCk7XHJcbiAgICBjb25zdCByZWMgPSBldmVudC5kYXRhSXRlbTtcclxuICAgIHN3aXRjaCAocmVjLnR5cGUpIHtcclxuICAgICAgY2FzZSAnTGlzdEZpZWxkJzpcclxuICAgICAgY2FzZSAnRm9ybUZpZWxkJzpcclxuICAgICAgICB0aGlzLmdldEZpZWxkek1vZGVsKHJlYy50eXBlLCByZWMuYWN0aXZpdHlOYW1lKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RUYWIoMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1Jlc291cmNlU2VydmVyQVBJJzpcclxuICAgICAgICBjb25zdCB3YXRjaE5hbWVWYWx1ZSA9ICdfZGVidWcuekRhdGEuY29sbGVjdGVkQWN0aXZpdGllc1snICsgKHJlYy5pbmRleCAtIDEpICsgJ10ucmVmZXJlbmNlJztcclxuICAgICAgICB0aGlzLnNldFdhdGNoTmFtZVZhbHVlKHdhdGNoTmFtZVZhbHVlKTtcclxuICAgICAgICB0aGlzLnNlbGVjdFRhYigxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnSHR0cEdldCQnOlxyXG4gICAgICBjYXNlICdIdHRwUG9zdCQnOlxyXG4gICAgICBjYXNlICdIdHRwUHV0JCc6XHJcbiAgICAgIGNhc2UgJ0h0dHBEZWxldGUkJzpcclxuICAgICAgICB0aGlzLnNldFdhdGNoTmFtZVZhbHVlKCdfZGVidWcuekRhdGEuY29sbGVjdGVkQWN0aXZpdGllc1snICsgKHJlYy5pbmRleCAtIDEpICsgJ10nKTtcclxuICAgICAgICB0aGlzLnNlbGVjdFRhYigxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0VGFiKGluZGV4OiBudW1iZXIpIHtcclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgLy8gdGhpcy5kZWJ1Zy56Q29tcG9uZW50c1tcInp0YWJfZGVidWdnZXJUYWJzXCJdLnN0YXRlLmxhc3RTZWxlY3RlZFRhYkluZGV4ID0gaW5kZXg7XHJcbiAgICAvLyBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmRlYnVnLCAnenRhYl9kZWJ1Z2dlclRhYnMnKS5zdGF0ZS5sYXN0U2VsZWN0ZWRUYWJJbmRleCA9IGluZGV4O1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5nZXRDb21wb25lbnQodGhpcy5kZWJ1ZywgJ3p0YWJfZGVidWdnZXJUYWJzJykuc2VsZWN0VGFiKGluZGV4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0V2F0Y2hOYW1lVmFsdWUobmV3VmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWJ1Zy56TW9kZWxbJ0RlYnVnV2F0Y2hOYW1lJ10gPSBuZXdWYWx1ZTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSgnV2F0Y2hOYW1lJywgbmV3VmFsdWUsIHRoaXMuZGVidWcsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRHcmlkRGF0YSgpIHtcclxuICAgIGNvbnN0IGFjdGl2aXR5TG9nR3JpZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Q29tcG9uZW50KHRoaXMuZGVidWcsICd6Z3JpZF9BY3Rpdml0eUxvZ0dyaWQnKTtcclxuICAgIGlmIChhY3Rpdml0eUxvZ0dyaWQpIHtcclxuICAgICAgYWN0aXZpdHlMb2dHcmlkLnNldERhdGEodGhpcy5kZWJ1Zy56RGF0YS5jb2xsZWN0ZWRBY3Rpdml0aWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdFdhdGNoTmFtZShjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudCwgc2VhcmNoVGV4dDogc3RyaW5nLCBwYWdlTm86IG51bWJlcixcclxuICAgIG1lOiBhbnksIGRhdGFJdGVtOiBhbnksIHJlY29yZElkPzogc3RyaW5nKSB7XHJcblxyXG4gICAgY29uc3Qgd2F0Y2hMaXN0ID0gW1xyXG4gICAgICB7IE5hbWU6ICdncm91cC56TW9kZWwnIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLnpEYXRhJyB9LFxyXG4gICAgICB7IE5hbWU6ICdncm91cC5maWVsZHMnIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLmZvcm0udmFsdWUnIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLmJhY2tOYXZpZ2F0aW9uUGFnZScgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGQnIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLnBhcmVudFJlZmVyZW5jZUlkJyB9LFxyXG4gICAgICB7IE5hbWU6ICdPYmplY3Qua2V5cyhncm91cC56Q29tcG9uZW50cyknIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLmdyaWRPcHRpb25zLnpncmlkLmdyaWQuZGF0YScgfVxyXG4gICAgICAvLyB7IE5hbWU6ICdPYmplY3Qua2V5cyhfZGVidWcuekNvbXBvbmVudHMpJyB9LFxyXG4gICAgICAvLyB7IE5hbWU6ICdfZGVidWcuek1vZGVsJyB9LFxyXG4gICAgICAvLyB7IE5hbWU6ICdfZGVidWcuekRhdGEnIH0sXHJcbiAgICAgIC8vIHsgTmFtZTogJ19kZWJ1Zy56RGF0YS5jb2xsZWN0ZWRBY3Rpdml0aWVzJyB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBsZXQgcmVzdWx0cztcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIHJlc3VsdHMgPSB3YXRjaExpc3QuZmlsdGVyKChzKSA9PiBzLk5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgIT09IC0xKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFnZU5vID09PSAwICYmIHNlYXJjaFRleHQpIHtcclxuICAgICAgcmV0dXJuIG9mKHsgZGF0YVNldDogcmVzdWx0cyB9KTtcclxuICAgIH0gZWxzZSBpZiAocGFnZU5vID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7IGRhdGFTZXQ6IHdhdGNoTGlzdCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZih7IGRhdGFTZXQ6IFtdIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRXYXRjaE5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWJ1Zy56TW9kZWwuRGVidWdXYXRjaE5hbWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlV2F0Y2hOYW1lKGV2ZW50OiBhbnksIGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdvbkNoYW5nZVdhdGNoTmFtZTogJywgZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGV2ZW50LmRhdGEudmFsdWU7XHJcbiAgICBpZiAobmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5kZWJ1Zy56TW9kZWxbJ0RlYnVnV2F0Y2hOYW1lJ10gPSBuZXdWYWx1ZS5yZXBsYWNlKCdncm91cCcsICdfZ3JvdXAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmllbGRFbGVtZW50b25FZGl0b3JDb2RlQ2hhbmdlKGVsOiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgIHRoaXMucmVmcmVzaFRyZWVNb2RlbCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgdHJlZU5vZGVzRXhwYW5kQWxsKCkge1xyXG4gICAgdGhpcy5kZWJ1Zy56Q29tcG9uZW50c1snenRyZWVfZGVidWdaVHJlZSddLmV4cGFuZEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmVlTm9kZXNDb2xsYXBzZUFsbCgpIHtcclxuICAgIHRoaXMuZGVidWcuekNvbXBvbmVudHNbJ3p0cmVlX2RlYnVnWlRyZWUnXS5jb2xsYXBzZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoVHJlZU1vZGVsKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZCA9IEpTT04ucGFyc2UodGhpcy5kZWJ1Zy56TW9kZWwuQ29kZSk7XHJcbiAgICAgIC8vIHRoaXMuX2FkZE5vZGVzVG9UcmVlKGQpO1xyXG4gICAgICAvLyBncm91cFsndHJlZU1vZGVsJ10gPSB0aGlzLmNvbnZlcnRUcmVlTW9kZWwoZCk7XHJcbiAgICAgIHRoaXMuZGVidWdbJ3RyZWVNb2RlbCddID0gWkNvbXBvbmVudEhlbHBlci5jb252ZXJ0VHJlZU1vZGVsKGQpO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmVlSXRlbVRlbXBsYXRlKGVsOiBaVHJlZVRlbXBsYXRlUGFyYW1zKSB7XHJcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGl0ZW0uX0RhdGFWYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHJldHVybiBpdGVtLl9EYXRhVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiLi4uXCI7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZWwuZGF0YUl0ZW0uTmFtZSArXHJcbiAgICAgIFwiIC0gW1wiICtcclxuICAgICAgZWwuZGF0YUl0ZW0uVHlwZSArXHJcbiAgICAgIFwiXSA9IFwiICtcclxuICAgICAgZ2V0RmllbGRWYWx1ZShlbC5kYXRhSXRlbSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkl0ZW1DbGljayhldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICAvLyBkZWJ1Z2dlcjtcclxuICAgIGNvbnNvbGUubG9nKFwib25JdGVtQ2xpY2sgZGF0YSByZWNlaXZlZDogXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IG1vZGFsRmllbGRzID0gdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZShcclxuICAgICAgXCJtdkVkaXRGaWVsZE5vZGVGb3JtXCIsXHJcbiAgICAgIFwiRm9ybUZpZWxkXCIsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcbiAgICBjb25zdCBkYXRhSXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LmRhdGEpO1xyXG4gICAgZGF0YUl0ZW0uVmFsdWUgPSBkYXRhSXRlbS5fRGF0YVZhbHVlO1xyXG4gICAgZGVsZXRlIGRhdGFJdGVtLl9EYXRhVmFsdWU7XHJcbiAgICBjb25zdCB6bW9kZWwgPSB7XHJcbiAgICAgIG5vZGVNb2RlbDogSlNPTi5zdHJpbmdpZnkoZGF0YUl0ZW0sIG51bGwsIDIpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1haW5TZXJ2aWNlLnNob3d6TW9kYWwobW9kYWxGaWVsZHMsIHRoaXMuZGVidWcuX2dyb3VwLCAnRmllbGQgRWxlbWVudCBJbmZvJywgem1vZGVsKTtcclxuICAgIG1vZGFsLnN1YnNjcmliZSgobW9kYWxEYXRhOiBNb2RhbFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChtb2RhbERhdGEucmVzcG9uc2VUeXBlID09PSBcImNhbmNlbFwiKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBKU09OLnBhcnNlKG1vZGFsRGF0YS5kYXRhLm5vZGVNb2RlbCk7XHJcbiAgICAgIGlmIChuZXdEYXRhLlZhbHVlKSB7XHJcbiAgICAgICAgbmV3RGF0YS5fRGF0YVZhbHVlID0gbmV3RGF0YS5WYWx1ZTtcclxuICAgICAgICBuZXdEYXRhLlZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVRyZWVOb2RlKG5ld0RhdGEsIHRoaXMuZGVidWdbJ3RyZWVNb2RlbCddLCBldmVudC5ldmVudCk7XHJcbiAgICAgIGNvbnN0IG5ld1RyZWVNb2RlbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWJ1Z1sndHJlZU1vZGVsJ10pKTtcclxuICAgICAgY29uc3QgcmV2ZXJ0ZWRNb2RlbCA9IFpDb21wb25lbnRIZWxwZXIucmV2ZXJ0VHJlZU1vZGVsKG5ld1RyZWVNb2RlbCk7XHJcbiAgICAgIGNvbnN0IG5ld0NvZGUgPSBKU09OLnN0cmluZ2lmeShyZXZlcnRlZE1vZGVsLCBudWxsLCAyKTtcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKFwiQ29kZVwiLCBuZXdDb2RlLCB0aGlzLmRlYnVnKTtcclxuICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xyXG4gICAgICAvLyB0aGlzLm1haW5TZXJ2aWNlLnVwZGF0ZU1vZGVsKG51bGwsIHRoaXMuZGVidWcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVRyZWVOb2RlKG5ld05vZGU6IGFueSwgdHJlZU1vZGVsOiBhbnksIGluZGV4OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyZWVJbmRleCA9IGluZGV4LnNwbGl0KFwiX1wiKTtcclxuICAgIGlmICh0cmVlSW5kZXgubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRyZWVJbmRleC5zbGljZSgxKS5qb2luKFwiX1wiKTtcclxuICAgICAgdGhpcy51cGRhdGVUcmVlTm9kZShuZXdOb2RlLCB0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUsIG5ld0luZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUpIHtcclxuICAgICAgICBuZXdOb2RlLlZhbHVlID0gdHJlZU1vZGVsWyt0cmVlSW5kZXhbMF1dLlZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXSA9IG5ld05vZGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgaW5zZXJ0VHJlZU5vZGUobmV3Tm9kZTogYW55LCB0cmVlTW9kZWw6IGFueSwgaW5kZXg6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJlZUluZGV4ID0gaW5kZXguc3BsaXQoXCJfXCIpO1xyXG4gICAgaWYgKHRyZWVJbmRleC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJlZUluZGV4LnNsaWNlKDEpLmpvaW4oXCJfXCIpO1xyXG4gICAgICB0aGlzLmluc2VydFRyZWVOb2RlKG5ld05vZGUsIHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSwgbmV3SW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRyZWVJbmRleFswXSkge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUpKSB7XHJcbiAgICAgICAgICB0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJlZU1vZGVsWyt0cmVlSW5kZXhbMF1dLlZhbHVlLnB1c2gobmV3Tm9kZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHJlZU1vZGVsLnB1c2gobmV3Tm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlVHJlZU5vZGUodHJlZU1vZGVsOiBhbnksIGluZGV4OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyZWVJbmRleCA9IGluZGV4LnNwbGl0KFwiX1wiKTtcclxuICAgIGlmICh0cmVlSW5kZXgubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRyZWVJbmRleC5zbGljZSgxKS5qb2luKFwiX1wiKTtcclxuICAgICAgdGhpcy5yZW1vdmVUcmVlTm9kZSh0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUsIG5ld0luZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyZWVNb2RlbC5zcGxpY2UoK3RyZWVJbmRleFswXSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uVHJlZU5vZGVDaGFuZ2UoZWw6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgY29uc29sZS5sb2coXCJvblRyZWVOb2RlQ2hhbmdlOiBcIiwgZWwpO1xyXG4gICAgY29uc3QgY29kZURhdGEgPSBKU09OLnN0cmluZ2lmeShlbC5kYXRhKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZShcIkNvZGVcIiwgY29kZURhdGEsIHRoaXMuZGVidWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGROb2RlKCkge1xyXG4gICAgY29uc3QgZWw6IFpDb21wb25lbnRPdXRwdXRFdmVudCA9IHtcclxuICAgICAgZGF0YToge30sXHJcbiAgICAgIHJvd0RhdGE6IHt9LFxyXG4gICAgICBldmVudDogXCJcIixcclxuICAgICAgdGFyZ2V0OiBcIlwiLFxyXG4gICAgICB0eXBlOiBcIlwiLFxyXG4gICAgICBjb2x1bW5GaWVsZHMkOiBudWxsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vbkFkZE5vZGUoZWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBvbkFkZE5vZGUoZWw6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgY29uc29sZS5sb2coJ29uQWRkTm9kZSBpcyBjYWxsZWQnLCBlbCk7XHJcbiAgICBjb25zdCBtb2RhbEZpZWxkcyA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUoXHJcbiAgICAgIFwibXZFZGl0RmllbGROb2RlRm9ybVwiLFxyXG4gICAgICBcIkZvcm1GaWVsZFwiLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG4gICAgLy8gY29uc3QgZGF0YUl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBlbC5kYXRhKTtcclxuICAgIC8vIGRhdGFJdGVtLlZhbHVlID0gZGF0YUl0ZW0uX0RhdGFWYWx1ZTtcclxuICAgIC8vIGRlbGV0ZSBkYXRhSXRlbS5fRGF0YVZhbHVlO1xyXG4gICAgY29uc3QgaW5pdGlhbE1vZGVsID0ge1xyXG4gICAgICBOYW1lOiAnTmFtZScsIERpc3BsYXlOYW1lOiAnTmFtZScsIFZhbHVlOiAnTmFtZScsIFR5cGU6ICd0ZXh0JyxcclxuICAgICAgZW5hYmxlSGlkaW5nOiB0cnVlLFxyXG4gICAgICBncmlkQ29sVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgICAgbWluV2lkdGg6IDEwMCxcclxuICAgICAgY2VsbEZpbHRlcjogXCJcIixcclxuICAgICAgZmlsdGVyQ2VsbEZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxyXG4gICAgICBwaW5uZWRMZWZ0OiBmYWxzZSxcclxuICAgICAgcGlubmVkUmlnaHQ6IGZhbHNlLFxyXG4gICAgICBVcGRhdGVPbkJsdXI6IHRydWUsXHJcbiAgICAgIFBsYWNlSG9sZGVyOiBcIk5hbWVcIixcclxuICAgICAgSXNSZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgIE1pbkxlbmd0aDogMixcclxuICAgICAgTWF4TGVuZ3RoOiA1MCxcclxuICAgICAgTGFiZWw6IFwiTmFtZTpcIixcclxuICAgICAgRGl2Q2xhc3M6IFwiY29sLXhzLTEyIGNvbC1zbS02IGNvbC1tZC02IGNvbC1sZy0zXCIsXHJcbiAgICAgIFJlYWRPbmx5OiBmYWxzZSxcclxuICAgICAgU2hvd0xhYmVsOiB0cnVlLFxyXG4gICAgICBWaXNpYmxlOiB0cnVlLFxyXG4gICAgICBBcHBlbmREaXZDbGVhckZpeDogZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgem1vZGVsID0ge1xyXG4gICAgICBub2RlTW9kZWw6IEpTT04uc3RyaW5naWZ5KGluaXRpYWxNb2RlbCwgbnVsbCwgMilcclxuICAgIH07XHJcblxyXG4gICAgLy8gY29uc3QgbW9kYWw6IEhUTUxJb25Nb2RhbEVsZW1lbnQgPSBhd2FpdCB0aGlzLm1haW5TZXJ2aWNlLm9wZW5Nb2RhbEZvcm0obW9kYWxHcm91cFBhcmFtKTtcclxuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5tYWluU2VydmljZS5zaG93ek1vZGFsKG1vZGFsRmllbGRzLCB0aGlzLmRlYnVnLCAnQWRkIEZpZWxkIEVsZW1lbnQgSXRlbScsIHptb2RlbCk7XHJcblxyXG4gICAgbW9kYWwuc3Vic2NyaWJlKChtb2RhbERhdGE6IE1vZGFsUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKG1vZGFsRGF0YS5yZXNwb25zZVR5cGUgPT09IFwiY2FuY2VsXCIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmV3RGF0YSA9IEpTT04ucGFyc2UobW9kYWxEYXRhLmRhdGEubm9kZU1vZGVsKTtcclxuICAgICAgaWYgKG5ld0RhdGEuVmFsdWUpIHtcclxuICAgICAgICBuZXdEYXRhLl9EYXRhVmFsdWUgPSBuZXdEYXRhLlZhbHVlO1xyXG4gICAgICAgIG5ld0RhdGEuVmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5zZXJ0VHJlZU5vZGUobmV3RGF0YSwgdGhpcy5kZWJ1Z1tcInRyZWVNb2RlbFwiXSwgZWwuZXZlbnQpO1xyXG4gICAgICBjb25zdCBuZXdUcmVlTW9kZWwgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGVidWdbJ3RyZWVNb2RlbCddKSk7XHJcbiAgICAgIGNvbnN0IHJldmVydGVkTW9kZWwgPSBaQ29tcG9uZW50SGVscGVyLnJldmVydFRyZWVNb2RlbChuZXdUcmVlTW9kZWwpO1xyXG4gICAgICBjb25zdCBuZXdDb2RlID0gSlNPTi5zdHJpbmdpZnkocmV2ZXJ0ZWRNb2RlbCwgbnVsbCwgMik7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZShcIkNvZGVcIiwgbmV3Q29kZSwgdGhpcy5kZWJ1Zyk7XHJcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcclxuICAgICAgLy8gdGhpcy5tYWluU2VydmljZS51cGRhdGVNb2RlbChudWxsLCB0aGlzLmRlYnVnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJlbW92ZU5vZGUoZWw6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvdygnUmVtb3ZlIE5vZGUnLCAnQXJlIHlvdSBzdXJlPycsXHJcbiAgICAgIFtcclxuICAgICAgICB7IHRleHQ6IFwiTm9cIiwgY3NzQ2xhc3M6IFwic2Vjb25kYXJ5XCIgfSBhcyBBbGVydEJ1dHRvbixcclxuICAgICAgICB7IHRleHQ6IFwiWWVzXCIsIGNzc0NsYXNzOiBcInByaW1hcnlcIiB9IGFzIEFsZXJ0QnV0dG9uXHJcbiAgICAgIF0pXHJcbiAgICAgIC5zdWJzY3JpYmUocmVwbHkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBseSA9PT0gJ1llcycpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZW1vdmUgTm9kZScsIGVsKTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlVHJlZU5vZGUodGhpcy5kZWJ1Z1tcInRyZWVNb2RlbFwiXSwgZWwuZXZlbnQpO1xyXG4gICAgICAgICAgY29uc3QgbmV3VHJlZU1vZGVsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRlYnVnWyd0cmVlTW9kZWwnXSkpO1xyXG4gICAgICAgICAgY29uc3QgcmV2ZXJ0ZWRNb2RlbCA9IFpDb21wb25lbnRIZWxwZXIucmV2ZXJ0VHJlZU1vZGVsKG5ld1RyZWVNb2RlbCk7XHJcbiAgICAgICAgICBjb25zdCBuZXdDb2RlID0gSlNPTi5zdHJpbmdpZnkocmV2ZXJ0ZWRNb2RlbCwgbnVsbCwgMik7XHJcbiAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoXCJDb2RlXCIsIG5ld0NvZGUsIHRoaXMuZGVidWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdvdG9GaWVsZEVsZW1lbnQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FkbWluL2ZpZWxkJ10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbCgpIHtcclxuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5kZWJ1ZztcclxuICAgIGNvbnN0IGZnID0gdGhpcy5kZWJ1Zy5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgIGlmICghZmcuZGlydHkpIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiRGVidWcgRm9ybSBpcyBub3QgZGlydHkgaGVuY2UgcmVjb3JkIGlzIG5vdCBzYXZlLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZmcudmFsaWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRGb3JtR3JvdXBFcnJvcnMoZmcsIHRoaXMuYWxlcnRTZXJ2aWNlKTtcclxuICAgICAgY29uc29sZS53YXJuKFwiRGVidWcgRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIG9mKGRlYnVnLnpNb2RlbClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKHptb2RlbCA9PiB7XHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIkJlZm9yZSB1cGRhdGUsIHpNb2RlbDpcIiwgem1vZGVsKTtcclxuICAgICAgICAvLyAgIHJldHVybiB0aGlzLmJlZm9yZVVwZGF0ZU1vZGVsKGdyb3VwKTtcclxuICAgICAgICAvLyB9KSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihkZWJ1Zy56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwUHV0JChcclxuICAgICAgICAgICAgZGVidWcucmVzb3VyY2VVUkwgKyBcIi9cIiArIGRlYnVnLnpNb2RlbC5JZCxcclxuICAgICAgICAgICAgZGVidWcuek1vZGVsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgIG1hcChyZXMgPT4gdGhpcy5oYW5kbGVTdWNjZXNzKHJlcywgXCJSZWNvcmQgaXMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXCIpKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHptb2RlbDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkFmdGVyIERlYnVnIEZvcm0gdXBkYXRlZCwgek1vZGVsOlwiLCB6bW9kZWwpO1xyXG4gICAgICAgICAgaWYgKHptb2RlbCAmJiB6bW9kZWwuRGF0YSkge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGRlYnVnLnpNb2RlbCwgem1vZGVsLkRhdGEpO1xyXG4gICAgICAgICAgICBmZy5wYXRjaFZhbHVlKHptb2RlbC5EYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZnLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuYWZ0ZXJVcGRhdGVNb2RlbChncm91cCk7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKiogV29ya2Zsb3cgQnV0dG9uICoqKioqKioqKioqKioqKioqKioqXHJcbiAgcHVibGljIGxvYWRXb3JrZmxvd0RhdGEoKSB7XHJcbiAgICBjb25zdCB6Z3JpZF9Xb3JrZmxvd0J1dHRvbkdyaWQgPSBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmRlYnVnLCAnemdyaWRfV29ya2Zsb3dCdXR0b25HcmlkJyk7XHJcbiAgICBpZiAoemdyaWRfV29ya2Zsb3dCdXR0b25HcmlkKSB7XHJcbiAgICAgIHpncmlkX1dvcmtmbG93QnV0dG9uR3JpZC5zZXREYXRhKHRoaXMuZGVidWcuekRhdGEuY29sbGVjdGVkV29ya2Zsb3dCdXR0b25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JpZFdvcmtmbG93QnV0dG9uT25JdGVtQ2xpY2soZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YUl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC5kYXRhSXRlbSk7XHJcbiAgICBjb25zdCBmaWVsZCA9IGRhdGFJdGVtLnJlZkZpZWxkO1xyXG4gICAgY29uc3QgYXR0cmlidXRlID0gZGF0YUl0ZW0ucmVmQXR0cmlidXRlO1xyXG5cclxuICAgIC8vIEdldCBNYXBwZWQgSW5mb1xyXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAuc2V0KFwiQnV0dG9uSWRcIiwgZmllbGQuSWQpO1xyXG4gICAgdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0bWFwcGVkQnV0dG9uSW5mb1VSTFwiKSwgcGFyYW1zKS5waXBlKFxyXG4gICAgICBtYXAoYXN5bmMgcmVzID0+IHtcclxuICAgICAgICBsZXQgcm9sZUluZm8gPSBbXTtcclxuICAgICAgICBsZXQgc3RhdHVzSW5mbyA9IFtdO1xyXG4gICAgICAgIGxldCBwYXJlbnRTdGF0dXNJbmZvID0gW107XHJcblxyXG4gICAgICAgIGlmIChyZXMuTWFwcGVkUm9sZUxpc3QpIHtcclxuICAgICAgICAgIHJvbGVJbmZvID0gcmVzLk1hcHBlZFJvbGVMaXN0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcy5NYXBwZWRTdGF0dXNMaXN0KSB7XHJcbiAgICAgICAgICByZXMuTWFwcGVkU3RhdHVzTGlzdC5mb3JFYWNoKChfc3RhdHVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgc3RhdHVzSW5mby5wdXNoKF9zdGF0dXMuTmFtZSArICcgKCcgKyBfc3RhdHVzLkNvZGUgKyAnKScpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzLk1hcHBlZFBhcmVudFN0YXR1c0xpc3QpIHtcclxuICAgICAgICAgIHJlcy5NYXBwZWRQYXJlbnRTdGF0dXNMaXN0LmZvckVhY2goKF9wYXJlbnRTdGF0dXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBwYXJlbnRTdGF0dXNJbmZvLnB1c2goX3BhcmVudFN0YXR1cy5OYW1lICsgJyAoJyArIF9wYXJlbnRTdGF0dXMuQ29kZSArICcpJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IF9tYXBwZWRJbmZvID0ge1xyXG4gICAgICAgICAgJ21hcHBlZFJvbGVJbmZvJzogcm9sZUluZm8ubGVuZ3RoID4gMCA/IHJvbGVJbmZvIDogJ04uQS4nLFxyXG4gICAgICAgICAgJ21hcHBlZFN0YXR1c0luZm8nOiBzdGF0dXNJbmZvLmxlbmd0aCA+IDAgPyBzdGF0dXNJbmZvIDogJ04uQS4nLFxyXG4gICAgICAgICAgJ21hcHBlZFBhcmVudFN0YXR1c0luZm8nOiBwYXJlbnRTdGF0dXNJbmZvLmxlbmd0aCA+IDAgPyBwYXJlbnRTdGF0dXNJbmZvIDogJ04uQS4nXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gcmV0cmVpdmUgYWxsIGltcG9ydGFudCBpbmZvXHJcbiAgICAgICAgY29uc3QgX2J1dHRvbkluZm8gPSB7XHJcbiAgICAgICAgICAnV29ya2Zsb3dJZCc6IGZpZWxkLldvcmtmbG93SWQsXHJcbiAgICAgICAgICAnQnV0dG9uSWQnOiBmaWVsZC5JZCxcclxuICAgICAgICAgICdCdXR0b25OYW1lJzogZmllbGQuTmFtZSxcclxuICAgICAgICAgICdCdXR0b25Db2RlJzogZmllbGQuQ29kZSxcclxuICAgICAgICAgICdCdXR0b25UeXBlSWQnOiBmaWVsZC5UeXBlLklkLFxyXG4gICAgICAgICAgJ0J1dHRvblR5cGVOYW1lJzogZmllbGQuVHlwZS5OYW1lLFxyXG4gICAgICAgICAgJ0J1dHRvblR5cGVDb2RlJzogZmllbGQuVHlwZS5Db2RlLFxyXG4gICAgICAgICAgJ0J1dHRvblZpc2libGUnOiBhdHRyaWJ1dGUuVmlzaWJsZSxcclxuICAgICAgICAgICdCdXR0b25DbGlja0V2ZW50JzogYXR0cmlidXRlLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAnQnV0dG9uVVJMJzogYXR0cmlidXRlLlVSTCxcclxuICAgICAgICAgICdCdXR0b25JY29uJzogYXR0cmlidXRlLkljb25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgX2dvdG9TdGF0dXNJbmZvID0ge1xyXG4gICAgICAgICAgJ0dvdG9TdGF0dXNJZCc6ICdOLkEuJyxcclxuICAgICAgICAgICdHb3RvU3RhdHVzTmFtZSc6ICdOLkEuJyxcclxuICAgICAgICAgICdHb3RvU3RhdHVzQ29kZSc6ICdOLkEuJ1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChmaWVsZC5TdGF0dXMpIHtcclxuICAgICAgICAgIGNvbnN0IF9nb3RvU3RhdHVzID0gZmllbGQuU3RhdHVzXHJcbiAgICAgICAgICBfZ290b1N0YXR1c0luZm8gPSB7XHJcbiAgICAgICAgICAgICdHb3RvU3RhdHVzSWQnOiBfZ290b1N0YXR1cy5JZCxcclxuICAgICAgICAgICAgJ0dvdG9TdGF0dXNOYW1lJzogX2dvdG9TdGF0dXMuTmFtZSxcclxuICAgICAgICAgICAgJ0dvdG9TdGF0dXNDb2RlJzogX2dvdG9TdGF0dXMuQ29kZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllc01vZGVsID0gT2JqZWN0LmFzc2lnbihfYnV0dG9uSW5mbywgX2dvdG9TdGF0dXNJbmZvLCBfbWFwcGVkSW5mbyk7XHJcblxyXG4gICAgICAgIGNvbnN0IG1vZGFsRmllbGRzID0gdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZShcclxuICAgICAgICAgIFwibXZXb3JrZmxvd0J1dHRvbkRlYnVnRm9ybVwiLFxyXG4gICAgICAgICAgXCJGb3JtRmllbGRcIixcclxuICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICBudWxsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubWFpblNlcnZpY2Uuc2hvd3pNb2RhbChtb2RhbEZpZWxkcywgdGhpcy5kZWJ1Zy5fZ3JvdXAsICdXb3JrZmxvdyBCdXR0b24gSW5mbycsIHByb3BlcnRpZXNNb2RlbCk7XHJcbiAgICAgICAgbW9kYWwuc3Vic2NyaWJlKChtb2RhbERhdGE6IE1vZGFsUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChtb2RhbERhdGEucmVzcG9uc2VUeXBlID09PSBcImNhbmNlbFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaGFuZGxlU3VjY2VzcyhyZXM6IFJlc3BvbnNlIHwgYW55LCBzdWNjZXNzTXNnOiBzdHJpbmcpOiBSZXNwb25zZSB7XHJcbiAgICBpZiAocmVzID09IG51bGwpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhzdWNjZXNzTXNnKTtcclxuICAgIH0gZWxzZSBpZiAocmVzLkRhdGEgIT09IHVuZGVmaW5lZCAmJiByZXMuUHJvY2Vzc2luZ1N0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChyZXMuUHJvY2Vzc2luZ1N0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcy5EYXRhKSkge1xyXG4gICAgICAgICAgcmVzLkRhdGEubWFwKHMgPT4gdGhpcy53ZWJBcGlTZXJ2aWNlLnNob3dIdHRwUmVzcG9uc2VNZXNzYWdlKE1FU1NBR0VUWVBFLlN1Y2Nlc3MsXHJcbiAgICAgICAgICAgIGAke3N1Y2Nlc3NNc2d9IDogJHtzLkNvc3RDb2RlfWAsIG51bGwpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLnNob3dIdHRwUmVzcG9uc2VNZXNzYWdlKE1FU1NBR0VUWVBFLlN1Y2Nlc3MsIHN1Y2Nlc3NNc2csIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhzdWNjZXNzTXNnKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvcihyZXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmhhbmRsZUVycm9yKHJlcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
626
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS2xELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsMkNBQTJDO0FBQzNDLE9BQU8sRUFDUSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQ2pFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQ3pELE1BQU0sRUFDZixNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3pCLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDVSxNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLGFBQTRCO1FBTjVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtC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QUFnQixLQUFLLFNBQVMsRUFBRTtZQUN2RSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUM5RSxHQUFHLFVBQVUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDM0M7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDbkY7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7OztZQXR0QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFyQlEsTUFBTTtZQVlBLFlBQVk7WUFBRSxXQUFXO1lBQUUsWUFBWTtZQUNwRCxrQkFBa0I7WUFBRSxZQUFZO1lBQUUsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcbmltcG9ydCB7IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudCB9IGZyb20gJ2lvbmljLXNlbGVjdGFibGUnO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgQWxlcnRCdXR0b24sIEFsZXJ0U2VydmljZSwgQXV0aFNlcnZpY2UsIEZpZWxkU2VydmljZSwgTUVTU0FHRVRZUEUsXHJcbiAgUmVzb3VyY2VBcGlTZXJ2aWNlLCBUb2FzdFNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCxcclxuICBaRmllbGQsIFpHcm91cCwgWlRyZWVUZW1wbGF0ZVBhcmFtc1xyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgTWFpblNlcnZpY2UgfSBmcm9tIFwiLi9tYWluLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTW9kYWxSZXNwb25zZSB9IGZyb20gJ21taGdsb2JhbC16bW9kYWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWkNvbXBvbmVudERlYnVnU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIHNjb3BlOiBhbnk7XHJcbiAgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2U7XHJcblxyXG4gIGdldCBkZWJ1ZygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2NvcGUuZ3JvdXAuX2RlYnVnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VwKCk6IFpHcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5zY29wZS5ncm91cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkluaXREZWJ1Z2dlcihncm91cDogWkdyb3VwLCBtYWluU2VydmljZTogTWFpblNlcnZpY2UpIHtcclxuICAgIGdyb3VwLl9kZWJ1ZyA9IG5ldyBaR3JvdXAodHJ1ZSk7XHJcbiAgICBncm91cC5faXNEZWJ1Z2dpbmcgPSB0cnVlO1xyXG4gICAgZ3JvdXAuX2RlYnVnLnpEYXRhID0ge1xyXG4gICAgICBjb2xsZWN0ZWRBY3Rpdml0aWVzOiBbXSxcclxuICAgICAgYWN0aXZpdHlDb3VudDogMCxcclxuICAgICAgY29sbGVjdGVkV29ya2Zsb3dCdXR0b25zOiBbXSxcclxuICAgICAgd29ya2Zsb3dCdXR0b25Db3VudDogMFxyXG4gICAgfTtcclxuICAgIGdyb3VwLl9kZWJ1Zy56Q29tcG9uZW50cyA9IHt9O1xyXG4gICAgZ3JvdXAuaXNMaXN0Rm9ybSA9IGZhbHNlO1xyXG4gICAgdGhpcy5tYWluU2VydmljZSA9IG1haW5TZXJ2aWNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBvblN0YXJ0RGVidWdnZXIoZmllbGRFbGVtZW50czogQXJyYXk8WkZpZWxkPiwgbWU6IGFueSkge1xyXG4gICAgdGhpcy5zY29wZSA9IG1lO1xyXG4gICAgaWYgKCFtZS5ncm91cC5fZGVidWcpIHtcclxuICAgICAgbWUuZ3JvdXAuX2RlYnVnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZDogWkdyb3VwID0gbWUuZ3JvdXAuX2RlYnVnO1xyXG4gICAgbWUuZm9ybSA9IG1lLnRvRm9ybUdyb3VwKGZpZWxkRWxlbWVudHMpO1xyXG4gICAgZC5mb3JtID0gbWUuZm9ybTtcclxuICAgIGlmIChtZS5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgbWUuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkLCB7XHJcbiAgICAgIC8vIHpEYXRhOiB7IGNvbGxlY3RlZEFjdGl2aXRpZXM6IFtdLCBhY3Rpdml0eUNvdW50OiAwIH0sXHJcbiAgICAgIHpNb2RlbDoge30sXHJcbiAgICAgIHN1YmplY3Q6IG5ldyBCZWhhdmlvclN1YmplY3Q8WkNvbXBvbmVudE91dHB1dEV2ZW50PihudWxsKSxcclxuICAgICAgaXNFZGl0OiB0cnVlLFxyXG4gICAgICBpc05ldzogZmFsc2UsXHJcbiAgICAgIF9kZWJ1ZzogbWUuZ3JvdXAuX2RlYnVnLFxyXG4gICAgICBfZ3JvdXA6IG1lLmdyb3VwLFxyXG4gICAgICByZXNvdXJjZVVSTDogdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKCdmaWVsZCcpLFxyXG4gICAgICB0cmVlSXRlbVRlbXBsYXRlOiB0aGlzLnRyZWVJdGVtVGVtcGxhdGUsXHJcbiAgICAgIG9uSXRlbUNsaWNrOiB0aGlzLm9uSXRlbUNsaWNrLFxyXG4gICAgICBvblRyZWVOb2RlQ2hhbmdlOiB0aGlzLm9uVHJlZU5vZGVDaGFuZ2UsXHJcbiAgICAgIG9uQWRkTm9kZTogdGhpcy5vbkFkZE5vZGUsXHJcbiAgICAgIG9uUmVtb3ZlTm9kZTogdGhpcy5vblJlbW92ZU5vZGUsXHJcbiAgICAgIHRyZWVOb2Rlc0V4cGFuZEFsbDogdGhpcy50cmVlTm9kZXNFeHBhbmRBbGwsXHJcbiAgICAgIHRyZWVOb2Rlc0NvbGxhcHNlQWxsOiB0aGlzLnRyZWVOb2Rlc0NvbGxhcHNlQWxsLFxyXG4gICAgICByZWZyZXNoVHJlZU1vZGVsOiB0aGlzLnJlZnJlc2hUcmVlTW9kZWwsXHJcbiAgICAgIGFkZE5vZGU6IHRoaXMuYWRkTm9kZSxcclxuICAgICAgcmVmcmVzaEFjdGl2aXR5TG9nRGF0YTogdGhpcy5Mb2FkR3JpZERhdGEuYmluZCh0aGlzKSxcclxuICAgICAgR29Ub0ZpZWxkRWxlbWVudDogdGhpcy5nb3RvRmllbGRFbGVtZW50LmJpbmQodGhpcyksXHJcbiAgICAgIExpc3RXYXRjaE5hbWU6IHRoaXMubGlzdFdhdGNoTmFtZSxcclxuICAgICAgb25DaGFuZ2VXYXRjaE5hbWU6IHRoaXMub25DaGFuZ2VXYXRjaE5hbWUuYmluZCh0aGlzKSxcclxuICAgICAgZ2V0V2F0Y2hOYW1lOiB0aGlzLmdldFdhdGNoTmFtZS5iaW5kKHRoaXMpLFxyXG4gICAgICBmaWVsZEVsZW1lbnRvbkVkaXRvckNvZGVDaGFuZ2U6IHRoaXMuZmllbGRFbGVtZW50b25FZGl0b3JDb2RlQ2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIGdyaWRBY3Rpdml0eUxvZ0NvbHVtbkZpZWxkczogdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZShcclxuICAgICAgICAnZGVidWdBY3Rpdml0eUxvZycsXHJcbiAgICAgICAgXCJGb3JtRmllbGRcIixcclxuICAgICAgICB0aGlzLmdyb3VwLFxyXG4gICAgICAgIFwiZGVidWdBY3Rpdml0eUxvZ0ZpZWxkXCJcclxuICAgICAgKSxcclxuICAgICAgZ3JpZEFjdGl2aXR5TG9nT25JdGVtQ2xpY2s6IHRoaXMuZ3JpZEFjdGl2aXR5TG9nT25JdGVtQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgdXBkYXRlTW9kZWw6IHRoaXMudXBkYXRlTW9kZWwuYmluZCh0aGlzKSxcclxuICAgICAgcmVmcmVzaFdvcmtmbG93QnV0dG9uRGF0YTogdGhpcy5sb2FkV29ya2Zsb3dEYXRhLmJpbmQodGhpcyksXHJcbiAgICAgIGdyaWRXb3JrZmxvd0J1dHRvbkNvbHVtbkZpZWxkczogdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZShcclxuICAgICAgICAnZGVidWdXb3JrZmxvd0J1dHRvbicsXHJcbiAgICAgICAgJ0Zvcm1GaWVsZCcsXHJcbiAgICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgICBcImRlYnVnV29ya2Zsb3dCdXR0b25GaWVsZFwiXHJcbiAgICAgICksXHJcbiAgICAgIGdyaWRXb3JrZmxvd0J1dHRvbk9uSXRlbUNsaWNrOiB0aGlzLmdyaWRXb3JrZmxvd0J1dHRvbk9uSXRlbUNsaWNrLmJpbmQodGhpcylcclxuICAgIH0pO1xyXG4gICAgaWYgKCFkLnpEYXRhKSB7XHJcbiAgICAgIGQuekRhdGEgPSB7IGNvbGxlY3RlZEFjdGl2aXRpZXM6IFtdLCBhY3Rpdml0eUNvdW50OiAwIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWUuc3Vic2NyaXB0aW9uID0gZC5zdWJqZWN0LnN1YnNjcmliZSgoZXZlbnQ6IFpDb21wb25lbnRPdXRwdXRFdmVudCkgPT5cclxuICAgICAgdGhpcy5zdWJqZWN0RXZlbnQoZXZlbnQsIGQsIHRoaXMpXHJcbiAgICApO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRGaWVsZHNEaXZDbGFzcyh0aGlzLmdyb3VwLl9wcm9qZWN0TmFtZSwgdGhpcy5ncm91cC5maWVsZE5hbWUsIGZpZWxkRWxlbWVudHMsIHRoaXMuYXV0aFNlcnZpY2UpO1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZERlYnVnWk1vZGVsKG1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZERlYnVnWk1vZGVsKG1lOiBhbnkpIHtcclxuICAgIGNvbnN0IGQ6IFpHcm91cCA9IG1lLmdyb3VwLl9kZWJ1ZztcclxuXHJcbiAgICBjb25zdCBkb3dubG9hZExpc3QgPSBbXTtcclxuICAgIGRvd25sb2FkTGlzdC5wdXNoKHRoaXMuZ2V0UHJvamVjdElkKCkpO1xyXG5cclxuICAgIGNvbnN0IGZvcm1UeXBlID0gbWUuZ3JvdXAuaXNMaXN0Rm9ybSA/ICdMaXN0RmllbGQnIDogJ0Zvcm1GaWVsZCc7XHJcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBtZS5ncm91cC5maWVsZE5hbWU7XHJcbiAgICBjb25zdCBmaWVsZHpNb2RlbCA9IHRoaXMuZ2V0RmllbGR6TW9kZWwoZm9ybVR5cGUsIGZpZWxkTmFtZSk7XHJcbiAgICBkb3dubG9hZExpc3QucHVzaChmaWVsZHpNb2RlbCk7XHJcblxyXG4gICAgcmV0dXJuIGZvcmtKb2luKGRvd25sb2FkTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByb2plY3RJZCgpIHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLmRlYnVnO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKCdwcm9qZWN0c1VSTCcpO1xyXG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5nZXRBcGkodXJsLCB7fSwgZC56RGF0YSwgJ1Byb2plY3RPcHRpb25zJywgbnVsbCwgZCwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZHpNb2RlbCh0eXBlOiBzdHJpbmcsIGFjdGl2aXR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ0Zvcm1GaWVsZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUZpZWxkek1vZGVsKGFjdGl2aXR5TmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRMaXN0RmllbGR6TW9kZWwoYWN0aXZpdHlOYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUZpZWxkek1vZGVsKGFjdGl2aXR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkOiBaR3JvdXAgPSB0aGlzLmRlYnVnO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKCdmaWVsZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwR2V0JCh1cmwsIHsgbmFtZTogYWN0aXZpdHlOYW1lLCB0eXBlOiAnRm9ybUZpZWxkJyB9KS5waXBlKFxyXG4gICAgICB0YXAoKHJlc3BEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncmVzcERhdGE6ICcsIHJlc3BEYXRhKTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKGQuek1vZGVsLCByZXNwRGF0YSk7XHJcbiAgICAgICAgZC5mb3JtLnBhdGNoVmFsdWUoZC56TW9kZWwpO1xyXG4gICAgICAgIGQuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IEpTT04ucGFyc2UoZC56TW9kZWwuQ29kZSk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkLCB7XHJcbiAgICAgICAgICB0cmVlTW9kZWw6IFpDb21wb25lbnRIZWxwZXIuY29udmVydFRyZWVNb2RlbChmaWVsZHMpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRMaXN0RmllbGR6TW9kZWwoYWN0aXZpdHlOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLmRlYnVnO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKCdmaWVsZHNNYXBwaW5nJyk7XHJcbiAgICBjb25zdCB1cmwyID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKCdmaWVsZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwR2V0JCh1cmwsIHsgbmFtZTogYWN0aXZpdHlOYW1lIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoZmllbGRNYXBwaW5nOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnZmllbGRNYXBwaW5nOiAnLCBmaWVsZE1hcHBpbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodXJsMiwgeyBpZDogZmllbGRNYXBwaW5nLkZpZWxkRWxlbWVudE1hc3RlcklkIH0pO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkLnpNb2RlbCwgcmVzcERhdGEpO1xyXG4gICAgICAgIGQuZm9ybS5wYXRjaFZhbHVlKGQuek1vZGVsKTtcclxuICAgICAgICBkLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICBjb25zdCBmaWVsZHMgPSBKU09OLnBhcnNlKGQuek1vZGVsLkNvZGUpO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZCwge1xyXG4gICAgICAgICAgdHJlZU1vZGVsOiBaQ29tcG9uZW50SGVscGVyLmNvbnZlcnRUcmVlTW9kZWwoZmllbGRzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgc3ViamVjdEV2ZW50KGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnRhcmdldCB8fCBldmVudC50YXJnZXQuc3RhcnRzV2l0aChcIm1vZGFsR3JvdXAuXCIpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiKiogRGVidWcgLSBTdWJqZWN0RXZlbnRcIiwgZXZlbnQpO1xyXG4gICAgbGV0IGNhbGxGdW5jO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNhbGxGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIG1lLFxyXG4gICAgICAgIGV2ZW50LnRhcmdldFxyXG4gICAgICApO1xyXG4gICAgICAvLyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoZXZlbnQuVGFyZ2V0LCBncm91cCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgXCJFcnJvciB3aGVuIGdldEdyb3VwVmFsdWU6IFwiLFxyXG4gICAgICAgIGV2ZW50LnRhcmdldCxcclxuICAgICAgICBcIiA+IEVycm9yOiBcIixcclxuICAgICAgICBlcnJvclxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNhbGxGdW5jKGV2ZW50KTtcclxuICAgIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChtZSk7XHJcbiAgICAgIG5ld0Z1bmMoZXZlbnQsIGdyb3VwLCBtZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBpZiAoZXZlbnQudHlwZS5lbmRzV2l0aChcIm9uTmF2aWdhdGVUb1wiKSkge1xyXG4gICAgICAgIGNvbnN0IG5VcmwgPSBldmVudC50YXJnZXQucmVwbGFjZShcIi86aWRcIiwgXCIvXCIgKyBldmVudC5kYXRhKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbblVybF0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFwiemdyaWQtY2VsbENsaWNrXCIpIHtcclxuICAgICAgICAvLyAoY2FsbEZ1bmMuc3RhcnRzV2l0aCgnZWRpdCcpKSB7ICB6Z3JpZC1jZWxsQ2xpY2tcclxuICAgICAgICBjb25zdCBjTmFtZSA9IGNhbGxGdW5jLnNsaWNlKDQpO1xyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIC8vIGNvbnN0IG1vZGFsR3JvdXBQYXJhbTogTW9kYWxQYWdlUGFyYW1zID0ge307XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLmNvbnRyb2xsZXJOYW1lID0gY05hbWU7XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLnJlZmVySWQgPSBldmVudC5kYXRhLklkO1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5jb2xGaWVsZHMkID0gZXZlbnQuY29sdW1uRmllbGRzJDtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0ucGFyZW50R3JvdXAgPSBtZS5ncm91cDtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5vcGVuTW9kYWxGb3JtKG1vZGFsR3JvdXBQYXJhbSk7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zaG93ek1vZGFsKGV2ZW50LmNvbHVtbkZpZWxkcyQgfHwgY05hbWUsIGdyb3VwLCAnJywge30sIGV2ZW50LmRhdGEuSWQpOyAvLyBUT0RPXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgIGlmIChldmVudC50eXBlID09PSBcInpncmlkLWNlbGxDbGlja1wiKSB7XHJcbiAgICAgICAgaWYgKGNhbGxGdW5jLm5hdmlnYXRlVXJsKSB7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSBjYWxsRnVuYy5uYXZpZ2F0ZVVybC5yZXBsYWNlKFwiOmlkXCIsIGV2ZW50LmRhdGEuSWQpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY29uc3QgbW9kYWxHcm91cFBhcmFtOiBNb2RhbFBhZ2VQYXJhbXMgPSB7fTtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0uY29udHJvbGxlck5hbWUgPSBjYWxsRnVuYy5jdHJsTmFtZTtcclxuICAgICAgICAvLyBtb2RhbEdyb3VwUGFyYW0ucmVmZXJJZCA9IGV2ZW50LmRhdGEuSWQ7XHJcbiAgICAgICAgLy8gbW9kYWxHcm91cFBhcmFtLmNvbEZpZWxkcyQgPSBldmVudC5jb2x1bW5GaWVsZHMkO1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5wYXJlbnRHcm91cCA9IG1lLmdyb3VwO1xyXG4gICAgICAgIC8vIG1vZGFsR3JvdXBQYXJhbS5mb3JtSGVhZGVyID0gY2FsbEZ1bmMuZm9ybUhlYWRlcjtcclxuXHJcbiAgICAgICAgaWYgKGNhbGxGdW5jLmZvcm1IZWFkZXIpIHtcclxuICAgICAgICAgIC8vIHRoaXMub3Blbk1vZGFsRm9ybShtb2RhbEdyb3VwUGFyYW0pO1xyXG5cclxuICAgICAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2hvd3pNb2RhbChldmVudC5jb2x1bW5GaWVsZHMkIHx8IGNhbGxGdW5jLmN0cmxOYW1lLCBncm91cCwgY2FsbEZ1bmMuZm9ybUhlYWRlciwge30sIGV2ZW50LmRhdGEuSWQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIkludmFsaWQgY2FsbEZ1bmMgdHlwZTogXCIsXHJcbiAgICAgICAgICBjYWxsRnVuYyxcclxuICAgICAgICAgIFwiIGV2ZW50LlRhcmdldDogXCIsXHJcbiAgICAgICAgICBldmVudC50YXJnZXRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMub3Blbk1vZGFsRm9ybUJ5Q29tcG9uZW50KGNhbGxGdW5jLnR5cGUsIGV2ZW50LkRhdGEuSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIFwiRnVuY3Rpb24gbm90IGRlZmluZWQgaW4gZ3JvdXAgZm9yOiBcIixcclxuICAgICAgICBldmVudC50YXJnZXQsXHJcbiAgICAgICAgXCIsIEV2ZW50OiBcIixcclxuICAgICAgICBldmVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncmlkQWN0aXZpdHlMb2dPbkl0ZW1DbGljayhldmVudDogYW55KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnZ3JpZEFjdGl2aXR5TG9nT25JdGVtQ2xpY2s6ICcsIGV2ZW50KTtcclxuICAgIGNvbnN0IHJlYyA9IGV2ZW50LmRhdGFJdGVtO1xyXG4gICAgc3dpdGNoIChyZWMudHlwZSkge1xyXG4gICAgICBjYXNlICdMaXN0RmllbGQnOlxyXG4gICAgICBjYXNlICdGb3JtRmllbGQnOlxyXG4gICAgICAgIHRoaXMuZ2V0RmllbGR6TW9kZWwocmVjLnR5cGUsIHJlYy5hY3Rpdml0eU5hbWUpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdFRhYigwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUmVzb3VyY2VTZXJ2ZXJBUEknOlxyXG4gICAgICAgIGNvbnN0IHdhdGNoTmFtZVZhbHVlID0gJ19kZWJ1Zy56RGF0YS5jb2xsZWN0ZWRBY3Rpdml0aWVzWycgKyAocmVjLmluZGV4IC0gMSkgKyAnXS5yZWZlcmVuY2UnO1xyXG4gICAgICAgIHRoaXMuc2V0V2F0Y2hOYW1lVmFsdWUod2F0Y2hOYW1lVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VGFiKDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdIdHRwR2V0JCc6XHJcbiAgICAgIGNhc2UgJ0h0dHBQb3N0JCc6XHJcbiAgICAgIGNhc2UgJ0h0dHBQdXQkJzpcclxuICAgICAgY2FzZSAnSHR0cERlbGV0ZSQnOlxyXG4gICAgICAgIHRoaXMuc2V0V2F0Y2hOYW1lVmFsdWUoJ19kZWJ1Zy56RGF0YS5jb2xsZWN0ZWRBY3Rpdml0aWVzWycgKyAocmVjLmluZGV4IC0gMSkgKyAnXScpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0VGFiKDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RUYWIoaW5kZXg6IG51bWJlcikge1xyXG4gICAgLy8gZGVidWdnZXI7XHJcbiAgICAvLyB0aGlzLmRlYnVnLnpDb21wb25lbnRzW1wienRhYl9kZWJ1Z2dlclRhYnNcIl0uc3RhdGUubGFzdFNlbGVjdGVkVGFiSW5kZXggPSBpbmRleDtcclxuICAgIC8vIFpDb21wb25lbnRIZWxwZXIuZ2V0Q29tcG9uZW50KHRoaXMuZGVidWcsICd6dGFiX2RlYnVnZ2VyVGFicycpLnN0YXRlLmxhc3RTZWxlY3RlZFRhYkluZGV4ID0gaW5kZXg7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmRlYnVnLCAnenRhYl9kZWJ1Z2dlclRhYnMnKS5zZWxlY3RUYWIoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXYXRjaE5hbWVWYWx1ZShuZXdWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlYnVnLnpNb2RlbFsnRGVidWdXYXRjaE5hbWUnXSA9IG5ld1ZhbHVlO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKCdXYXRjaE5hbWUnLCBuZXdWYWx1ZSwgdGhpcy5kZWJ1ZywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZEdyaWREYXRhKCkge1xyXG4gICAgY29uc3QgYWN0aXZpdHlMb2dHcmlkID0gWkNvbXBvbmVudEhlbHBlci5nZXRDb21wb25lbnQodGhpcy5kZWJ1ZywgJ3pncmlkX0FjdGl2aXR5TG9nR3JpZCcpO1xyXG4gICAgaWYgKGFjdGl2aXR5TG9nR3JpZCkge1xyXG4gICAgICBhY3Rpdml0eUxvZ0dyaWQuc2V0RGF0YSh0aGlzLmRlYnVnLnpEYXRhLmNvbGxlY3RlZEFjdGl2aXRpZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0V2F0Y2hOYW1lKGNvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50LCBzZWFyY2hUZXh0OiBzdHJpbmcsIHBhZ2VObzogbnVtYmVyLFxyXG4gICAgbWU6IGFueSwgZGF0YUl0ZW06IGFueSwgcmVjb3JkSWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCB3YXRjaExpc3QgPSBbXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLnpNb2RlbCcgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAuekRhdGEnIH0sXHJcbiAgICAgIHsgTmFtZTogJ2dyb3VwLmZpZWxkcycgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAuZm9ybS52YWx1ZScgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAuYmFja05hdmlnYXRpb25QYWdlJyB9LFxyXG4gICAgICB7IE5hbWU6ICdncm91cC5wYXJlbnRSZWZlcmVuY2VGaWVsZCcgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAucGFyZW50UmVmZXJlbmNlSWQnIH0sXHJcbiAgICAgIHsgTmFtZTogJ09iamVjdC5rZXlzKGdyb3VwLnpDb21wb25lbnRzKScgfSxcclxuICAgICAgeyBOYW1lOiAnZ3JvdXAuZ3JpZE9wdGlvbnMuemdyaWQuZ3JpZC5kYXRhJyB9XHJcbiAgICAgIC8vIHsgTmFtZTogJ09iamVjdC5rZXlzKF9kZWJ1Zy56Q29tcG9uZW50cyknIH0sXHJcbiAgICAgIC8vIHsgTmFtZTogJ19kZWJ1Zy56TW9kZWwnIH0sXHJcbiAgICAgIC8vIHsgTmFtZTogJ19kZWJ1Zy56RGF0YScgfSxcclxuICAgICAgLy8geyBOYW1lOiAnX2RlYnVnLnpEYXRhLmNvbGxlY3RlZEFjdGl2aXRpZXMnIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGxldCByZXN1bHRzO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgcmVzdWx0cyA9IHdhdGNoTGlzdC5maWx0ZXIoKHMpID0+IHMuTmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYWdlTm8gPT09IDAgJiYgc2VhcmNoVGV4dCkge1xyXG4gICAgICByZXR1cm4gb2YoeyBkYXRhU2V0OiByZXN1bHRzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChwYWdlTm8gPT09IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHsgZGF0YVNldDogd2F0Y2hMaXN0IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKHsgZGF0YVNldDogW10gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFdhdGNoTmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRlYnVnLnpNb2RlbC5EZWJ1Z1dhdGNoTmFtZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VXYXRjaE5hbWUoZXZlbnQ6IGFueSwgZ3JvdXA6IFpHcm91cCwgbWU6IGFueSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ29uQ2hhbmdlV2F0Y2hOYW1lOiAnLCBldmVudC5kYXRhLnZhbHVlKTtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQuZGF0YS52YWx1ZTtcclxuICAgIGlmIChuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLmRlYnVnLnpNb2RlbFsnRGVidWdXYXRjaE5hbWUnXSA9IG5ld1ZhbHVlLnJlcGxhY2UoJ2dyb3VwJywgJ19ncm91cCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWVsZEVsZW1lbnRvbkVkaXRvckNvZGVDaGFuZ2UoZWw6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgdGhpcy5yZWZyZXNoVHJlZU1vZGVsKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSB0cmVlTm9kZXNFeHBhbmRBbGwoKSB7XHJcbiAgICB0aGlzLmRlYnVnLnpDb21wb25lbnRzWyd6dHJlZV9kZWJ1Z1pUcmVlJ10uZXhwYW5kQWxsKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyZWVOb2Rlc0NvbGxhcHNlQWxsKCkge1xyXG4gICAgdGhpcy5kZWJ1Zy56Q29tcG9uZW50c1snenRyZWVfZGVidWdaVHJlZSddLmNvbGxhcHNlQWxsKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hUcmVlTW9kZWwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkID0gSlNPTi5wYXJzZSh0aGlzLmRlYnVnLnpNb2RlbC5Db2RlKTtcclxuICAgICAgLy8gdGhpcy5fYWRkTm9kZXNUb1RyZWUoZCk7XHJcbiAgICAgIC8vIGdyb3VwWyd0cmVlTW9kZWwnXSA9IHRoaXMuY29udmVydFRyZWVNb2RlbChkKTtcclxuICAgICAgdGhpcy5kZWJ1Z1sndHJlZU1vZGVsJ10gPSBaQ29tcG9uZW50SGVscGVyLmNvbnZlcnRUcmVlTW9kZWwoZCk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyZWVJdGVtVGVtcGxhdGUoZWw6IFpUcmVlVGVtcGxhdGVQYXJhbXMpIHtcclxuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5fRGF0YVZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uX0RhdGFWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCIuLi5cIjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBlbC5kYXRhSXRlbS5OYW1lICtcclxuICAgICAgXCIgLSBbXCIgK1xyXG4gICAgICBlbC5kYXRhSXRlbS5UeXBlICtcclxuICAgICAgXCJdID0gXCIgK1xyXG4gICAgICBnZXRGaWVsZFZhbHVlKGVsLmRhdGFJdGVtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uSXRlbUNsaWNrKGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgY29uc29sZS5sb2coXCJvbkl0ZW1DbGljayBkYXRhIHJlY2VpdmVkOiBcIiwgZXZlbnQpO1xyXG4gICAgY29uc3QgbW9kYWxGaWVsZHMgPSB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKFxyXG4gICAgICBcIm12RWRpdEZpZWxkTm9kZUZvcm1cIixcclxuICAgICAgXCJGb3JtRmllbGRcIixcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGRhdGFJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnQuZGF0YSk7XHJcbiAgICBkYXRhSXRlbS5WYWx1ZSA9IGRhdGFJdGVtLl9EYXRhVmFsdWU7XHJcbiAgICBkZWxldGUgZGF0YUl0ZW0uX0RhdGFWYWx1ZTtcclxuICAgIGNvbnN0IHptb2RlbCA9IHtcclxuICAgICAgbm9kZU1vZGVsOiBKU09OLnN0cmluZ2lmeShkYXRhSXRlbSwgbnVsbCwgMilcclxuICAgIH07XHJcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubWFpblNlcnZpY2Uuc2hvd3pNb2RhbChtb2RhbEZpZWxkcywgdGhpcy5kZWJ1Zy5fZ3JvdXAsICdGaWVsZCBFbGVtZW50IEluZm8nLCB6bW9kZWwpO1xyXG4gICAgbW9kYWwuc3Vic2NyaWJlKChtb2RhbERhdGE6IE1vZGFsUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKG1vZGFsRGF0YS5yZXNwb25zZVR5cGUgPT09IFwiY2FuY2VsXCIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmV3RGF0YSA9IEpTT04ucGFyc2UobW9kYWxEYXRhLmRhdGEubm9kZU1vZGVsKTtcclxuICAgICAgaWYgKG5ld0RhdGEuVmFsdWUpIHtcclxuICAgICAgICBuZXdEYXRhLl9EYXRhVmFsdWUgPSBuZXdEYXRhLlZhbHVlO1xyXG4gICAgICAgIG5ld0RhdGEuVmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRlVHJlZU5vZGUobmV3RGF0YSwgdGhpcy5kZWJ1Z1sndHJlZU1vZGVsJ10sIGV2ZW50LmV2ZW50KTtcclxuICAgICAgY29uc3QgbmV3VHJlZU1vZGVsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRlYnVnWyd0cmVlTW9kZWwnXSkpO1xyXG4gICAgICBjb25zdCByZXZlcnRlZE1vZGVsID0gWkNvbXBvbmVudEhlbHBlci5yZXZlcnRUcmVlTW9kZWwobmV3VHJlZU1vZGVsKTtcclxuICAgICAgY29uc3QgbmV3Q29kZSA9IEpTT04uc3RyaW5naWZ5KHJldmVydGVkTW9kZWwsIG51bGwsIDIpO1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoXCJDb2RlXCIsIG5ld0NvZGUsIHRoaXMuZGVidWcpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XHJcbiAgICAgIC8vIHRoaXMubWFpblNlcnZpY2UudXBkYXRlTW9kZWwobnVsbCwgdGhpcy5kZWJ1Zyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVHJlZU5vZGUobmV3Tm9kZTogYW55LCB0cmVlTW9kZWw6IGFueSwgaW5kZXg6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJlZUluZGV4ID0gaW5kZXguc3BsaXQoXCJfXCIpO1xyXG4gICAgaWYgKHRyZWVJbmRleC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJlZUluZGV4LnNsaWNlKDEpLmpvaW4oXCJfXCIpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVRyZWVOb2RlKG5ld05vZGUsIHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSwgbmV3SW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSkge1xyXG4gICAgICAgIG5ld05vZGUuVmFsdWUgPSB0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgdHJlZU1vZGVsWyt0cmVlSW5kZXhbMF1dID0gbmV3Tm9kZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBpbnNlcnRUcmVlTm9kZShuZXdOb2RlOiBhbnksIHRyZWVNb2RlbDogYW55LCBpbmRleDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmVlSW5kZXggPSBpbmRleC5zcGxpdChcIl9cIik7XHJcbiAgICBpZiAodHJlZUluZGV4Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc3QgbmV3SW5kZXggPSB0cmVlSW5kZXguc2xpY2UoMSkuam9pbihcIl9cIik7XHJcbiAgICAgIHRoaXMuaW5zZXJ0VHJlZU5vZGUobmV3Tm9kZSwgdHJlZU1vZGVsWyt0cmVlSW5kZXhbMF1dLlZhbHVlLCBuZXdJbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodHJlZUluZGV4WzBdKSB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSkpIHtcclxuICAgICAgICAgIHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cmVlTW9kZWxbK3RyZWVJbmRleFswXV0uVmFsdWUucHVzaChuZXdOb2RlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0cmVlTW9kZWwucHVzaChuZXdOb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVUcmVlTm9kZSh0cmVlTW9kZWw6IGFueSwgaW5kZXg6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJlZUluZGV4ID0gaW5kZXguc3BsaXQoXCJfXCIpO1xyXG4gICAgaWYgKHRyZWVJbmRleC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJlZUluZGV4LnNsaWNlKDEpLmpvaW4oXCJfXCIpO1xyXG4gICAgICB0aGlzLnJlbW92ZVRyZWVOb2RlKHRyZWVNb2RlbFsrdHJlZUluZGV4WzBdXS5WYWx1ZSwgbmV3SW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJlZU1vZGVsLnNwbGljZSgrdHJlZUluZGV4WzBdLCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25UcmVlTm9kZUNoYW5nZShlbDogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uVHJlZU5vZGVDaGFuZ2U6IFwiLCBlbCk7XHJcbiAgICBjb25zdCBjb2RlRGF0YSA9IEpTT04uc3RyaW5naWZ5KGVsLmRhdGEpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKFwiQ29kZVwiLCBjb2RlRGF0YSwgdGhpcy5kZWJ1Zyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZE5vZGUoKSB7XHJcbiAgICBjb25zdCBlbDogWkNvbXBvbmVudE91dHB1dEV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgcm93RGF0YToge30sXHJcbiAgICAgIGV2ZW50OiBcIlwiLFxyXG4gICAgICB0YXJnZXQ6IFwiXCIsXHJcbiAgICAgIHR5cGU6IFwiXCIsXHJcbiAgICAgIGNvbHVtbkZpZWxkcyQ6IG51bGxcclxuICAgIH07XHJcbiAgICB0aGlzLm9uQWRkTm9kZShlbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG9uQWRkTm9kZShlbDogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZygnb25BZGROb2RlIGlzIGNhbGxlZCcsIGVsKTtcclxuICAgIGNvbnN0IG1vZGFsRmllbGRzID0gdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZShcclxuICAgICAgXCJtdkVkaXRGaWVsZE5vZGVGb3JtXCIsXHJcbiAgICAgIFwiRm9ybUZpZWxkXCIsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcbiAgICAvLyBjb25zdCBkYXRhSXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGVsLmRhdGEpO1xyXG4gICAgLy8gZGF0YUl0ZW0uVmFsdWUgPSBkYXRhSXRlbS5fRGF0YVZhbHVlO1xyXG4gICAgLy8gZGVsZXRlIGRhdGFJdGVtLl9EYXRhVmFsdWU7XHJcbiAgICBjb25zdCBpbml0aWFsTW9kZWwgPSB7XHJcbiAgICAgIE5hbWU6ICdOYW1lJywgRGlzcGxheU5hbWU6ICdOYW1lJywgVmFsdWU6ICdOYW1lJywgVHlwZTogJ3RleHQnLFxyXG4gICAgICBncmlkQ29sVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgICAgbWluV2lkdGg6IDEwMCxcclxuICAgICAgZW5hYmxlRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG4gICAgICBwaW5uZWRMZWZ0OiBmYWxzZSxcclxuICAgICAgUGxhY2VIb2xkZXI6IFwiTmFtZVwiLFxyXG4gICAgICBJc1JlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgTWluTGVuZ3RoOiAyLFxyXG4gICAgICBNYXhMZW5ndGg6IDUwLFxyXG4gICAgICBMYWJlbDogXCJOYW1lOlwiLFxyXG4gICAgICBEaXZDbGFzczogXCJjb2wteHMtMTIgY29sLXNtLTYgY29sLW1kLTYgY29sLWxnLTNcIixcclxuICAgICAgUmVhZE9ubHk6IGZhbHNlLFxyXG4gICAgICBTaG93TGFiZWw6IHRydWUsXHJcbiAgICAgIFZpc2libGU6IHRydWUsXHJcbiAgICAgIC8vRW5hYmxlSGlkaW5nOiB0cnVlLFxyXG4gICAgICAvL2NlbGxGaWx0ZXI6IFwiXCIsXHJcbiAgICAgIC8vZmlsdGVyQ2VsbEZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgLy9lbmFibGVQaW5uaW5nOiB0cnVlLFxyXG4gICAgICAvL3Bpbm5lZFJpZ2h0OiBmYWxzZSxcclxuICAgICAgLy9VcGRhdGVPbkJsdXI6IHRydWUsXHJcbiAgICAgIC8vQXBwZW5kRGl2Q2xlYXJGaXg6IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHptb2RlbCA9IHtcclxuICAgICAgbm9kZU1vZGVsOiBKU09OLnN0cmluZ2lmeShpbml0aWFsTW9kZWwsIG51bGwsIDIpXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIGNvbnN0IG1vZGFsOiBIVE1MSW9uTW9kYWxFbGVtZW50ID0gYXdhaXQgdGhpcy5tYWluU2VydmljZS5vcGVuTW9kYWxGb3JtKG1vZGFsR3JvdXBQYXJhbSk7XHJcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubWFpblNlcnZpY2Uuc2hvd3pNb2RhbChtb2RhbEZpZWxkcywgdGhpcy5kZWJ1ZywgJ0FkZCBGaWVsZCBFbGVtZW50IEl0ZW0nLCB6bW9kZWwpO1xyXG5cclxuICAgIG1vZGFsLnN1YnNjcmliZSgobW9kYWxEYXRhOiBNb2RhbFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChtb2RhbERhdGEucmVzcG9uc2VUeXBlID09PSBcImNhbmNlbFwiKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBKU09OLnBhcnNlKG1vZGFsRGF0YS5kYXRhLm5vZGVNb2RlbCk7XHJcbiAgICAgIGlmIChuZXdEYXRhLlZhbHVlKSB7XHJcbiAgICAgICAgbmV3RGF0YS5fRGF0YVZhbHVlID0gbmV3RGF0YS5WYWx1ZTtcclxuICAgICAgICBuZXdEYXRhLlZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluc2VydFRyZWVOb2RlKG5ld0RhdGEsIHRoaXMuZGVidWdbXCJ0cmVlTW9kZWxcIl0sIGVsLmV2ZW50KTtcclxuICAgICAgY29uc3QgbmV3VHJlZU1vZGVsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRlYnVnWyd0cmVlTW9kZWwnXSkpO1xyXG4gICAgICBjb25zdCByZXZlcnRlZE1vZGVsID0gWkNvbXBvbmVudEhlbHBlci5yZXZlcnRUcmVlTW9kZWwobmV3VHJlZU1vZGVsKTtcclxuICAgICAgY29uc3QgbmV3Q29kZSA9IEpTT04uc3RyaW5naWZ5KHJldmVydGVkTW9kZWwsIG51bGwsIDIpO1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoXCJDb2RlXCIsIG5ld0NvZGUsIHRoaXMuZGVidWcpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XHJcbiAgICAgIC8vIHRoaXMubWFpblNlcnZpY2UudXBkYXRlTW9kZWwobnVsbCwgdGhpcy5kZWJ1Zyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SZW1vdmVOb2RlKGVsOiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3coJ1JlbW92ZSBOb2RlJywgJ0FyZSB5b3Ugc3VyZT8nLFxyXG4gICAgICBbXHJcbiAgICAgICAgeyB0ZXh0OiBcIk5vXCIsIGNzc0NsYXNzOiBcInNlY29uZGFyeVwiIH0gYXMgQWxlcnRCdXR0b24sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlllc1wiLCBjc3NDbGFzczogXCJwcmltYXJ5XCIgfSBhcyBBbGVydEJ1dHRvblxyXG4gICAgICBdKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcGx5ID0+IHtcclxuICAgICAgICBpZiAocmVwbHkgPT09ICdZZXMnKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVtb3ZlIE5vZGUnLCBlbCk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVRyZWVOb2RlKHRoaXMuZGVidWdbXCJ0cmVlTW9kZWxcIl0sIGVsLmV2ZW50KTtcclxuICAgICAgICAgIGNvbnN0IG5ld1RyZWVNb2RlbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWJ1Z1sndHJlZU1vZGVsJ10pKTtcclxuICAgICAgICAgIGNvbnN0IHJldmVydGVkTW9kZWwgPSBaQ29tcG9uZW50SGVscGVyLnJldmVydFRyZWVNb2RlbChuZXdUcmVlTW9kZWwpO1xyXG4gICAgICAgICAgY29uc3QgbmV3Q29kZSA9IEpTT04uc3RyaW5naWZ5KHJldmVydGVkTW9kZWwsIG51bGwsIDIpO1xyXG4gICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKFwiQ29kZVwiLCBuZXdDb2RlLCB0aGlzLmRlYnVnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnb3RvRmllbGRFbGVtZW50KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhZG1pbi9maWVsZCddKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwoKSB7XHJcbiAgICBjb25zdCBkZWJ1ZyA9IHRoaXMuZGVidWc7XHJcbiAgICBjb25zdCBmZyA9IHRoaXMuZGVidWcuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICBpZiAoIWZnLmRpcnR5KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkRlYnVnIEZvcm0gaXMgbm90IGRpcnR5IGhlbmNlIHJlY29yZCBpcyBub3Qgc2F2ZS5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZnLnZhbGlkKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Rm9ybUdyb3VwRXJyb3JzKGZnLCB0aGlzLmFsZXJ0U2VydmljZSk7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkRlYnVnIEZvcm0gVmFsaWRhdGlvbiBnb3QgZXJyb3Iocyk6XCIsIGVycm9ycyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBvZihkZWJ1Zy56TW9kZWwpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIHN3aXRjaE1hcCh6bW9kZWwgPT4ge1xyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coXCJCZWZvcmUgdXBkYXRlLCB6TW9kZWw6XCIsIHptb2RlbCk7XHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5iZWZvcmVVcGRhdGVNb2RlbChncm91cCk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZGVidWcuek1vZGVsLCBmZy52YWx1ZSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFB1dCQoXHJcbiAgICAgICAgICAgIGRlYnVnLnJlc291cmNlVVJMICsgXCIvXCIgKyBkZWJ1Zy56TW9kZWwuSWQsXHJcbiAgICAgICAgICAgIGRlYnVnLnpNb2RlbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBtYXAocmVzID0+IHRoaXMuaGFuZGxlU3VjY2VzcyhyZXMsIFwiUmVjb3JkIGlzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiKSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCh6bW9kZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJBZnRlciBEZWJ1ZyBGb3JtIHVwZGF0ZWQsIHpNb2RlbDpcIiwgem1vZGVsKTtcclxuICAgICAgICAgIGlmICh6bW9kZWwgJiYgem1vZGVsLkRhdGEpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihkZWJ1Zy56TW9kZWwsIHptb2RlbC5EYXRhKTtcclxuICAgICAgICAgICAgZmcucGF0Y2hWYWx1ZSh6bW9kZWwuRGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmZy5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmFmdGVyVXBkYXRlTW9kZWwoZ3JvdXApO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqIFdvcmtmbG93IEJ1dHRvbiAqKioqKioqKioqKioqKioqKioqKlxyXG4gIHB1YmxpYyBsb2FkV29ya2Zsb3dEYXRhKCkge1xyXG4gICAgY29uc3QgemdyaWRfV29ya2Zsb3dCdXR0b25HcmlkID0gWkNvbXBvbmVudEhlbHBlci5nZXRDb21wb25lbnQodGhpcy5kZWJ1ZywgJ3pncmlkX1dvcmtmbG93QnV0dG9uR3JpZCcpO1xyXG4gICAgaWYgKHpncmlkX1dvcmtmbG93QnV0dG9uR3JpZCkge1xyXG4gICAgICB6Z3JpZF9Xb3JrZmxvd0J1dHRvbkdyaWQuc2V0RGF0YSh0aGlzLmRlYnVnLnpEYXRhLmNvbGxlY3RlZFdvcmtmbG93QnV0dG9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdyaWRXb3JrZmxvd0J1dHRvbk9uSXRlbUNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGFJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnQuZGF0YUl0ZW0pO1xyXG4gICAgY29uc3QgZmllbGQgPSBkYXRhSXRlbS5yZWZGaWVsZDtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGRhdGFJdGVtLnJlZkF0dHJpYnV0ZTtcclxuXHJcbiAgICAvLyBHZXQgTWFwcGVkIEluZm9cclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgLnNldChcIkJ1dHRvbklkXCIsIGZpZWxkLklkKTtcclxuICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFwiZTF3ZnNfd2ZjX2dldG1hcHBlZEJ1dHRvbkluZm9VUkxcIiksIHBhcmFtcykucGlwZShcclxuICAgICAgbWFwKGFzeW5jIHJlcyA9PiB7XHJcbiAgICAgICAgbGV0IHJvbGVJbmZvID0gW107XHJcbiAgICAgICAgbGV0IHN0YXR1c0luZm8gPSBbXTtcclxuICAgICAgICBsZXQgcGFyZW50U3RhdHVzSW5mbyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVzLk1hcHBlZFJvbGVMaXN0KSB7XHJcbiAgICAgICAgICByb2xlSW5mbyA9IHJlcy5NYXBwZWRSb2xlTGlzdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXMuTWFwcGVkU3RhdHVzTGlzdCkge1xyXG4gICAgICAgICAgcmVzLk1hcHBlZFN0YXR1c0xpc3QuZm9yRWFjaCgoX3N0YXR1czogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHN0YXR1c0luZm8ucHVzaChfc3RhdHVzLk5hbWUgKyAnICgnICsgX3N0YXR1cy5Db2RlICsgJyknKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcy5NYXBwZWRQYXJlbnRTdGF0dXNMaXN0KSB7XHJcbiAgICAgICAgICByZXMuTWFwcGVkUGFyZW50U3RhdHVzTGlzdC5mb3JFYWNoKChfcGFyZW50U3RhdHVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcGFyZW50U3RhdHVzSW5mby5wdXNoKF9wYXJlbnRTdGF0dXMuTmFtZSArICcgKCcgKyBfcGFyZW50U3RhdHVzLkNvZGUgKyAnKScpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBfbWFwcGVkSW5mbyA9IHtcclxuICAgICAgICAgICdtYXBwZWRSb2xlSW5mbyc6IHJvbGVJbmZvLmxlbmd0aCA+IDAgPyByb2xlSW5mbyA6ICdOLkEuJyxcclxuICAgICAgICAgICdtYXBwZWRTdGF0dXNJbmZvJzogc3RhdHVzSW5mby5sZW5ndGggPiAwID8gc3RhdHVzSW5mbyA6ICdOLkEuJyxcclxuICAgICAgICAgICdtYXBwZWRQYXJlbnRTdGF0dXNJbmZvJzogcGFyZW50U3RhdHVzSW5mby5sZW5ndGggPiAwID8gcGFyZW50U3RhdHVzSW5mbyA6ICdOLkEuJ1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIHJldHJlaXZlIGFsbCBpbXBvcnRhbnQgaW5mb1xyXG4gICAgICAgIGNvbnN0IF9idXR0b25JbmZvID0ge1xyXG4gICAgICAgICAgJ1dvcmtmbG93SWQnOiBmaWVsZC5Xb3JrZmxvd0lkLFxyXG4gICAgICAgICAgJ0J1dHRvbklkJzogZmllbGQuSWQsXHJcbiAgICAgICAgICAnQnV0dG9uTmFtZSc6IGZpZWxkLk5hbWUsXHJcbiAgICAgICAgICAnQnV0dG9uQ29kZSc6IGZpZWxkLkNvZGUsXHJcbiAgICAgICAgICAnQnV0dG9uVHlwZUlkJzogZmllbGQuVHlwZS5JZCxcclxuICAgICAgICAgICdCdXR0b25UeXBlTmFtZSc6IGZpZWxkLlR5cGUuTmFtZSxcclxuICAgICAgICAgICdCdXR0b25UeXBlQ29kZSc6IGZpZWxkLlR5cGUuQ29kZSxcclxuICAgICAgICAgICdCdXR0b25WaXNpYmxlJzogYXR0cmlidXRlLlZpc2libGUsXHJcbiAgICAgICAgICAnQnV0dG9uQ2xpY2tFdmVudCc6IGF0dHJpYnV0ZS5DbGlja0V2ZW50LFxyXG4gICAgICAgICAgJ0J1dHRvblVSTCc6IGF0dHJpYnV0ZS5VUkwsXHJcbiAgICAgICAgICAnQnV0dG9uSWNvbic6IGF0dHJpYnV0ZS5JY29uXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IF9nb3RvU3RhdHVzSW5mbyA9IHtcclxuICAgICAgICAgICdHb3RvU3RhdHVzSWQnOiAnTi5BLicsXHJcbiAgICAgICAgICAnR290b1N0YXR1c05hbWUnOiAnTi5BLicsXHJcbiAgICAgICAgICAnR290b1N0YXR1c0NvZGUnOiAnTi5BLidcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoZmllbGQuU3RhdHVzKSB7XHJcbiAgICAgICAgICBjb25zdCBfZ290b1N0YXR1cyA9IGZpZWxkLlN0YXR1c1xyXG4gICAgICAgICAgX2dvdG9TdGF0dXNJbmZvID0ge1xyXG4gICAgICAgICAgICAnR290b1N0YXR1c0lkJzogX2dvdG9TdGF0dXMuSWQsXHJcbiAgICAgICAgICAgICdHb3RvU3RhdHVzTmFtZSc6IF9nb3RvU3RhdHVzLk5hbWUsXHJcbiAgICAgICAgICAgICdHb3RvU3RhdHVzQ29kZSc6IF9nb3RvU3RhdHVzLkNvZGVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXNNb2RlbCA9IE9iamVjdC5hc3NpZ24oX2J1dHRvbkluZm8sIF9nb3RvU3RhdHVzSW5mbywgX21hcHBlZEluZm8pO1xyXG5cclxuICAgICAgICBjb25zdCBtb2RhbEZpZWxkcyA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUoXHJcbiAgICAgICAgICBcIm12V29ya2Zsb3dCdXR0b25EZWJ1Z0Zvcm1cIixcclxuICAgICAgICAgIFwiRm9ybUZpZWxkXCIsXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1haW5TZXJ2aWNlLnNob3d6TW9kYWwobW9kYWxGaWVsZHMsIHRoaXMuZGVidWcuX2dyb3VwLCAnV29ya2Zsb3cgQnV0dG9uIEluZm8nLCBwcm9wZXJ0aWVzTW9kZWwpO1xyXG4gICAgICAgIG1vZGFsLnN1YnNjcmliZSgobW9kYWxEYXRhOiBNb2RhbFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAobW9kYWxEYXRhLnJlc3BvbnNlVHlwZSA9PT0gXCJjYW5jZWxcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZVN1Y2Nlc3MocmVzOiBSZXNwb25zZSB8IGFueSwgc3VjY2Vzc01zZzogc3RyaW5nKTogUmVzcG9uc2Uge1xyXG4gICAgaWYgKHJlcyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coc3VjY2Vzc01zZyk7XHJcbiAgICB9IGVsc2UgaWYgKHJlcy5EYXRhICE9PSB1bmRlZmluZWQgJiYgcmVzLlByb2Nlc3NpbmdTdGF0dXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAocmVzLlByb2Nlc3NpbmdTdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMuRGF0YSkpIHtcclxuICAgICAgICAgIHJlcy5EYXRhLm1hcChzID0+IHRoaXMud2ViQXBpU2VydmljZS5zaG93SHR0cFJlc3BvbnNlTWVzc2FnZShNRVNTQUdFVFlQRS5TdWNjZXNzLFxyXG4gICAgICAgICAgICBgJHtzdWNjZXNzTXNnfSA6ICR7cy5Db3N0Q29kZX1gLCBudWxsKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZS5zaG93SHR0cFJlc3BvbnNlTWVzc2FnZShNRVNTQUdFVFlQRS5TdWNjZXNzLCBzdWNjZXNzTXNnLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coc3VjY2Vzc01zZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IocmVzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5oYW5kbGVFcnJvcihyZXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|