@sd-angular/core 1.3.125 → 1.3.126

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.
@@ -625,19 +625,17 @@ export class SdGridMaterial {
625
625
  __classPrivateFieldGet(this, _onExport).call(this, args);
626
626
  });
627
627
  this.onFilterChange = () => {
628
- setTimeout(() => {
629
- var _a, _b, _c, _d;
630
- (_b = (_a = this.gridFilter) === null || _a === void 0 ? void 0 : _a.updateFilter) === null || _b === void 0 ? void 0 : _b.call(_a);
631
- if ((_d = (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.filter) === null || _d === void 0 ? void 0 : _d.inlineColumn) {
632
- this.filterRegister.value.set({
633
- columnOperator: this.columnOperator,
634
- columnFilter: this.columnFilter,
635
- });
636
- }
637
- else {
638
- this.filterRegister.value.set({});
639
- }
640
- }, 100);
628
+ var _a, _b, _c, _d;
629
+ (_b = (_a = this.gridFilter) === null || _a === void 0 ? void 0 : _a.updateFilter) === null || _b === void 0 ? void 0 : _b.call(_a);
630
+ if ((_d = (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.filter) === null || _d === void 0 ? void 0 : _d.inlineColumn) {
631
+ this.filterRegister.value.set({
632
+ columnOperator: this.columnOperator,
633
+ columnFilter: this.columnFilter,
634
+ });
635
+ }
636
+ else {
637
+ this.filterRegister.value.set({});
638
+ }
641
639
  };
642
640
  this.onExpand = (rowData) => __awaiter(this, void 0, void 0, function* () {
643
641
  var _y, _z, _0, _1, _2;
@@ -720,7 +718,11 @@ export class SdGridMaterial {
720
718
  this.filterRegister.value.remove();
721
719
  };
722
720
  this.setFilter = (args) => {
721
+ var _a, _b;
723
722
  const { columnFilter, externalFilter, filterDef } = args || {};
723
+ if (((_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.inlineColumn) && columnFilter) {
724
+ this.columnFilter = columnFilter;
725
+ }
724
726
  this.filterRegister.value.set({
725
727
  columnFilter,
726
728
  externalFilter,
@@ -1089,4 +1091,4 @@ SdGridMaterial.propDecorators = {
1089
1091
  sdFooterDefs: [{ type: ContentChildren, args: [SdMaterialFooterDefDirective,] }],
1090
1092
  sdFilterDefs: [{ type: ContentChildren, args: [SdMaterialFilterDefDirective,] }]
1091
1093
  };
1092
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQWdDLE1BQU0sbUNBQW1DLENBQUM7QUFDckksT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQStCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlB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Q0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7OztZQXZvQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLHVqeUJBQTZDO2dCQUU3QyxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTt3QkFDdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQ2hGLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQzt3QkFDaEUsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3FCQUN0RixDQUFDO2lCQUNIOzthQUNGOzs7WUFoREMsaUJBQWlCOzRDQWtMZCxNQUFNLFNBQUMsb0JBQW9CLGNBQzNCLFFBQVE7WUF2SkosMEJBQTBCO1lBRkksZUFBZTtZQVg3QyxlQUFlO1lBaUJmLGtCQUFrQjtZQUdsQixtQkFBbUI7WUFGbkIseUJBQXlCOzs7dUJBa0IvQixTQUFTLFNBQUMsaUJBQWlCOzBCQUkzQixTQUFTLFNBQUMsYUFBYTswQkFHdkIsU0FBUyxTQUFDLFlBQVk7cUJBaUJ0QixLQUFLO3dCQXlCTCxTQUFTLFNBQUMsWUFBWTttQkFtQnRCLFNBQVMsU0FBQyxPQUFPOzRCQWtCakIsU0FBUyxTQUFDLGFBQWE7K0JBR3ZCLFlBQVksU0FBQyxvQ0FBb0M7MEJBSWpELFlBQVksU0FBQywrQkFBK0I7eUJBSTVDLGVBQWUsU0FBQywwQkFBMEI7MkJBTTFDLGVBQWUsU0FBQyw0QkFBNEI7MkJBTzVDLGVBQWUsU0FBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPcHRpb25hbCxcclxuICBJbmplY3QsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIENvbnRlbnRDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3RlciwgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlcy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsT3B0aW9uIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBHUklEX01BVEVSSUFMX0NPTkZJRywgREVGQVVMVF9HUklEX01BVEVSSUFMX0NPTkZJRywgSVNkR3JpZE1hdGVyaWFsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1jZWxsLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtc3ViLWluZm9ybWF0aW9uLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZvb3Rlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1lbXB0eS1kYXRhLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZFBvcHVwRXhwb3J0IH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcHVwLWV4cG9ydC9wb3B1cC1leHBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RFeHBvcnRDb2x1bW4sIFNkRXhwb3J0RmlsZSwgU2RFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JpZC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbEV4cG9ydENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2RRdWlja0FjdGlvbiB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvcXVpY2stYWN0aW9uJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxJdGVtLCBTZEl0ZW0gfSBmcm9tICcuL21vZGVscy9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgU2RDb2x1bW5WYWx1ZXNQaXBlIH0gZnJvbSAnLi9waXBlcy9jb2x1bW4tdmFsdWVzLnBpcGUnO1xyXG5pbXBvcnQgeyBTZEVkaXRvckhhbmRsZXJDb2x1bW5QaXBlIH0gZnJvbSAnLi9waXBlcy9lZGl0b3ItaGFuZGxlci1jb2x1bW4ucGlwZSc7XHJcbmltcG9ydCB7IFNkU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZEdyaWRGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1tYXRlcmlhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzAnLCBtaW5IZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZE1hdGVyaWFsPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICNncmlkSWQgPSB1dWlkLnY0KCk7XHJcbiAgQFZpZXdDaGlsZChTZFNjcm9sbERpcmVjdGl2ZSkgc2RTY3JvbGw6IFNkU2Nyb2xsRGlyZWN0aXZlO1xyXG4gIGZpbHRlclJlZ2lzdGVyOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyO1xyXG4gIGtleSA9IHV1aWQudjQoKTtcclxuICBncmlkQ29uZmlndXJhdGlvbk9ic2VydmVyOiBPYnNlcnZhYmxlPFNkR3JpZENvbmZpZ3VyYXRpb24+O1xyXG4gIEBWaWV3Q2hpbGQoU2RRdWlja0FjdGlvbikgcXVpY2tBY3Rpb246IFNkUXVpY2tBY3Rpb247XHJcblxyXG4gIGdyaWRGaWx0ZXI6IFNkR3JpZEZpbHRlcjtcclxuICBAVmlld0NoaWxkKFNkR3JpZEZpbHRlcikgc2V0IF9ncmlkRmlsdGVyKGdyaWRGaWx0ZXI6IFNkR3JpZEZpbHRlcikge1xyXG4gICAgaWYgKGdyaWRGaWx0ZXIgJiYgdGhpcy5ncmlkRmlsdGVyICE9PSBncmlkRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZEZpbHRlciA9IGdyaWRGaWx0ZXI7XHJcbiAgICAgIC8vIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoZ3JpZEZpbHRlci5maWx0ZXJDaGFuZ2UucGlwZShcclxuICAgICAgLy8gICBmaWx0ZXIocmVsb2FkID0+IHJlbG9hZCksXHJcbiAgICAgIC8vICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgIC8vICAgbWFwKCgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICAvLyAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAvLyAgICAgICBmb3JjZTogZmFsc2UsXHJcbiAgICAgIC8vICAgICAgIHNvdXJjZTogJ0ZJTFRFUidcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0pLFxyXG4gICAgICAvLyApLnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBvcHRpb24ob3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbikge1xyXG4gICAgaWYgKG9wdGlvbikge1xyXG4gICAgICBvcHRpb24gPSB0aGlzLiNpbml0Q29uZmlndXJhdGlvbihvcHRpb24pO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb24gPSBvcHRpb247XHJcbiAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQodGhpcy5rZXksIHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgICAgIHRoaXMuZ3JpZENvbmZpZ3VyYXRpb25PYnNlcnZlciA9IGNvbmZpZ3VyYXRpb24ub2JzZXJ2ZXI7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZCgpO1xyXG4gICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLm5leHQodGhpcy5ncmlkT3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgI29wdGlvbkNoYW5nZXMgPSBuZXcgU3ViamVjdDxTZEdyaWRNYXRlcmlhbE9wdGlvbj4oKTtcclxuXHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb247XHJcbiAgI2xvY2FsSXRlbXM6IGFueVtdID0gW107XHJcbiAgaXRlbXM6IFNkR3JpZE1hdGVyaWFsSXRlbTxUPltdID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxuXHJcbiAgLy8gTG9hZGluZ1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvLyBQYWdpbmF0ZVxyXG4gIGlzSGlkZGVuUGFnaW5hdG9yID0gZmFsc2U7XHJcbiAgI3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcbiAgICBpZiAocGFnaW5hdG9yICYmIHRoaXMuI3BhZ2luYXRvciAhPT0gcGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMuI3BhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBwYWdpbmF0b3IucGFnZVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTb3J0aW5nXHJcbiAgI3NvcnQ6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzZXQgc29ydChzb3J0OiBNYXRTb3J0KSB7XHJcbiAgICBpZiAoc29ydCAmJiB0aGlzLiNzb3J0ICE9PSBzb3J0KSB7XHJcbiAgICAgIHRoaXMuI3NvcnQgPSBzb3J0O1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICAgIHNvcnQuc29ydENoYW5nZVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBFeHBvcnRcclxuICBAVmlld0NoaWxkKFNkUG9wdXBFeHBvcnQpIHNkUG9wdXBFeHBvcnQ6IFNkUG9wdXBFeHBvcnQ7XHJcblxyXG4gIC8vIFN1YiBJbmZvcm1hdGlvblxyXG4gIEBDb250ZW50Q2hpbGQoU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlKVxyXG4gIHNkU3ViSW5mb3JtYXRpb246IFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZTtcclxuXHJcbiAgLy8gRW1wdHkgRGF0YVxyXG4gIEBDb250ZW50Q2hpbGQoU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZSlcclxuICBzZEVtcHR5RGF0YTogU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZTtcclxuXHJcbiAgLy8gQ2VsbCBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlKSBzZENlbGxEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZT4oKTtcclxuICBjZWxsRGVmOiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZTtcclxuICB9ID0ge307XHJcblxyXG4gIC8vIEZvb3RlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmUpIHNkRm9vdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmb290ZXJEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmU7XHJcbiAgfSA9IHt9O1xyXG4gIGhhc0Zvb3RlciA9IGZhbHNlO1xyXG5cclxuICAvLyBGaWx0ZXIgRGVmXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlKSBzZEZpbHRlckRlZnMgPSBuZXcgUXVlcnlMaXN0PFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmU+KCk7XHJcbiAgZmlsdGVyRGVmczogU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZVtdID0gW107XHJcblxyXG4gIC8vIEZpbHRlclxyXG4gIGNvbHVtbk9wZXJhdG9yOiBSZWNvcmQ8c3RyaW5nLCBTZEZpbHRlck9wZXJhdG9yPiA9IHt9O1xyXG4gIGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIC8vIFN1YmNyaXB0aW9uXHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAjcmVsb2FkID0gbmV3IFN1YmplY3Q8e1xyXG4gICAgZm9yY2U6IGJvb2xlYW47XHJcbiAgfT4oKTtcclxuICBpc0V4cG9ydGluZyA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgZXhwb3J0VGl0bGUgPSAnRXhwb3J0JztcclxuICAjbG9hZENvbXBsZXRlZCA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChHUklEX01BVEVSSUFMX0NPTkZJRylcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbjogSVNkR3JpZE1hdGVyaWFsQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlOiBTZEdyaWRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbHVtblZhbHVlc1BpcGU6IFNkQ29sdW1uVmFsdWVzUGlwZSxcclxuICAgIHByaXZhdGUgZ3JpZEZpbHRlclNlcnZpY2U6IFNkR3JpZEZpbHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRvckhhbmRsZXJDb2x1bW5QaXBlOiBTZEVkaXRvckhhbmRsZXJDb2x1bW5QaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2luaXRDZWxsRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiNyZWxvYWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ3JpZE9wdGlvbikpLFxyXG4gICAgICAgIHRoaXMuc2RGaWx0ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJEZWZzKSksXHJcbiAgICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdENlbGxEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNlbGxEZWYgPSB7fTtcclxuICAgIGZvciAoY29uc3QgY2VsbERlZiBvZiB0aGlzLnNkQ2VsbERlZnMpIHtcclxuICAgICAgaWYgKGNlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWYpIHtcclxuICAgICAgICB0aGlzLmNlbGxEZWZbY2VsbERlZi5zZE1hdGVyaWFsQ2VsbERlZl0gPSBjZWxsRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGaWx0ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckRlZnMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyRGVmIG9mIHRoaXMuc2RGaWx0ZXJEZWZzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyRGVmcy5wdXNoKGZpbHRlckRlZik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGb290ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvb3RlckRlZiA9IHt9O1xyXG4gICAgdGhpcy5oYXNGb290ZXIgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgZm9vdGVyRGVmIG9mIHRoaXMuc2RGb290ZXJEZWZzKSB7XHJcbiAgICAgIGlmIChmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZikge1xyXG4gICAgICAgIHRoaXMuaGFzRm9vdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvb3RlckRlZltmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZl0gPSBmb290ZXJEZWY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZmlsdGVyRXhwb3J0SW5mbyA9IChwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5PcGVyYXRvciwgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sdW1uT3BlcmF0b3I6IGNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICByYXdDb2x1bW5GaWx0ZXI6IGNvbHVtbkZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IGV4dGVybmFsRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdGaWx0ZXJEZWY6IGZpbHRlckRlZiB8fCB7fSxcclxuICAgICAgb3JkZXJCeTogdGhpcy4jc29ydD8uYWN0aXZlIHx8ICcnLFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy4jc29ydD8uZGlyZWN0aW9uIHx8ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyLFxyXG4gICAgICBwYWdlU2l6ZSxcclxuICAgICAgaXNFeHBvcnRlZDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2luaXRDb25maWd1cmF0aW9uID0gKG9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb24pID0+IHtcclxuICAgIC8vIEluaXQgcGFnaW5hdGlvblxyXG4gICAgb3B0aW9uLnBhZ2luYXRlID0ge1xyXG4gICAgICBoaWRkZW46IG9wdGlvbj8ucGFnaW5hdGU/LmhpZGRlbixcclxuICAgICAgcGFnZVNpemU6IG9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VTaXplID8/IHRoaXMuY29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VTaXplID8/IERFRkFVTFRfR1JJRF9NQVRFUklBTF9DT05GSUcucGFnaW5hdGU/LnBhZ2VTaXplLFxyXG4gICAgICBwYWdlczogb3B0aW9uPy5wYWdpbmF0ZT8ucGFnZXMgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5wYWdpbmF0ZT8ucGFnZXMgPz8gREVGQVVMVF9HUklEX01BVEVSSUFMX0NPTkZJRy5wYWdpbmF0ZT8ucGFnZXMsXHJcbiAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zOiBvcHRpb24/LnBhZ2luYXRlPy5zaG93Rmlyc3RMYXN0QnV0dG9ucyA/PyBmYWxzZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gb3B0aW9uO1xyXG4gIH07XHJcblxyXG4gICNsb2FkRmlsdGVyUmVnaXN0ZXIgPSAoKSA9PiB7XHJcbiAgICAvLyBJbml0IGZpbHRlclxyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbikge1xyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyUmVnaXN0ZXIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlclJlZ2lzdGVyID0gdGhpcy5ncmlkRmlsdGVyU2VydmljZS5yZWdpc3Rlcih0aGlzLmdyaWRPcHRpb24/LmZpbHRlciwge1xyXG4gICAgICAgICAgaWQ6IHRoaXMuI2dyaWRJZCxcclxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMuZ3JpZE9wdGlvbj8uY29sdW1ucyxcclxuICAgICAgICAgIGV4dGVybmFsRmlsdGVyczogdGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICAgIGZpbHRlckRlZnM6IHRoaXMuZmlsdGVyRGVmcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5vYnNlcnZlclxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgICAgICBtYXAoZmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb2x1bW5PcGVyYXRvciwgY29sdW1uRmlsdGVyLCBub3RSZWxvYWQgfSA9IGZpbHRlclZhbHVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvciA9IGNvbHVtbk9wZXJhdG9yO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5vdFJlbG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2ZpbHRlckxvY2FsID0gKGxvY2FsSXRlbXM6IGFueVtdLCBmaWx0ZXJJbmZvOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QpID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBjb25zdCB7IGZpZWxkLCB0eXBlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChyYXdDb2x1bW5GaWx0ZXJbZmllbGRdIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlOiBzdHJpbmcgPSAoaXRlbVtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtblZhbHVlICYmIHR5cGUgIT09ICdkYXRldGltZScgJiYgdHlwZSAhPT0gJ2RhdGUnICYmIHR5cGUgIT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtblZhbHVlLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKGN1cnJlbnQsIG5leHQpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRbZmllbGRdIHx8IDApIC0gKG5leHRbZmllbGRdIHx8IDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAnZGF0ZXRpbWUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBkMSA9IG5ldyBEYXRlKGN1cnJlbnRbZmllbGRdIHx8ICcnKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGQyID0gbmV3IERhdGUoY3VycmVudFtmaWVsZF0gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGQxIC0gZDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBzMSA9IChjdXJyZW50W2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNvbnN0IHMyID0gKG5leHRbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHMxID4gczIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoczEgPCBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAob3JkZXJEaXJlY3Rpb24gPT09ICdkZXNjJykge1xyXG4gICAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbXM6IGl0ZW1zLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPj0gcGFnZU51bWJlciAqIHBhZ2VTaXplICYmIGluZGV4IDwgKHBhZ2VOdW1iZXIgKyAxKSAqIHBhZ2VTaXplO1xyXG4gICAgICB9KSxcclxuICAgICAgdG90YWw6IGl0ZW1zLmxlbmd0aCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2dldEZpbHRlciA9ICgpOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5PcGVyYXRvciwgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sdW1uT3BlcmF0b3I6IGNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICByYXdDb2x1bW5GaWx0ZXI6IGNvbHVtbkZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IGV4dGVybmFsRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdGaWx0ZXJEZWY6IGZpbHRlckRlZiB8fCB7fSxcclxuICAgICAgb3JkZXJCeTogdGhpcy4jc29ydD8uYWN0aXZlIHx8ICcnLFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy4jc29ydD8uZGlyZWN0aW9uIHx8ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLiNwYWdpbmF0b3I/LnBhZ2VJbmRleCB8fCAwLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy4jcGFnaW5hdG9yPy5wYWdlU2l6ZSB8fCB0aGlzLmdyaWRPcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSB8fCA1MCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2xvYWQgPSBhc3luYyAoZmlsdGVyUmVxOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QsIGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoZmlsdGVyUmVxKTtcclxuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaXRlbXM6IGRhdGE/Lml0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgdG90YWw6IGRhdGE/LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYScpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpdGVtczogW10sXHJcbiAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSAoYXdhaXQgcmVzdWx0cykgfHwgW107XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gcmVzdWx0cyB8fCBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLiNsb2NhbEl0ZW1zKSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0Thu68gbGnhu4d1IGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IG3huqNuZycpO1xyXG4gICAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbXTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwodGhpcy4jbG9jYWxJdGVtcywgZmlsdGVyUmVxKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjcmVuZGVyID0gYXN5bmMgKGFyZ3M6IHsgaXRlbXM6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0pID0+IHtcclxuICAgIHRoaXMuc2RTY3JvbGw/LnNjcm9sbFRvcCgpO1xyXG4gICAgdGhpcy5pdGVtcyA9IGFyZ3M/Lml0ZW1zIHx8IFtdO1xyXG4gICAgdGhpcy50b3RhbCA9IGFyZ3M/LnRvdGFsIHx8IDA7XHJcbiAgICAvLyB0aGlzLmlzSGlkZGVuUGFnaW5hdG9yID0gdGhpcy5maWx0ZXJJbmZvLnBhZ2VOdW1iZXIgPT09IDAgJiYgdGhpcy50b3RhbCA8PSB0aGlzLmZpbHRlckluZm8ucGFnZVNpemU7XHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW06IFNkSXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLm9yaWdpbkl0ZW0gPSB7IC4uLml0ZW0gfTtcclxuICAgIH0pO1xyXG4gICAgYXdhaXQgdGhpcy5ncmlkT3B0aW9uPy5yZWxvYWQ/Lm9uUmVsb2FkPy4odGhpcy5pdGVtcyk7XHJcbiAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUuaXNTZWxlY3RlZCk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgcmVsb2FkID0gYXN5bmMgKGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy5ncmlkRmlsdGVyPy51cGRhdGVGaWx0ZXI/LigpO1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuI2xvYWQodGhpcy4jZ2V0RmlsdGVyKCksIGZvcmNlKTtcclxuICAgIHRoaXMuI3JlbmRlcihkYXRhKTtcclxuICB9O1xyXG5cclxuICAjZXhwb3J0ZWRJdGVtcyA9IGFzeW5jIChwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMTAwMDApID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5pdGVtcykge1xyXG4gICAgICAvLyBjb25zdCBleHBvcnRlZEl0ZW1zID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXModGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXModGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlPGFueVtdPihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc09ic2VydmFibGU8eyBpdGVtczogYW55W107IHRvdGFsOiBudW1iZXIgfT4ocmVzdWx0KSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgcmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsdGVySW5mbyA9IHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdzZXJ2ZXInKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyhmaWx0ZXJJbmZvKTtcclxuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbChleHBvcnRlZEl0ZW1zLCBmaWx0ZXJJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgY29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgI2FsbENvbHVtbnMgPSAoKTogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdID0gW107XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICBjb2x1bW4uY2hpbGRyZW5cclxuICAgICAgICAgICAgPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuLWNvbCcpIHtcclxuICAgICAgICAgIGNvbHVtbi5jaGlsZHJlblxyXG4gICAgICAgICAgICA/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgfTtcclxuXHJcbiAgI2FsbEV4cG9ydGVkQ29sdW1ucyA9ICgpOiBTZEdyaWRNYXRlcmlhbEV4cG9ydENvbHVtbltdID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5jb2x1bW5zPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKSB8fCBbXTtcclxuICB9O1xyXG5cclxuICAjb25FeHBvcnQgPSBhc3luYyAoYXJnczogeyBmaWxlOiBTZEV4cG9ydEZpbGU7IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW107IGlzQ1NWOiBib29sZWFuIH0pID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZSwgaXNDU1YgfSA9IGFyZ3M7XHJcbiAgICAgIGxldCB7IGNvbHVtbnMgfSA9IGFyZ3M7XHJcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/Lm1heEl0ZW1zUGVyUmVxdWVzdCB8fCAxMDAwO1xyXG4gICAgICBjb25zdCBiYXRjaCA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5iYXRjaCB8fCAxO1xyXG4gICAgICBsZXQgdG90YWwgPSB0aGlzLnRvdGFsO1xyXG4gICAgICBsZXQgcGFnZU51bWJlciA9IDA7XHJcbiAgICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxcclxuICAgICAgICB8IGFueVtdXHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgICAgICAgICAgdG90YWw6IG51bWJlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgPltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8ubWFwcGluZykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQubWFwcGluZyhleHBvcnRJdGVtcyk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0b3RhbFBhZ2UgPSB0b3RhbCAvIHBhZ2VTaXplO1xyXG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLnJvdW5kKCgocGFnZU51bWJlciAtIDEpICogMTAwLjApIC8gdG90YWxQYWdlKTtcclxuICAgICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGluZy4uLiR7cGVyY2VudH0lYDtcclxuICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy4jYWxsQ29sdW1ucygpO1xyXG4gICAgICAgIGNvbnN0IGFsbEV4cG9ydGVkQ29sdW1ucyA9IHRoaXMuI2FsbEV4cG9ydGVkQ29sdW1ucygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHBvcnRJdGVtcykge1xyXG4gICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGFzeW5jIChleHBvcnRDb2x1bW46IFNkRXhwb3J0Q29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgIG9ialtleHBvcnRDb2x1bW4uZmllbGRdID0gaXRlbVtleHBvcnRDb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBleHBvcnRlZENvbHVtbiA9IGFsbEV4cG9ydGVkQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKGV4cG9ydGVkQ29sdW1uPy50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBvYmpbZXhwb3J0ZWRDb2x1bW4uZmllbGRdID0gZXhwb3J0ZWRDb2x1bW4udHJhbnNmb3JtKGl0ZW1bZXhwb3J0ZWRDb2x1bW4uZmllbGRdLCBpdGVtKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nIHx8IGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4tY29sJykge1xyXG4gICAgICAgICAgICAgIGNvbHVtbj8uY2hpbGRyZW4uZm9yRWFjaChjaGlsZENvbHVtbiA9PiBoYW5kbGUoY2hpbGRDb2x1bW4pKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW5zLnNvbWUoZSA9PiBlLmZpZWxkID09PSBjb2x1bW4uZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY29sdW1uLnRyYW5zZm9ybShpdGVtW2NvbHVtbi5maWVsZF0sIGl0ZW0sIHtcclxuICAgICAgICAgICAgICAgIGlzRXhwb3J0OiB0cnVlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB0cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gb2JqW2NvbHVtbi5maWVsZF0gPz8gJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbVtjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSBudWxsIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBjZWxsIGzDoCBzdHJpbmcgaG/hurdjIG51bWJlciB0aMOsIGfDoW4gYuG6sW5nIGNow61uaCBuw7NcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGJvb2wgdGjDrCBnw6FuIGLhurFuZyBnacOhIHRy4buLIHRydWVWYWx1ZSB2w6AgZmFsc2VWYWx1ZSAobuG6v3UgY8OzKSwgbeG6t2MgxJHhu4tuaCBsw6AgVFJVRS9GQUxTRVxyXG4gICAgICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uVHJ1ZSB8fCAnVHJ1ZSc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmpbY29sdW1uLmZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIG9ialtjb2x1bW4uZmllbGRdICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5vcHRpb24/LmRpc3BsYXlPbkZhbHNlIHx8ICdGYWxzZSc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybURhdGUgfSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRyYW5zZm9ybURhdGUoZGF0ZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRlIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtRGF0ZSB9ID0gY29sdW1uO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlID0gdHJhbnNmb3JtRGF0ZShkYXRlLCBpdGVtKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGV0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1EYXRlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybURhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSB0cmFuc2Zvcm1EYXRlKGRhdGUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgdGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdISDptbScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCB2YWx1ZXMgdGjDrCBs4bqleSBnacOhIHRy4buLIGPhu6dhIHZhbHVlIMSRxrDhu6NjIGNo4buNblxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gYXdhaXQgdGhpcy5jb2x1bW5WYWx1ZXNQaXBlLnRyYW5zZm9ybShpdGVtW2NvbHVtbi5maWVsZF0sIGNvbHVtbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGV4cG9ydENvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZShleHBvcnRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbXMucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgd2hpbGUgKHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSA8IHRvdGFsKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLiNleHBvcnRlZEl0ZW1zKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgcGFnZU51bWJlcisrO1xyXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPCBiYXRjaCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZpbGU/LmZpbGVQYXRoKSB7XHJcbiAgICAgICAgaWYgKGlzQ1NWKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q1NWKHtcclxuICAgICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgICBmaWVsZHM6IHN0cmluZ1tdO1xyXG4gICAgICAgIH1bXSA9IFtdO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQuc2hlZXRzKSB7XHJcbiAgICAgICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoe1xyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgICAgIHNoZWV0cyxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydEJ5VGVtcGxhdGUoe1xyXG4gICAgICAgIGZpbGVQYXRoOiBmaWxlLmZpbGVQYXRoLFxyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLmZpbGVOYW1lLFxyXG4gICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgaXRlbXMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGA7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvbkV4cG9ydCA9IGFzeW5jIChhcmdzOiB7IGZpbGU6IFNkRXhwb3J0RmlsZTsgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXTsgaXNDU1Y6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgdGhpcy4jb25FeHBvcnQoYXJncyk7XHJcbiAgfTtcclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkRmlsdGVyPy51cGRhdGVGaWx0ZXI/LigpO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmlubGluZUNvbHVtbikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuc2V0KHtcclxuICAgICAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yLFxyXG4gICAgICAgICAgY29sdW1uRmlsdGVyOiB0aGlzLmNvbHVtbkZpbHRlcixcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7fSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMCk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnN1YkluZm9ybWF0aW9uPy5hbHdheXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEuaXNFeHBhbmRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEuaXNFeHBhbmRlZCkge1xyXG4gICAgICByb3dEYXRhLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZE9wdGlvbj8uc3ViSW5mb3JtYXRpb24/Lm9uRXhwYW5kPy4ocm93RGF0YSk7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbj8ubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNFeHBhbmRpbmcgPSBpdGVtLmlzRXhwYW5kZWQgPSBmYWxzZSkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgIHJvd0RhdGEuaXNFeHBhbmRpbmcgPSB0cnVlO1xyXG4gICAgICBkYXRhXHJcbiAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgIHJvd0RhdGEuZXhwYW5kRGV0YWlsID0gcmVzO1xyXG4gICAgICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maW5hbGx5KCgpID0+IChyb3dEYXRhLmlzRXhwYW5kaW5nID0gZmFsc2UpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvd0RhdGEuZXhwYW5kRGV0YWlsID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdCA9IChyb3dEYXRhOiBTZEdyaWRNYXRlcmlhbEl0ZW08VD4pID0+IHtcclxuICAgIGlmIChyb3dEYXRhPy5zZEdyb3VwPy5pdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJvd0RhdGE/LnNkR3JvdXA/Lml0ZW1zLmZvckVhY2goZSA9PiAoZS5pc1NlbGVjdGVkID0gcm93RGF0YS5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rpb24/Lm9uU2VsZWN0Py4oXHJcbiAgICAgICAgcm93RGF0YSxcclxuICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNTZWxlY3RlZClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLmlzU2VsZWN0ZWQpO1xyXG4gICAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8uc2luZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlICE9PSByb3dEYXRhKS5mb3JFYWNoKGUgPT4gKGUuaXNTZWxlY3RlZCA9IGZhbHNlKSk7XHJcbiAgICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5vblNlbGVjdD8uKFxyXG4gICAgICAgIHJvd0RhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmlzU2VsZWN0ZWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0aGlzLml0ZW1zLmV2ZXJ5KGUgPT4gZS5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUuc2VsZWN0YWJsZSAmJiAoIXRoaXMuZ3JpZE9wdGlvbj8uc2VsZWN0aW9uPy5hY3Rpb25zPy5sZW5ndGggfHwgZS5hY3Rpb25zPy5sZW5ndGgpKSB7XHJcbiAgICAgICAgZS5pc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdEFsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5vblNlbGVjdEFsbD8uKHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5pc1NlbGVjdGVkKSk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgb25DbGVhclNlbGVjdGlvbiA9IChpdGVtcz86IFNkR3JpZE1hdGVyaWFsSXRlbTxUPltdKSA9PiB7XHJcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IHRoaXMuaXRlbXM7XHJcbiAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICBpdGVtcz8uZm9yRWFjaChlID0+IChlLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gICN1cGRhdGVTZWxlY3RlZEl0ZW1zID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtc1xyXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKVxyXG4gICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgICBlZGl0b3JFcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgICBzZElkLFxyXG4gICAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgICAgLy8gR2nhu68gbOG6oWkgY8OhYyB0csaw4budbmcgdGjDtG5nIHRpbiBjaG8gc2VsZWN0YWJsZSAoYWN0aW9uLCBncm91cGVkQWN0aW9uLCBzZEdyb3VwLCBzZWxlY3RhYmxlKVxyXG4gICAgICAgICAgLi4ucmVzdWx0XHJcbiAgICAgICAgfSA9IGl0ZW07XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSkgYXMgVFtdO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gIGNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5yZW1vdmUoKTtcclxuICB9O1xyXG5cclxuICBzZXRGaWx0ZXIgPSAoYXJnczogeyBjb2x1bW5GaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBleHRlcm5hbEZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IGFyZ3MgfHwge307XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7XHJcbiAgICAgIGNvbHVtbkZpbHRlcixcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgIGZpbHRlckRlZixcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIG9uQ3JlYXRlID0gKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0eXBlLCBlZGl0b3IsIGNvbHVtbnMgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmICghZWRpdG9yPy5hZGRhYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbSA9IHt9O1xyXG4gICAgLy8gR8OhbiBnacOhIHRy4buLIG3hurdjIMSR4buLbmhcclxuICAgIGNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICBlZGl0b3Iub25BZGQ/LihpdGVtLCB0aGlzLiNsb2NhbEl0ZW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVkaXRvci5vbkFkZD8uKGl0ZW0sIHRoaXMuaXRlbXMpO1xyXG4gICAgfVxyXG4gICAgLy8gxJDGsGEgaXRlbSBsw6puIGTDsm5nIMSR4bqndSB0acOqbiBu4bq/dSB0eXBlIGtow6FjIHBvcHVwXHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgIT09ICdwb3B1cCcpIHtcclxuICAgICAgaWYgKGVkaXRvci5hZGRUb0xhc3QpIHtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFsuLi50aGlzLiNsb2NhbEl0ZW1zLCBpdGVtXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLCBpdGVtXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFtpdGVtLCAuLi50aGlzLiNsb2NhbEl0ZW1zXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtpdGVtLCAuLi50aGlzLml0ZW1zXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaXRlbS5lZGl0b3JTdGF0dXMgPSAnY3JlYXRlJztcclxuICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdyA9IHtcclxuICAgICAgdGVtcG9yYXJ5OiB7IC4uLml0ZW0gfSxcclxuICAgIH07XHJcbiAgfTtcclxuICBvblVwZGF0ZSA9IChpdGVtOiBTZEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpdGVtLmVkaXRvclN0YXR1cyA9ICd1cGRhdGUnO1xyXG4gICAgaXRlbS5lZGl0b3JIYW5kbGVyUm93ID0ge1xyXG4gICAgICAuLi5pdGVtLmVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgIHRlbXBvcmFyeTogeyAuLi5pdGVtIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbSk7XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdwb3B1cCcpIHtcclxuICAgICAgLy8gWOG7rSBsw70gY2FzZSBwb3B1cFxyXG4gICAgICAvLyB0aGlzLnNkR3JpZFBvcHVwRWRpdG9yLm9wZW4oaXRlbSwgY29sdW1ucywgaXNNb2RpZmllZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfTtcclxuICBvblNhdmUgPSBhc3luYyAoaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAoaXRlbS5lZGl0b3JIYW5kbGVyUm93LnNhdmluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaXRlbS5lZGl0b3JIYW5kbGVyUm93LnNhdmluZyA9IHRydWU7XHJcbiAgICAgIGlmIChlZGl0b3IudmFsaWRhdGUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3IudmFsaWRhdGUoaXRlbSwgdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pKTtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZWRpdG9yLm9uU2F2ZSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVkaXRvci5vblNhdmUoaXRlbSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGF3YWl0IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLmVkaXRvclN0YXR1cyA9PT0gJ2NyZWF0ZScgJiYgZWRpdG9yLnR5cGUgPT09ICdwb3B1cCcpIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLnZpZXdJdGVtcy5zcGxpY2UoMCwgMCwgaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgICAvLyB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgb25DYW5jZWwgPSAoaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAnaW5saW5lJykge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBjb25zdCBpZHgyID0gdGhpcy4jbG9jYWxJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4MSwgMSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGVkaXRvcj8ub25DYW5jZWw/LihpdGVtLCB0aGlzLiNsb2NhbEl0ZW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlZGl0b3I/Lm9uQ2FuY2VsPy4oaXRlbSwgdGhpcy5pdGVtcyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdmb2N1cycpIHtcclxuICAgICAgaWYgKGl0ZW0uZWRpdG9yU3RhdHVzID09PSAnY3JlYXRlJykge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgY29uc3QgaWR4MiA9IHRoaXMuI2xvY2FsSXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFsuLi50aGlzLiNsb2NhbEl0ZW1zXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgxLCAxKTtcclxuICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgaXRlbS5lZGl0b3JIYW5kbGVyUm93LnRlbXBvcmFyeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcbiAgb25SZW1vdmUgPSBhc3luYyAoaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaWYgKGVkaXRvcj8uYmVmb3JlUmVtb3ZlKSB7XHJcbiAgICAgIGNvbnN0IGJlZm9yZVJlbW92ZSA9IGVkaXRvcj8uYmVmb3JlUmVtb3ZlKGl0ZW0pO1xyXG4gICAgICBpZiAoYmVmb3JlUmVtb3ZlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJlZm9yZVJlbW92ZTtcclxuICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIWJlZm9yZVJlbW92ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAnaW5saW5lJykge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBjb25zdCBpZHgyID0gdGhpcy4jbG9jYWxJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4MSwgMSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGVkaXRvcj8ub25SZW1vdmU/LihpdGVtLCB0aGlzLiNsb2NhbEl0ZW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlZGl0b3I/Lm9uUmVtb3ZlPy4oaXRlbSwgdGhpcy5pdGVtcyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgYWRkID0gKGlkeDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiBpZHgpIHtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAwLCBpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgaXRlbV07XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgdXBkYXRlID0gKGlkeDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtc1tpZHhdKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5pdGVtc1tpZHhdLCBpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZW1vdmUgPSAoaWR4OiBudW1iZXIpID0+IHtcclxuICAgIGlmICh0aGlzLml0ZW1zW2lkeF0pIHtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZWZyZXNoSXRlbSA9IChpZHg6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNbaWR4XTtcclxuICAgIHRoaXMuZWRpdG9ySGFuZGxlckNvbHVtblBpcGUudHJhbnNmb3JtKGl0ZW0uc2RWZXJzaW9uLCBpdGVtLCB0aGlzLmdyaWRPcHRpb24pO1xyXG4gIH07XHJcblxyXG4gIGdldCBlZGl0ZWRJdGVtcygpOiAoVCAmIHsgZWRpdG9yRXJyb3JNZXNzYWdlOiBzdHJpbmcgfSlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xyXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmICghaXRlbS5vcmlnaW5JdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGl0ZW0ub3JpZ2luSXRlbSkuc29tZShrZXkgPT4gaXRlbS5vcmlnaW5JdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgZWRpdG9yU3RhdHVzLFxyXG4gICAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICAgIGVkaXRvckhhbmRsZXJDb2x1bW4sXHJcbiAgICAgICAgICBlZGl0b3JFcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICAgIHNkSWQsXHJcbiAgICAgICAgICBzZFZlcnNpb24sXHJcbiAgICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgICAgYWN0aW9ucyxcclxuICAgICAgICAgIGdyb3VwZWRBY3Rpb25zLFxyXG4gICAgICAgICAgc2RHcm91cCxcclxuICAgICAgICAgIHRlbXBvcmFyeSxcclxuICAgICAgICAgIC4uLnJlc3VsdFxyXG4gICAgICAgIH0gPSBpdGVtO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgICBlZGl0b3JFcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyaWRJdGVtcygpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCB7XHJcbiAgICAgICAgZWRpdG9yU3RhdHVzLFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlckNvbHVtbixcclxuICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICBpc0V4cGFuZGluZyxcclxuICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgc2RJZCxcclxuICAgICAgICBzZFZlcnNpb24sXHJcbiAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICBhY3Rpb25zLFxyXG4gICAgICAgIGdyb3VwZWRBY3Rpb25zLFxyXG4gICAgICAgIHNkR3JvdXAsXHJcbiAgICAgICAgdGVtcG9yYXJ5LFxyXG4gICAgICAgIC4uLnJlc3VsdFxyXG4gICAgICB9ID0gaXRlbTtcclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBUO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgbG9jYWxJdGVtcygpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsSXRlbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbG9jYWxHcmlkSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLiNsb2NhbEl0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyUm93LFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJDb2x1bW4sXHJcbiAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgIGlzRXhwYW5kZWQsXHJcbiAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgaXNTZWxlY3RlZCxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIHNkSWQsXHJcbiAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgIHNlbGVjdGFibGUsXHJcbiAgICAgICAgYWN0aW9ucyxcclxuICAgICAgICBncm91cGVkQWN0aW9ucyxcclxuICAgICAgICBzZEdyb3VwLFxyXG4gICAgICAgIHRlbXBvcmFyeSxcclxuICAgICAgICAuLi5yZXN1bHRcclxuICAgICAgfSA9IGl0ZW07XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgVDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgZ2V0IGlzRWRpdGluZygpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLnNvbWUoZSA9PiBlLmVkaXRvclN0YXR1cyAhPT0gdW5kZWZpbmVkKTtcclxuICB9XHJcbn1cclxuIl19
1094
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQWdDLE1BQU0sbUNBQW1DLENBQUM7QUFDckksT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQStCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlB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IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDb250ZW50Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXIsIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVxdWVzdCB9IGZyb20gJy4vc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgR1JJRF9NQVRFUklBTF9DT05GSUcsIERFRkFVTFRfR1JJRF9NQVRFUklBTF9DT05GSUcsIElTZEdyaWRNYXRlcmlhbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL21vZGVscy9ncmlkLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBTZEZpbHRlck9wZXJhdG9yLCBTZEdyaWRNYXRlcmlhbENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtY2VsbC1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkR3JpZEZpbHRlciB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLXN1Yi1pbmZvcm1hdGlvbi1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1mb290ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZW1wdHktZGF0YS1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RQb3B1cEV4cG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkRXhwb3J0Q29sdW1uLCBTZEV4cG9ydEZpbGUsIFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgU2RHcmlkQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyaWQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxFeHBvcnRDb2x1bW4gfSBmcm9tICcuL21vZGVscy9ncmlkLWV4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkUXVpY2tBY3Rpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3F1aWNrLWFjdGlvbic7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsSXRlbSwgU2RJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkQ29sdW1uVmFsdWVzUGlwZSB9IGZyb20gJy4vcGlwZXMvY29sdW1uLXZhbHVlcy5waXBlJztcclxuaW1wb3J0IHsgU2RFZGl0b3JIYW5kbGVyQ29sdW1uUGlwZSB9IGZyb20gJy4vcGlwZXMvZWRpdG9yLWhhbmRsZXItY29sdW1uLnBpcGUnO1xyXG5pbXBvcnQgeyBTZFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtbWF0ZXJpYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLW1hdGVyaWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmlkLW1hdGVyaWFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRNYXRlcmlhbDxUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAjZ3JpZElkID0gdXVpZC52NCgpO1xyXG4gIEBWaWV3Q2hpbGQoU2RTY3JvbGxEaXJlY3RpdmUpIHNkU2Nyb2xsOiBTZFNjcm9sbERpcmVjdGl2ZTtcclxuICBmaWx0ZXJSZWdpc3RlcjogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3RlcjtcclxuICBrZXkgPSB1dWlkLnY0KCk7XHJcbiAgZ3JpZENvbmZpZ3VyYXRpb25PYnNlcnZlcjogT2JzZXJ2YWJsZTxTZEdyaWRDb25maWd1cmF0aW9uPjtcclxuICBAVmlld0NoaWxkKFNkUXVpY2tBY3Rpb24pIHF1aWNrQWN0aW9uOiBTZFF1aWNrQWN0aW9uO1xyXG5cclxuICBncmlkRmlsdGVyOiBTZEdyaWRGaWx0ZXI7XHJcbiAgQFZpZXdDaGlsZChTZEdyaWRGaWx0ZXIpIHNldCBfZ3JpZEZpbHRlcihncmlkRmlsdGVyOiBTZEdyaWRGaWx0ZXIpIHtcclxuICAgIGlmIChncmlkRmlsdGVyICYmIHRoaXMuZ3JpZEZpbHRlciAhPT0gZ3JpZEZpbHRlcikge1xyXG4gICAgICB0aGlzLmdyaWRGaWx0ZXIgPSBncmlkRmlsdGVyO1xyXG4gICAgICAvLyB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKGdyaWRGaWx0ZXIuZmlsdGVyQ2hhbmdlLnBpcGUoXHJcbiAgICAgIC8vICAgZmlsdGVyKHJlbG9hZCA9PiByZWxvYWQpLFxyXG4gICAgICAvLyAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAvLyAgIG1hcCgoKSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgLy8gICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgLy8gICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAvLyAgICAgICBzb3VyY2U6ICdGSUxURVInXHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gICB9KSxcclxuICAgICAgLy8gKS5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb24pIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgb3B0aW9uID0gdGhpcy4jaW5pdENvbmZpZ3VyYXRpb24ob3B0aW9uKTtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmdyaWRDb25maWd1cmF0aW9uU2VydmljZS5pbml0KHRoaXMua2V5LCB0aGlzLmdyaWRPcHRpb24pO1xyXG4gICAgICB0aGlzLmdyaWRDb25maWd1cmF0aW9uT2JzZXJ2ZXIgPSBjb25maWd1cmF0aW9uLm9ic2VydmVyO1xyXG4gICAgICBjb25maWd1cmF0aW9uLmxvYWQoKTtcclxuICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5uZXh0KHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNvcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxPcHRpb24+KCk7XHJcblxyXG4gIGdyaWRPcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uO1xyXG4gICNsb2NhbEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGl0ZW1zOiBTZEdyaWRNYXRlcmlhbEl0ZW08VD5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnaW5hdGVcclxuICBpc0hpZGRlblBhZ2luYXRvciA9IGZhbHNlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgcGFnaW5hdG9yLnBhZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBzb3J0LnNvcnRDaGFuZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRXhwb3J0XHJcbiAgQFZpZXdDaGlsZChTZFBvcHVwRXhwb3J0KSBzZFBvcHVwRXhwb3J0OiBTZFBvcHVwRXhwb3J0O1xyXG5cclxuICAvLyBTdWIgSW5mb3JtYXRpb25cclxuICBAQ29udGVudENoaWxkKFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZSlcclxuICBzZFN1YkluZm9ybWF0aW9uOiBTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmU7XHJcblxyXG4gIC8vIEVtcHR5IERhdGFcclxuICBAQ29udGVudENoaWxkKFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmUpXHJcbiAgc2RFbXB0eURhdGE6IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmU7XHJcblxyXG4gIC8vIENlbGwgRGVmXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSkgc2RDZWxsRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmU+KCk7XHJcbiAgY2VsbERlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmU7XHJcbiAgfSA9IHt9O1xyXG5cclxuICAvLyBGb290ZXIgRGVmXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlKSBzZEZvb3RlckRlZnMgPSBuZXcgUXVlcnlMaXN0PFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmU+KCk7XHJcbiAgZm9vdGVyRGVmOiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlO1xyXG4gIH0gPSB7fTtcclxuICBoYXNGb290ZXIgPSBmYWxzZTtcclxuXHJcbiAgLy8gRmlsdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZSkgc2RGaWx0ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXSA9IFtdO1xyXG5cclxuICAvLyBGaWx0ZXJcclxuICBjb2x1bW5PcGVyYXRvcjogUmVjb3JkPHN0cmluZywgU2RGaWx0ZXJPcGVyYXRvcj4gPSB7fTtcclxuICBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAvLyBTdWJjcmlwdGlvblxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgI3JlbG9hZCA9IG5ldyBTdWJqZWN0PHtcclxuICAgIGZvcmNlOiBib29sZWFuO1xyXG4gIH0+KCk7XHJcbiAgaXNFeHBvcnRpbmcgPSBmYWxzZTtcclxuICBpc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gIGV4cG9ydFRpdGxlID0gJ0V4cG9ydCc7XHJcbiAgI2xvYWRDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoR1JJRF9NQVRFUklBTF9DT05GSUcpXHJcbiAgICBAT3B0aW9uYWwoKVxyXG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb246IElTZEdyaWRNYXRlcmlhbENvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIGdyaWRDb25maWd1cmF0aW9uU2VydmljZTogU2RHcmlkQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb2x1bW5WYWx1ZXNQaXBlOiBTZENvbHVtblZhbHVlc1BpcGUsXHJcbiAgICBwcml2YXRlIGdyaWRGaWx0ZXJTZXJ2aWNlOiBTZEdyaWRGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlZGl0b3JIYW5kbGVyQ29sdW1uUGlwZTogU2RFZGl0b3JIYW5kbGVyQ29sdW1uUGlwZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNpbml0Q2VsbERlZigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy4jcmVsb2FkXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICAgIHN3aXRjaE1hcChhc3luYyBkYXRhID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVySW5mbyA9IHRoaXMuI2dldEZpbHRlcigpO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLiNsb2FkKGZpbHRlckluZm8sICF0aGlzLiNsb2FkQ29tcGxldGVkIHx8IGRhdGEuZm9yY2UpO1xyXG4gICAgICAgICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUodGhpcy4jcmVuZGVyKVxyXG4gICAgKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZENlbGxEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUodGhpcy4jaW5pdENlbGxEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZvb3RlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Rm9vdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuc2RGaWx0ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUodGhpcy4jaW5pdEZpbHRlckRlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgY29tYmluZUxhdGVzdChbXHJcbiAgICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmdyaWRPcHRpb24pKSxcclxuICAgICAgICB0aGlzLnNkRmlsdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyRGVmcykpLFxyXG4gICAgICBdKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuI2xvYWRGaWx0ZXJSZWdpc3RlcigpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICBmb3JjZTogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRDZWxsRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jZWxsRGVmID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNlbGxEZWYgb2YgdGhpcy5zZENlbGxEZWZzKSB7XHJcbiAgICAgIGlmIChjZWxsRGVmLnNkTWF0ZXJpYWxDZWxsRGVmKSB7XHJcbiAgICAgICAgdGhpcy5jZWxsRGVmW2NlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWZdID0gY2VsbERlZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0RmlsdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJEZWZzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLnNkRmlsdGVyRGVmcykge1xyXG4gICAgICB0aGlzLmZpbHRlckRlZnMucHVzaChmaWx0ZXJEZWYpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0Rm9vdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb290ZXJEZWYgPSB7fTtcclxuICAgIHRoaXMuaGFzRm9vdGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGZvb3RlckRlZiBvZiB0aGlzLnNkRm9vdGVyRGVmcykge1xyXG4gICAgICBpZiAoZm9vdGVyRGVmLnNkTWF0ZXJpYWxGb290ZXJEZWYpIHtcclxuICAgICAgICB0aGlzLmhhc0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb290ZXJEZWZbZm9vdGVyRGVmLnNkTWF0ZXJpYWxGb290ZXJEZWZdID0gZm9vdGVyRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2ZpbHRlckV4cG9ydEluZm8gPSAocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5nZXQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiBjb2x1bW5PcGVyYXRvciB8fCB7fSxcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcixcclxuICAgICAgcGFnZVNpemUsXHJcbiAgICAgIGlzRXhwb3J0ZWQ6IHRydWUsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNpbml0Q29uZmlndXJhdGlvbiA9IChvcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uKSA9PiB7XHJcbiAgICAvLyBJbml0IHBhZ2luYXRpb25cclxuICAgIG9wdGlvbi5wYWdpbmF0ZSA9IHtcclxuICAgICAgaGlkZGVuOiBvcHRpb24/LnBhZ2luYXRlPy5oaWRkZW4sXHJcbiAgICAgIHBhZ2VTaXplOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyBERUZBVUxUX0dSSURfTUFURVJJQUxfQ09ORklHLnBhZ2luYXRlPy5wYWdlU2l6ZSxcclxuICAgICAgcGFnZXM6IG9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IHRoaXMuY29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IERFRkFVTFRfR1JJRF9NQVRFUklBTF9DT05GSUcucGFnaW5hdGU/LnBhZ2VzLFxyXG4gICAgICBzaG93Rmlyc3RMYXN0QnV0dG9uczogb3B0aW9uPy5wYWdpbmF0ZT8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9O1xyXG5cclxuICAjbG9hZEZpbHRlclJlZ2lzdGVyID0gKCkgPT4ge1xyXG4gICAgLy8gSW5pdCBmaWx0ZXJcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24pIHtcclxuICAgICAgaWYgKCF0aGlzLmZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJSZWdpc3RlciA9IHRoaXMuZ3JpZEZpbHRlclNlcnZpY2UucmVnaXN0ZXIodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXIsIHtcclxuICAgICAgICAgIGlkOiB0aGlzLiNncmlkSWQsXHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmdyaWRPcHRpb24/LmNvbHVtbnMsXHJcbiAgICAgICAgICBleHRlcm5hbEZpbHRlcnM6IHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsXHJcbiAgICAgICAgICBmaWx0ZXJEZWZzOiB0aGlzLmZpbHRlckRlZnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUub2JzZXJ2ZXJcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgbWFwKGZpbHRlclZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgbm90UmVsb2FkIH0gPSBmaWx0ZXJWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uT3BlcmF0b3IgPSBjb2x1bW5PcGVyYXRvcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub3RSZWxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JjZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNmaWx0ZXJMb2NhbCA9IChsb2NhbEl0ZW1zOiBhbnlbXSwgZmlsdGVySW5mbzogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0KSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGNvbnN0IHsgcmF3Q29sdW1uRmlsdGVyLCBvcmRlckJ5LCBvcmRlckRpcmVjdGlvbiwgcGFnZVNpemUsIHBhZ2VOdW1iZXIgfSA9IGZpbHRlckluZm87XHJcbiAgICBjb25zdCBpdGVtcyA9IGxvY2FsSXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgdHlwZSB9ID0gY29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSAocmF3Q29sdW1uRmlsdGVyW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZTogc3RyaW5nID0gKGl0ZW1bZmllbGRdIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSAmJiB0eXBlICE9PSAnZGF0ZXRpbWUnICYmIHR5cGUgIT09ICdkYXRlJyAmJiB0eXBlICE9PSAndGltZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5WYWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtblZhbHVlICE9PSBmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBmVmFsdWUgPSArZmlsdGVyVmFsdWUucmVwbGFjZSgnPj0nLCAnJykucmVwbGFjZSgnPD0nLCAnJykucmVwbGFjZSgnPicsICcnKS5yZXBsYWNlKCc8JywgJycpO1xyXG4gICAgICAgICAgICBjb25zdCBjVmFsdWUgPSArY29sdW1uVmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChmVmFsdWUgfHwgZlZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjVmFsdWUgJiYgY1ZhbHVlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCc+PScpID4gLTEgJiYgY1ZhbHVlIDwgZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCc8PScpID4gLTEgJiYgY1ZhbHVlID4gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCc8JykgPiAtMSAmJiBjVmFsdWUgPj0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCc+JykgPiAtMSAmJiBjVmFsdWUgPD0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjVmFsdWUgIT09IGZWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlID09PSAnMScgJiYgY29sdW1uVmFsdWUgIT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlID09PSAnMCcgJiYgY29sdW1uVmFsdWUgIT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJ2ZhbHNlJykge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGF0ZXRpbWUnIHx8IHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LmZyb20gPz8gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXTtcclxuICAgICAgICAgICAgY29uc3QgdG8gPSByYXdDb2x1bW5GaWx0ZXJbZmllbGRdPy50byA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tRGF0ZSA9IERhdGUuYmVnaW4oZnJvbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvRGF0ZSA9IERhdGUuZW5kKHRvKTtcclxuICAgICAgICAgICAgaWYgKGZyb21EYXRlIHx8IHRvRGF0ZSkge1xyXG4gICAgICAgICAgICAgIGlmICghY29sdW1uVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbHVtblRpbWUgPSBuZXcgRGF0ZShjb2x1bW5WYWx1ZSkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlVGltZSA9IGZyb21EYXRlPy5nZXRUaW1lKCkgfHwgbnVsbDtcclxuICAgICAgICAgICAgICBjb25zdCB0b0RhdGVUaW1lID0gdG9EYXRlPy5nZXRUaW1lKCkgfHwgbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGZyb21EYXRlVGltZSAmJiBmcm9tRGF0ZVRpbWUgPiBjb2x1bW5UaW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0b0RhdGVUaW1lICYmIGNvbHVtblRpbWUgPiB0b0RhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICAvLyBTb3J0XHJcbiAgICBpZiAob3JkZXJCeSAmJiBvcmRlckRpcmVjdGlvbikge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBvcmRlckJ5KTtcclxuICAgICAgaWYgKGNvbHVtbikge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZmllbGQgfSA9IGNvbHVtbjtcclxuICAgICAgICBpdGVtcy5zb3J0KChjdXJyZW50LCBuZXh0KSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChjdXJyZW50W2ZpZWxkXSB8fCAwKSAtIChuZXh0W2ZpZWxkXSB8fCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgY29uc3QgZDEgPSBuZXcgRGF0ZShjdXJyZW50W2ZpZWxkXSB8fCAnJykuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkMiA9IG5ldyBEYXRlKGN1cnJlbnRbZmllbGRdIHx8ICcnKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBkMSAtIGQyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgczEgPSAoY3VycmVudFtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBjb25zdCBzMiA9IChuZXh0W2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChzMSA+IHMyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHMxIDwgczIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG9yZGVyRGlyZWN0aW9uID09PSAnZGVzYycpIHtcclxuICAgICAgICAgIGl0ZW1zLnJldmVyc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGl0ZW1zOiBpdGVtcy5maWx0ZXIoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID49IHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSAmJiBpbmRleCA8IChwYWdlTnVtYmVyICsgMSkgKiBwYWdlU2l6ZTtcclxuICAgICAgfSksXHJcbiAgICAgIHRvdGFsOiBpdGVtcy5sZW5ndGgsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNnZXRGaWx0ZXIgPSAoKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5nZXQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiBjb2x1bW5PcGVyYXRvciB8fCB7fSxcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcjogdGhpcy4jcGFnaW5hdG9yPy5wYWdlSW5kZXggfHwgMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgdGhpcy5ncmlkT3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgfHwgNTAsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKGZpbHRlclJlcTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0LCBmb3JjZTogYm9vbGVhbiA9IHRydWUpID0+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ3NlcnZlcicpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKGZpbHRlclJlcSk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGl0ZW1zOiBkYXRhPy5pdGVtcyB8fCBbXSxcclxuICAgICAgICAgIHRvdGFsOiBkYXRhPy50b3RhbCB8fCAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZvcmNlKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gKGF3YWl0IHJlc3VsdHMpIHx8IFtdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IHJlc3VsdHMgfHwgW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy4jbG9jYWxJdGVtcykpIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdE4buvIGxp4buHdSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBt4bqjbmcnKTtcclxuICAgICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhJyk7XHJcbiAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gW107XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlckxvY2FsKHRoaXMuI2xvY2FsSXRlbXMsIGZpbHRlclJlcSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI3JlbmRlciA9IGFzeW5jIChhcmdzOiB7IGl0ZW1zOiBhbnlbXTsgdG90YWw6IG51bWJlciB9KSA9PiB7XHJcbiAgICB0aGlzLnNkU2Nyb2xsPy5zY3JvbGxUb3AoKTtcclxuICAgIHRoaXMuaXRlbXMgPSBhcmdzPy5pdGVtcyB8fCBbXTtcclxuICAgIHRoaXMudG90YWwgPSBhcmdzPy50b3RhbCB8fCAwO1xyXG4gICAgLy8gdGhpcy5pc0hpZGRlblBhZ2luYXRvciA9IHRoaXMuZmlsdGVySW5mby5wYWdlTnVtYmVyID09PSAwICYmIHRoaXMudG90YWwgPD0gdGhpcy5maWx0ZXJJbmZvLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBTZEl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5vcmlnaW5JdGVtID0geyAuLi5pdGVtIH07XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IHRoaXMuZ3JpZE9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLmlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gIHJlbG9hZCA9IGFzeW5jIChmb3JjZTogYm9vbGVhbiA9IHRydWUpID0+IHtcclxuICAgIHRoaXMuZ3JpZEZpbHRlcj8udXBkYXRlRmlsdGVyPy4oKTtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLiNsb2FkKHRoaXMuI2dldEZpbHRlcigpLCBmb3JjZSk7XHJcbiAgICB0aGlzLiNyZW5kZXIoZGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgI2V4cG9ydGVkSXRlbXMgPSBhc3luYyAocGFnZU51bWJlcjogbnVtYmVyID0gMCwgcGFnZVNpemU6IG51bWJlciA9IDEwMDAwKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgLy8gY29uc3QgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTxhbnlbXT4ocmVzdWx0KSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlPHsgaXRlbXM6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckluZm8gPSB0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoZmlsdGVySW5mbyk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXN1bHQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGV4cG9ydGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdyaWRPcHRpb24uaXRlbXMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gYXdhaXQgcmVzdWx0cztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwoZXhwb3J0ZWRJdGVtcywgZmlsdGVySW5mbyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4sIGNvbHVtbnM6IHN0cmluZ1tdKSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoY29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW10gPT4ge1xyXG4gICAgY29uc3QgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXSA9IFtdO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgIC5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgY29sdW1uLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgICAgICAgLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbi1jb2wnKSB7XHJcbiAgICAgICAgICBjb2x1bW4uY2hpbGRyZW5cclxuICAgICAgICAgICAgPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH07XHJcblxyXG4gICNhbGxFeHBvcnRlZENvbHVtbnMgPSAoKTogU2RHcmlkTWF0ZXJpYWxFeHBvcnRDb2x1bW5bXSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW107XHJcbiAgfTtcclxuXHJcbiAgI29uRXhwb3J0ID0gYXN5bmMgKGFyZ3M6IHsgZmlsZTogU2RFeHBvcnRGaWxlOyBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdOyBpc0NTVjogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IGZpbGUsIGlzQ1NWIH0gPSBhcmdzO1xyXG4gICAgICBsZXQgeyBjb2x1bW5zIH0gPSBhcmdzO1xyXG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5tYXhJdGVtc1BlclJlcXVlc3QgfHwgMTAwMDtcclxuICAgICAgY29uc3QgYmF0Y2ggPSB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uYmF0Y2ggfHwgMTtcclxuICAgICAgbGV0IHRvdGFsID0gdGhpcy50b3RhbDtcclxuICAgICAgbGV0IHBhZ2VOdW1iZXIgPSAwO1xyXG4gICAgICBsZXQgZXhwb3J0SXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IHRydWU7XHJcbiAgICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBsZXQgcHJvbWlzZXM6IFByb21pc2U8XHJcbiAgICAgICAgfCBhbnlbXVxyXG4gICAgICAgIHwge1xyXG4gICAgICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgID5bXSA9IFtdO1xyXG4gICAgICBjb25zdCBoYW5kbGVEYXRhID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcbiAgICAgICAgcHJvbWlzZXMgPSBbXTtcclxuICAgICAgICBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgIGlmICgnaXRlbXMnIGluIHJlc3VsdCkge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IFsuLi5leHBvcnRJdGVtcywgLi4ucmVzdWx0Lml0ZW1zXTtcclxuICAgICAgICAgICAgdG90YWwgPSByZXN1bHQudG90YWw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IFsuLi5leHBvcnRJdGVtcywgLi4ucmVzdWx0XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lm1hcHBpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Lm1hcHBpbmcoZXhwb3J0SXRlbXMpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gYXdhaXQgcmVzdWx0cztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdG90YWxQYWdlID0gdG90YWwgLyBwYWdlU2l6ZTtcclxuICAgICAgICBjb25zdCBwZXJjZW50ID0gTWF0aC5yb3VuZCgoKHBhZ2VOdW1iZXIgLSAxKSAqIDEwMC4wKSAvIHRvdGFsUGFnZSk7XHJcbiAgICAgICAgdGhpcy5leHBvcnRUaXRsZSA9IGBFeHBvcnRpbmcuLi4ke3BlcmNlbnR9JWA7XHJcbiAgICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuI2FsbENvbHVtbnMoKTtcclxuICAgICAgICBjb25zdCBhbGxFeHBvcnRlZENvbHVtbnMgPSB0aGlzLiNhbGxFeHBvcnRlZENvbHVtbnMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXhwb3J0SXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGUgPSBhc3luYyAoZXhwb3J0Q29sdW1uOiBTZEV4cG9ydENvbHVtbikgPT4ge1xyXG4gICAgICAgICAgICBvYmpbZXhwb3J0Q29sdW1uLmZpZWxkXSA9IGl0ZW1bZXhwb3J0Q29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgZXhwb3J0ZWRDb2x1bW4gPSBhbGxFeHBvcnRlZENvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IGV4cG9ydENvbHVtbi5maWVsZCk7XHJcbiAgICAgICAgICAgIGlmIChleHBvcnRlZENvbHVtbj8udHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgb2JqW2V4cG9ydGVkQ29sdW1uLmZpZWxkXSA9IGV4cG9ydGVkQ29sdW1uLnRyYW5zZm9ybShpdGVtW2V4cG9ydGVkQ29sdW1uLmZpZWxkXSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuLWNvbCcpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4/LmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb2x1bW4gPT4gaGFuZGxlKGNoaWxkQ29sdW1uKSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1ucy5zb21lKGUgPT4gZS5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNvbHVtbi50cmFuc2Zvcm0oaXRlbVtjb2x1bW4uZmllbGRdLCBpdGVtLCB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IG9ialtjb2x1bW4uZmllbGRdID8/ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gbnVsbCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgY2VsbCBsw6Agc3RyaW5nIGhv4bq3YyBudW1iZXIgdGjDrCBnw6FuIGLhurFuZyBjaMOtbmggbsOzXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBib29sIHRow6wgZ8OhbiBi4bqxbmcgZ2nDoSB0cuG7iyB0cnVlVmFsdWUgdsOgIGZhbHNlVmFsdWUgKG7hur91IGPDsyksIG3hurdjIMSR4buLbmggbMOgIFRSVUUvRkFMU0VcclxuICAgICAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5vcHRpb24/LmRpc3BsYXlPblRydWUgfHwgJ1RydWUnO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqW2NvbHVtbi5maWVsZF0gIT09IHVuZGVmaW5lZCAmJiBvYmpbY29sdW1uLmZpZWxkXSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25GYWxzZSB8fCAnRmFsc2UnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1EYXRlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybURhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSB0cmFuc2Zvcm1EYXRlKGRhdGUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgZGF0ZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybURhdGUgfSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRyYW5zZm9ybURhdGUoZGF0ZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRldGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtRGF0ZSB9ID0gY29sdW1uO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlID0gdHJhbnNmb3JtRGF0ZShkYXRlLCBpdGVtKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIHRpbWUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnSEg6bW0nKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgdmFsdWVzIHRow6wgbOG6pXkgZ2nDoSB0cuG7iyBj4bunYSB2YWx1ZSDEkcaw4bujYyBjaOG7jW5cclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGF3YWl0IHRoaXMuY29sdW1uVmFsdWVzUGlwZS50cmFuc2Zvcm0oaXRlbVtjb2x1bW4uZmllbGRdLCBjb2x1bW4pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgLy8gdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMuZm9yRWFjaChoYW5kbGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBleHBvcnRDb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgICAgICBhd2FpdCBoYW5kbGUoZXhwb3J0Q29sdW1uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW1zLnB1c2gob2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIHdoaWxlIChwYWdlTnVtYmVyICogcGFnZVNpemUgPCB0b3RhbCkge1xyXG4gICAgICAgIHByb21pc2VzLnB1c2godGhpcy4jZXhwb3J0ZWRJdGVtcyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICAgIHBhZ2VOdW1iZXIrKztcclxuICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoIDwgYmF0Y2gpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBoYW5kbGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBhd2FpdCBoYW5kbGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmaWxlPy5maWxlUGF0aCkge1xyXG4gICAgICAgIGlmIChpc0NTVikge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydENTVih7XHJcbiAgICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgICBmaWxlTmFtZTogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgaXRlbXM6IGFueVtdO1xyXG4gICAgICAgICAgZmllbGRzOiBzdHJpbmdbXTtcclxuICAgICAgICB9W10gPSBbXTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgICBzaGVldHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRCeVRlbXBsYXRlKHtcclxuICAgICAgICBmaWxlUGF0aDogZmlsZS5maWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZTogZmlsZS5maWxlTmFtZSxcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICB9KTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNFeHBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5leHBvcnRUaXRsZSA9IGBFeHBvcnRgO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25FeHBvcnQgPSBhc3luYyAoYXJnczogeyBmaWxlOiBTZEV4cG9ydEZpbGU7IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW107IGlzQ1NWOiBib29sZWFuIH0pID0+IHtcclxuICAgIHRoaXMuI29uRXhwb3J0KGFyZ3MpO1xyXG4gIH07XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5ncmlkRmlsdGVyPy51cGRhdGVGaWx0ZXI/LigpO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5pbmxpbmVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe1xyXG4gICAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yLFxyXG4gICAgICAgIGNvbHVtbkZpbHRlcjogdGhpcy5jb2x1bW5GaWx0ZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe30pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uRXhwYW5kID0gYXN5bmMgKHJvd0RhdGE6IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbj8uYWx3YXlzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLmlzRXhwYW5kaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLmlzRXhwYW5kZWQpIHtcclxuICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdyaWRPcHRpb24/LnN1YkluZm9ybWF0aW9uPy5vbkV4cGFuZD8uKHJvd0RhdGEpO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IChpdGVtLmlzRXhwYW5kaW5nID0gaXRlbS5pc0V4cGFuZGVkID0gZmFsc2UpKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICByb3dEYXRhLmV4cGFuZERldGFpbCA9IHJlcztcclxuICAgICAgICAgIHJvd0RhdGEuaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZmluYWxseSgoKSA9PiAocm93RGF0YS5pc0V4cGFuZGluZyA9IGZhbHNlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3dEYXRhLmV4cGFuZERldGFpbCA9IGRhdGE7XHJcbiAgICAgIHJvd0RhdGEuaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25TZWxlY3QgPSAocm93RGF0YTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAocm93RGF0YT8uc2RHcm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhPy5zZEdyb3VwPy5pdGVtcy5mb3JFYWNoKGUgPT4gKGUuaXNTZWxlY3RlZCA9IHJvd0RhdGEuaXNTZWxlY3RlZCkpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5vblNlbGVjdD8uKFxyXG4gICAgICAgIHJvd0RhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmlzU2VsZWN0ZWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0aGlzLml0ZW1zLmV2ZXJ5KGUgPT4gZS5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rpb24/LnNpbmdsZSkge1xyXG4gICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZSAhPT0gcm93RGF0YSkuZm9yRWFjaChlID0+IChlLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLFxyXG4gICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5pc1NlbGVjdGVkKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdEFsbCA9ICgpID0+IHtcclxuICAgIHRoaXMuaXRlbXM/LmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmIChlLnNlbGVjdGFibGUgJiYgKCF0aGlzLmdyaWRPcHRpb24/LnNlbGVjdGlvbj8uYWN0aW9ucz8ubGVuZ3RoIHx8IGUuYWN0aW9ucz8ubGVuZ3RoKSkge1xyXG4gICAgICAgIGUuaXNTZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RBbGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8ub25TZWxlY3RBbGw/Lih0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNTZWxlY3RlZCkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gIG9uQ2xlYXJTZWxlY3Rpb24gPSAoaXRlbXM/OiBTZEdyaWRNYXRlcmlhbEl0ZW08VD5bXSkgPT4ge1xyXG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLml0ZW1zO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgaXRlbXM/LmZvckVhY2goZSA9PiAoZS5pc1NlbGVjdGVkID0gZmFsc2UpKTtcclxuICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICB9O1xyXG5cclxuICAjdXBkYXRlU2VsZWN0ZWRJdGVtcyA9ICgpID0+IHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXNcclxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZClcclxuICAgICAgLm1hcChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgZWRpdG9ySGFuZGxlckNvbHVtbixcclxuICAgICAgICAgIGVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgICAgc2RJZCxcclxuICAgICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICAgIC8vIEdp4buvIGzhuqFpIGPDoWMgdHLGsOG7nW5nIHRow7RuZyB0aW4gY2hvIHNlbGVjdGFibGUgKGFjdGlvbiwgZ3JvdXBlZEFjdGlvbiwgc2RHcm91cCwgc2VsZWN0YWJsZSlcclxuICAgICAgICAgIC4uLnJlc3VsdFxyXG4gICAgICAgIH0gPSBpdGVtO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pIGFzIFRbXTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9O1xyXG5cclxuICBjbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUucmVtb3ZlKCk7XHJcbiAgfTtcclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHsgY29sdW1uRmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PjsgZXh0ZXJuYWxGaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBmaWx0ZXJEZWY/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzIHx8IHt9O1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5pbmxpbmVDb2x1bW4gJiYgY29sdW1uRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe1xyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBvbkNyZWF0ZSA9ICgpID0+IHtcclxuICAgIGNvbnN0IHsgdHlwZSwgZWRpdG9yLCBjb2x1bW5zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoIWVkaXRvcj8uYWRkYWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtOiBTZEdyaWRNYXRlcmlhbEl0ZW0gPSB7fTtcclxuICAgIC8vIEfDoW4gZ2nDoSB0cuG7iyBt4bq3YyDEkeG7i25oXHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcnO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgZWRpdG9yLm9uQWRkPy4oaXRlbSwgdGhpcy4jbG9jYWxJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlZGl0b3Iub25BZGQ/LihpdGVtLCB0aGlzLml0ZW1zKTtcclxuICAgIH1cclxuICAgIC8vIMSQxrBhIGl0ZW0gbMOqbiBkw7JuZyDEkeG6p3UgdGnDqm4gbuG6v3UgdHlwZSBraMOhYyBwb3B1cFxyXG4gICAgaWYgKGVkaXRvci50eXBlICE9PSAncG9wdXAnKSB7XHJcbiAgICAgIGlmIChlZGl0b3IuYWRkVG9MYXN0KSB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtcywgaXRlbV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgaXRlbV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbaXRlbSwgLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbaXRlbSwgLi4udGhpcy5pdGVtc107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gJ2NyZWF0ZSc7XHJcbiAgICBpdGVtLmVkaXRvckhhbmRsZXJSb3cgPSB7XHJcbiAgICAgIHRlbXBvcmFyeTogeyAuLi5pdGVtIH0sXHJcbiAgICB9O1xyXG4gIH07XHJcbiAgb25VcGRhdGUgPSAoaXRlbTogU2RJdGVtKSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaXRlbS5lZGl0b3JTdGF0dXMgPSAndXBkYXRlJztcclxuICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdyA9IHtcclxuICAgICAgLi4uaXRlbS5lZGl0b3JIYW5kbGVyUm93LFxyXG4gICAgICB0ZW1wb3Jhcnk6IHsgLi4uaXRlbSB9LFxyXG4gICAgfTtcclxuICAgIC8vIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgIC8vIFjhu60gbMO9IGNhc2UgcG9wdXBcclxuICAgICAgLy8gdGhpcy5zZEdyaWRQb3B1cEVkaXRvci5vcGVuKGl0ZW0sIGNvbHVtbnMsIGlzTW9kaWZpZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcbiAgb25TYXZlID0gYXN5bmMgKGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcgPSB0cnVlO1xyXG4gICAgICBpZiAoZWRpdG9yLnZhbGlkYXRlKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZWRpdG9yLnZhbGlkYXRlKGl0ZW0sIHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBtZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVkaXRvci5vblNhdmUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3Iub25TYXZlKGl0ZW0pO1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5lZGl0b3JTdGF0dXMgPT09ICdjcmVhdGUnICYmIGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAwLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy52aWV3SXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpdGVtLmVkaXRvclN0YXR1cyA9IHVuZGVmaW5lZDtcclxuICAgICAgLy8gdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGVycik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICBpdGVtLmVkaXRvckhhbmRsZXJSb3cuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uQ2FuY2VsID0gKGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ2lubGluZScpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgY29uc3QgaWR4MiA9IHRoaXMuI2xvY2FsSXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zLnNwbGljZShpZHgyLCAxKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gWy4uLnRoaXMuI2xvY2FsSXRlbXNdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkeDEgPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeDEsIDEpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBlZGl0b3I/Lm9uQ2FuY2VsPy4oaXRlbSwgdGhpcy4jbG9jYWxJdGVtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWRpdG9yPy5vbkNhbmNlbD8uKGl0ZW0sIHRoaXMuaXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAnZm9jdXMnKSB7XHJcbiAgICAgIGlmIChpdGVtLmVkaXRvclN0YXR1cyA9PT0gJ2NyZWF0ZScpIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIGNvbnN0IGlkeDIgPSB0aGlzLiNsb2NhbEl0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zLnNwbGljZShpZHgyLCAxKTtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlkeDEgPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4MSwgMSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGl0ZW0uZWRpdG9ySGFuZGxlclJvdy50ZW1wb3JhcnkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLmVkaXRvclN0YXR1cyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9O1xyXG4gIG9uUmVtb3ZlID0gYXN5bmMgKGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmIChlZGl0b3I/LmJlZm9yZVJlbW92ZSkge1xyXG4gICAgICBjb25zdCBiZWZvcmVSZW1vdmUgPSBlZGl0b3I/LmJlZm9yZVJlbW92ZShpdGVtKTtcclxuICAgICAgaWYgKGJlZm9yZVJlbW92ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiZWZvcmVSZW1vdmU7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCFiZWZvcmVSZW1vdmUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ2lubGluZScpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgY29uc3QgaWR4MiA9IHRoaXMuI2xvY2FsSXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zLnNwbGljZShpZHgyLCAxKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gWy4uLnRoaXMuI2xvY2FsSXRlbXNdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkeDEgPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeDEsIDEpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBlZGl0b3I/Lm9uUmVtb3ZlPy4oaXRlbSwgdGhpcy4jbG9jYWxJdGVtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWRpdG9yPy5vblJlbW92ZT8uKGl0ZW0sIHRoaXMuaXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGFkZCA9IChpZHg6IG51bWJlciwgaXRlbTogVCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gaWR4KSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMCwgaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIGl0ZW1dO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHVwZGF0ZSA9IChpZHg6IG51bWJlciwgaXRlbTogVCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNbaWR4XSkge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuaXRlbXNbaWR4XSwgaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcmVtb3ZlID0gKGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtc1tpZHhdKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcmVmcmVzaEl0ZW0gPSAoaWR4OiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2lkeF07XHJcbiAgICB0aGlzLmVkaXRvckhhbmRsZXJDb2x1bW5QaXBlLnRyYW5zZm9ybShpdGVtLnNkVmVyc2lvbiwgaXRlbSwgdGhpcy5ncmlkT3B0aW9uKTtcclxuICB9O1xyXG5cclxuICBnZXQgZWRpdGVkSXRlbXMoKTogKFQgJiB7IGVkaXRvckVycm9yTWVzc2FnZTogc3RyaW5nIH0pW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcclxuICAgICAgLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgICBpZiAoIWl0ZW0ub3JpZ2luSXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhpdGVtLm9yaWdpbkl0ZW0pLnNvbWUoa2V5ID0+IGl0ZW0ub3JpZ2luSXRlbVtrZXldICE9PSBpdGVtW2tleV0pKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KVxyXG4gICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICAgIGVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgICAgaXNTZWxlY3RlZCxcclxuICAgICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgICBzZElkLFxyXG4gICAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICAgIGFjdGlvbnMsXHJcbiAgICAgICAgICBncm91cGVkQWN0aW9ucyxcclxuICAgICAgICAgIHNkR3JvdXAsXHJcbiAgICAgICAgICB0ZW1wb3JhcnksXHJcbiAgICAgICAgICAuLi5yZXN1bHRcclxuICAgICAgICB9ID0gaXRlbTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBncmlkSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyUm93LFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJDb2x1bW4sXHJcbiAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgIGlzRXhwYW5kZWQsXHJcbiAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgaXNTZWxlY3RlZCxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIHNkSWQsXHJcbiAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgIHNlbGVjdGFibGUsXHJcbiAgICAgICAgYWN0aW9ucyxcclxuICAgICAgICBncm91cGVkQWN0aW9ucyxcclxuICAgICAgICBzZEdyb3VwLFxyXG4gICAgICAgIHRlbXBvcmFyeSxcclxuICAgICAgICAuLi5yZXN1bHRcclxuICAgICAgfSA9IGl0ZW07XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgVDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2FsSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLiNsb2NhbEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2FsR3JpZEl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy4jbG9jYWxJdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgIGV4cGFuZERldGFpbCxcclxuICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICBzZElkLFxyXG4gICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgIGFjdGlvbnMsXHJcbiAgICAgICAgZ3JvdXBlZEFjdGlvbnMsXHJcbiAgICAgICAgc2RHcm91cCxcclxuICAgICAgICB0ZW1wb3JhcnksXHJcbiAgICAgICAgLi4ucmVzdWx0XHJcbiAgICAgIH0gPSBpdGVtO1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMgPSAoKSA9PiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gIGdldCBpc0VkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5zb21lKGUgPT4gZS5lZGl0b3JTdGF0dXMgIT09IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1959,19 +1959,17 @@ class SdGridMaterial {
1959
1959
  __classPrivateFieldGet(this, _onExport).call(this, args);
1960
1960
  });
1961
1961
  this.onFilterChange = () => {
1962
- setTimeout(() => {
1963
- var _a, _b, _c, _d;
1964
- (_b = (_a = this.gridFilter) === null || _a === void 0 ? void 0 : _a.updateFilter) === null || _b === void 0 ? void 0 : _b.call(_a);
1965
- if ((_d = (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.filter) === null || _d === void 0 ? void 0 : _d.inlineColumn) {
1966
- this.filterRegister.value.set({
1967
- columnOperator: this.columnOperator,
1968
- columnFilter: this.columnFilter,
1969
- });
1970
- }
1971
- else {
1972
- this.filterRegister.value.set({});
1973
- }
1974
- }, 100);
1962
+ var _a, _b, _c, _d;
1963
+ (_b = (_a = this.gridFilter) === null || _a === void 0 ? void 0 : _a.updateFilter) === null || _b === void 0 ? void 0 : _b.call(_a);
1964
+ if ((_d = (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.filter) === null || _d === void 0 ? void 0 : _d.inlineColumn) {
1965
+ this.filterRegister.value.set({
1966
+ columnOperator: this.columnOperator,
1967
+ columnFilter: this.columnFilter,
1968
+ });
1969
+ }
1970
+ else {
1971
+ this.filterRegister.value.set({});
1972
+ }
1975
1973
  };
1976
1974
  this.onExpand = (rowData) => __awaiter(this, void 0, void 0, function* () {
1977
1975
  var _y, _z, _0, _1, _2;
@@ -2054,7 +2052,11 @@ class SdGridMaterial {
2054
2052
  this.filterRegister.value.remove();
2055
2053
  };
2056
2054
  this.setFilter = (args) => {
2055
+ var _a, _b;
2057
2056
  const { columnFilter, externalFilter, filterDef } = args || {};
2057
+ if (((_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.inlineColumn) && columnFilter) {
2058
+ this.columnFilter = columnFilter;
2059
+ }
2058
2060
  this.filterRegister.value.set({
2059
2061
  columnFilter,
2060
2062
  externalFilter,