@seniorsistemas/platform-components 7.0.1 → 7.1.0

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.
@@ -190,8 +190,10 @@ export class FormFilterComponent {
190
190
  return totalFiltersActive;
191
191
  }
192
192
  parseToUserFilters(filters) {
193
- return filters.reduce((all, filter) => {
194
- const { type, services, name, value, domain, contexts } = filter;
193
+ const filtersAsObject = filters;
194
+ const ids = Object.keys(filtersAsObject);
195
+ return ids.reduce((all, filterId) => {
196
+ const { type, services, name, value, domain, contexts } = filtersAsObject[filterId];
195
197
  const filterValue = toUserFormat(value, type);
196
198
  const values = services.map(service => ({ name, service, value: filterValue, domain, contexts }));
197
199
  return [...all, ...values];
@@ -628,11 +630,11 @@ export class FormFilterComponent {
628
630
  return { currencySymbol: '', decimalSeparator: '', thousandsSeparator: '' };
629
631
  }
630
632
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
631
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormFilterComponent, selector: "s-app-form-filter", inputs: { showMessages: "showMessages", contextId: "contextId" }, outputs: { totalFiltersActiveOutput: "totalFiltersActiveOutput", errorOutput: "errorOutput", showDialogOutput: "showDialogOutput", closeModalOutput: "closeModalOutput" }, host: { listeners: { "window:resize": "onResizeWindow($event)" } }, ngImport: i0, template: "@if(error) {\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"errorState?.status + ' - ' + errorState?.statusText\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n ></s-empty-state>\n\n} @else {\n @if(tabs && tabs.size > 1) {\n <p-tabView [(activeIndex)]=\"activeIndex\">\n @if(general.configs.length) {\n <p-tabPanel [header]=\"general.name\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"general.configs\"\n [form]=\"general.form\"/>\n </p-tabPanel>\n }\n\n @for(tab of (tabs | mapValues); track $index) {\n <p-tabPanel [header]=\"tab.label\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"tab.configs\"\n [form]=\"tab.form\"/>\n </p-tabPanel>\n }\n\n </p-tabView>\n\n }\n\n @if(tabs && tabs.size === 1) {\n @for(tab of (tabs | mapValues); track $index) {\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"tab.configs\"\n [form]=\"tab.form\"/>\n }\n\n }\n}", styles: [".filter-dialog{width:800px;top:100px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"], dependencies: [{ kind: "component", type: i1.TabView, selector: "p-tabView, p-tabview", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i1.TabPanel, selector: "p-tabPanel, p-tabpanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "s-dynamic-form", inputs: ["id", "configs", "fields", "form", "errorMessages"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "pipe", type: i4.MapValuesPipe, name: "mapValues" }] });
633
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FormFilterComponent, selector: "s-app-form-filter", inputs: { showMessages: "showMessages", contextId: "contextId" }, outputs: { totalFiltersActiveOutput: "totalFiltersActiveOutput", errorOutput: "errorOutput", showDialogOutput: "showDialogOutput", closeModalOutput: "closeModalOutput" }, host: { listeners: { "window:resize": "onResizeWindow($event)" } }, ngImport: i0, template: "@if (error) {\n <div role=\"alert\" aria-live=\"assertive\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"errorState?.status + ' - ' + errorState?.statusText\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n ></s-empty-state>\n </div>\n} @else {\n @if (tabs && tabs.size > 1) {\n <p-tabView [(activeIndex)]=\"activeIndex\">\n @if (general.configs.length) {\n <p-tabPanel [header]=\"general.name\">\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"general.configs\" [form]=\"general.form\" />\n </p-tabPanel>\n }\n\n @for (tab of tabs | mapValues; track $index) {\n <p-tabPanel [header]=\"tab.label\">\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"tab.configs\" [form]=\"tab.form\" />\n </p-tabPanel>\n }\n </p-tabView>\n }\n\n @if (tabs && tabs.size === 1) {\n @for (tab of tabs | mapValues; track $index) {\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"tab.configs\" [form]=\"tab.form\" />\n }\n }\n}\n", styles: [".filter-dialog{width:800px;top:100px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"], dependencies: [{ kind: "component", type: i1.TabView, selector: "p-tabView, p-tabview", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i1.TabPanel, selector: "p-tabPanel, p-tabpanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "s-dynamic-form", inputs: ["id", "configs", "fields", "form", "errorMessages"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "pipe", type: i4.MapValuesPipe, name: "mapValues" }] });
632
634
  }
633
635
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormFilterComponent, decorators: [{
634
636
  type: Component,
635
- args: [{ selector: 's-app-form-filter', template: "@if(error) {\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"errorState?.status + ' - ' + errorState?.statusText\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n ></s-empty-state>\n\n} @else {\n @if(tabs && tabs.size > 1) {\n <p-tabView [(activeIndex)]=\"activeIndex\">\n @if(general.configs.length) {\n <p-tabPanel [header]=\"general.name\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"general.configs\"\n [form]=\"general.form\"/>\n </p-tabPanel>\n }\n\n @for(tab of (tabs | mapValues); track $index) {\n <p-tabPanel [header]=\"tab.label\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"tab.configs\"\n [form]=\"tab.form\"/>\n </p-tabPanel>\n }\n\n </p-tabView>\n\n }\n\n @if(tabs && tabs.size === 1) {\n @for(tab of (tabs | mapValues); track $index) {\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [configs]=\"tab.configs\"\n [form]=\"tab.form\"/>\n }\n\n }\n}", styles: [".filter-dialog{width:800px;top:100px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"] }]
637
+ args: [{ selector: 's-app-form-filter', template: "@if (error) {\n <div role=\"alert\" aria-live=\"assertive\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"errorState?.status + ' - ' + errorState?.statusText\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n ></s-empty-state>\n </div>\n} @else {\n @if (tabs && tabs.size > 1) {\n <p-tabView [(activeIndex)]=\"activeIndex\">\n @if (general.configs.length) {\n <p-tabPanel [header]=\"general.name\">\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"general.configs\" [form]=\"general.form\" />\n </p-tabPanel>\n }\n\n @for (tab of tabs | mapValues; track $index) {\n <p-tabPanel [header]=\"tab.label\">\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"tab.configs\" [form]=\"tab.form\" />\n </p-tabPanel>\n }\n </p-tabView>\n }\n\n @if (tabs && tabs.size === 1) {\n @for (tab of tabs | mapValues; track $index) {\n <s-dynamic-form [errorMessages]=\"errorMessages\" [configs]=\"tab.configs\" [form]=\"tab.form\" />\n }\n }\n}\n", styles: [".filter-dialog{width:800px;top:100px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"] }]
636
638
  }], propDecorators: { showMessages: [{
637
639
  type: Input
638
640
  }], contextId: [{
@@ -649,4 +651,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
649
651
  type: HostListener,
650
652
  args: ['window:resize', ['$event']]
651
653
  }] } });
652
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9tb2R1bGVzL2FkdmFuY2VkLWZpbHRlci9jb21wb25lbnRzL2Zvcm0tZmlsdGVyL2Zvcm0tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9mb3JtLWZpbHRlci9mb3JtLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEMsT0FBTyxFQUEyRCxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3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QXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUdQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90b2FzdFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBmaWx0ZXIgYXMgcnhGaWx0ZXIsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjbG9uZSwgZXF1YWxzIH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHsgQ29udGV4dCwgRGVwZW5kc09uLCBFbnRpdHlTZWFyY2hJbnB1dCwgRW51bUl0ZW0sIEZpbHRlciwgRmlsdGVyVHlwZSwgU2NvcGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpbHRlcic7XG5pbXBvcnQgeyBDb250ZXh0VGFiLCBUYWJWaWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYi12aWV3JztcbmltcG9ydCB7IEFkdmFuY2VkRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkdmFuY2VkLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbXBhcmUsIGlzU3VwcG9ydGVkVHlwZSwgaXNWYWxpZE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tcGFyYXRvcic7XG5pbXBvcnQgeyBjcmVhdGVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtcbiAgZmlsdGVyT3BlcmF0b3JzLFxuICBmcm9tSnNvbixcbiAgZ2V0RmlsdGVySWQsXG4gIGdldFNlYXJjaFR5cGUsXG4gIGdldFRhYklkLFxuICBqc29uUGF0aCxcbiAgcGFyc2VGaWx0ZXJWYWx1ZSxcbiAgdG9GaWx0ZXJGb3JtYXQsXG4gIHRvVXNlckZvcm1hdFxufSBmcm9tICcuLi8uLi91dGlscy9pbmRleCc7XG5cbmltcG9ydCB7XG4gIENhbGVuZGFyRmllbGRDb25maWcsXG4gIER5bmFtaWNUeXBlLFxuICBFeHBhbmRlZER5bmFtaWNUeXBlLFxuICBGaWVsZENvbmZpZyxcbiAgUmFkaW9CdXR0b25GaWVsZENvbmZpZyxcbiAgUmF0aW9uQnV0dG9uT3B0aW9uLFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYWxlbmRhci1vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VhcmNoRGlzcGxheU5hbWUsIHNlYXJjaEtleU5hbWUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcblxuY29uc3QgVFJBTlNMQVRFX1BSRUZJWCA9ICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZSc7XG5jb25zdCBUT0FTVF9MSUZFID0gNTAwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy1hcHAtZm9ybS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyU2VydmljZSA9IGluamVjdChBZHZhbmNlZEZpbHRlclNlcnZpY2UpO1xuICB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FsZW5kYXJPcHRpb25zU2VydmljZSA9IGluamVjdChDYWxlbmRhck9wdGlvbnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBlcnJvclN0YXRlOiBIdHRwRXJyb3JSZXNwb25zZTtcbiAgdGFiczogTWFwPHN0cmluZywgQ29udGV4dFRhYj47XG4gIGNvbnRleHRzOiBDb250ZXh0W10gPSBbXTtcbiAgZm9ybUZpbHRlcnM6IEZvcm1GaWx0ZXJbXSA9IFtdO1xuICBvbGRGb3JtRmlsdGVyczogRm9ybUZpbHRlcltdID0gW107XG4gIGFjdHVhbEZvcm1GaWx0ZXJzOiBhbnlbXSA9IFtdO1xuICBnZW5lcmFsID0gbmV3IFRhYlZpZXcoeyBuYW1lOiAnR2VyYWwnIH0pO1xuICB0b3RhbEZpbHRlcnNBY3RpdmUgPSAwO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICB0YWJWaWV3T3JpZW50YXRpb24gPSAnbGVmdCc7XG4gIGVycm9yID0gZmFsc2U7XG4gIGFjdGl2ZUluZGV4ID0gMDtcblxuICBlcnJvck1lc3NhZ2VzID0ge1xuICAgIG1pbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5lcnJvcl9taW5fdmFsdWVgKSxcbiAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uZXJyb3JfbWF4X3ZhbHVlYCksXG4gICAgcGF0dGVybjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5pbnZhbGlkX3BhdHRlcm5gKVxuICB9O1xuXG4gIEBJbnB1dCgpIHNob3dNZXNzYWdlcyA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbnRleHRJZCA9ICcnO1xuXG5cbiAgQE91dHB1dCgpIHRvdGFsRmlsdGVyc0FjdGl2ZU91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZXJyb3JPdXRwdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzaG93RGlhbG9nT3V0cHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbE91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemVXaW5kb3coZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgaW5uZXJXaWR0aCB9ID0gZXZlbnQudGFyZ2V0O1xuICAgIHRoaXMuaXNNb2JpbGUgPSBpbm5lcldpZHRoIDw9IDY0MDtcbiAgICB0aGlzLnRhYlZpZXdPcmllbnRhdGlvbiA9IHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdsZWZ0JztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNNb2JpbGUgPSBpbm5lcldpZHRoIDw9IDY0MDtcbiAgICB0aGlzLnRhYlZpZXdPcmllbnRhdGlvbiA9IHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdsZWZ0JztcbiAgICB0aGlzLnN1YnNjcmliZUNvbnRleHRzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlRmlsdGVyc09ic2VydmFibGUoKTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGE7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZGF0YS5tZXNzYWdlICYmIGRhdGEubWVzc2FnZS5zcGxpdCgnOicpWzFdO1xuICAgICAgaWYgKG1lc3NhZ2UgPT09ICdhZGRDb250ZXh0Jykge1xuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuYWRkQ29udGV4dHMoLi4uZGF0YS5wYXlsb2FkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGhhc0NoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm9sZEZvcm1GaWx0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5mb3JtRmlsdGVycy5maWx0ZXIoKGN1cnJlbnRGaWx0ZXIsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBvbGRGaWx0ZXIgPSB0aGlzLm9sZEZvcm1GaWx0ZXJzW2luZGV4XTtcbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gb2xkRmlsdGVyID8gb2xkRmlsdGVyLnZhbHVlIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuICFlcXVhbHMoY3VycmVudEZpbHRlci52YWx1ZSwgb2xkVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkLmxlbmd0aCA+IDA7XG4gIH1cblxuICBvbkFwcGx5RmlsdGVycygpIHtcbiAgICB0aGlzLmhhc0NoYW5nZXMoKSAmJiB0aGlzLmNsb3NlTW9kYWxPdXRwdXQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlcnMoKSB7XG4gICAgdGhpcy5oYXNDaGFuZ2VzKCkgJiYgdGhpcy5maWx0ZXJTZXJ2aWNlLnRyeUFnYWluKHRoaXMuY29udGV4dHMpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKHNob3dUb2FzdCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlcygpKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dPdXRwdXQuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLmNvdW50ZXJVcGRhdGUoKTtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNWYWx1ZXModGhpcy5mb3JtRmlsdGVycyk7XG5cbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5zYXZlVGlja2VkRmlsdGVycyhmaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKHNob3dUb2FzdCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcbiAgICAgICAgZHVyYXRpb246IFRPQVNUX0xJRkUsXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uYXBwbGllZF9maWx0ZXJfbm9jaGFuZ2VgLCB7IGFjdGl2ZUZpbHRlcnM6IHRoaXMudG90YWxGaWx0ZXJzQWN0aXZlIH0pXG4gICAgICB9O1xuICAgICAgdGhpcy5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5vbGRGb3JtRmlsdGVycyA9IGNsb25lKHRoaXMuZm9ybUZpbHRlcnMpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55LCBpc011bHRpcGxlOiBib29sZWFuKSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IChpc011bHRpcGxlICYmIGRlZmF1bHRWYWx1ZVswXSA9PT0gJycpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtRmlsdGVycyk7XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB0aGlzLmNsZWFuRmllbGRBbmRTZXREZWZhdWx0VmFsdWUoa2V5KSk7XG4gIH1cblxuICBzZW5kQ2xvc2VNZXNzYWdlKCkge1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6ICdkYXNoYm9hcmQ6Y2xvc2UtbW9kYWwnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgbW9kYWxOYW1lOiAnYWR2YW5jZWQtZmlsdGVyLTEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnKidcbiAgICApO1xuICB9XG5cbiAgc2VuZE1lc3NhZ2UobWVzc2FnZTogYW55KSB7XG4gICAgaWYgKHRoaXMuc2hvd01lc3NhZ2VzKSB7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTogJ2Rhc2hib2FyZDp0b2FzdHInLFxuICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UuZGV0YWlsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnKidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUZpbHRlcnMoZm9yY2VTYXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5wYXJzZVRvVXNlckZpbHRlcnModGhpcy5mb3JtRmlsdGVycyk7XG4gICAgY29uc3Qgc2F2ZWRGaWx0ZXJTdWNjZXNzID0gKCkgPT4ge1xuICAgICAgaWYgKCFmb3JjZVNhdmUpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgICBzZXZlcml0eTogJ2luZm8nLFxuICAgICAgICAgIGR1cmF0aW9uOiBUT0FTVF9MSUZFLFxuICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uc2F2ZWRfZmlsdGVyc19zdWNjZXNzYCwgeyBhY3RpdmVGaWx0ZXJzOiB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSB9KVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvdW50ZXJVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2F2ZWRGaWx0ZXJzRXJyb3IgPSAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgZHVyYXRpb246IFRPQVNUX0xJRkUsXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uc2F2ZWRfZmlsdGVyc19lcnJvcmAsIHsgYWN0aXZlRmlsdGVyczogdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgfSlcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfTtcblxuICAgIHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgLnNhdmVGaWx0ZXJzKGZpbHRlcnMpXG4gICAgICAuc3Vic2NyaWJlKHNhdmVkRmlsdGVyU3VjY2Vzcywgc2F2ZWRGaWx0ZXJzRXJyb3IpO1xuICB9XG5cbiAgc2F2ZUZpbHRlcnNXaXRoQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uOiBhbnkpIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5wYXJzZVRvVXNlckZpbHRlcnModGhpcy5mb3JtRmlsdGVycyk7XG5cbiAgICB0aGlzLmZpbHRlclNlcnZpY2VcbiAgICAgIC5zYXZlRmlsdGVycyhmaWx0ZXJzKVxuICAgICAgLnN1YnNjcmliZShjYWxsYmFja0Z1bmN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgY291bnRlclVwZGF0ZSgpIHtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSA9IHRoaXMuY291bnRBY3RpdmVGaWx0ZXJzKHRoaXMudGFicyk7XG4gICAgdGhpcy50b3RhbEZpbHRlcnNBY3RpdmVPdXRwdXQuZW1pdCh0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50QWN0aXZlRmlsdGVycyh0YWJzOiBNYXA8c3RyaW5nLCBDb250ZXh0VGFiPikge1xuICAgIGxldCB0b3RhbEZpbHRlcnNBY3RpdmUgPSAwO1xuXG4gICAgdGFicy5mb3JFYWNoKHRhYlZpZXcgPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdGFiVmlldy5mb3JtO1xuICAgICAgdGFiVmlldy5hY3RpdmVGaWx0ZXJzID0gT2JqZWN0LmtleXModmFsdWUpLnJlZHVjZSgoYXBwbGllZEZpbHRlcnMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZEFycmF5ID0gaXNBcnJheSAmJiBmaWx0ZXJWYWx1ZS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChpc1ZhbGlkQXJyYXkgfHwgKCFpc0FycmF5ICYmIGZpbHRlclZhbHVlKSkge1xuICAgICAgICAgIGFwcGxpZWRGaWx0ZXJzKys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXBwbGllZEZpbHRlcnM7XG4gICAgICB9LCAwKTtcbiAgICAgIHRvdGFsRmlsdGVyc0FjdGl2ZSArPSB0YWJWaWV3LmFjdGl2ZUZpbHRlcnM7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdG90YWxGaWx0ZXJzQWN0aXZlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRvVXNlckZpbHRlcnMoZmlsdGVyczogRm9ybUZpbHRlcltdKSB7XG4gICAgcmV0dXJuIGZpbHRlcnMucmVkdWNlKChhbGwsIGZpbHRlcikgPT4ge1xuICAgICAgY29uc3QgeyB0eXBlLCBzZXJ2aWNlcywgbmFtZSwgdmFsdWUsIGRvbWFpbiwgY29udGV4dHMgfSA9IGZpbHRlciBhcyB1bmtub3duIGFzIEZpbHRlcjtcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdG9Vc2VyRm9ybWF0KHZhbHVlLCB0eXBlKTtcblxuICAgICAgY29uc3QgdmFsdWVzID0gc2VydmljZXMubWFwKHNlcnZpY2UgPT4gKHsgbmFtZSwgc2VydmljZSwgdmFsdWU6IGZpbHRlclZhbHVlLCBkb21haW4sIGNvbnRleHRzIH0pKTtcblxuICAgICAgcmV0dXJuIFsuLi5hbGwsIC4uLnZhbHVlc107XG4gICAgfSwgW10gYXMgYW55W10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJzVmFsdWVzKGZpbHRlcnM6IEZvcm1GaWx0ZXJbXSkge1xuICAgIGNvbnN0IGZpbHRlcnNBc09iamVjdCA9IGZpbHRlcnMgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IEZpbHRlciB9O1xuICAgIGNvbnN0IGlkcyA9IE9iamVjdC5rZXlzKGZpbHRlcnNBc09iamVjdCk7XG5cbiAgICByZXR1cm4gaWRzLnJlZHVjZSgoYWxsLCBmaWx0ZXJJZCkgPT4ge1xuICAgICAgY29uc3QgeyB0eXBlLCBzZXJ2aWNlcywgbmFtZSwgdmFsdWUsIGRvbWFpbiB9ID0gZmlsdGVyc0FzT2JqZWN0W2ZpbHRlcklkXTtcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdG9GaWx0ZXJGb3JtYXQodmFsdWUsIHR5cGUpO1xuICAgICAgY29uc3QgdmFsdWVzID0gc2VydmljZXMubWFwKHNlcnZpY2UgPT4gKHsgbmFtZSwgc2VydmljZSwgdmFsdWU6IGZpbHRlclZhbHVlLCBkb21haW4gfSkpO1xuXG4gICAgICByZXR1cm4gWy4uLmFsbCwgLi4udmFsdWVzXTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUNvbnRleHRzT2JzZXJ2YWJsZSgpIHtcbiAgICBjb25zdCB7IGNvbnRleHRzT2JzZXJ2ZXIgfSA9IHRoaXMuZmlsdGVyU2VydmljZTtcbiAgICBjb250ZXh0c09ic2VydmVyLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGNvbnRleHRzOiBDb250ZXh0W10pID0+ICh0aGlzLmNvbnRleHRzID0gY29udGV4dHMpKTtcbiAgfVxuXG4gIGVycm9yU3RhdGVBY3Rpb24oKSB7XG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnRyeUFnYWluKHRoaXMuY29udGV4dHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGaWx0ZXJzT2JzZXJ2YWJsZSgpIHtcbiAgICBjb25zdCB7IGZpbHRlcnNPYnNlcnZlciB9ID0gdGhpcy5maWx0ZXJTZXJ2aWNlO1xuXG4gICAgZmlsdGVyc09ic2VydmVyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGZpbHRlcnMsIGFwcGx5RmlsdGVyLCBlcnJvciwgbWVzc2FnZSB9KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JPdXRwdXQuZW1pdChlcnJvcik7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5lcnJvclN0YXRlID0gbWVzc2FnZTtcbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybShmaWx0ZXJzLCBhcHBseUZpbHRlcilcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oZmlsdGVyczogYW55LCBhcHBseUZpbHRlcjogYW55KSB7XG4gICAgdGhpcy50YWJzID0gdGhpcy5jcmVhdGVUYWJzKGZpbHRlcnMpO1xuICAgIHRoaXMuY291bnRlclVwZGF0ZSgpO1xuICAgIHRoaXMuc2V0RGVwZW5kZW5jaWVzKHRoaXMuZm9ybUZpbHRlcnMpO1xuICAgIHRoaXMuY3JlYXRlQ2hpbGRBcnJheSgpO1xuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDAgJiYgYXBwbHlGaWx0ZXIpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREZXBlbmRlbmNpZXMoZmlsdGVyczogRm9ybUZpbHRlcltdKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzTWFwOiBSZWNvcmQ8c3RyaW5nLCBGb3JtRmlsdGVyPiA9IHt9O1xuICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gZ2V0RmlsdGVySWQoZi5kb21haW4sIGYubmFtZSk7XG4gICAgICAgICAgZmlsdGVyc01hcFtpZF0gPSBmO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoZmlsdGVyc01hcCk7XG5cbiAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IGZyb20obmFtZXMpLnBpcGUoXG4gICAgICAgICAgbWFwKGtleSA9PiBmaWx0ZXJzTWFwW2tleV0pLFxuICAgICAgICAgIHJ4RmlsdGVyKCh7IGRlcGVuZHNPbiB9KSA9PiBkZXBlbmRzT24gJiYgZGVwZW5kc09uLmxlbmd0aCA+IDApLFxuICAgICAgICAgIHRhcCgoeyBkZXBlbmRzT24sIGRvbWFpbiwgZmlsdGVyQ29udHJvbCB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGludmFsaWRGaWx0ZXJzID0gZGVwZW5kc09uXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKGRlcCA9PiBkZXAucmVxdWlyZWQpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKGRlcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSBnZXRGaWx0ZXJJZChkb21haW4sIGRlcC5maWx0ZXJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRmlsdGVyID0gZmlsdGVyc01hcFtpZF07XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvcm1GaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgdHlwZSB9ID0gZm9ybUZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbXBhcmF0b3IgfSA9IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGFyYXRvciAmJiBpc1ZhbGlkT3BlcmF0b3IoY29tcGFyYXRvci5vcGVyYXRvcikgJiYgaXNTdXBwb3J0ZWRUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBwYXJzZUZpbHRlclZhbHVlKHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlKGNvbXBhcmF0b3Iub3BlcmF0b3IsIGNvbXBhcmF0b3IudmFsdWUsIGZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVwLnJlcXVpcmVkID8gIWZvcm1GaWx0ZXIudmFsdWUgOiBmb3JtRmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKGludmFsaWRGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKCh7IGRvbWFpbiwgZGVwZW5kc09uLCBmaWx0ZXJDb250cm9sIH0pID0+ICh7IGRvbWFpbiwgZGVwZW5kc09uLCBmaWx0ZXJDb250cm9sIH0pKVxuICAgICAgKTtcblxuICAgICAgZGVwZW5kZW5jaWVzLnN1YnNjcmliZSgoeyBkZXBlbmRzT24sIGRvbWFpbiwgZmlsdGVyQ29udHJvbCB9KSA9PlxuICAgICAgICAgIGZyb20oZGVwZW5kc09uKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIHJ4RmlsdGVyKGRlcCA9PiBkZXAucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgbWFwKCh7IGZpbHRlck5hbWUgfSkgPT4gZ2V0RmlsdGVySWQoZG9tYWluLCBmaWx0ZXJOYW1lKSksXG4gICAgICAgICAgICAgICAgICBtYXAoZmlsdGVySWQgPT4gZmlsdGVyc01hcFtmaWx0ZXJJZF0pLFxuICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoZm9ybUZpbHRlciA9PiBmcm9tKGZvcm1GaWx0ZXIudmFsdWVDaGFuZ2VzIHx8IFtdKSksXG4gICAgICAgICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJhdGlvbiA9IGRlcGVuZHNPbi5ldmVyeShkZXAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJJZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgZGVwLmZpbHRlck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbXBhcmF0b3IgfSA9IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJhdG9yICYmIGlzVmFsaWRPcGVyYXRvcihjb21wYXJhdG9yLm9wZXJhdG9yKSAmJiBpc1N1cHBvcnRlZFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmlsdGVyVmFsdWUodmFsLCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZShjb21wYXJhdG9yLm9wZXJhdG9yLCBjb21wYXJhdG9yLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuSXNFbXB0eSh2YWwpICYmIGNvbXBhcmF0aW9uID8gJ2VuYWJsZScgOiAnZGlzYWJsZSc7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoc3RhdHVzID0+IGZpbHRlckNvbnRyb2xbc3RhdHVzXSgpKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkR2VuZXJhbEZpZWxkKGZpbHRlcjogRmlsdGVyKSB7XG4gICAgY29uc3QgeyBuYW1lLCBkb21haW4sIHR5cGUgfSA9IGZpbHRlcjtcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IGdldEZpbHRlcklkKGRvbWFpbiwgbmFtZSk7XG4gICAgY29uc3QgZmllbGRDb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woZmlsdGVyKTtcblxuICAgIGZpZWxkQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIG1hcCh2ID0+IHBhcnNlRmlsdGVyVmFsdWUodiwgdHlwZSkpLFxuICAgICAgICB0YXAodmFsdWUgPT4gKHRoaXMuZm9ybUZpbHRlcnNbY29udHJvbE5hbWUgYXMgYW55XS52YWx1ZSA9IHZhbHVlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodmFsID0+XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKHRhYiA9PiB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRhYi5mb3JtLmNvbnRyb2xzW25hbWVdO1xuICAgICAgICAgIGlmIChjb250cm9sICYmIHRhYi5kb21haW4gPT09IGRvbWFpbikge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgY29uc3QgbmV3RmlsdGVyID0geyAuLi5maWx0ZXIsIC4uLnsgbmFtZTogY29udHJvbE5hbWUgfSB9O1xuICAgIGNvbnN0IG5ld0ZpZWxkID0gdGhpcy5jcmVhdGVGaWVsZChuZXdGaWx0ZXIpO1xuICAgIHRoaXMuZ2VuZXJhbC5mb3JtLmFkZENvbnRyb2woY29udHJvbE5hbWUsIGZpZWxkQ29udHJvbCk7XG4gICAgdGhpcy5nZW5lcmFsLmFkZEZpZWxkKG5ld0ZpZWxkKTtcbiAgfVxuXG4gIC8qXG4gICAqIFZlcmlmaWNhIG9zIGNvbnRleHRvcyBkZSBjYWRhIGZpbHRybywgY2FzbyB0b2RvcyBvcyBjb250ZXh0b3MgZm9yYW0gaW5mb3JtYWRvczpcbiAgICogQHJldHVybiB0cnVlXG4gICAqIENhc28gbsOjbyB0ZW5oYSBuZW5odW0gY29udGV4dG8sIGNvbnNpZGVyYS1zZSBwb3IgcGFkcsOjbyBxdWUgw6kgdG9kb3M6XG4gICAqIEByZXR1cm4gdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb250YWluc0FsbENvbnRleHRzKG15Q29udGV4dHM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFteUNvbnRleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFsbENvbnRleHRzID0gdGhpcy5jb250ZXh0cy5tYXAoZGF0YSA9PiBkYXRhLmNvbnRleHRJZCk7XG4gICAgcmV0dXJuIGVxdWFscyhteUNvbnRleHRzLnNvcnQoKSwgYWxsQ29udGV4dHMuc29ydCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAdG9kbyBSZWZhdG9yYXIuIE8gbcOpdG9kbyBwb3NzdWkgbXVpdGFzIHJlc3BvbnNhYmlsaWRhZGVzXG4gICAqXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVRhYnMoZmlsdGVyczogRmlsdGVyW10pIHtcbiAgICByZXR1cm4gZmlsdGVycy5yZWR1Y2UoKHRhYnMsIGZpbHRlcikgPT4ge1xuICAgICAgY29uc3QgeyBkb21haW4sIHNlcnZpY2VzLCBuYW1lLCB0eXBlLCBzY29wZSwgY29udGV4dHMsIGRlcGVuZHNPbiwgdmFsdWUsIHNlYXJjaCwgZGVmYXVsdFZhbHVlIH0gPSBmaWx0ZXI7XG4gICAgICBjb25zdCBpc05vdE11bHRpcGxlID0gc2VhcmNoICYmIGdldFNlYXJjaFR5cGUoc2VhcmNoKS5vdXRwdXQubWF4U2VsZWN0ZWRJdGVtcyA9PT0gMTtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jcmVhdGVGaWVsZChmaWx0ZXIpO1xuICAgICAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZChkb21haW4sIG5hbWUpO1xuICAgICAgY29uc3QgZmlsdGVyQ29uZmlnID0ge1xuICAgICAgICBkb21haW4sXG4gICAgICAgIGNvbnRleHRzLFxuICAgICAgICBzZXJ2aWNlcyxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZGVwZW5kc09uLFxuICAgICAgICB2YWx1ZTogZnJvbUpzb24odmFsdWUsIHR5cGUsIGlzTm90TXVsdGlwbGUpLFxuICAgICAgICB0eXBlLFxuICAgICAgICBpc011bHRpcGxlOiAhaXNOb3RNdWx0aXBsZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBmcm9tSnNvbihkZWZhdWx0VmFsdWUsIHR5cGUsIGlzTm90TXVsdGlwbGUpXG4gICAgICB9O1xuICAgICAgdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldID0gbmV3IEZvcm1GaWx0ZXIoZmlsdGVyQ29uZmlnKTtcbiAgICAgIGNvbnN0IGZvcm1GaWx0ZXIgPSB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV07XG4gICAgICBpZiAoc2NvcGUgPT09IFNjb3BlLkRPTUFJTiAmJiB0aGlzLmNvbnRhaW5zQWxsQ29udGV4dHMoY29udGV4dHMpKSB7XG4gICAgICAgIHRoaXMuYWRkR2VuZXJhbEZpZWxkKGZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHRzLmZvckVhY2goY29udGV4dElkID0+IHtcbiAgICAgICAgaWYgKChjb250ZXh0SWQgPT09IHRoaXMuY29udGV4dElkKSB8fCAodGhpcy5jb250ZXh0SWQgPT09ICcnKSkge1xuICAgICAgICAgIGNvbnN0IHRhYklkID0gZ2V0VGFiSWQoZG9tYWluLCBjb250ZXh0SWQpO1xuICAgICAgICAgIGNvbnN0IGZpZWxkQ29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGZpbHRlcik7XG5cbiAgICAgICAgICBpZiAoIXRhYnMuaGFzKHRhYklkKSkge1xuICAgICAgICAgICAgY29uc3QgeyBjb250ZXh0TGFiZWwgfSA9IHRoaXMuY29udGV4dHMuZmluZChjb250ZXh0ID0+IGNvbnRleHQuY29udGV4dElkID09PSBjb250ZXh0SWQpO1xuICAgICAgICAgICAgY29uc3QgdGFiID0gbmV3IENvbnRleHRUYWIoeyBkb21haW4sIG5hbWU6IGNvbnRleHRMYWJlbCB9KTtcbiAgICAgICAgICAgIHRhYnMuc2V0KHRhYklkLCB0YWIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbDogYW55KSA9PiB0aGlzLnVwZGF0ZUZpbHRlclZhbHVlKHRhYklkLCBuYW1lLCB2YWwsIGRvbWFpbiwgdHlwZSkpO1xuXG4gICAgICAgICAgY29uc3QgY29udGV4dFRhYiA9IHRhYnMuZ2V0KHRhYklkKTtcblxuXG4gICAgICAgICAgY29udGV4dFRhYi5hZGRGaWVsZChmaWVsZCk7XG4gICAgICAgICAgY29udGV4dFRhYi5mb3JtLmFkZENvbnRyb2woZmlsdGVyLm5hbWUsIGZpZWxkQ29udHJvbCk7XG5cbiAgICAgICAgICBpZiAoIWZvcm1GaWx0ZXIuZmlsdGVyQ29udHJvbCkge1xuICAgICAgICAgICAgZm9ybUZpbHRlci5maWx0ZXJDb250cm9sID0gZmllbGRDb250cm9sO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cblxuICAgICAgcmV0dXJuIHRhYnM7XG4gICAgfSwgbmV3IE1hcDxzdHJpbmcsIENvbnRleHRUYWI+KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJWYWx1ZSh0YWJJZDogc3RyaW5nLCBmaWx0ZXJOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGRvbWFpbjogc3RyaW5nLCB0eXBlOiBGaWx0ZXJUeXBlKSB7XG4gICAgY29uc3QgY29udHJvbE9wdHMgPSB7IGVtaXRFdmVudDogZmFsc2UgfTtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gcGFyc2VGaWx0ZXJWYWx1ZSh2YWx1ZSwgdHlwZSk7XG4gICAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZChkb21haW4sIGZpbHRlck5hbWUpO1xuICAgIGNvbnN0IGdlbmVyYWxGaWVsZENvbnRyb2wgPSB0aGlzLmdlbmVyYWwuZm9ybS5jb250cm9sc1tmaWx0ZXJJZF07XG5cbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgoeyBmb3JtIH0sIGtleSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbZmlsdGVyTmFtZV07XG5cbiAgICAgIGlmICh0YWJJZCAhPT0ga2V5ICYmIGNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgY29udHJvbE9wdHMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHsgY2hpbGRzIH0gPSB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV07XG4gICAgY2hpbGRzICYmIGNoaWxkcy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB0aGlzLmNsZWFuRmllbGRBbmRTZXREZWZhdWx0VmFsdWUoY2hpbGQuZmlsdGVyLmtleSkpO1xuICAgIGdlbmVyYWxGaWVsZENvbnRyb2wgJiYgZ2VuZXJhbEZpZWxkQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgY29udHJvbE9wdHMpO1xuICAgIHRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XS52YWx1ZSA9IGZpZWxkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuRmllbGRBbmRTZXREZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGlzTXVsdGlwbGUsIGRlZmF1bHRWYWx1ZSwgZmlsdGVyQ29udHJvbCwgdHlwZSB9ID0gdGhpcy5mb3JtRmlsdGVyc1trZXkgYXMgYW55XTtcbiAgICBjb25zdCBmaW5hbFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlLCBpc011bHRpcGxlKTtcblxuICAgIGlmIChmaWx0ZXJDb250cm9sKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ0RBVEUnIHx8ICh0eXBlID09PSAnU0VBUkNIJyAmJiBpc011bHRpcGxlKSkge1xuICAgICAgICBmaWx0ZXJDb250cm9sLnNldFZhbHVlKGZpbmFsVmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09ICdJTlRFR0VSJyB8fCB0eXBlID09PSAnRE9VQkxFJyB8fCB0eXBlID09PSAnTU9ORVknKSB7XG4gICAgICAgIGZpbmFsVmFsdWUgPT09ICcnID8gZmlsdGVyQ29udHJvbC5zZXRWYWx1ZShudWxsKSA6IGZpbHRlckNvbnRyb2wuc2V0VmFsdWUoZmluYWxWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJDb250cm9sLnNldFZhbHVlKGZpbmFsVmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDaGlsZEFycmF5KCkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm1GaWx0ZXJzKTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHsgZGVwZW5kc09uLCBkb21haW4gfSA9IHRoaXMuZm9ybUZpbHRlcnNba2V5IGFzIGFueV07XG4gICAgICBkZXBlbmRzT24uZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJJZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgZmllbGQuZmlsdGVyTmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV0pIHtcbiAgICAgICAgICBpZiAoIXRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XS5jaGlsZHMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XS5jaGlsZHMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKHRoaXMuZm9ybUZpbHRlcnMgYXMgYW55KVtmaWx0ZXJJZF0uY2hpbGRzLnB1c2goeyBmaWx0ZXI6IHsga2V5LCByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfSB9KTtcblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGQoZmlsdGVyOiBGaWx0ZXIpOiBEeW5hbWljVHlwZSB7XG4gICAgY29uc3QgeyBuYW1lLCBsYWJlbCwgZW51bUl0ZW1zLCB0eXBlLCBtYXNrIH0gPSBmaWx0ZXI7XG4gICAgY29uc3QgdHJhbnNsYXRlZEVudW1JdGVtcyA9XG4gICAgICBlbnVtSXRlbXMgJiYgZW51bUl0ZW1zLm1hcCgoaXRlbTogRW51bUl0ZW0pID0+ICh7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGl0ZW0ubGFiZWwpLCB2YWx1ZTogaXRlbS52YWx1ZSB9KSk7XG4gICAgY29uc3QgZmllbGQ6IFBhcnRpYWw8RmllbGRDb25maWc+ICYgeyBuYW1lOiBzdHJpbmcgfSA9IHsgbmFtZSwgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobGFiZWwpLCBwbGFjZWhvbGRlcjogJycgfTtcblxuICAgIGNvbnN0IGNyZWF0b3JzOiB7IFtrZXkgaW4gRmlsdGVyVHlwZV06ICgpID0+IER5bmFtaWNUeXBlIH0gPSB7XG4gICAgICBbRmlsdGVyVHlwZS5TVFJJTkddOiAoKSA9PiAoeyAuLi5maWVsZCwgbWFzazogbWFzayA/ICgpID0+IG1hc2sgOiBudWxsLCB0eXBlOiAnc3RyaW5nJyB9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLk1PTkVZXTogKCkgPT4gKHsgLi4uZmllbGQsIHR5cGU6ICdtb25leScsIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuQk9PTEVBTl06ICgpID0+IHRoaXMuY3JlYXRlUmFkaW9CdXR0b24oeyAuLi5maWVsZCB9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLkRBVEVdOiAoKSA9PiB0aGlzLmNyZWF0ZUNhbGVuZGFyKHsgLi4uZmllbGQsIHR5cGU6ICdkYXRlJyB9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLkRBVEVUSU1FXTogKCkgPT4gdGhpcy5jcmVhdGVDYWxlbmRhcih7IC4uLmZpZWxkLCB0eXBlOiAnZGF0ZVRpbWUnIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuVElNRV06ICgpID0+IHRoaXMuY3JlYXRlQ2FsZW5kYXIoeyAuLi5maWVsZCwgdHlwZTogJ3RpbWUnfSksXG4gICAgICBbRmlsdGVyVHlwZS5FTlVNRVJBVElPTl06ICgpID0+XG4gICAgICAgICh7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdHlwZTogJ2VudW0nLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zZWxlY3QnKSxcbiAgICAgICAgICBhcHBlbmRUbzogJ2JvZHknLFxuICAgICAgICAgIG9wdGlvbnM6IFsuLi50cmFuc2xhdGVkRW51bUl0ZW1zXVxuICAgICAgICB9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLklOVEVHRVJdOiAoKSA9PiAoe1xuICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5vcHRpb25zSW50ZWdlcigpLFxuICAgICAgICBtYXNrOiBtYXNrID8gKCkgPT4gbWFzayA6IG51bGwsXG4gICAgICAgIHR5cGU6ICdpbnRlZ2VyJ1xuICAgICAgfSksXG4gICAgICBbRmlsdGVyVHlwZS5ET1VCTEVdOiAoKSA9PiAoey4uLmZpZWxkLCB0eXBlOiAnZG91YmxlJ30pLFxuICAgICAgW0ZpbHRlclR5cGUuU0VBUkNIXTogKCkgPT4gdGhpcy5jcmVhdGVBdXRvY29tcGxldGVGaWVsZChmaWVsZCwgZmlsdGVyKVxuICAgIH07XG5cbiAgICByZXR1cm4gY3JlYXRvcnNbdHlwZV0oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmFkaW9CdXR0b24oZmllbGQ6IFBhcnRpYWw8RmllbGRDb25maWc+KTogUmFkaW9CdXR0b25GaWVsZENvbmZpZyB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IFtcbiAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0ueWVzYCksIHZhbHVlOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke1RSQU5TTEFURV9QUkVGSVh9Lm5vYCksIHZhbHVlOiBmYWxzZSB9XG4gICAgXSBhcyBSYXRpb25CdXR0b25PcHRpb25bXTtcbiAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogJ3JhZGlvQnV0dG9uJywgbmFtZTogJycsIG9wdGlvbnN9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNhbGVuZGFyKGNvbmZpZzogUGFydGlhbDxDYWxlbmRhckZpZWxkQ29uZmlnPikge1xuICAgIGNvbnN0IGNhbGVuZGFyOiBDYWxlbmRhckZpZWxkQ29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgdHlwZTogY29uZmlnLnR5cGUsXG4gICAgICBuYW1lOiBjb25maWcubmFtZSA/PyAnJyxcbiAgICB9XG5cbiAgICBjYWxlbmRhci5hcHBlbmRUbyA9ICdib2R5JztcbiAgICBjYWxlbmRhci5jYWxlbmRhckxvY2FsZU9wdGlvbnMgPSB0aGlzLmNhbGVuZGFyT3B0aW9uc1NlcnZpY2UuZ2V0T3B0aW9ucygpO1xuICAgIHJldHVybiBjYWxlbmRhcjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXV0b2NvbXBsZXRlRmllbGQoZmllbGQ6IFBhcnRpYWw8RmllbGRDb25maWc+LCB7IGRlcGVuZHNPbiwgc2VhcmNoLCBkb21haW4sIG5hbWUgfTogRmlsdGVyKTogRXhwYW5kZWREeW5hbWljVHlwZSB7XG4gICAgY29uc3Qgc3VnZ2VzdGlvbnNPYnNlcnZhYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIGNvbnN0IHsgcXVlcnlQYXJhbSB9ID0gZ2V0U2VhcmNoVHlwZShzZWFyY2gpLmlucHV0O1xuICAgIGNvbnN0IHsgZGlzcGxheUZpZWxkcywga2V5RmllbGRzLCByZXN1bHREYXRhSnNvblBhdGgsIGRpc3BsYXlGaWVsZENvbmNhdFRva2VuLCBtYXhTZWxlY3RlZEl0ZW1zIH0gPSBnZXRTZWFyY2hUeXBlKHNlYXJjaCkub3V0cHV0O1xuICAgIGNvbnN0IGZpbHRlcklkID0gZ2V0RmlsdGVySWQoZG9tYWluLCBuYW1lKTtcbiAgICBjb25zdCBzdWdnZXN0aW9uc0Vycm9yID0gKG1lc3NhZ2VFcnJvcj86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZURldGFpbCA9IG1lc3NhZ2VFcnJvciA/IG1lc3NhZ2VFcnJvciA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uZmluZF9zdWdnZXN0aW9uc19lcnJvcmAsIHsgYWN0aXZlRmlsdGVyczogdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgfSlcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICBkdXJhdGlvbjogVE9BU1RfTElGRSxcbiAgICAgICAgdGV4dDogbWVzc2FnZURldGFpbFxuICAgICAgfTtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfTtcbiAgICBjb25zdCBvblNlYXJjaCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0geyBbcXVlcnlQYXJhbV06IHZhbCB9O1xuICAgICAgZGVwZW5kc09uICYmIE9iamVjdC5hc3NpZ24ocGFyYW1zLCB0aGlzLmdldERlcGVuZGVuY2llc1ZhbHVlcyhkZXBlbmRzT24sIGRvbWFpbikpO1xuXG4gICAgICBjb25zdCBzZWFyY2hVcmwgPVxuICAgICAgICBzZWFyY2ggJiYgc2VhcmNoLnR5cGUgPT09ICdFTlRJVFknXG4gICAgICAgICAgPyB0aGlzLmdldEVudGl0eVNlYXJjaFVybChzZWFyY2guZW50aXR5U2VhcmNoLmlucHV0LCB2YWwsIGRlcGVuZHNPbilcbiAgICAgICAgICA6IGdldFNlYXJjaFR5cGUoc2VhcmNoKS5pbnB1dC51cmw7XG5cbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgICAuc2VhcmNoRmllbGRTdWdnZXN0aW9ucyhzZWFyY2hVcmwsIHBhcmFtcywgc2VhcmNoLnR5cGUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChyZXNwb25zZSA9PiBqc29uUGF0aChyZXNwb25zZSwgcmVzdWx0RGF0YUpzb25QYXRoKSksXG4gICAgICAgICAgbWFwKChzdWdnZXN0aW9uczogYW55W10pID0+IHRoaXMuYWRkU3VnZ2VzdGlvbkZpZWxkcyhzdWdnZXN0aW9ucywgZGlzcGxheUZpZWxkcywga2V5RmllbGRzLCBkaXNwbGF5RmllbGRDb25jYXRUb2tlbiwgZmlsdGVySWQpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICBzdWdnZXN0aW9uc09ic2VydmFibGUubmV4dChyZXN1bHQpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBsZXQgbWVzc2FnZUVycm9yID0gdW5kZWZpbmVkXG4gICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLmVycm9yLm1lc3NhZ2UpIG1lc3NhZ2VFcnJvciA9IGVycm9yLmVycm9yLm1lc3NhZ2VcbiAgICAgICAgICBzdWdnZXN0aW9uc0Vycm9yKG1lc3NhZ2VFcnJvcilcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICB0eXBlOiAnYXV0b2NvbXBsZXRlJyxcbiAgICAgIG9uU2VhcmNoLFxuICAgICAgYXBwZW5kVG86ICdib2R5JyxcbiAgICAgIHN1Z2dlc3Rpb25zT2JzZXJ2YWJsZSxcbiAgICAgIGRpc3BsYXlGaWVsZDogc2VhcmNoRGlzcGxheU5hbWUsXG4gICAgICBkYXRhS2V5OiBzZWFyY2hLZXlOYW1lLFxuICAgICAgbXVsdGlwbGU6IG1heFNlbGVjdGVkSXRlbXMgPiAxLFxuICAgICAgc2l6ZTogeyBsZzogMTIsIG1kOiAxMiwgeGw6IDEyIH0sXG4gICAgICBlbXB0eU1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uc2VhcmNoX2VtcHR5X21lc3NhZ2VgKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzYWZlUmVwbGFjZUNvbW1hcyhpbnB1dDogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgbGV0IHBhcmVuQ291bnQgPSAwO1xuICAgIGxldCBqdXN0QWRkZWRPcGVyYXRvciA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIGlucHV0KSB7XG4gICAgICBsZXQgY2hhclRvQWRkID0gY2hhcjtcblxuICAgICAgKHsgcGFyZW5Db3VudCwganVzdEFkZGVkT3BlcmF0b3IgfSA9IHRoaXMudXBkYXRlUGFyZW5BbmRPcGVyYXRvclN0YXRlKGNoYXIsIHBhcmVuQ291bnQsIGp1c3RBZGRlZE9wZXJhdG9yKSk7XG4gICAgICAoeyBjaGFyVG9BZGQsIGp1c3RBZGRlZE9wZXJhdG9yIH0gPSB0aGlzLnByb2Nlc3NDb21tYVN1YnN0aXR1dGlvbihjaGFyLCBwYXJlbkNvdW50LCBqdXN0QWRkZWRPcGVyYXRvciwgb3BlcmF0b3IsIGNoYXJUb0FkZCkpO1xuXG4gICAgICBqdXN0QWRkZWRPcGVyYXRvciA9IHRoaXMudXBkYXRlTm9uQ29tbWFPcGVyYXRvclN0YXRlKGNoYXIsIGNoYXJUb0FkZCwganVzdEFkZGVkT3BlcmF0b3IpO1xuICAgICAgb3V0cHV0ICs9IGNoYXJUb0FkZDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbkFuZE9wZXJhdG9yU3RhdGUoY2hhcjogc3RyaW5nLCBwYXJlbkNvdW50OiBudW1iZXIsIGp1c3RBZGRlZE9wZXJhdG9yOiBib29sZWFuKTogeyBwYXJlbkNvdW50OiBudW1iZXIsIGp1c3RBZGRlZE9wZXJhdG9yOiBib29sZWFuIH0ge1xuICAgIGlmIChjaGFyID09PSAnKCcpIHtcbiAgICAgIHBhcmVuQ291bnQrKztcbiAgICAgIGp1c3RBZGRlZE9wZXJhdG9yID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSAnKScpIHtcbiAgICAgIHBhcmVuQ291bnQtLTtcbiAgICAgIGp1c3RBZGRlZE9wZXJhdG9yID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5lbmh1bWEgYcOnw6NvIG5lY2Vzc8OhcmlhIHBhcmEgb3V0cm9zIGNhcmFjdGVyZXNcbiAgICB9XG5cbiAgICByZXR1cm4geyBwYXJlbkNvdW50LCBqdXN0QWRkZWRPcGVyYXRvciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQ29tbWFTdWJzdGl0dXRpb24oY2hhcjogc3RyaW5nLCBwYXJlbkNvdW50OiBudW1iZXIsIGp1c3RBZGRlZE9wZXJhdG9yOiBib29sZWFuLCBvcGVyYXRvcjogc3RyaW5nLCBjaGFyVG9BZGQ6IHN0cmluZyk6IHsgY2hhclRvQWRkOiBzdHJpbmcsIGp1c3RBZGRlZE9wZXJhdG9yOiBib29sZWFuIH0ge1xuICAgIGlmIChjaGFyID09PSAnLCcpIHtcbiAgICAgIGlmIChwYXJlbkNvdW50ID09PSAwKSB7XG4gICAgICAgIGlmICghanVzdEFkZGVkT3BlcmF0b3IpIHtcbiAgICAgICAgICBjaGFyVG9BZGQgPSBgICR7b3BlcmF0b3J9IGA7XG4gICAgICAgICAganVzdEFkZGVkT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoYXJUb0FkZCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqdXN0QWRkZWRPcGVyYXRvciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBjaGFyVG9BZGQsIGp1c3RBZGRlZE9wZXJhdG9yIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU5vbkNvbW1hT3BlcmF0b3JTdGF0ZShjaGFyOiBzdHJpbmcsIGNoYXJUb0FkZDogc3RyaW5nLCBqdXN0QWRkZWRPcGVyYXRvcjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmIChjaGFyICE9PSAnLCcpIHtcbiAgICAgIGlmIChjaGFyVG9BZGQgIT09IGNoYXIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhciAhPT0gJygnICYmIGNoYXIgIT09ICcpJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqdXN0QWRkZWRPcGVyYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50aXR5U2VhcmNoVXJsKHNlYXJjaDogRW50aXR5U2VhcmNoSW5wdXQsIHZhbHVlOiBzdHJpbmcsIGRlcGVuZHNPbjogRGVwZW5kc09uW10pIHtcbiAgICBjb25zdCB7IGF0dHJpYnV0ZXMsIGRvbWFpbk5hbWUsIGVudGl0eU5hbWUsIHNlcnZpY2VOYW1lIH0gPSBzZWFyY2g7XG4gICAgY29uc3QgdXJsID0gYCR7ZG9tYWluTmFtZX0vJHtzZXJ2aWNlTmFtZX0vZW50aXRpZXMvJHtlbnRpdHlOYW1lfS8/ZmlsdGVyPWA7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gYXR0cmlidXRlcy5tYXAoYXR0ciA9PlxuICAgICAgZmlsdGVyT3BlcmF0b3JzW2F0dHIuY29tcGFyYXRvciBhcyBrZXlvZiB0eXBlb2YgZmlsdGVyT3BlcmF0b3JzXShhdHRyLm5hbWUsIHZhbHVlKVxuICAgICk7XG5cbiAgICBkZXBlbmRzT24gJiZcbiAgICAgIGRlcGVuZHNPbi5mb3JFYWNoKG9iaiA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcklkID0gZ2V0RmlsdGVySWQoZG9tYWluTmFtZSwgb2JqLmZpbHRlck5hbWUpO1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldLnZhbHVlW3NlYXJjaEtleU5hbWVdO1xuICAgICAgICBmaWx0ZXJzLnB1c2goYCR7b2JqLmVudGl0eUF0dHJpYnV0ZX0gZXEgJyR7ZmllbGRWYWx1ZX0nYCk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGZpbHRlcnNTdHJpbmcgPSBmaWx0ZXJzLmpvaW4oJywnKTtcbiAgICBjb25zdCBmaW5hbEZpbHRlciA9IHRoaXMuc2FmZVJlcGxhY2VDb21tYXMoZmlsdGVyc1N0cmluZywgc2VhcmNoLm9wZXJhdG9yKTtcblxuICAgIHJldHVybiB1cmwuY29uY2F0KGZpbmFsRmlsdGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU3VnZ2VzdGlvbkZpZWxkcyhzdWdnZXN0aW9uczogYW55W10sIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBrZXlGaWVsZHM6IHN0cmluZ1tdLCBzZXBhcmF0b3I6IHN0cmluZywgZmlsdGVySWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFkZFZhbHVlID0gKGFjYzogc3RyaW5nLCB2YWx1ZTogYW55LCB0b2tlbjogc3RyaW5nKSA9PiAoYWNjID8gYCR7YWNjfSR7dG9rZW59JHt2YWx1ZX1gIDogdmFsdWUpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gc3VnZ2VzdGlvbnMubWFwKHN1Z2dlc3Rpb24gPT4gKHtcbiAgICAgIC4uLnN1Z2dlc3Rpb24sXG4gICAgICBbc2VhcmNoRGlzcGxheU5hbWVdOiBkaXNwbGF5RmllbGRzLnJlZHVjZSgodmFsdWUsIGRpc3BsYXkpID0+IHtcbiAgICAgICAgcmV0dXJuIGFkZFZhbHVlKHZhbHVlLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1Z2dlc3Rpb25bZGlzcGxheV0pLCBzZXBhcmF0b3IpO1xuICAgICAgfSwgJycpLFxuICAgICAgW3NlYXJjaEtleU5hbWVdOiBrZXlGaWVsZHMucmVkdWNlKCh2YWx1ZSwga2V5KSA9PiBhZGRWYWx1ZSh2YWx1ZSwgc3VnZ2VzdGlvbltrZXldLCAnLCAnKSwgJycpXG4gICAgfSkpO1xuICAgICh0aGlzLmZvcm1GaWx0ZXJzIGFzIGFueSlbZmlsdGVySWRdLmludmFsaWRWYWx1ZSA9IHJlc3VsdC5sZW5ndGggPT09IDA7XG5cblxuICAgIHJldHVybiByZXN1bHQuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdmFsdWUuZmluZEluZGV4KChpOiBhbnkpID0+IGkuJCRfX2tleVZhbHVlX18gPT09IGl0ZW0uJCRfX2tleVZhbHVlX18pO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXBlbmRlbmNpZXNWYWx1ZXMoZGVwZW5kZW5jaWVzOiBEZXBlbmRzT25bXSwgZG9tYWluOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZGVwZW5kZW5jaWVzLnJlZHVjZSgocGFyYW1zLCB7IGZpbHRlck5hbWUgfSkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZChkb21haW4sIGZpbHRlck5hbWUpO1xuICAgICAgaWYgKCh0aGlzLmZvcm1GaWx0ZXJzIGFzIGFueSlbZmlsdGVySWRdKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgfSA9ICh0aGlzLmZvcm1GaWx0ZXJzIGFzIGFueSlbZmlsdGVySWRdO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ0VOVU1FUkFUSU9OJykge1xuICAgICAgICAgIHBhcmFtc1tmaWx0ZXJOYW1lXSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcGFyYW1zW2ZpbHRlck5hbWVdID0gdmFsdWUubWFwKGFyciA9PiBhcnJbc2VhcmNoS2V5TmFtZV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXNbZmlsdGVyTmFtZV0gPSB2YWx1ZSA/IHZhbHVlW3NlYXJjaEtleU5hbWVdIDogWycnXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5Jc0VtcHR5KHBhcmFtc1tmaWx0ZXJOYW1lXSkgJiYgZGVsZXRlIHBhcmFtc1tmaWx0ZXJOYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgYW55Pik7XG4gIH1cblxuXG4gIC8qXG4gICAqIFZlcmlmaWNhIHNlIG8gdmFsb3IgaW5mb3JtYWRvIMOpIGZhbHNvLCBlbSBhcnJheXMsIMOpIHZlcmlmaWNhZG8gY2FkYSBpdGVtXG4gICAqL1xuICBwcml2YXRlIElzRW1wdHkodmFsdWU6IGFueSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmV2ZXJ5KGRhdGEgPT4gIWRhdGEpIDogIXZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBmb3JtYXQgdG8gc3BlY2lmeSBmb3IgaW50ZWdlciB0eXBlIGZpZWxkXG4gICAqL1xuICBwcml2YXRlIG9wdGlvbnNJbnRlZ2VyKCkge1xuICAgIHJldHVybiB7IGN1cnJlbmN5U3ltYm9sOiAnJywgZGVjaW1hbFNlcGFyYXRvcjogJycsIHRob3VzYW5kc1NlcGFyYXRvcjogJycgfTtcbiAgfVxufVxuIiwiQGlmKGVycm9yKSB7XG4gIDxzLWVtcHR5LXN0YXRlXG4gICAgaWNvbkNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCJlcnJvclN0YXRlPy5zdGF0dXMgKyAnIC0gJyArICBlcnJvclN0YXRlPy5zdGF0dXNUZXh0XCJcbiAgICAocHJpbWFyeUFjdGlvbik9XCJlcnJvclN0YXRlQWN0aW9uKClcIlxuICAgIFtwcmltYXJ5QWN0aW9uTGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnRyeScpXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmVycm9yX3N0YXRlJylcIlxuICA+PC9zLWVtcHR5LXN0YXRlPlxuXG59IEBlbHNlIHtcbiAgQGlmKHRhYnMgJiYgdGFicy5zaXplID4gMSkge1xuICAgIDxwLXRhYlZpZXcgWyhhY3RpdmVJbmRleCldPVwiYWN0aXZlSW5kZXhcIj5cbiAgICAgIEBpZihnZW5lcmFsLmNvbmZpZ3MubGVuZ3RoKSB7XG4gICAgICAgIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiZ2VuZXJhbC5uYW1lXCI+XG4gICAgICAgICAgPHMtZHluYW1pYy1mb3JtXG4gICAgICAgICAgICBbZXJyb3JNZXNzYWdlc109XCJlcnJvck1lc3NhZ2VzXCJcbiAgICAgICAgICAgIFtjb25maWdzXT1cImdlbmVyYWwuY29uZmlnc1wiXG4gICAgICAgICAgICBbZm9ybV09XCJnZW5lcmFsLmZvcm1cIi8+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgIH1cblxuICAgICAgQGZvcih0YWIgb2YgKHRhYnMgfCBtYXBWYWx1ZXMpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgICA8cy1keW5hbWljLWZvcm1cbiAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VzXT1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgICAgICAgW2NvbmZpZ3NdPVwidGFiLmNvbmZpZ3NcIlxuICAgICAgICAgICAgW2Zvcm1dPVwidGFiLmZvcm1cIi8+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgIH1cblxuICAgIDwvcC10YWJWaWV3PlxuXG4gIH1cblxuICBAaWYodGFicyAmJiB0YWJzLnNpemUgPT09IDEpIHtcbiAgICBAZm9yKHRhYiBvZiAodGFicyB8IG1hcFZhbHVlcyk7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHMtZHluYW1pYy1mb3JtXG4gICAgICAgIFtlcnJvck1lc3NhZ2VzXT1cImVycm9yTWVzc2FnZXNcIlxuICAgICAgICBbY29uZmlnc109XCJ0YWIuY29uZmlnc1wiXG4gICAgICAgIFtmb3JtXT1cInRhYi5mb3JtXCIvPlxuICAgIH1cblxuICB9XG59Il19
654
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9tb2R1bGVzL2FkdmFuY2VkLWZpbHRlci9jb21wb25lbnRzL2Zvcm0tZmlsdGVyL2Zvcm0tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9mb3JtLWZpbHRlci9mb3JtLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEMsT0FBTyxFQUEyRCxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3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QUM7d0dBbHVCVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwwV0M5Q2hDLG11Q0FpQ0E7OzRGRGFhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxtQkFBbUI7OEJBK0JwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0ksd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFHUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdG9hc3RcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgZmlsdGVyIGFzIHJ4RmlsdGVyLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY2xvbmUsIGVxdWFscyB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB7IENvbnRleHQsIERlcGVuZHNPbiwgRW50aXR5U2VhcmNoSW5wdXQsIEVudW1JdGVtLCBGaWx0ZXIsIEZpbHRlclR5cGUsIFNjb3BlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZvcm1GaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1maWx0ZXInO1xuaW1wb3J0IHsgQ29udGV4dFRhYiwgVGFiVmlldyB9IGZyb20gJy4uLy4uL21vZGVscy90YWItdmlldyc7XG5pbXBvcnQgeyBBZHZhbmNlZEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hZHZhbmNlZC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjb21wYXJlLCBpc1N1cHBvcnRlZFR5cGUsIGlzVmFsaWRPcGVyYXRvciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbXBhcmF0b3InO1xuaW1wb3J0IHsgY3JlYXRlRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtLWZpZWxkJztcbmltcG9ydCB7XG4gIGZpbHRlck9wZXJhdG9ycyxcbiAgZnJvbUpzb24sXG4gIGdldEZpbHRlcklkLFxuICBnZXRTZWFyY2hUeXBlLFxuICBnZXRUYWJJZCxcbiAganNvblBhdGgsXG4gIHBhcnNlRmlsdGVyVmFsdWUsXG4gIHRvRmlsdGVyRm9ybWF0LFxuICB0b1VzZXJGb3JtYXRcbn0gZnJvbSAnLi4vLi4vdXRpbHMvaW5kZXgnO1xuXG5pbXBvcnQge1xuICBDYWxlbmRhckZpZWxkQ29uZmlnLFxuICBEeW5hbWljVHlwZSxcbiAgRXhwYW5kZWREeW5hbWljVHlwZSxcbiAgRmllbGRDb25maWcsXG4gIFJhZGlvQnV0dG9uRmllbGRDb25maWcsXG4gIFJhdGlvbkJ1dHRvbk9wdGlvbixcbn0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0nO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhck9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FsZW5kYXItb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IHNlYXJjaERpc3BsYXlOYW1lLCBzZWFyY2hLZXlOYW1lIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cbmNvbnN0IFRSQU5TTEFURV9QUkVGSVggPSAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UnO1xuY29uc3QgVE9BU1RfTElGRSA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtYXBwLWZvcm0tZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2UgPSBpbmplY3QoQWR2YW5jZWRGaWx0ZXJTZXJ2aWNlKTtcbiAgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyT3B0aW9uc1NlcnZpY2UgPSBpbmplY3QoQ2FsZW5kYXJPcHRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgZXJyb3JTdGF0ZTogSHR0cEVycm9yUmVzcG9uc2U7XG4gIHRhYnM6IE1hcDxzdHJpbmcsIENvbnRleHRUYWI+O1xuICBjb250ZXh0czogQ29udGV4dFtdID0gW107XG4gIGZvcm1GaWx0ZXJzOiBGb3JtRmlsdGVyW10gPSBbXTtcbiAgb2xkRm9ybUZpbHRlcnM6IEZvcm1GaWx0ZXJbXSA9IFtdO1xuICBhY3R1YWxGb3JtRmlsdGVyczogYW55W10gPSBbXTtcbiAgZ2VuZXJhbCA9IG5ldyBUYWJWaWV3KHsgbmFtZTogJ0dlcmFsJyB9KTtcbiAgdG90YWxGaWx0ZXJzQWN0aXZlID0gMDtcbiAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgdGFiVmlld09yaWVudGF0aW9uID0gJ2xlZnQnO1xuICBlcnJvciA9IGZhbHNlO1xuICBhY3RpdmVJbmRleCA9IDA7XG5cbiAgZXJyb3JNZXNzYWdlcyA9IHtcbiAgICBtaW46IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uZXJyb3JfbWluX3ZhbHVlYCksXG4gICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke1RSQU5TTEFURV9QUkVGSVh9LmVycm9yX21heF92YWx1ZWApLFxuICAgIHBhdHRlcm46IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uaW52YWxpZF9wYXR0ZXJuYClcbiAgfTtcblxuICBASW5wdXQoKSBzaG93TWVzc2FnZXMgPSB0cnVlO1xuICBASW5wdXQoKSBjb250ZXh0SWQgPSAnJztcblxuXG4gIEBPdXRwdXQoKSB0b3RhbEZpbHRlcnNBY3RpdmVPdXRwdXQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGVycm9yT3V0cHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgc2hvd0RpYWxvZ091dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWxPdXRwdXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplV2luZG93KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB7IGlubmVyV2lkdGggfSA9IGV2ZW50LnRhcmdldDtcbiAgICB0aGlzLmlzTW9iaWxlID0gaW5uZXJXaWR0aCA8PSA2NDA7XG4gICAgdGhpcy50YWJWaWV3T3JpZW50YXRpb24gPSB0aGlzLmlzTW9iaWxlID8gJ3RvcCcgOiAnbGVmdCc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gaW5uZXJXaWR0aCA8PSA2NDA7XG4gICAgdGhpcy50YWJWaWV3T3JpZW50YXRpb24gPSB0aGlzLmlzTW9iaWxlID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgdGhpcy5zdWJzY3JpYmVDb250ZXh0c09ic2VydmFibGUoKTtcbiAgICB0aGlzLnN1YnNjcmliZUZpbHRlcnNPYnNlcnZhYmxlKCk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGRhdGEubWVzc2FnZSAmJiBkYXRhLm1lc3NhZ2Uuc3BsaXQoJzonKVsxXTtcbiAgICAgIGlmIChtZXNzYWdlID09PSAnYWRkQ29udGV4dCcpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmFkZENvbnRleHRzKC4uLmRhdGEucGF5bG9hZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBoYXNDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5vbGRGb3JtRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZm9ybUZpbHRlcnMuZmlsdGVyKChjdXJyZW50RmlsdGVyLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgb2xkRmlsdGVyID0gdGhpcy5vbGRGb3JtRmlsdGVyc1tpbmRleF07XG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IG9sZEZpbHRlciA/IG9sZEZpbHRlci52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiAhZXF1YWxzKGN1cnJlbnRGaWx0ZXIudmFsdWUsIG9sZFZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPiAwO1xuICB9XG5cbiAgb25BcHBseUZpbHRlcnMoKSB7XG4gICAgdGhpcy5oYXNDaGFuZ2VzKCkgJiYgdGhpcy5jbG9zZU1vZGFsT3V0cHV0LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuaGFzQ2hhbmdlcygpICYmIHRoaXMuZmlsdGVyU2VydmljZS50cnlBZ2Fpbih0aGlzLmNvbnRleHRzKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycyhzaG93VG9hc3QgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZXMoKSkge1xuICAgICAgdGhpcy5zaG93RGlhbG9nT3V0cHV0LmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5jb3VudGVyVXBkYXRlKCk7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzVmFsdWVzKHRoaXMuZm9ybUZpbHRlcnMpO1xuXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2Uuc2F2ZVRpY2tlZEZpbHRlcnMoZmlsdGVycyk7XG4gICAgfSBlbHNlIGlmIChzaG93VG9hc3QpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHNldmVyaXR5OiAnaW5mbycsXG4gICAgICAgIGR1cmF0aW9uOiBUT0FTVF9MSUZFLFxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke1RSQU5TTEFURV9QUkVGSVh9LmFwcGxpZWRfZmlsdGVyX25vY2hhbmdlYCwgeyBhY3RpdmVGaWx0ZXJzOiB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSB9KVxuICAgICAgfTtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfVxuICAgIHRoaXMub2xkRm9ybUZpbHRlcnMgPSBjbG9uZSh0aGlzLmZvcm1GaWx0ZXJzKTtcbiAgfVxuXG4gIGdldERlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWU6IGFueSwgaXNNdWx0aXBsZTogYm9vbGVhbikge1xuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCB8fCAoaXNNdWx0aXBsZSAmJiBkZWZhdWx0VmFsdWVbMF0gPT09ICcnKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybUZpbHRlcnMpO1xuICAgIGtleXMuZm9yRWFjaChrZXkgPT4gdGhpcy5jbGVhbkZpZWxkQW5kU2V0RGVmYXVsdFZhbHVlKGtleSkpO1xuICB9XG5cbiAgc2VuZENsb3NlTWVzc2FnZSgpIHtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxuICAgICAge1xuICAgICAgICBtZXNzYWdlOiAnZGFzaGJvYXJkOmNsb3NlLW1vZGFsJyxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIG1vZGFsTmFtZTogJ2FkdmFuY2VkLWZpbHRlci0xJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJyonXG4gICAgKTtcbiAgfVxuXG4gIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IGFueSkge1xuICAgIGlmICh0aGlzLnNob3dNZXNzYWdlcykge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2U6ICdkYXNoYm9hcmQ6dG9hc3RyJyxcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLmRldGFpbFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJyonXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVGaWx0ZXJzKGZvcmNlU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMucGFyc2VUb1VzZXJGaWx0ZXJzKHRoaXMuZm9ybUZpbHRlcnMpO1xuICAgIGNvbnN0IHNhdmVkRmlsdGVyU3VjY2VzcyA9ICgpID0+IHtcbiAgICAgIGlmICghZm9yY2VTYXZlKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcbiAgICAgICAgICBkdXJhdGlvbjogVE9BU1RfTElGRSxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke1RSQU5TTEFURV9QUkVGSVh9LnNhdmVkX2ZpbHRlcnNfc3VjY2Vzc2AsIHsgYWN0aXZlRmlsdGVyczogdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgfSlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb3VudGVyVXBkYXRlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhdmVkRmlsdGVyc0Vycm9yID0gKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgIGR1cmF0aW9uOiBUT0FTVF9MSUZFLFxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke1RSQU5TTEFURV9QUkVGSVh9LnNhdmVkX2ZpbHRlcnNfZXJyb3JgLCB7IGFjdGl2ZUZpbHRlcnM6IHRoaXMudG90YWxGaWx0ZXJzQWN0aXZlIH0pXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICB0aGlzLmZpbHRlclNlcnZpY2VcbiAgICAgIC5zYXZlRmlsdGVycyhmaWx0ZXJzKVxuICAgICAgLnN1YnNjcmliZShzYXZlZEZpbHRlclN1Y2Nlc3MsIHNhdmVkRmlsdGVyc0Vycm9yKTtcbiAgfVxuXG4gIHNhdmVGaWx0ZXJzV2l0aENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbjogYW55KSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMucGFyc2VUb1VzZXJGaWx0ZXJzKHRoaXMuZm9ybUZpbHRlcnMpO1xuXG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlXG4gICAgICAuc2F2ZUZpbHRlcnMoZmlsdGVycylcbiAgICAgIC5zdWJzY3JpYmUoY2FsbGJhY2tGdW5jdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGNvdW50ZXJVcGRhdGUoKSB7XG4gICAgdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgPSB0aGlzLmNvdW50QWN0aXZlRmlsdGVycyh0aGlzLnRhYnMpO1xuICAgIHRoaXMudG90YWxGaWx0ZXJzQWN0aXZlT3V0cHV0LmVtaXQodGhpcy50b3RhbEZpbHRlcnNBY3RpdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3VudEFjdGl2ZUZpbHRlcnModGFiczogTWFwPHN0cmluZywgQ29udGV4dFRhYj4pIHtcbiAgICBsZXQgdG90YWxGaWx0ZXJzQWN0aXZlID0gMDtcblxuICAgIHRhYnMuZm9yRWFjaCh0YWJWaWV3ID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRhYlZpZXcuZm9ybTtcbiAgICAgIHRhYlZpZXcuYWN0aXZlRmlsdGVycyA9IE9iamVjdC5rZXlzKHZhbHVlKS5yZWR1Y2UoKGFwcGxpZWRGaWx0ZXJzLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWRBcnJheSA9IGlzQXJyYXkgJiYgZmlsdGVyVmFsdWUubGVuZ3RoID4gMDtcblxuICAgICAgICBpZiAoaXNWYWxpZEFycmF5IHx8ICghaXNBcnJheSAmJiBmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICBhcHBsaWVkRmlsdGVycysrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGxpZWRGaWx0ZXJzO1xuICAgICAgfSwgMCk7XG4gICAgICB0b3RhbEZpbHRlcnNBY3RpdmUgKz0gdGFiVmlldy5hY3RpdmVGaWx0ZXJzO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsRmlsdGVyc0FjdGl2ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUb1VzZXJGaWx0ZXJzKGZpbHRlcnM6IEZvcm1GaWx0ZXJbXSkge1xuICAgIGNvbnN0IGZpbHRlcnNBc09iamVjdCA9IGZpbHRlcnMgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IEZvcm1GaWx0ZXIgfTtcbiAgICBjb25zdCBpZHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJzQXNPYmplY3QpO1xuXG4gICAgcmV0dXJuIGlkcy5yZWR1Y2UoKGFsbCwgZmlsdGVySWQpID0+IHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgc2VydmljZXMsIG5hbWUsIHZhbHVlLCBkb21haW4sIGNvbnRleHRzIH0gPSBmaWx0ZXJzQXNPYmplY3RbZmlsdGVySWRdIGFzIHVua25vd24gYXMgRmlsdGVyO1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0b1VzZXJGb3JtYXQodmFsdWUsIHR5cGUpO1xuXG4gICAgICBjb25zdCB2YWx1ZXMgPSBzZXJ2aWNlcy5tYXAoc2VydmljZSA9PiAoeyBuYW1lLCBzZXJ2aWNlLCB2YWx1ZTogZmlsdGVyVmFsdWUsIGRvbWFpbiwgY29udGV4dHMgfSkpO1xuXG4gICAgICByZXR1cm4gWy4uLmFsbCwgLi4udmFsdWVzXTtcbiAgICB9LCBbXSBhcyBhbnlbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcnNWYWx1ZXMoZmlsdGVyczogRm9ybUZpbHRlcltdKSB7XG4gICAgY29uc3QgZmlsdGVyc0FzT2JqZWN0ID0gZmlsdGVycyBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogRmlsdGVyIH07XG4gICAgY29uc3QgaWRzID0gT2JqZWN0LmtleXMoZmlsdGVyc0FzT2JqZWN0KTtcblxuICAgIHJldHVybiBpZHMucmVkdWNlKChhbGwsIGZpbHRlcklkKSA9PiB7XG4gICAgICBjb25zdCB7IHR5cGUsIHNlcnZpY2VzLCBuYW1lLCB2YWx1ZSwgZG9tYWluIH0gPSBmaWx0ZXJzQXNPYmplY3RbZmlsdGVySWRdO1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0b0ZpbHRlckZvcm1hdCh2YWx1ZSwgdHlwZSk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBzZXJ2aWNlcy5tYXAoc2VydmljZSA9PiAoeyBuYW1lLCBzZXJ2aWNlLCB2YWx1ZTogZmlsdGVyVmFsdWUsIGRvbWFpbiB9KSk7XG5cbiAgICAgIHJldHVybiBbLi4uYWxsLCAuLi52YWx1ZXNdO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlQ29udGV4dHNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IHsgY29udGV4dHNPYnNlcnZlciB9ID0gdGhpcy5maWx0ZXJTZXJ2aWNlO1xuICAgIGNvbnRleHRzT2JzZXJ2ZXIucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY29udGV4dHM6IENvbnRleHRbXSkgPT4gKHRoaXMuY29udGV4dHMgPSBjb250ZXh0cykpO1xuICB9XG5cbiAgZXJyb3JTdGF0ZUFjdGlvbigpIHtcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UudHJ5QWdhaW4odGhpcy5jb250ZXh0cyk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUZpbHRlcnNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IHsgZmlsdGVyc09ic2VydmVyIH0gPSB0aGlzLmZpbHRlclNlcnZpY2U7XG5cbiAgICBmaWx0ZXJzT2JzZXJ2ZXJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgZmlsdGVycywgYXBwbHlGaWx0ZXIsIGVycm9yLCBtZXNzYWdlIH0pID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck91dHB1dC5lbWl0KGVycm9yKTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLmVycm9yU3RhdGUgPSBtZXNzYWdlO1xuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVGb3JtKGZpbHRlcnMsIGFwcGx5RmlsdGVyKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybShmaWx0ZXJzOiBhbnksIGFwcGx5RmlsdGVyOiBhbnkpIHtcbiAgICB0aGlzLnRhYnMgPSB0aGlzLmNyZWF0ZVRhYnMoZmlsdGVycyk7XG4gICAgdGhpcy5jb3VudGVyVXBkYXRlKCk7XG4gICAgdGhpcy5zZXREZXBlbmRlbmNpZXModGhpcy5mb3JtRmlsdGVycyk7XG4gICAgdGhpcy5jcmVhdGVDaGlsZEFycmF5KCk7XG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCAmJiBhcHBseUZpbHRlcikge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlcGVuZGVuY2llcyhmaWx0ZXJzOiBGb3JtRmlsdGVyW10pIHtcbiAgICAgIGNvbnN0IGZpbHRlcnNNYXA6IFJlY29yZDxzdHJpbmcsIEZvcm1GaWx0ZXI+ID0ge307XG4gICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBnZXRGaWx0ZXJJZChmLmRvbWFpbiwgZi5uYW1lKTtcbiAgICAgICAgICBmaWx0ZXJzTWFwW2lkXSA9IGY7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhmaWx0ZXJzTWFwKTtcblxuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gZnJvbShuYW1lcykucGlwZShcbiAgICAgICAgICBtYXAoa2V5ID0+IGZpbHRlcnNNYXBba2V5XSksXG4gICAgICAgICAgcnhGaWx0ZXIoKHsgZGVwZW5kc09uIH0pID0+IGRlcGVuZHNPbiAmJiBkZXBlbmRzT24ubGVuZ3RoID4gMCksXG4gICAgICAgICAgdGFwKCh7IGRlcGVuZHNPbiwgZG9tYWluLCBmaWx0ZXJDb250cm9sIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW52YWxpZEZpbHRlcnMgPSBkZXBlbmRzT25cbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZGVwID0+IGRlcC5yZXF1aXJlZClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZGVwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgZGVwLmZpbHRlck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1GaWx0ZXIgPSBmaWx0ZXJzTWFwW2lkXTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9ybUZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCB0eXBlIH0gPSBmb3JtRmlsdGVyO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29tcGFyYXRvciB9ID0gZGVwO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJhdG9yICYmIGlzVmFsaWRPcGVyYXRvcihjb21wYXJhdG9yLm9wZXJhdG9yKSAmJiBpc1N1cHBvcnRlZFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHBhcnNlRmlsdGVyVmFsdWUodmFsdWUsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNvbXBhcmUoY29tcGFyYXRvci5vcGVyYXRvciwgY29tcGFyYXRvci52YWx1ZSwgZmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXAucmVxdWlyZWQgPyAhZm9ybUZpbHRlci52YWx1ZSA6IGZvcm1GaWx0ZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoaW52YWxpZEZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKHsgZG9tYWluLCBkZXBlbmRzT24sIGZpbHRlckNvbnRyb2wgfSkgPT4gKHsgZG9tYWluLCBkZXBlbmRzT24sIGZpbHRlckNvbnRyb2wgfSkpXG4gICAgICApO1xuXG4gICAgICBkZXBlbmRlbmNpZXMuc3Vic2NyaWJlKCh7IGRlcGVuZHNPbiwgZG9tYWluLCBmaWx0ZXJDb250cm9sIH0pID0+XG4gICAgICAgICAgZnJvbShkZXBlbmRzT24pXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgcnhGaWx0ZXIoZGVwID0+IGRlcC5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICBtYXAoKHsgZmlsdGVyTmFtZSB9KSA9PiBnZXRGaWx0ZXJJZChkb21haW4sIGZpbHRlck5hbWUpKSxcbiAgICAgICAgICAgICAgICAgIG1hcChmaWx0ZXJJZCA9PiBmaWx0ZXJzTWFwW2ZpbHRlcklkXSksXG4gICAgICAgICAgICAgICAgICBtZXJnZU1hcChmb3JtRmlsdGVyID0+IGZyb20oZm9ybUZpbHRlci52YWx1ZUNoYW5nZXMgfHwgW10pKSxcbiAgICAgICAgICAgICAgICAgIG1hcCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmF0aW9uID0gZGVwZW5kc09uLmV2ZXJ5KGRlcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcklkID0gZ2V0RmlsdGVySWQoZG9tYWluLCBkZXAuZmlsdGVyTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV0udHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY29tcGFyYXRvciB9ID0gZGVwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3IgJiYgaXNWYWxpZE9wZXJhdG9yKGNvbXBhcmF0b3Iub3BlcmF0b3IpICYmIGlzU3VwcG9ydGVkVHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGaWx0ZXJWYWx1ZSh2YWwsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlKGNvbXBhcmF0b3Iub3BlcmF0b3IsIGNvbXBhcmF0b3IudmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5Jc0VtcHR5KHZhbCkgJiYgY29tcGFyYXRpb24gPyAnZW5hYmxlJyA6ICdkaXNhYmxlJztcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShzdGF0dXMgPT4gZmlsdGVyQ29udHJvbFtzdGF0dXNdKCkpXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRHZW5lcmFsRmllbGQoZmlsdGVyOiBGaWx0ZXIpIHtcbiAgICBjb25zdCB7IG5hbWUsIGRvbWFpbiwgdHlwZSB9ID0gZmlsdGVyO1xuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gZ2V0RmlsdGVySWQoZG9tYWluLCBuYW1lKTtcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSBjcmVhdGVGb3JtQ29udHJvbChmaWx0ZXIpO1xuXG4gICAgZmllbGRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgbWFwKHYgPT4gcGFyc2VGaWx0ZXJWYWx1ZSh2LCB0eXBlKSksXG4gICAgICAgIHRhcCh2YWx1ZSA9PiAodGhpcy5mb3JtRmlsdGVyc1tjb250cm9sTmFtZSBhcyBhbnldLnZhbHVlID0gdmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWwgPT5cbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2godGFiID0+IHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGFiLmZvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICAgICAgaWYgKGNvbnRyb2wgJiYgdGFiLmRvbWFpbiA9PT0gZG9tYWluKSB7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB7IC4uLmZpbHRlciwgLi4ueyBuYW1lOiBjb250cm9sTmFtZSB9IH07XG4gICAgY29uc3QgbmV3RmllbGQgPSB0aGlzLmNyZWF0ZUZpZWxkKG5ld0ZpbHRlcik7XG4gICAgdGhpcy5nZW5lcmFsLmZvcm0uYWRkQ29udHJvbChjb250cm9sTmFtZSwgZmllbGRDb250cm9sKTtcbiAgICB0aGlzLmdlbmVyYWwuYWRkRmllbGQobmV3RmllbGQpO1xuICB9XG5cbiAgLypcbiAgICogVmVyaWZpY2Egb3MgY29udGV4dG9zIGRlIGNhZGEgZmlsdHJvLCBjYXNvIHRvZG9zIG9zIGNvbnRleHRvcyBmb3JhbSBpbmZvcm1hZG9zOlxuICAgKiBAcmV0dXJuIHRydWVcbiAgICogQ2FzbyBuw6NvIHRlbmhhIG5lbmh1bSBjb250ZXh0bywgY29uc2lkZXJhLXNlIHBvciBwYWRyw6NvIHF1ZSDDqSB0b2RvczpcbiAgICogQHJldHVybiB0cnVlXG4gICAqL1xuICBwcml2YXRlIGNvbnRhaW5zQWxsQ29udGV4dHMobXlDb250ZXh0czogc3RyaW5nW10pIHtcbiAgICBpZiAoIW15Q29udGV4dHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWxsQ29udGV4dHMgPSB0aGlzLmNvbnRleHRzLm1hcChkYXRhID0+IGRhdGEuY29udGV4dElkKTtcbiAgICByZXR1cm4gZXF1YWxzKG15Q29udGV4dHMuc29ydCgpLCBhbGxDb250ZXh0cy5zb3J0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEB0b2RvIFJlZmF0b3Jhci4gTyBtw6l0b2RvIHBvc3N1aSBtdWl0YXMgcmVzcG9uc2FiaWxpZGFkZXNcbiAgICpcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlVGFicyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHJldHVybiBmaWx0ZXJzLnJlZHVjZSgodGFicywgZmlsdGVyKSA9PiB7XG4gICAgICBjb25zdCB7IGRvbWFpbiwgc2VydmljZXMsIG5hbWUsIHR5cGUsIHNjb3BlLCBjb250ZXh0cywgZGVwZW5kc09uLCB2YWx1ZSwgc2VhcmNoLCBkZWZhdWx0VmFsdWUgfSA9IGZpbHRlcjtcbiAgICAgIGNvbnN0IGlzTm90TXVsdGlwbGUgPSBzZWFyY2ggJiYgZ2V0U2VhcmNoVHlwZShzZWFyY2gpLm91dHB1dC5tYXhTZWxlY3RlZEl0ZW1zID09PSAxO1xuICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmNyZWF0ZUZpZWxkKGZpbHRlcik7XG4gICAgICBjb25zdCBmaWx0ZXJJZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgbmFtZSk7XG4gICAgICBjb25zdCBmaWx0ZXJDb25maWcgPSB7XG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgY29udGV4dHMsXG4gICAgICAgIHNlcnZpY2VzLFxuICAgICAgICBuYW1lLFxuICAgICAgICBkZXBlbmRzT24sXG4gICAgICAgIHZhbHVlOiBmcm9tSnNvbih2YWx1ZSwgdHlwZSwgaXNOb3RNdWx0aXBsZSksXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlzTXVsdGlwbGU6ICFpc05vdE11bHRpcGxlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZyb21Kc29uKGRlZmF1bHRWYWx1ZSwgdHlwZSwgaXNOb3RNdWx0aXBsZSlcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV0gPSBuZXcgRm9ybUZpbHRlcihmaWx0ZXJDb25maWcpO1xuICAgICAgY29uc3QgZm9ybUZpbHRlciA9IHRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XTtcbiAgICAgIGlmIChzY29wZSA9PT0gU2NvcGUuRE9NQUlOICYmIHRoaXMuY29udGFpbnNBbGxDb250ZXh0cyhjb250ZXh0cykpIHtcbiAgICAgICAgdGhpcy5hZGRHZW5lcmFsRmllbGQoZmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dHMuZm9yRWFjaChjb250ZXh0SWQgPT4ge1xuICAgICAgICBpZiAoKGNvbnRleHRJZCA9PT0gdGhpcy5jb250ZXh0SWQpIHx8ICh0aGlzLmNvbnRleHRJZCA9PT0gJycpKSB7XG4gICAgICAgICAgY29uc3QgdGFiSWQgPSBnZXRUYWJJZChkb21haW4sIGNvbnRleHRJZCk7XG4gICAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woZmlsdGVyKTtcblxuICAgICAgICAgIGlmICghdGFicy5oYXModGFiSWQpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvbnRleHRMYWJlbCB9ID0gdGhpcy5jb250ZXh0cy5maW5kKGNvbnRleHQgPT4gY29udGV4dC5jb250ZXh0SWQgPT09IGNvbnRleHRJZCk7XG4gICAgICAgICAgICBjb25zdCB0YWIgPSBuZXcgQ29udGV4dFRhYih7IGRvbWFpbiwgbmFtZTogY29udGV4dExhYmVsIH0pO1xuICAgICAgICAgICAgdGFicy5zZXQodGFiSWQsIHRhYik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHRoaXMudXBkYXRlRmlsdGVyVmFsdWUodGFiSWQsIG5hbWUsIHZhbCwgZG9tYWluLCB0eXBlKSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0VGFiID0gdGFicy5nZXQodGFiSWQpO1xuXG5cbiAgICAgICAgICBjb250ZXh0VGFiLmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgICBjb250ZXh0VGFiLmZvcm0uYWRkQ29udHJvbChmaWx0ZXIubmFtZSwgZmllbGRDb250cm9sKTtcblxuICAgICAgICAgIGlmICghZm9ybUZpbHRlci5maWx0ZXJDb250cm9sKSB7XG4gICAgICAgICAgICBmb3JtRmlsdGVyLmZpbHRlckNvbnRyb2wgPSBmaWVsZENvbnRyb2w7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuXG4gICAgICByZXR1cm4gdGFicztcbiAgICB9LCBuZXcgTWFwPHN0cmluZywgQ29udGV4dFRhYj4oKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbHRlclZhbHVlKHRhYklkOiBzdHJpbmcsIGZpbHRlck5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZG9tYWluOiBzdHJpbmcsIHR5cGU6IEZpbHRlclR5cGUpIHtcbiAgICBjb25zdCBjb250cm9sT3B0cyA9IHsgZW1pdEV2ZW50OiBmYWxzZSB9O1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBwYXJzZUZpbHRlclZhbHVlKHZhbHVlLCB0eXBlKTtcbiAgICBjb25zdCBmaWx0ZXJJZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgZmlsdGVyTmFtZSk7XG4gICAgY29uc3QgZ2VuZXJhbEZpZWxkQ29udHJvbCA9IHRoaXMuZ2VuZXJhbC5mb3JtLmNvbnRyb2xzW2ZpbHRlcklkXTtcblxuICAgIHRoaXMudGFicy5mb3JFYWNoKCh7IGZvcm0gfSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1tmaWx0ZXJOYW1lXTtcblxuICAgICAgaWYgKHRhYklkICE9PSBrZXkgJiYgY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlLCBjb250cm9sT3B0cyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBjaGlsZHMgfSA9IHRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XTtcbiAgICBjaGlsZHMgJiYgY2hpbGRzLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHRoaXMuY2xlYW5GaWVsZEFuZFNldERlZmF1bHRWYWx1ZShjaGlsZC5maWx0ZXIua2V5KSk7XG4gICAgZ2VuZXJhbEZpZWxkQ29udHJvbCAmJiBnZW5lcmFsRmllbGRDb250cm9sLnNldFZhbHVlKHZhbHVlLCBjb250cm9sT3B0cyk7XG4gICAgdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldLnZhbHVlID0gZmllbGRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5GaWVsZEFuZFNldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHsgaXNNdWx0aXBsZSwgZGVmYXVsdFZhbHVlLCBmaWx0ZXJDb250cm9sLCB0eXBlIH0gPSB0aGlzLmZvcm1GaWx0ZXJzW2tleSBhcyBhbnldO1xuICAgIGNvbnN0IGZpbmFsVmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUsIGlzTXVsdGlwbGUpO1xuXG4gICAgaWYgKGZpbHRlckNvbnRyb2wpIHtcbiAgICAgIGlmICh0eXBlID09PSAnREFURScgfHwgKHR5cGUgPT09ICdTRUFSQ0gnICYmIGlzTXVsdGlwbGUpKSB7XG4gICAgICAgIGZpbHRlckNvbnRyb2wuc2V0VmFsdWUoZmluYWxWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gJ0lOVEVHRVInIHx8IHR5cGUgPT09ICdET1VCTEUnIHx8IHR5cGUgPT09ICdNT05FWScpIHtcbiAgICAgICAgZmluYWxWYWx1ZSA9PT0gJycgPyBmaWx0ZXJDb250cm9sLnNldFZhbHVlKG51bGwpIDogZmlsdGVyQ29udHJvbC5zZXRWYWx1ZShmaW5hbFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlckNvbnRyb2wuc2V0VmFsdWUoZmluYWxWYWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoaWxkQXJyYXkoKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybUZpbHRlcnMpO1xuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgeyBkZXBlbmRzT24sIGRvbWFpbiB9ID0gdGhpcy5mb3JtRmlsdGVyc1trZXkgYXMgYW55XTtcbiAgICAgIGRlcGVuZHNPbi5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcklkID0gZ2V0RmlsdGVySWQoZG9tYWluLCBmaWVsZC5maWx0ZXJOYW1lKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUZpbHRlcnNbZmlsdGVySWQgYXMgYW55XSkge1xuICAgICAgICAgIGlmICghdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldLmNoaWxkcykge1xuICAgICAgICAgICAgdGhpcy5mb3JtRmlsdGVyc1tmaWx0ZXJJZCBhcyBhbnldLmNoaWxkcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAodGhpcy5mb3JtRmlsdGVycyBhcyBhbnkpW2ZpbHRlcklkXS5jaGlsZHMucHVzaCh7IGZpbHRlcjogeyBrZXksIHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZCB9IH0pO1xuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGaWVsZChmaWx0ZXI6IEZpbHRlcik6IER5bmFtaWNUeXBlIHtcbiAgICBjb25zdCB7IG5hbWUsIGxhYmVsLCBlbnVtSXRlbXMsIHR5cGUsIG1hc2sgfSA9IGZpbHRlcjtcbiAgICBjb25zdCB0cmFuc2xhdGVkRW51bUl0ZW1zID1cbiAgICAgIGVudW1JdGVtcyAmJiBlbnVtSXRlbXMubWFwKChpdGVtOiBFbnVtSXRlbSkgPT4gKHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaXRlbS5sYWJlbCksIHZhbHVlOiBpdGVtLnZhbHVlIH0pKTtcbiAgICBjb25zdCBmaWVsZDogUGFydGlhbDxGaWVsZENvbmZpZz4gJiB7IG5hbWU6IHN0cmluZyB9ID0geyBuYW1lLCBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChsYWJlbCksIHBsYWNlaG9sZGVyOiAnJyB9O1xuXG4gICAgY29uc3QgY3JlYXRvcnM6IHsgW2tleSBpbiBGaWx0ZXJUeXBlXTogKCkgPT4gRHluYW1pY1R5cGUgfSA9IHtcbiAgICAgIFtGaWx0ZXJUeXBlLlNUUklOR106ICgpID0+ICh7IC4uLmZpZWxkLCBtYXNrOiBtYXNrID8gKCkgPT4gbWFzayA6IG51bGwsIHR5cGU6ICdzdHJpbmcnIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuTU9ORVldOiAoKSA9PiAoeyAuLi5maWVsZCwgdHlwZTogJ21vbmV5JywgfSksXG4gICAgICBbRmlsdGVyVHlwZS5CT09MRUFOXTogKCkgPT4gdGhpcy5jcmVhdGVSYWRpb0J1dHRvbih7IC4uLmZpZWxkIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuREFURV06ICgpID0+IHRoaXMuY3JlYXRlQ2FsZW5kYXIoeyAuLi5maWVsZCwgdHlwZTogJ2RhdGUnIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuREFURVRJTUVdOiAoKSA9PiB0aGlzLmNyZWF0ZUNhbGVuZGFyKHsgLi4uZmllbGQsIHR5cGU6ICdkYXRlVGltZScgfSksXG4gICAgICBbRmlsdGVyVHlwZS5USU1FXTogKCkgPT4gdGhpcy5jcmVhdGVDYWxlbmRhcih7IC4uLmZpZWxkLCB0eXBlOiAndGltZSd9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLkVOVU1FUkFUSU9OXTogKCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICB0eXBlOiAnZW51bScsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNlbGVjdCcpLFxuICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXG4gICAgICAgICAgb3B0aW9uczogWy4uLnRyYW5zbGF0ZWRFbnVtSXRlbXNdXG4gICAgICAgIH0pLFxuICAgICAgW0ZpbHRlclR5cGUuSU5URUdFUl06ICgpID0+ICh7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLm9wdGlvbnNJbnRlZ2VyKCksXG4gICAgICAgIG1hc2s6IG1hc2sgPyAoKSA9PiBtYXNrIDogbnVsbCxcbiAgICAgICAgdHlwZTogJ2ludGVnZXInXG4gICAgICB9KSxcbiAgICAgIFtGaWx0ZXJUeXBlLkRPVUJMRV06ICgpID0+ICh7Li4uZmllbGQsIHR5cGU6ICdkb3VibGUnfSksXG4gICAgICBbRmlsdGVyVHlwZS5TRUFSQ0hdOiAoKSA9PiB0aGlzLmNyZWF0ZUF1dG9jb21wbGV0ZUZpZWxkKGZpZWxkLCBmaWx0ZXIpXG4gICAgfTtcblxuICAgIHJldHVybiBjcmVhdG9yc1t0eXBlXSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSYWRpb0J1dHRvbihmaWVsZDogUGFydGlhbDxGaWVsZENvbmZpZz4pOiBSYWRpb0J1dHRvbkZpZWxkQ29uZmlnIHtcbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS55ZXNgKSwgdmFsdWU6IHRydWUgfSxcbiAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0ubm9gKSwgdmFsdWU6IGZhbHNlIH1cbiAgICBdIGFzIFJhdGlvbkJ1dHRvbk9wdGlvbltdO1xuICAgIHJldHVybiB7IC4uLmZpZWxkLCB0eXBlOiAncmFkaW9CdXR0b24nLCBuYW1lOiAnJywgb3B0aW9uc31cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FsZW5kYXIoY29uZmlnOiBQYXJ0aWFsPENhbGVuZGFyRmllbGRDb25maWc+KSB7XG4gICAgY29uc3QgY2FsZW5kYXI6IENhbGVuZGFyRmllbGRDb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICB0eXBlOiBjb25maWcudHlwZSxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lID8/ICcnLFxuICAgIH1cblxuICAgIGNhbGVuZGFyLmFwcGVuZFRvID0gJ2JvZHknO1xuICAgIGNhbGVuZGFyLmNhbGVuZGFyTG9jYWxlT3B0aW9ucyA9IHRoaXMuY2FsZW5kYXJPcHRpb25zU2VydmljZS5nZXRPcHRpb25zKCk7XG4gICAgcmV0dXJuIGNhbGVuZGFyO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBdXRvY29tcGxldGVGaWVsZChmaWVsZDogUGFydGlhbDxGaWVsZENvbmZpZz4sIHsgZGVwZW5kc09uLCBzZWFyY2gsIGRvbWFpbiwgbmFtZSB9OiBGaWx0ZXIpOiBFeHBhbmRlZER5bmFtaWNUeXBlIHtcbiAgICBjb25zdCBzdWdnZXN0aW9uc09ic2VydmFibGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgY29uc3QgeyBxdWVyeVBhcmFtIH0gPSBnZXRTZWFyY2hUeXBlKHNlYXJjaCkuaW5wdXQ7XG4gICAgY29uc3QgeyBkaXNwbGF5RmllbGRzLCBrZXlGaWVsZHMsIHJlc3VsdERhdGFKc29uUGF0aCwgZGlzcGxheUZpZWxkQ29uY2F0VG9rZW4sIG1heFNlbGVjdGVkSXRlbXMgfSA9IGdldFNlYXJjaFR5cGUoc2VhcmNoKS5vdXRwdXQ7XG4gICAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZChkb21haW4sIG5hbWUpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb25zRXJyb3IgPSAobWVzc2FnZUVycm9yPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlRGV0YWlsID0gbWVzc2FnZUVycm9yID8gbWVzc2FnZUVycm9yIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5maW5kX3N1Z2dlc3Rpb25zX2Vycm9yYCwgeyBhY3RpdmVGaWx0ZXJzOiB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSB9KVxuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgIGR1cmF0aW9uOiBUT0FTVF9MSUZFLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlRGV0YWlsXG4gICAgICB9O1xuICAgICAgdGhpcy5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uU2VhcmNoID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IFtxdWVyeVBhcmFtXTogdmFsIH07XG4gICAgICBkZXBlbmRzT24gJiYgT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRoaXMuZ2V0RGVwZW5kZW5jaWVzVmFsdWVzKGRlcGVuZHNPbiwgZG9tYWluKSk7XG5cbiAgICAgIGNvbnN0IHNlYXJjaFVybCA9XG4gICAgICAgIHNlYXJjaCAmJiBzZWFyY2gudHlwZSA9PT0gJ0VOVElUWSdcbiAgICAgICAgICA/IHRoaXMuZ2V0RW50aXR5U2VhcmNoVXJsKHNlYXJjaC5lbnRpdHlTZWFyY2guaW5wdXQsIHZhbCwgZGVwZW5kc09uKVxuICAgICAgICAgIDogZ2V0U2VhcmNoVHlwZShzZWFyY2gpLmlucHV0LnVybDtcblxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlXG4gICAgICAgIC5zZWFyY2hGaWVsZFN1Z2dlc3Rpb25zKHNlYXJjaFVybCwgcGFyYW1zLCBzZWFyY2gudHlwZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKHJlc3BvbnNlID0+IGpzb25QYXRoKHJlc3BvbnNlLCByZXN1bHREYXRhSnNvblBhdGgpKSxcbiAgICAgICAgICBtYXAoKHN1Z2dlc3Rpb25zOiBhbnlbXSkgPT4gdGhpcy5hZGRTdWdnZXN0aW9uRmllbGRzKHN1Z2dlc3Rpb25zLCBkaXNwbGF5RmllbGRzLCBrZXlGaWVsZHMsIGRpc3BsYXlGaWVsZENvbmNhdFRva2VuLCBmaWx0ZXJJZCkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIHN1Z2dlc3Rpb25zT2JzZXJ2YWJsZS5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIGxldCBtZXNzYWdlRXJyb3IgPSB1bmRlZmluZWRcbiAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IuZXJyb3IubWVzc2FnZSkgbWVzc2FnZUVycm9yID0gZXJyb3IuZXJyb3IubWVzc2FnZVxuICAgICAgICAgIHN1Z2dlc3Rpb25zRXJyb3IobWVzc2FnZUVycm9yKVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZpZWxkLFxuICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgIHR5cGU6ICdhdXRvY29tcGxldGUnLFxuICAgICAgb25TZWFyY2gsXG4gICAgICBhcHBlbmRUbzogJ2JvZHknLFxuICAgICAgc3VnZ2VzdGlvbnNPYnNlcnZhYmxlLFxuICAgICAgZGlzcGxheUZpZWxkOiBzZWFyY2hEaXNwbGF5TmFtZSxcbiAgICAgIGRhdGFLZXk6IHNlYXJjaEtleU5hbWUsXG4gICAgICBtdWx0aXBsZTogbWF4U2VsZWN0ZWRJdGVtcyA+IDEsXG4gICAgICBzaXplOiB7IGxnOiAxMiwgbWQ6IDEyLCB4bDogMTIgfSxcbiAgICAgIGVtcHR5TWVzc2FnZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5zZWFyY2hfZW1wdHlfbWVzc2FnZWApLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNhZmVSZXBsYWNlQ29tbWFzKGlucHV0OiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICBsZXQgcGFyZW5Db3VudCA9IDA7XG4gICAgbGV0IGp1c3RBZGRlZE9wZXJhdG9yID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgaW5wdXQpIHtcbiAgICAgIGxldCBjaGFyVG9BZGQgPSBjaGFyO1xuXG4gICAgICAoeyBwYXJlbkNvdW50LCBqdXN0QWRkZWRPcGVyYXRvciB9ID0gdGhpcy51cGRhdGVQYXJlbkFuZE9wZXJhdG9yU3RhdGUoY2hhciwgcGFyZW5Db3VudCwganVzdEFkZGVkT3BlcmF0b3IpKTtcbiAgICAgICh7IGNoYXJUb0FkZCwganVzdEFkZGVkT3BlcmF0b3IgfSA9IHRoaXMucHJvY2Vzc0NvbW1hU3Vic3RpdHV0aW9uKGNoYXIsIHBhcmVuQ291bnQsIGp1c3RBZGRlZE9wZXJhdG9yLCBvcGVyYXRvciwgY2hhclRvQWRkKSk7XG5cbiAgICAgIGp1c3RBZGRlZE9wZXJhdG9yID0gdGhpcy51cGRhdGVOb25Db21tYU9wZXJhdG9yU3RhdGUoY2hhciwgY2hhclRvQWRkLCBqdXN0QWRkZWRPcGVyYXRvcik7XG4gICAgICBvdXRwdXQgKz0gY2hhclRvQWRkO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhcmVuQW5kT3BlcmF0b3JTdGF0ZShjaGFyOiBzdHJpbmcsIHBhcmVuQ291bnQ6IG51bWJlciwganVzdEFkZGVkT3BlcmF0b3I6IGJvb2xlYW4pOiB7IHBhcmVuQ291bnQ6IG51bWJlciwganVzdEFkZGVkT3BlcmF0b3I6IGJvb2xlYW4gfSB7XG4gICAgaWYgKGNoYXIgPT09ICcoJykge1xuICAgICAgcGFyZW5Db3VudCsrO1xuICAgICAganVzdEFkZGVkT3BlcmF0b3IgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICcpJykge1xuICAgICAgcGFyZW5Db3VudC0tO1xuICAgICAganVzdEFkZGVkT3BlcmF0b3IgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmVuaHVtYSBhw6fDo28gbmVjZXNzw6FyaWEgcGFyYSBvdXRyb3MgY2FyYWN0ZXJlc1xuICAgIH1cblxuICAgIHJldHVybiB7IHBhcmVuQ291bnQsIGp1c3RBZGRlZE9wZXJhdG9yIH07XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDb21tYVN1YnN0aXR1dGlvbihjaGFyOiBzdHJpbmcsIHBhcmVuQ291bnQ6IG51bWJlciwganVzdEFkZGVkT3BlcmF0b3I6IGJvb2xlYW4sIG9wZXJhdG9yOiBzdHJpbmcsIGNoYXJUb0FkZDogc3RyaW5nKTogeyBjaGFyVG9BZGQ6IHN0cmluZywganVzdEFkZGVkT3BlcmF0b3I6IGJvb2xlYW4gfSB7XG4gICAgaWYgKGNoYXIgPT09ICcsJykge1xuICAgICAgaWYgKHBhcmVuQ291bnQgPT09IDApIHtcbiAgICAgICAgaWYgKCFqdXN0QWRkZWRPcGVyYXRvcikge1xuICAgICAgICAgIGNoYXJUb0FkZCA9IGAgJHtvcGVyYXRvcn0gYDtcbiAgICAgICAgICBqdXN0QWRkZWRPcGVyYXRvciA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hhclRvQWRkID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGp1c3RBZGRlZE9wZXJhdG9yID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNoYXJUb0FkZCwganVzdEFkZGVkT3BlcmF0b3IgfTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTm9uQ29tbWFPcGVyYXRvclN0YXRlKGNoYXI6IHN0cmluZywgY2hhclRvQWRkOiBzdHJpbmcsIGp1c3RBZGRlZE9wZXJhdG9yOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKGNoYXIgIT09ICcsJykge1xuICAgICAgaWYgKGNoYXJUb0FkZCAhPT0gY2hhcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFyICE9PSAnKCcgJiYgY2hhciAhPT0gJyknKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGp1c3RBZGRlZE9wZXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbnRpdHlTZWFyY2hVcmwoc2VhcmNoOiBFbnRpdHlTZWFyY2hJbnB1dCwgdmFsdWU6IHN0cmluZywgZGVwZW5kc09uOiBEZXBlbmRzT25bXSkge1xuICAgIGNvbnN0IHsgYXR0cmlidXRlcywgZG9tYWluTmFtZSwgZW50aXR5TmFtZSwgc2VydmljZU5hbWUgfSA9IHNlYXJjaDtcbiAgICBjb25zdCB1cmwgPSBgJHtkb21haW5OYW1lfS8ke3NlcnZpY2VOYW1lfS9lbnRpdGllcy8ke2VudGl0eU5hbWV9Lz9maWx0ZXI9YDtcblxuICAgIGNvbnN0IGZpbHRlcnMgPSBhdHRyaWJ1dGVzLm1hcChhdHRyID0+XG4gICAgICBmaWx0ZXJPcGVyYXRvcnNbYXR0ci5jb21wYXJhdG9yIGFzIGtleW9mIHR5cGVvZiBmaWx0ZXJPcGVyYXRvcnNdKGF0dHIubmFtZSwgdmFsdWUpXG4gICAgKTtcblxuICAgIGRlcGVuZHNPbiAmJlxuICAgICAgZGVwZW5kc09uLmZvckVhY2gob2JqID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZChkb21haW5OYW1lLCBvYmouZmlsdGVyTmFtZSk7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV0udmFsdWVbc2VhcmNoS2V5TmFtZV07XG4gICAgICAgIGZpbHRlcnMucHVzaChgJHtvYmouZW50aXR5QXR0cmlidXRlfSBlcSAnJHtmaWVsZFZhbHVlfSdgKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZmlsdGVyc1N0cmluZyA9IGZpbHRlcnMuam9pbignLCcpO1xuICAgIGNvbnN0IGZpbmFsRmlsdGVyID0gdGhpcy5zYWZlUmVwbGFjZUNvbW1hcyhmaWx0ZXJzU3RyaW5nLCBzZWFyY2gub3BlcmF0b3IpO1xuXG4gICAgcmV0dXJuIHVybC5jb25jYXQoZmluYWxGaWx0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTdWdnZXN0aW9uRmllbGRzKHN1Z2dlc3Rpb25zOiBhbnlbXSwgZGlzcGxheUZpZWxkczogc3RyaW5nW10sIGtleUZpZWxkczogc3RyaW5nW10sIHNlcGFyYXRvcjogc3RyaW5nLCBmaWx0ZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWRkVmFsdWUgPSAoYWNjOiBzdHJpbmcsIHZhbHVlOiBhbnksIHRva2VuOiBzdHJpbmcpID0+IChhY2MgPyBgJHthY2N9JHt0b2tlbn0ke3ZhbHVlfWAgOiB2YWx1ZSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBzdWdnZXN0aW9ucy5tYXAoc3VnZ2VzdGlvbiA9PiAoe1xuICAgICAgLi4uc3VnZ2VzdGlvbixcbiAgICAgIFtzZWFyY2hEaXNwbGF5TmFtZV06IGRpc3BsYXlGaWVsZHMucmVkdWNlKCh2YWx1ZSwgZGlzcGxheSkgPT4ge1xuICAgICAgICByZXR1cm4gYWRkVmFsdWUodmFsdWUsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VnZ2VzdGlvbltkaXNwbGF5XSksIHNlcGFyYXRvcik7XG4gICAgICB9LCAnJyksXG4gICAgICBbc2VhcmNoS2V5TmFtZV06IGtleUZpZWxkcy5yZWR1Y2UoKHZhbHVlLCBrZXkpID0+IGFkZFZhbHVlKHZhbHVlLCBzdWdnZXN0aW9uW2tleV0sICcsICcpLCAnJylcbiAgICB9KSk7XG4gICAgKHRoaXMuZm9ybUZpbHRlcnMgYXMgYW55KVtmaWx0ZXJJZF0uaW52YWxpZFZhbHVlID0gcmVzdWx0Lmxlbmd0aCA9PT0gMDtcblxuXG4gICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLmZvcm1GaWx0ZXJzW2ZpbHRlcklkIGFzIGFueV07XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB2YWx1ZS5maW5kSW5kZXgoKGk6IGFueSkgPT4gaS4kJF9fa2V5VmFsdWVfXyA9PT0gaXRlbS4kJF9fa2V5VmFsdWVfXyk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlcGVuZGVuY2llc1ZhbHVlcyhkZXBlbmRlbmNpZXM6IERlcGVuZHNPbltdLCBkb21haW46IHN0cmluZykge1xuICAgIHJldHVybiBkZXBlbmRlbmNpZXMucmVkdWNlKChwYXJhbXMsIHsgZmlsdGVyTmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJZCA9IGdldEZpbHRlcklkKGRvbWFpbiwgZmlsdGVyTmFtZSk7XG4gICAgICBpZiAoKHRoaXMuZm9ybUZpbHRlcnMgYXMgYW55KVtmaWx0ZXJJZF0pIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgdHlwZSB9ID0gKHRoaXMuZm9ybUZpbHRlcnMgYXMgYW55KVtmaWx0ZXJJZF07XG4gICAgICAgIGlmICh0eXBlID09PSAnRU5VTUVSQVRJT04nKSB7XG4gICAgICAgICAgcGFyYW1zW2ZpbHRlck5hbWVdID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBwYXJhbXNbZmlsdGVyTmFtZV0gPSB2YWx1ZS5tYXAoYXJyID0+IGFycltzZWFyY2hLZXlOYW1lXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmFtc1tmaWx0ZXJOYW1lXSA9IHZhbHVlID8gdmFsdWVbc2VhcmNoS2V5TmFtZV0gOiBbJyddO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLklzRW1wdHkocGFyYW1zW2ZpbHRlck5hbWVdKSAmJiBkZWxldGUgcGFyYW1zW2ZpbHRlck5hbWVdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbiAgfVxuXG5cbiAgLypcbiAgICogVmVyaWZpY2Egc2UgbyB2YWxvciBpbmZvcm1hZG8gw6kgZmFsc28sIGVtIGFycmF5cywgw6kgdmVyaWZpY2FkbyBjYWRhIGl0ZW1cbiAgICovXG4gIHByaXZhdGUgSXNFbXB0eSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuZXZlcnkoZGF0YSA9PiAhZGF0YSkgOiAhdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGZvcm1hdCB0byBzcGVjaWZ5IGZvciBpbnRlZ2VyIHR5cGUgZmllbGRcbiAgICovXG4gIHByaXZhdGUgb3B0aW9uc0ludGVnZXIoKSB7XG4gICAgcmV0dXJuIHsgY3VycmVuY3lTeW1ib2w6ICcnLCBkZWNpbWFsU2VwYXJhdG9yOiAnJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnJyB9O1xuICB9XG59XG4iLCJAaWYgKGVycm9yKSB7XG4gIDxkaXYgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XG4gICAgPHMtZW1wdHktc3RhdGVcbiAgICAgIGljb25DbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgIFt0aXRsZV09XCJlcnJvclN0YXRlPy5zdGF0dXMgKyAnIC0gJyArIGVycm9yU3RhdGU/LnN0YXR1c1RleHRcIlxuICAgICAgKHByaW1hcnlBY3Rpb24pPVwiZXJyb3JTdGF0ZUFjdGlvbigpXCJcbiAgICAgIFtwcmltYXJ5QWN0aW9uTGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnRyeScpXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZXJyb3Jfc3RhdGUnKVwiXG4gICAgPjwvcy1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgQGlmICh0YWJzICYmIHRhYnMuc2l6ZSA+IDEpIHtcbiAgICA8cC10YWJWaWV3IFsoYWN0aXZlSW5kZXgpXT1cImFjdGl2ZUluZGV4XCI+XG4gICAgICBAaWYgKGdlbmVyYWwuY29uZmlncy5sZW5ndGgpIHtcbiAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCJnZW5lcmFsLm5hbWVcIj5cbiAgICAgICAgICA8cy1keW5hbWljLWZvcm0gW2Vycm9yTWVzc2FnZXNdPVwiZXJyb3JNZXNzYWdlc1wiIFtjb25maWdzXT1cImdlbmVyYWwuY29uZmlnc1wiIFtmb3JtXT1cImdlbmVyYWwuZm9ybVwiIC8+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgIH1cblxuICAgICAgQGZvciAodGFiIG9mIHRhYnMgfCBtYXBWYWx1ZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cInRhYi5sYWJlbFwiPlxuICAgICAgICAgIDxzLWR5bmFtaWMtZm9ybSBbZXJyb3JNZXNzYWdlc109XCJlcnJvck1lc3NhZ2VzXCIgW2NvbmZpZ3NdPVwidGFiLmNvbmZpZ3NcIiBbZm9ybV09XCJ0YWIuZm9ybVwiIC8+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgIH1cbiAgICA8L3AtdGFiVmlldz5cbiAgfVxuXG4gIEBpZiAodGFicyAmJiB0YWJzLnNpemUgPT09IDEpIHtcbiAgICBAZm9yICh0YWIgb2YgdGFicyB8IG1hcFZhbHVlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cy1keW5hbWljLWZvcm0gW2Vycm9yTWVzc2FnZXNdPVwiZXJyb3JNZXNzYWdlc1wiIFtjb25maWdzXT1cInRhYi5jb25maWdzXCIgW2Zvcm1dPVwidGFiLmZvcm1cIiAvPlxuICAgIH1cbiAgfVxufVxuIl19
@@ -68,6 +68,9 @@ export const fallback = {
68
68
  'platform.filter_service.short_saturday': 'Sab',
69
69
  'platform.filter_service.yes': 'Sim',
70
70
  'platform.filter_service.no': 'Não',
71
- 'platform.filter_service.search_empty_message': 'Nenhum resultado encontrado'
71
+ 'platform.filter_service.search_empty_message': 'Nenhum resultado encontrado',
72
+ 'platform.filter_service.active_filters': 'filtros ativos',
73
+ 'platform.filter_service.aria_close_filters': 'Fechar filtros',
74
+ 'platform.filter_service.aria_close_dialog': 'Fechar diálogo de filtros'
72
75
  };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvYWR2YW5jZWQtZmlsdGVyL2xvY2FsZS9mYWxsYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsZ0NBQWdDLEVBQUUsVUFBVTtJQUM1Qyw2QkFBNkIsRUFBRSxrQkFBa0I7SUFDakQsaUNBQWlDLEVBQUUsT0FBTztJQUMxQyw4QkFBOEIsRUFBRSxRQUFRO0lBQ3hDLGdDQUFnQyxFQUFFLFNBQVM7SUFDM0MscUNBQXFDLEVBQ25DLHNJQUFzSTtJQUN4SSwrQ0FBK0MsRUFBRSw4RUFBOEU7SUFDL0gsNkNBQTZDLEVBQzNDLHNGQUFzRjtJQUN4RixpREFBaUQsRUFBRSxpQ0FBaUM7SUFDcEYsK0NBQStDLEVBQUUsZ0NBQWdDO0lBQ2pGLHlDQUF5QyxFQUFFLDRDQUE0QztJQUN2Rix5Q0FBeUMsRUFBRSwrQ0FBK0M7SUFDMUYseUNBQXlDLEVBQUUsNENBQTRDO0lBQ3ZGLGlEQUFpRCxFQUFFLDBDQUEwQztJQUM3RixnREFBZ0QsRUFBRSx3Q0FBd0M7SUFDMUYsZ0RBQWdELEVBQUUsOEJBQThCO0lBQ2hGLGdDQUFnQyxFQUFFLFlBQVk7SUFDOUMsaUNBQWlDLEVBQUUsU0FBUztJQUM1QyxxQ0FBcUMsRUFBRyxVQUFVO0lBQ2xELHFDQUFxQyxFQUFHLElBQUk7SUFDNUMsK0JBQStCLEVBQUUsUUFBUTtJQUN6QywrQkFBK0IsRUFBRyxNQUFNO0lBQ3hDLHNDQUFzQyxFQUFHLFNBQVM7SUFDbEQsdUNBQXVDLEVBQUcsV0FBVztJQUNyRCxvQ0FBb0MsRUFBRyxPQUFPO0lBQzlDLG9DQUFvQyxFQUFHLE9BQU87SUFDOUMsa0NBQWtDLEVBQUcsTUFBTTtJQUMzQyxtQ0FBbUMsRUFBRyxPQUFPO0lBQzdDLG1DQUFtQyxFQUFHLE9BQU87SUFDN0MscUNBQXFDLEVBQUcsUUFBUTtJQUNoRCx3Q0FBd0MsRUFBRyxVQUFVO0lBQ3JELHNDQUFzQyxFQUFHLFNBQVM7SUFDbEQsdUNBQXVDLEVBQUcsVUFBVTtJQUNwRCx1Q0FBdUMsRUFBRyxVQUFVO0lBQ3BELHVDQUF1QyxFQUFHLEtBQUs7SUFDL0Msd0NBQXdDLEVBQUcsS0FBSztJQUNoRCxxQ0FBcUMsRUFBRyxLQUFLO0lBQzdDLHFDQUFxQyxFQUFHLEtBQUs7SUFDN0MsbUNBQW1DLEVBQUcsS0FBSztJQUMzQyxvQ0FBb0MsRUFBRyxLQUFLO0lBQzVDLG9DQUFvQyxFQUFHLEtBQUs7SUFDNUMsc0NBQXNDLEVBQUcsS0FBSztJQUM5Qyx5Q0FBeUMsRUFBRyxLQUFLO0lBQ2pELHVDQUF1QyxFQUFHLEtBQUs7SUFDL0Msd0NBQXdDLEVBQUcsS0FBSztJQUNoRCx3Q0FBd0MsRUFBRyxLQUFLO0lBQ2hELHFDQUFxQyxFQUFFLFNBQVM7SUFDaEQscUNBQXFDLEVBQUUsU0FBUztJQUNoRCxzQ0FBc0MsRUFBRSxPQUFPO0lBQy9DLHdDQUF3QyxFQUFFLFFBQVE7SUFDbEQsdUNBQXVDLEVBQUUsUUFBUTtJQUNqRCxxQ0FBcUMsRUFBRSxPQUFPO0lBQzlDLHVDQUF1QyxFQUFFLFFBQVE7SUFDakQsb0NBQW9DLEVBQUUsR0FBRztJQUN6QyxvQ0FBb0MsRUFBRSxHQUFHO0lBQ3pDLHFDQUFxQyxFQUFFLEdBQUc7SUFDMUMsdUNBQXVDLEVBQUUsR0FBRztJQUM1QyxzQ0FBc0MsRUFBRSxHQUFHO0lBQzNDLG9DQUFvQyxFQUFFLEdBQUc7SUFDekMsc0NBQXNDLEVBQUUsR0FBRztJQUMzQyxzQ0FBc0MsRUFBRSxLQUFLO0lBQzdDLHNDQUFzQyxFQUFFLEtBQUs7SUFDN0MsdUNBQXVDLEVBQUUsS0FBSztJQUM5Qyx5Q0FBeUMsRUFBRSxLQUFLO0lBQ2hELHdDQUF3QyxFQUFFLEtBQUs7SUFDL0Msc0NBQXNDLEVBQUUsS0FBSztJQUM3Qyx3Q0FBd0MsRUFBRSxLQUFLO0lBQy9DLDZCQUE2QixFQUFFLEtBQUs7SUFDcEMsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyw4Q0FBOEMsRUFBRSw2QkFBNkI7Q0FDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmYWxsYmFjayA9IHtcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNhbmNlbCc6ICdDYW5jZWxhcicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS50cnknOiAnVGVudGFyIE5vdmFtZW50ZScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hY3Rpb25zJzogJ0HDp8O1ZXMnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZSc6ICdTYWx2YXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmlsdGVyJzogJ0ZpbHRyYXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZXJyb3Jfc3RhdGUnOlxuICAgICdPIHNlcnZpw6dvIGRlIGZpbHRybyBlc3TDoSBpbmRpc3BvbsOtdmVsIG5vIG1vbWVudG8gZSBhcyBpbmZvcm1hw6fDtWVzIGFwcmVzZW50YWRhcyBuw6NvIHPDo28gYXMgbWFpcyByZWNlbnRlcy4gVGVudGUgbm92YW1lbnRlIG1haXMgdGFyZGUuJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNhdmVkX2ZpbHRlcnNfc3VjY2Vzcyc6ICdGaWx0cm9zIHNhbHZvcyBjb20gc3VjZXNzbyEgQ2xpcXVlIGVtIFwiRmlsdHJhclwiIHBhcmEgdmlzdWFsaXphciBvIHJlc3VsdGFkby4nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZWRfZmlsdGVyc19lcnJvcic6XG4gICAgJ09jb3JyZXUgdW0gZXJybyBhbyB0ZW50YXIgc2FsdmFyIG9zIGZpbHRyb3MuIFZlcmlmaXF1ZSBvcyB2YWxvcmVzIGUgdGVudGUgbm92YW1lbnRlLicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hcHBsaWVkX2ZpbHRlcl9ub2NoYW5nZSc6ICdOw6NvIGhvdXZlIGFsdGVyYcOnw7VlcyBubyBmaWx0cm8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFwcGxpZWRfZmlsdGVyX2NoYW5nZSc6ICdGaWx0cm9zIGFwbGljYWRvcyBjb20gc3VjZXNzbyEnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuaW52YWxpZF9wYXR0ZXJuJzogJ08gdmFsb3IgbsOjbyBhdGVuZGUgYW8gcGFkcsOjbyBlc3BlY2lmaWNhZG8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmVycm9yX21heF92YWx1ZSc6ICdPIHZhbG9yIGV4Y2VkZSBvIHRhbWFuaG8gbcOheGltbyBlc3BlY2lmaWNhZG8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmVycm9yX21pbl92YWx1ZSc6ICdPIHZhbG9yIMOpIG1lbm9yIHF1ZSBvIG1pbsOtbW8gZXNwZWNpZmljYWRvLicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hcHBsaWVkX2ZpbHRlcnNfbWVzc2FnZSc6ICd7e3RvdGFsQWN0aXZlRmlsdGVyc319IGZpbHRyb3MgYXBsaWNhZG9zJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFwcGxpZWRfZmlsdGVyX21lc3NhZ2UnOiAne3t0b3RhbEFjdGl2ZUZpbHRlcnN9fSBmaWx0cm8gYXBsaWNhZG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmluZF9zdWdnZXN0aW9uc19lcnJvcic6ICdFcnJvIGFvIGVuY29udHJhciBzdWdlc3TDtWVzIScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zZWxlY3QnOiAnU2VsZWNpb25hcicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXJzJzogJ0ZpbHRyb3MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZGF0ZV9mb3JtYXQnIDogJ2RkL21tL3l5JyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmhvdXJfZm9ybWF0JyA6ICcyNCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5jbGVhcic6ICdMaW1wYXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UudG9kYXknIDogJ0hvamUnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9qYW51YXJ5JyA6ICdKYW5laXJvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfZmVicnVhcnknIDogJ0ZldmVyZWlybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX21hcmNoJyA6ICdNYXLDp28nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9hcHJpbCcgOiAnQWJyaWwnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9tYXknIDogJ01haW8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9qdW5lJyA6ICdKdW5obycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2p1bHknIDogJ0p1bGhvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfYXVndXN0JyA6ICdBZ29zdG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9zZXB0ZW1iZXInIDogJ1NldGVtYnJvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfb2N0b2JlcicgOiAnT3V0dWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX25vdmVtYmVyJyA6ICdOb3ZlbWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2RlY2VtYmVyJyA6ICdEZXplbWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9qYW51YXJ5JyA6ICdKYW4nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfZmVicnVhcnknIDogJ0ZldicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9tYXJjaCcgOiAnTWFyJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2FwcmlsJyA6ICdBYnInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfbWF5JyA6ICdNYWknLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfanVuZScgOiAnSnVuJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2p1bHknIDogJ0p1bCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9hdWd1c3QnIDogJ0FnbycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9zZXB0ZW1iZXInIDogJ1NldCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9vY3RvYmVyJyA6ICdPdXQnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfbm92ZW1iZXInIDogJ05vdicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9kZWNlbWJlcicgOiAnRGV6JyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfc3VuZGF5JzogJ0RvbWluZ28nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9tb25kYXknOiAnU2VndW5kYScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3R1ZXNkYXknOiAnVGVyw6dhJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfd2VkbmVzZGF5JzogJ1F1YXJ0YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3RodXJzZGF5JzogJ1F1aW50YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2ZyaWRheSc6ICdTZXh0YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3NhdHVyZGF5JzogJ1PDoWJhZG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubWluX3N1bmRheSc6ICdEJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm1pbl9tb25kYXknOiAnUycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fdHVlc2RheSc6ICdUJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm1pbl93ZWRuZXNkYXknOiAnUScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fdGh1cnNkYXknOiAnUScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fZnJpZGF5JzogJ1MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubWluX3NhdHVyZGF5JzogJ1MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfc3VuZGF5JzogJ0RvbScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9tb25kYXknOiAnU2VnJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X3R1ZXNkYXknOiAnVGVyJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X3dlZG5lc2RheSc6ICdRdWEnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfdGh1cnNkYXknOiAnUXVpJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2ZyaWRheSc6ICdTZXgnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfc2F0dXJkYXknOiAnU2FiJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnllcyc6ICdTaW0nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uubm8nOiAnTsOjbycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zZWFyY2hfZW1wdHlfbWVzc2FnZSc6ICdOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG8nXG59O1xuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvYWR2YW5jZWQtZmlsdGVyL2xvY2FsZS9mYWxsYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsZ0NBQWdDLEVBQUUsVUFBVTtJQUM1Qyw2QkFBNkIsRUFBRSxrQkFBa0I7SUFDakQsaUNBQWlDLEVBQUUsT0FBTztJQUMxQyw4QkFBOEIsRUFBRSxRQUFRO0lBQ3hDLGdDQUFnQyxFQUFFLFNBQVM7SUFDM0MscUNBQXFDLEVBQ25DLHNJQUFzSTtJQUN4SSwrQ0FBK0MsRUFBRSw4RUFBOEU7SUFDL0gsNkNBQTZDLEVBQzNDLHNGQUFzRjtJQUN4RixpREFBaUQsRUFBRSxpQ0FBaUM7SUFDcEYsK0NBQStDLEVBQUUsZ0NBQWdDO0lBQ2pGLHlDQUF5QyxFQUFFLDRDQUE0QztJQUN2Rix5Q0FBeUMsRUFBRSwrQ0FBK0M7SUFDMUYseUNBQXlDLEVBQUUsNENBQTRDO0lBQ3ZGLGlEQUFpRCxFQUFFLDBDQUEwQztJQUM3RixnREFBZ0QsRUFBRSx3Q0FBd0M7SUFDMUYsZ0RBQWdELEVBQUUsOEJBQThCO0lBQ2hGLGdDQUFnQyxFQUFFLFlBQVk7SUFDOUMsaUNBQWlDLEVBQUUsU0FBUztJQUM1QyxxQ0FBcUMsRUFBRyxVQUFVO0lBQ2xELHFDQUFxQyxFQUFHLElBQUk7SUFDNUMsK0JBQStCLEVBQUUsUUFBUTtJQUN6QywrQkFBK0IsRUFBRyxNQUFNO0lBQ3hDLHNDQUFzQyxFQUFHLFNBQVM7SUFDbEQsdUNBQXVDLEVBQUcsV0FBVztJQUNyRCxvQ0FBb0MsRUFBRyxPQUFPO0lBQzlDLG9DQUFvQyxFQUFHLE9BQU87SUFDOUMsa0NBQWtDLEVBQUcsTUFBTTtJQUMzQyxtQ0FBbUMsRUFBRyxPQUFPO0lBQzdDLG1DQUFtQyxFQUFHLE9BQU87SUFDN0MscUNBQXFDLEVBQUcsUUFBUTtJQUNoRCx3Q0FBd0MsRUFBRyxVQUFVO0lBQ3JELHNDQUFzQyxFQUFHLFNBQVM7SUFDbEQsdUNBQXVDLEVBQUcsVUFBVTtJQUNwRCx1Q0FBdUMsRUFBRyxVQUFVO0lBQ3BELHVDQUF1QyxFQUFHLEtBQUs7SUFDL0Msd0NBQXdDLEVBQUcsS0FBSztJQUNoRCxxQ0FBcUMsRUFBRyxLQUFLO0lBQzdDLHFDQUFxQyxFQUFHLEtBQUs7SUFDN0MsbUNBQW1DLEVBQUcsS0FBSztJQUMzQyxvQ0FBb0MsRUFBRyxLQUFLO0lBQzVDLG9DQUFvQyxFQUFHLEtBQUs7SUFDNUMsc0NBQXNDLEVBQUcsS0FBSztJQUM5Qyx5Q0FBeUMsRUFBRyxLQUFLO0lBQ2pELHVDQUF1QyxFQUFHLEtBQUs7SUFDL0Msd0NBQXdDLEVBQUcsS0FBSztJQUNoRCx3Q0FBd0MsRUFBRyxLQUFLO0lBQ2hELHFDQUFxQyxFQUFFLFNBQVM7SUFDaEQscUNBQXFDLEVBQUUsU0FBUztJQUNoRCxzQ0FBc0MsRUFBRSxPQUFPO0lBQy9DLHdDQUF3QyxFQUFFLFFBQVE7SUFDbEQsdUNBQXVDLEVBQUUsUUFBUTtJQUNqRCxxQ0FBcUMsRUFBRSxPQUFPO0lBQzlDLHVDQUF1QyxFQUFFLFFBQVE7SUFDakQsb0NBQW9DLEVBQUUsR0FBRztJQUN6QyxvQ0FBb0MsRUFBRSxHQUFHO0lBQ3pDLHFDQUFxQyxFQUFFLEdBQUc7SUFDMUMsdUNBQXVDLEVBQUUsR0FBRztJQUM1QyxzQ0FBc0MsRUFBRSxHQUFHO0lBQzNDLG9DQUFvQyxFQUFFLEdBQUc7SUFDekMsc0NBQXNDLEVBQUUsR0FBRztJQUMzQyxzQ0FBc0MsRUFBRSxLQUFLO0lBQzdDLHNDQUFzQyxFQUFFLEtBQUs7SUFDN0MsdUNBQXVDLEVBQUUsS0FBSztJQUM5Qyx5Q0FBeUMsRUFBRSxLQUFLO0lBQ2hELHdDQUF3QyxFQUFFLEtBQUs7SUFDL0Msc0NBQXNDLEVBQUUsS0FBSztJQUM3Qyx3Q0FBd0MsRUFBRSxLQUFLO0lBQy9DLDZCQUE2QixFQUFFLEtBQUs7SUFDcEMsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyw4Q0FBOEMsRUFBRSw2QkFBNkI7SUFDN0Usd0NBQXdDLEVBQUUsZ0JBQWdCO0lBQzFELDRDQUE0QyxFQUFFLGdCQUFnQjtJQUM5RCwyQ0FBMkMsRUFBRSwyQkFBMkI7Q0FDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmYWxsYmFjayA9IHtcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNhbmNlbCc6ICdDYW5jZWxhcicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS50cnknOiAnVGVudGFyIE5vdmFtZW50ZScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hY3Rpb25zJzogJ0HDp8O1ZXMnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZSc6ICdTYWx2YXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmlsdGVyJzogJ0ZpbHRyYXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZXJyb3Jfc3RhdGUnOlxuICAgICdPIHNlcnZpw6dvIGRlIGZpbHRybyBlc3TDoSBpbmRpc3BvbsOtdmVsIG5vIG1vbWVudG8gZSBhcyBpbmZvcm1hw6fDtWVzIGFwcmVzZW50YWRhcyBuw6NvIHPDo28gYXMgbWFpcyByZWNlbnRlcy4gVGVudGUgbm92YW1lbnRlIG1haXMgdGFyZGUuJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNhdmVkX2ZpbHRlcnNfc3VjY2Vzcyc6ICdGaWx0cm9zIHNhbHZvcyBjb20gc3VjZXNzbyEgQ2xpcXVlIGVtIFwiRmlsdHJhclwiIHBhcmEgdmlzdWFsaXphciBvIHJlc3VsdGFkby4nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZWRfZmlsdGVyc19lcnJvcic6XG4gICAgJ09jb3JyZXUgdW0gZXJybyBhbyB0ZW50YXIgc2FsdmFyIG9zIGZpbHRyb3MuIFZlcmlmaXF1ZSBvcyB2YWxvcmVzIGUgdGVudGUgbm92YW1lbnRlLicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hcHBsaWVkX2ZpbHRlcl9ub2NoYW5nZSc6ICdOw6NvIGhvdXZlIGFsdGVyYcOnw7VlcyBubyBmaWx0cm8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFwcGxpZWRfZmlsdGVyX2NoYW5nZSc6ICdGaWx0cm9zIGFwbGljYWRvcyBjb20gc3VjZXNzbyEnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuaW52YWxpZF9wYXR0ZXJuJzogJ08gdmFsb3IgbsOjbyBhdGVuZGUgYW8gcGFkcsOjbyBlc3BlY2lmaWNhZG8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmVycm9yX21heF92YWx1ZSc6ICdPIHZhbG9yIGV4Y2VkZSBvIHRhbWFuaG8gbcOheGltbyBlc3BlY2lmaWNhZG8uJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmVycm9yX21pbl92YWx1ZSc6ICdPIHZhbG9yIMOpIG1lbm9yIHF1ZSBvIG1pbsOtbW8gZXNwZWNpZmljYWRvLicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hcHBsaWVkX2ZpbHRlcnNfbWVzc2FnZSc6ICd7e3RvdGFsQWN0aXZlRmlsdGVyc319IGZpbHRyb3MgYXBsaWNhZG9zJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFwcGxpZWRfZmlsdGVyX21lc3NhZ2UnOiAne3t0b3RhbEFjdGl2ZUZpbHRlcnN9fSBmaWx0cm8gYXBsaWNhZG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmluZF9zdWdnZXN0aW9uc19lcnJvcic6ICdFcnJvIGFvIGVuY29udHJhciBzdWdlc3TDtWVzIScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zZWxlY3QnOiAnU2VsZWNpb25hcicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXJzJzogJ0ZpbHRyb3MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZGF0ZV9mb3JtYXQnIDogJ2RkL21tL3l5JyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmhvdXJfZm9ybWF0JyA6ICcyNCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5jbGVhcic6ICdMaW1wYXInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UudG9kYXknIDogJ0hvamUnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9qYW51YXJ5JyA6ICdKYW5laXJvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfZmVicnVhcnknIDogJ0ZldmVyZWlybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX21hcmNoJyA6ICdNYXLDp28nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9hcHJpbCcgOiAnQWJyaWwnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9tYXknIDogJ01haW8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9qdW5lJyA6ICdKdW5obycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2p1bHknIDogJ0p1bGhvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfYXVndXN0JyA6ICdBZ29zdG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9zZXB0ZW1iZXInIDogJ1NldGVtYnJvJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfb2N0b2JlcicgOiAnT3V0dWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX25vdmVtYmVyJyA6ICdOb3ZlbWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2RlY2VtYmVyJyA6ICdEZXplbWJybycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9qYW51YXJ5JyA6ICdKYW4nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfZmVicnVhcnknIDogJ0ZldicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9tYXJjaCcgOiAnTWFyJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2FwcmlsJyA6ICdBYnInLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfbWF5JyA6ICdNYWknLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfanVuZScgOiAnSnVuJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2p1bHknIDogJ0p1bCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9hdWd1c3QnIDogJ0FnbycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9zZXB0ZW1iZXInIDogJ1NldCcsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9vY3RvYmVyJyA6ICdPdXQnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfbm92ZW1iZXInIDogJ05vdicsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9kZWNlbWJlcicgOiAnRGV6JyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfc3VuZGF5JzogJ0RvbWluZ28nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubmFtZV9tb25kYXknOiAnU2VndW5kYScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3R1ZXNkYXknOiAnVGVyw6dhJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm5hbWVfd2VkbmVzZGF5JzogJ1F1YXJ0YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3RodXJzZGF5JzogJ1F1aW50YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX2ZyaWRheSc6ICdTZXh0YScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5uYW1lX3NhdHVyZGF5JzogJ1PDoWJhZG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubWluX3N1bmRheSc6ICdEJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm1pbl9tb25kYXknOiAnUycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fdHVlc2RheSc6ICdUJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLm1pbl93ZWRuZXNkYXknOiAnUScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fdGh1cnNkYXknOiAnUScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5taW5fZnJpZGF5JzogJ1MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UubWluX3NhdHVyZGF5JzogJ1MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfc3VuZGF5JzogJ0RvbScsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zaG9ydF9tb25kYXknOiAnU2VnJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X3R1ZXNkYXknOiAnVGVyJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X3dlZG5lc2RheSc6ICdRdWEnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfdGh1cnNkYXknOiAnUXVpJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNob3J0X2ZyaWRheSc6ICdTZXgnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2hvcnRfc2F0dXJkYXknOiAnU2FiJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnllcyc6ICdTaW0nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uubm8nOiAnTsOjbycsXG4gICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zZWFyY2hfZW1wdHlfbWVzc2FnZSc6ICdOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG8nLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuYWN0aXZlX2ZpbHRlcnMnOiAnZmlsdHJvcyBhdGl2b3MnLFxuICAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuYXJpYV9jbG9zZV9maWx0ZXJzJzogJ0ZlY2hhciBmaWx0cm9zJyxcbiAgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFyaWFfY2xvc2VfZGlhbG9nJzogJ0ZlY2hhciBkacOhbG9nbyBkZSBmaWx0cm9zJ1xufTtcbiJdfQ==