@eo-sdk/client 10.6.0-rc.4 → 10.6.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +0 -6
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +6 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +2 -1
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -0
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts +2 -0
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +5 -18
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
- package/app/eo-framework/ui/ui.module.d.ts +3 -2
- package/app/eo-framework/ui/ui.module.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +1 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +4 -3
- package/assets/_default/i18n/en.json +3 -3
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +14 -9
- package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +4 -3
- package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +2 -2
- package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +2 -2
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -3
- package/esm2020/app/eo-framework/media/media.component.mjs +12 -4
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +9 -5
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +2 -2
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +10 -3
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +9 -5
- package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +32 -117
- package/esm2020/app/eo-framework/ui/ui.module.mjs +5 -1
- package/esm2020/app/eo-framework-core/api/grid.service.mjs +3 -2
- package/esm2020/app/eo-framework-core/api/plugins.service.mjs +5 -1
- package/fesm2015/eo-sdk-client.mjs +112 -156
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +110 -155
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -3
- package/scss/_yuuvis-components.scss +22 -14
- package/styles.css +6 -0
|
@@ -635,7 +635,8 @@ export class CellRenderer {
|
|
|
635
635
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
636
636
|
return CellRenderer.noValueRenderer(param);
|
|
637
637
|
}
|
|
638
|
-
let val = `<path class="
|
|
638
|
+
let val = `<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>
|
|
639
|
+
<path d="M 5,19 L 19,5" stroke="rgba(0, 0, 0, 0.54)" stroke-width="2"/>`;
|
|
639
640
|
if (param.value === true || param.value === 'true') {
|
|
640
641
|
val = `<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>
|
|
641
642
|
<polyline class="checkmark" points="6.3,11.8 7.8,10.3 10.8,13.3 16.3,7.8 17.8,9.3 10.8,16.3 6.3,11.8"/>`;
|
|
@@ -724,4 +725,4 @@ export class CellRenderer {
|
|
|
724
725
|
}
|
|
725
726
|
}
|
|
726
727
|
CellRenderer.situation = '';
|
|
727
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVSxLQUFLLElBQUksT0FBTyxFQUFnRCxNQUFNLHlCQUF5QixDQUFDO0FBQzlILE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUtMLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUViLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7QUFHekYsTUFBTSxPQUFPLFdBQVc7SUFHdEIsSUFBSSxlQUFlO1FBQ2pCLE9BQU87WUFDTCxRQUFRLEVBQUUsUUFBUTtZQUNsQixlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDOUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFB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LENBQUM7Z0JBRWhCLDRHQUE0RztnQkFDNUcsSUFBSSxJQUFJO1VBRU4sQ0FBQyxLQUFLO29CQUNKLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxxQ0FBcUMsSUFBSTs7Ozs7ZUFNN0M7c0NBQzRCLE9BQU8sWUFBWSxJQUFJLENBQUMsS0FBSztnQkFDbkQsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUM7O0FBN1NNLHNCQUFTLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyLCBDb2xEZWYsIFV0aWxzIGFzIEFnVXRpbHMsIENzdkV4cG9ydFBhcmFtcywgUm93Tm9kZSwgQ29sdW1uLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XG4gIGNvbnRleHQ6IGFueTtcblxuICBnZXQgY3N2RXhwb3J0UGFyYW1zKCk6IENzdkV4cG9ydFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVOYW1lOiAnZXhwb3J0JyxcbiAgICAgIGNvbHVtblNlcGFyYXRvcjogdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJyA/ICc7JyA6ICcsJyxcbiAgICAgIHByb2Nlc3NDZWxsQ2FsbGJhY2s6IChwYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxDbGFzcyBhcyBhbnkgfHwgJycpLmluY2x1ZGVzKCdjb2wtbnVtYmVyJylcbiAgICAgICAgICA/IChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxSZW5kZXJlciBhcyBhbnkpKHBhcmFtcykucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcYCArIHRoaXMuY29udGV4dD8ubnVtYmVyUGlwZS5zZXBhcmF0b3IsICdnJyksICcnKSAvLyByZW1vdmVkIGdyb3VwaW5nXG4gICAgICAgICAgOiBwYXJhbXMudmFsdWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBlc2NhcGVIdG1sKHN0cikge1xuICAgIHN0ciA9IHN0ciA/IHN0ciA6ICcnO1xuICAgIGNvbnN0IGVudGl0eU1hcCA9IHtcbiAgICAgICcmJzogJyZhbXA7JyxcbiAgICAgICc8JzogJyZsdDsnLFxuICAgICAgJz4nOiAnJmd0OycsXG4gICAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxuICAgICAgJy8nOiAnJiN4MkY7J1xuICAgIH07XG4gICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2UoL1smPD5cIidcXC9dL2csIHMgPT4gZW50aXR5TWFwW3NdKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZUZvcm1hdHRlcihxbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChxbmFtZSB8fCAnJykucmVwbGFjZShuZXcgUmVnRXhwKCdzeXNvYmplY3QufHN5c2RvY3VtZW50LicpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgcW5hbWVNYXRjaChxbmFtZTogc3RyaW5nLCBxbmFtZTI6IHN0cmluZykge1xuICAgIHJldHVybiBHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihxbmFtZSkgPT09IEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lMik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgdHJhbnNsYXRlLFxuICAgICAgc3lzdGVtLFxuICAgICAgYmFja2VuZCxcbiAgICAgIHJvdXRlcixcbiAgICAgIGZpbGVTaXplUGlwZTogbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgbnVtYmVyUGlwZTogbmV3IExvY2FsZU51bWJlclBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGRhdGVQaXBlOiBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGNyOiBDZWxsUmVuZGVyZXIsXG4gICAgICBiYXNlSHJlZjogRW52aXJvbm1lbnRFbmFpby5pc1dlYkVudmlyb25tZW50KCkgPyB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpIDogJy4vJyxcbiAgICAgIG1pbWV0eXBlZ3JvdXBPcHRzOiBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFMpLm1hcChrID0+IGsudG9Mb3dlckNhc2UoKSksXG4gICAgICB0eXBlT3B0czogW11cbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoXG4gICAgICAodXNlcjogRW9Vc2VyKSA9PlxuICAgICAgICAodGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbiA9XG4gICAgICAgICAgdXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnKVxuICAgICk7XG5cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZTogU2VhcmNoU3RhdGUpID0+IHRoaXMudXBkYXRlQ29udGV4dChBcnJheS5mcm9tKHN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlLmtleXMoKSkpKTtcbiAgfVxuXG4gIC8vIGNvcHkgY29udGVudCBvZiBlaXRoZXIgcm93IG9yIHRhYmxlIGNlbGwgdG8gY2xpcGJvYXJkXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUNlbnRlclZpZXdwb3J0O1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB2aWV3cG9ydC5zY3JvbGxMZWZ0O1xuXG4gICAgY29uc3QgZm9jdXNlZENlbGwgPSBncmlkT3B0aW9ucy5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcbiAgICBjb25zdCByb3dzOiBSb3dOb2RlW10gPSBldmVudC5zaGlmdEtleSA/IGdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkgOiBbZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoZm9jdXNlZENlbGwucm93SW5kZXgpXTtcbiAgICBjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZE9wdGlvbnMuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKS5maWx0ZXIoKGM6IGFueSkgPT4gYy5jb2xJZCAhPT0gJ19fc2VsZWN0aW9uRmllbGQnKSA6IFtmb2N1c2VkQ2VsbC5jb2x1bW5dO1xuICAgIGNvbnN0IGdldENlbGwgPSAoY29sLCByb3cpID0+IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUd1aS5xdWVyeVNlbGVjdG9yKGBkaXZbcm93LWluZGV4PVwiJHtyb3cucm93SW5kZXh9XCJdIFtjb2wtaWQ9XCIke2NvbC5jb2xJZH1cIl1gKTtcbiAgICBjb25zdCB2YWx1ZSA9IChjb2wsIHJvdykgPT4ge1xuICAgICAgZ3JpZE9wdGlvbnMuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoY29sKTtcbiAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgIGlmICghY2VsbCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgY2hpcHMgPSBjZWxsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jaGlwJykgfHwgW107XG4gICAgICBjb25zdCB2YWwgPSBBcnJheS5mcm9tKGNoaXBzLmxlbmd0aCA/IGNoaXBzIDogW2NlbGxdKS5tYXAoKGM6IGFueSkgPT4gKGMgJiYgYy50ZXh0Q29udGVudCAmJiBjLnRleHRDb250ZW50LnRyaW0oKSkgfHwgJycpO1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKSB8fCBncmlkT3B0aW9ucy5hcGkuZ2V0VmFsdWUoY29sLCByb3cpO1xuICAgICAgcmV0dXJuICFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgOiAnJztcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBjb250ZW50ICs9IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gY29sLmdldENvbERlZigpLmhlYWRlck5hbWUpLmpvaW4oJ1x0JykgKyAnXFxuJztcbiAgICBjb250ZW50ICs9IHJvd3MubWFwKChyb3cpID0+IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gdmFsdWUoY29sLCByb3cpKS5qb2luKCdcdCcpKS5qb2luKCdcXG4nKTtcblxuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICByb3dzLm1hcCgocm93KSA9PlxuICAgICAgICAgIGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoY29sLCByb3cpO1xuICAgICAgICAgICAgY2VsbCAmJiBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NvcHktY2VsbCcpO1xuICAgICAgICAgICAgY2VsbCAmJiBzZXRUaW1lb3V0KCgpID0+IGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjb3B5LWNlbGwnKSwgNDAwMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICAvLyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTsgLy8gb25seSBpZiBjbGllbnQgcnVucyBodHRwc1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgY29uc3QgY29weVN1Y2Nlc3MgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHVibGljIG9wZW5MaW5rKHVyaTogc3RyaW5nLCBuZXdUYWIgPSBmYWxzZSkge1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvcmNlIHJlbG9hZCBpbiBjYXNlIG9mIHNhbWUgVVJMXG4gICAgICBjb25zdCBleHRyYXMgPSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLnVybCkgPT09IENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSA/IGAke3VyaS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfXJlbG9hZD10cnVlYCA6ICcnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmkgKyBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleChlbCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5nZXRBdHRyaWJ1dGUoJ3Jvdy1pbmRleCcpXG4gICAgICAgID8gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKSwgMTApXG4gICAgICAgIDogdGhpcy5nZXRSb3dJbmRleChlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZXJMaW5rKGVsLCBwYXJlbnRDbGFzcykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5sb2NhbE5hbWUgPT09ICdhJyAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JvdXRlci1saW5rJylcbiAgICAgICAgPyBlbFxuICAgICAgICA6IHRoaXMuZ2V0Um91dGVyTGluayhlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUm91dGVyTGluayhldmVudDogTW91c2VFdmVudCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoXG4gICAgICBldmVudC50YXJnZXQsXG4gICAgICBwYXJlbnRDbGFzc1xuICAgICkgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgaWYgKGxpbmsgJiYgbGluay5ocmVmKSB7XG4gICAgICB0aGlzLm9wZW5MaW5rKGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGV2ZW50LmN0cmxLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB7Li4udGhpcy5jb250ZXh0LCBjb3VudDogMCwgcm93Q291bnQ6IDB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodHlwZU9wdHM6IHN0cmluZ1tdLCBvcHRpb25zID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwge3R5cGVPcHRzOiAodHlwZU9wdHMgJiYgdHlwZU9wdHMubGVuZ3RoID8gdHlwZU9wdHMgOiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpLm1hcChvID0+IG8ucW5hbWUpKX0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkRlZnMoXG4gICAgZWxlbWVudHM6IGFueVtdLFxuICAgIHNvcnRvcmRlcjogYW55W10gPSBbXSxcbiAgICBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZDogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnR4OiB7cW5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSA9IFtdLFxuICAgIGVuYWJsZVJvd0dyb3VwID0gdHJ1ZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKTogQ29sRGVmW10ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZiA9PlxuICAgICAgdGhpcy5nZXRDb2x1bW5EZWZpbml0aW9uKFxuICAgICAgICBmLFxuICAgICAgICBzb3J0b3JkZXIsXG4gICAgICAgIGdyb3Vwb3JkZXIsXG4gICAgICAgIHBpbm5lZCxcbiAgICAgICAgYWxpZ25tZW50eCxcbiAgICAgICAgZW5hYmxlUm93R3JvdXAsXG4gICAgICAgIGNhY2hlZENvbHVtbnMsXG4gICAgICAgIG1vZGVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHZpc3VhbCBvdXRwdXQgb2YgZm9ybSBlbGVtZW50cyBiYXNlZCBvbiBpdHMgdHlwZSBldGMuIChzZWUgSW5kZXhkYXRhU3VtbWFyeUNvbXBvbmVudCBmb3IgdXNhZ2UgZGV0YWlscylcbiAgICogQHBhcmFtIGVsZW1lbnRzIC0gVGhlIGZvcm0gZWxlbWVudHMgdG8gYmUgcmVuZGVyZWRcbiAgICogQHJldHVybnMgVGhlIHJlbmRlcmVkIEhUTUwgZm9yIHRoZSBnaXZlbiBlbGVtZW50c1xuICAgKi9cbiAgcHVibGljIGdldFJlc29sdmVkRGVmcyhlbGVtZW50czogYW55W10pIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGVsID0+IHtcbiAgICAgIGxldCBjb2xEZWY6IENvbERlZiA9IHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihlbCk7XG4gICAgICBsZXQgdmFsdWUgPSBlbC52YWx1ZTtcbiAgICAgIGxldCBkYXRhID0ge307XG4gICAgICBkYXRhW2NvbERlZi5maWVsZF0gPSB2YWx1ZTtcbiAgICAgIGlmIChlbC5tZXRhKSB7XG4gICAgICAgIGRhdGFbY29sRGVmLmZpZWxkICsgJ19tZXRhJ10gPSBlbC5tZXRhO1xuICAgICAgfVxuICAgICAgLy8gaW52b2tlIHZhbHVlR2V0dGVyIGlmIHByb3ZpZGVkXG4gICAgICBpZiAoY29sRGVmLnZhbHVlR2V0dGVyKSB7XG4gICAgICAgIHZhbHVlID0gKGNvbERlZi52YWx1ZUdldHRlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWZcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBydW4gdGhlIGNlbGwgcmVuZGVyZXIgd2l0aCB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGUgdmFsdWVHZXR0ZXJcbiAgICAgIGlmIChjb2xEZWYuY2VsbFJlbmRlcmVyKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBub2RlOiB7fSxcbiAgICAgICAgICBjb2xEZWY6IGNvbERlZixcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH07XG4gICAgICAgIGVsLl92YWx1ZSA9IChjb2xEZWYuY2VsbFJlbmRlcmVyIGFzIEZ1bmN0aW9uKS5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGVzIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiByZXN1bHQgZmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIHRoZSByZXN1bHQgZmllbGQgKGFzIHJldHJpZXZlZCBmcm9tIC4uL3VzZXIvY29uZmlnL3Jlc3VsdC8qKSB0byBjcmVhdGUgdGhlXG4gICAqIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCBmb3JcbiAgICpcbiAgICogQHBhcmFtIHNvcnRGaWVsZHMgLSBBcnJheSBvZiBmaWVsZHMgdG8gYmUgc29ydGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICByZXN1bHRGaWVsZCxcbiAgICBzb3J0RmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIGdyb3VwRmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZEZpZWxkczogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnRGaWVsZHM6IHtxbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gW10sXG4gICAgZW5hYmxlUm93R3JvdXAgPSBmYWxzZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKSB7XG4gICAgbGV0IGNvbERlZiA9IDxDb2xEZWY+e307XG4gICAgY29sRGVmLmhlYWRlck5hbWUgPSByZXN1bHRGaWVsZC5sYWJlbDtcbiAgICBjb2xEZWYuZmllbGQgPSByZXN1bHRGaWVsZC5oaXRuYW1lIHx8IHJlc3VsdEZpZWxkLm5hbWU7XG4gICAgY29sRGVmLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHBhcmFtcyA9PiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtcy52YWx1ZSk7XG4gICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW1zID0+IHtcbiAgICAgIHJldHVybiBwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEgPyAnJyA6IHBhcmFtcy5kYXRhW2NvbERlZi5maWVsZF07XG4gICAgfTtcbiAgICBjb2xEZWYucmVmRGF0YSA9IHtxbmFtZTogcmVzdWx0RmllbGQucW5hbWUgfHwgJyd9O1xuXG4gICAgLyoqXG4gICAgICogaGVhZGVyQ2xhc3NcbiAgICAgKiBhZGQgc3BlY2lhbCBoZWFkZXIgY2xhc3MgZm9yIGZpZWxkcyBmcm9tIHRoZSBjb250ZXh0Zm9sZGVyXG4gICAgICovXG4gICAgaWYgKHJlc3VsdEZpZWxkLnNlbGVjdGVkZm9yZW5yaWNobWVudCAmJiBtb2RlICE9PSAnQ09NTU9OJykge1xuICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbnRleHRmb2xkZXInO1xuICAgIH1cbiAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZiwgcmVzdWx0RmllbGQpO1xuICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZiwgY29sRGVmLmZpZWxkKTtcblxuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgZGVib3VuY2VNczogODAwLFxuICAgICAgY2xlYXJCdXR0b246IGZhbHNlLFxuICAgICAgbmV3Um93c0FjdGlvbjogJ2tlZXAnLFxuICAgICAgZmlsdGVyT3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGNvbERlZi5maWx0ZXIgPT09ICdhZ1RleHRDb2x1bW5GaWx0ZXInKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBjb2xEZWYucmVmRGF0YS5xbmFtZS5tYXRjaCgvKF5zeXNvYmplY3RcXC58XnN5c2RvY3VtZW50XFwuKSh0aXRsZSR8ZGVzY3JpcHRpb24kKS8pID8gWydlcXVhbHMnXSA6IFtcbiAgICAgICAgJ2NvbnRhaW5zJyxcbiAgICAgICAgJ2VxdWFscycsXG4gICAgICAgICdzdGFydHNXaXRoJyxcbiAgICAgICAgJ2VuZHNXaXRoJ1xuICAgICAgXTtcblxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInIHx8XG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdEYXRlQ29sdW1uRmlsdGVyJ1xuICAgICkge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAnZXF1YWxzJyxcbiAgICAgICAgJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICdncmVhdGVyVGhhbicsXG4gICAgICAgICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAnaW5SYW5nZSdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWltZXR5cGUgZmlsdGVyIHN1cHBvcnRzIG9ubHkgZXF1YWxzIG9wdGlvblxuICAgIGlmIChjb2xEZWYuZmllbGQgPT09ICdtaW1ldHlwZScpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZGVmYXVsdE9wdGlvbiA9ICdlcXVhbHMnO1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gWydlcXVhbHMnXTtcbiAgICB9XG5cbiAgICAvLyBmaWxlc2l6ZSBmaWx0ZXIgc3VwcG9ydHMgb25seSBpbnRlcnZhbCBvcHRpb25zXG4gICAgaWYgKGNvbERlZi5maWVsZCA9PT0gJ2ZpbGVzaXplJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5kZWZhdWx0T3B0aW9uID0gJ2xlc3NUaGFuT3JFcXVhbCc7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgICAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgJ2luUmFuZ2UnXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0RmllbGQuc29ydGFibGUpIHtcbiAgICAgIGNvbERlZi5zb3J0YWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdEZpZWxkLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbERlZi5zdXBwcmVzc01lbnUgPSB0cnVlO1xuICAgICAgY29sRGVmLmZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzb3J0RmllbGQgPSBzb3J0RmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHNvcnRGaWVsZCkge1xuICAgICAgY29sRGVmLnNvcnQgPSBzb3J0RmllbGQuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZVJvd0dyb3VwKSB7XG4gICAgICBsZXQgZ3JvdXBGaWVsZEluZGV4ID0gZ3JvdXBGaWVsZHMuZmluZEluZGV4KFxuICAgICAgICBmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lXG4gICAgICApO1xuICAgICAgaWYgKH5ncm91cEZpZWxkSW5kZXgpIHtcbiAgICAgICAgY29sRGVmLnJvd0dyb3VwSW5kZXggPSBncm91cEZpZWxkSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBpbm5lZEZpZWxkID0gcGlubmVkRmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHBpbm5lZEZpZWxkKSB7XG4gICAgICBjb2xEZWYucGlubmVkID0gcGlubmVkRmllbGQucG9zaXRpb24gfHwgdGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgIGNvbERlZi53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25tZW50RmllbGQgPSBhbGlnbm1lbnRGaWVsZHMuZmluZChmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lKTtcbiAgICBpZiAoYWxpZ25tZW50RmllbGQgJiYgYWxpZ25tZW50RmllbGQudmFsdWUpIHtcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7J2p1c3RpZnktY29udGVudCc6IGFsaWdubWVudEZpZWxkLnZhbHVlfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsnanVzdGlmeS1jb250ZW50JzogcmVzdWx0RmllbGQuYWxpZ25tZW50eCA/IHJlc3VsdEZpZWxkLmFsaWdubWVudHggOiAnJ307XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgdHlwZSBzcGVjaWZpYyBjb2x1bW4gZGVmaW5pdGlvbiBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBjb2xEZWYgLSB0aGUgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0IHRvIGJlIGV4dGVuZGVkIGJ5IHR5cGUgc3BlY2lmaWMgYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gcmVzdWx0RmllbGQgLSBvYmplY3QgZGVmaW5pbmcgdGhlIHJlc3VsdCBmaWVsZFxuICAgKlxuICAgKiBAcmV0dXJucyBlbnJpY2hlZCBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBhZGRDb2xEZWZBdHRyc0J5VHlwZShjb2xEZWY6IENvbERlZiwgcmVzdWx0RmllbGQpIHtcbiAgICBzd2l0Y2ggKHJlc3VsdEZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1JFRkVSRU5DRSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ3JvdXRlci1saW5rLWNlbGwnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5yZWZlcmVuY2VDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlIHx8IHt9LCBjb2xEZWY6IGNvbERlZn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgIHBhcmFtLm5vZGUuZ3JvdXAgfHwgIXBhcmFtLmRhdGEgPyAnJyA6IHBhcmFtLmRhdGFbY29sRGVmLmZpZWxkXTtcblxuICAgICAgICAgIGNvbnN0IHJlZk1ldGEgPSBwYXJhbSAmJiBwYXJhbS5kYXRhICYmIHBhcmFtLmRhdGEuX3JlZmVyZW5jZXM7XG4gICAgICAgICAgLy8gdXNlIG9iamVjdCB0eXBlIGxhYmVsIHdoZW4gbWV0YSBpcyBtaXNzaW5nIChzZWFyY2ggc3ZjIGRvZXMgbm90IHN1cHBvcnQgbWV0YSlcbiAgICAgICAgICByZXR1cm4gVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKVxuICAgICAgICAgICAgPyAnJyA6IHJlZk1ldGFcbiAgICAgICAgICAgICAgPyByZWZNZXRhW2NvbERlZi5maWVsZF1cbiAgICAgICAgICAgICAgOiB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+IHYudGl0bGUpKHBhcmFtKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdTVFJJTkcnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIHN0cmluZydcbiAgICAgICAgICA6ICdzdHJpbmcnO1xuICAgICAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlDbGFzc2lmaWNhdGlvbihjb2xEZWYsIHJlc3VsdEZpZWxkLmNsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLnJlZmVyZW5jZSkge1xuICAgICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAncm91dGVyLWxpbmstY2VsbCc7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICAgIENlbGxSZW5kZXJlci5saW5rQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNvbXBhcmF0b3IgPSAoYSwgYikgPT4gQWdVdGlscy5kZWZhdWx0Q29tcGFyYXRvcihhLCBiLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdEQVRFVElNRSc6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTUwO1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnRGF0ZUNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY29tcGFyYXRvcjogdGhpcy5kYXRlQ29tcGFyYXRvcih0aGlzLmNvbnRleHQuZGF0ZVBpcGUpLFxuICAgICAgICAgIHZhbHVlR2V0dGVyOiB0aGlzLmRhdGVGaWx0ZXJWYWx1ZUdldHRlcihjb2xEZWYuZmllbGQpLFxuICAgICAgICAgIHdpdGhUaW1lOiByZXN1bHRGaWVsZC53aXRodGltZSxcbiAgICAgICAgICBpblJhbmdlSW5jbHVzaXZlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQuZmllbGQ7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7bXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PiB2LmRlZmF1bHRyZXByZXNlbnRhdGlvbik7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBjb2Rlc3lzdGVtJ1xuICAgICAgICAgIDogJ2NvZGVzeXN0ZW0nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ05VTUJFUic6IHtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdjb2wtbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbC1oZWFkZXItbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDE1MDtcbiAgICAgICAgY29uc3Qge3NjYWxlLCBncm91cGluZywgcGF0dGVybn0gPSByZXN1bHRGaWVsZDtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge2luUmFuZ2VJbmNsdXNpdmUgOiB0cnVlfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnT3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQucW5hbWU7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7bXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PlxuICAgICAgICAgIHYudGl0bGUgJiYgdi5uYW1lID8gYCR7di50aXRsZX0gKCR7di5uYW1lfSlgIDogYCR7di5pZH1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBvcmdhbml6YXRpb24nXG4gICAgICAgICAgOiAnb3JnYW5pemF0aW9uJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdCT09MRUFOJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ2NvbC1ib29sZWFuJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICBjZWxsSGVpZ2h0OiAzMCxcbiAgICAgICAgICB2YWx1ZXM6IFtmYWxzZSwgdHJ1ZV0sXG4gICAgICAgICAgc3VwcHJlc3NNaW5pRmlsdGVyOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDEwMDtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9ICgpID0+ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgY2xhc3NpZmljYXRpb24gc3BlY2lmaWMgY29sdW1uIGRlZmluaXRpb24gYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gY29sRGVmIC0gdGhlIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICAgKiBAcGFyYW0gY2xhc3NpZmljYXRpb24gLSB0aGUgY2xhc3NpZmljYXRpb24gdG8gZXZhbHVhdGVcbiAgICpcbiAgICogQHJldHVybnMgZW5yaWNoZWQgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGFkZENvbERlZkF0dHJzQnlDbGFzc2lmaWNhdGlvbihjb2xEZWY6IENvbERlZiwgY2xhc3NpZmljYXRpb24pIHtcbiAgICBzd2l0Y2ggKGNsYXNzaWZpY2F0aW9uKSB7XG4gICAgICBjYXNlICdlbWFpbCc6IHtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5lbWFpbENlbGxSZW5kZXJlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd1cmwnOiB7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIudXJsQ2VsbFJlbmRlcmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZjogQ29sRGVmLCByZXN1bHRGaWVsZE5hbWUpIHtcbiAgICBzd2l0Y2ggKHJlc3VsdEZpZWxkTmFtZSkge1xuICAgICAgY2FzZSAndHlwZSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdMaXN0RmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci50eXBlQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYud2lkdGggPSA4MDtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdyZXMtaWNvJztcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9ICgpID0+ICcnO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci50eXBlQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC50eXBlT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21pbWV0eXBlZ3JvdXAnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDEwMTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC5taW1ldHlwZWdyb3VwT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcnNpb24nOiB7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ZpbGVzaXplJzoge1xuICAgICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29sLWhlYWRlci1maWxlc2l6ZSc7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSBGaWxlc2l6ZUZpbHRlcjtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5maWxlc2l6ZUNlbGxSZW5kZXJlclxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9tQ29udGV4dChmbmMsIG1peGluPykge1xuICAgIHJldHVybiBwYXJhbSA9PiB7XG4gICAgICByZXR1cm4gZm5jKE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7Y29udGV4dDogdGhpcy5jb250ZXh0fSwgbWl4aW4pKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG1ldGFWYWx1ZUdldHRlcih0aXRsZUZuYzogRnVuY3Rpb24sIG1hcEZuYzogRnVuY3Rpb24gPSB2ID0+IHYpIHtcbiAgICByZXR1cm4gcGFyYW1zID0+IHtcbiAgICAgIC8vIGRhdGEgY291bGQgYmUgZW1wdHkgb24gZmlyc3QgcmVuZGVyaW5nIGEgY2VsbCB3aGlsZSBpbmZpbml0ZSBzY3JvbGxpbmdcbiAgICAgIGlmIChwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvLyB0b2RvOiBzdXBlciBob3RmaXggLSBDT09MLTg5ODkgLSBzb2x2ZXMgcHJvYmxlbSB3aXRoIHJlc29sdmluZyBvZiBPUkdBTklaQVRJT04gdmFsdWUgKHZpYSBxbmFtZSlcbiAgICAgIGNvbnN0IGZpZWxkTWV0YSA9IHBhcmFtcy5jb2xEZWYuZmllbGQgKyAnX21ldGEnO1xuICAgICAgY29uc3QgdmFsdWUgPSAhcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoZmllbGRNZXRhKVxuICAgICAgICA/IG1hcEZuYyhcbiAgICAgICAgICAocGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5maWVsZF0gIT09IHVuZGVmaW5lZCkgPyBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSA6XG4gICAgICAgICAgcGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5yZWZEYXRhLnFuYW1lXVxuICAgICAgICApXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShwYXJhbXMuZGF0YVtmaWVsZE1ldGFdKVxuICAgICAgICAgID8gcGFyYW1zLmRhdGFbZmllbGRNZXRhXS5tYXAodiA9PiB0aXRsZUZuYyh2IHx8IHt9KSlcbiAgICAgICAgICA6IHRpdGxlRm5jKHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0gfHwge30pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF0ZUNvbXBhcmF0b3IoZGF0ZVBpcGUpIHtcbiAgICByZXR1cm4gKGE6IERhdGUsIGIpID0+IHtcbiAgICAgIGlmICghYiB8fCAhYi52YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGIuZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IF9kYXRlID0gIWIuYWN0aXZlUmFuZ2UgPyBiLmZpbHRlci5kYXRlRnJvbSA6IGIuZmlsdGVyLmRhdGVUbztcbiAgICAgICAgYi5hY3RpdmVSYW5nZSA9IGIuZmlsdGVyLnR5cGUgPT09IFNpbXBsZUZpbHRlci5JTl9SQU5HRTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYi5maWx0ZXIud2l0aFRpbWUgPyAxNiA6IDEwO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgQWdVdGlscy5kZWZhdWx0Q29tcGFyYXRvcihcbiAgICAgICAgICAgIF9kYXRlICYmIF9kYXRlLnNsaWNlKDAsIGxlbmd0aCksXG4gICAgICAgICAgICBiLnZhbHVlLnNsaWNlKDAsIGxlbmd0aClcbiAgICAgICAgICApICogLTFcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGUgPSBiLmxlbmd0aCA9PT0gMTAgPyBiIDogZGF0ZVBpcGUudHJhbnNmb3JtKGIsICd5eXl5LU1NLWRkJyk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKGRhdGVQaXBlLnRyYW5zZm9ybShhLCAneXl5eS1NTS1kZCcpLCBkYXRlKSAqXG4gICAgICAgIC0xXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF0ZUZpbHRlclZhbHVlR2V0dGVyKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9kZSA9PiB7XG4gICAgICBsZXQgX2ZpbHRlciA9IG5vZGUuZ3JpZE9wdGlvbnNXcmFwcGVyLmdyaWRPcHRpb25zLmFwaS5nZXRGaWx0ZXJJbnN0YW5jZShcbiAgICAgICAgZmllbGRcbiAgICAgICk7XG4gICAgICBsZXQgdmFsdWUgPSBub2RlLmRhdGFbZmllbGRdO1xuICAgICAgcmV0dXJuIHtmaWx0ZXI6IF9maWx0ZXJbJ19maWx0ZXJNb2RlbCddLCB2YWx1ZX07XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2VsbFJlbmRlcmVyIHtcblxuICBzdGF0aWMgc2l0dWF0aW9uID0gJyc7XG5cbiAgc3RhdGljIHdpbmRvd1VSSSh1cmk6IGFueSkge1xuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ15cXC98XlxcXFxcXFxcJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyByZW5kZXIodHlwZTogc3RyaW5nLCBwYXJhbTogYW55LCBuZXdQYXJhbT86IGFueSkge1xuICAgIHJldHVybiBDZWxsUmVuZGVyZXJbdHlwZSArICdDZWxsUmVuZGVyZXInXShcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCBuZXdQYXJhbSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGZpbGVzaXplQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZSA/IHBhcmFtLmNvbnRleHQuZmlsZVNpemVQaXBlLnRyYW5zZm9ybShwYXJhbS52YWx1ZSkgOiAnJztcbiAgfVxuXG4gIHN0YXRpYyBudW1iZXJDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtLnZhbHVlIHx8IHBhcmFtLnZhbHVlID09PSAwKSB7XG4gICAgICBpZiAocGFyYW0udmFsdWUub3BlcmF0b3IpIHtcbiAgICAgICAgLy8gcmFuZ2UgdmFsdWUgZnJvbSBzZWFyY2ggZm9ybSB0YWJsZVxuICAgICAgICByZXR1cm4gcGFyYW0udmFsdWUub3BlcmF0b3IgPT09XG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxuICAgICAgICAgID8gQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgICkgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5zZWNvbmRWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgIClcbiAgICAgICAgICA6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgIHBhcmFtLnZhbHVlLFxuICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgIHZhbHVlLFxuICAgIGNvbnRleHQsXG4gICAgZ3JvdXBpbmc/LFxuICAgIHBhdHRlcm4/LFxuICAgIHNjYWxlP1xuICApIHtcbiAgICByZXR1cm4gY29udGV4dC5udW1iZXJQaXBlLnRyYW5zZm9ybShcbiAgICAgIHZhbHVlLFxuICAgICAgZ3JvdXBpbmcsXG4gICAgICBwYXR0ZXJuLFxuICAgICAgc2NhbGVcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIHN0cmluZ0NlbGxyZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gR3JpZFNlcnZpY2UuZXNjYXBlSHRtbChwYXJhbS52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgdHlwZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICBsZXQgb2JqZWN0VHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0udmFsdWUpO1xuICAgICAgaWYgKCFvYmplY3RUeXBlKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLmljb25DZWxsUmVuZGVyZXIoXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7dmFsdWU6IG9iamVjdFR5cGV9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBpY29uQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUgJiYgKHBhcmFtLnZhbHVlLnVybCB8fCBwYXJhbS52YWx1ZS5pY29uSWQpKSB7XG4gICAgICBsZXQgaWNvblVybCA9IHBhcmFtLnZhbHVlLnVybFxuICAgICAgICA/IHBhcmFtLmNvbnRleHQuYmFzZUhyZWYgKyBwYXJhbS52YWx1ZS51cmxcbiAgICAgICAgOiBwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0QmFzZVdpdGhDb250ZXh0KHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKSArXG4gICAgICAgICcvdWkvaWNvbi8nICtcbiAgICAgICAgcGFyYW0udmFsdWUuaWNvbklkICtcbiAgICAgICAgJy5zdmcnO1xuICAgICAgbGV0IGxhYmVsID0gcGFyYW0udmFsdWUubGFiZWw7XG4gICAgICB2YWwgPSBgPGltZyBjbGFzcz1cIm9iamVjdC10eXBlXCIgc3JjPVwiJHtpY29uVXJsfVwiIHRpdGxlPVwiJHtsYWJlbH1cIj48c3BhbiBjbGFzcz1cIm9iamVjdC10eXBlLWxhYmVsXCI+JHtsYWJlbH08L3NwYW4+YDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBlbWFpbENlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWVcbiAgICAgID8gYDxhIGhyZWY9XCJtYWlsdG86JHtwYXJhbS52YWx1ZX1cIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwoXG4gICAgICAgIHBhcmFtLnZhbHVlXG4gICAgICApfTwvYT5gXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc3RhdGljIHVybENlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWVcbiAgICAgID8gYDxhIHRhcmdldD1cIl9ibGFuayBcIiBocmVmPVwiJHtwYXJhbS52YWx1ZX1cIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwoXG4gICAgICAgIHBhcmFtLnZhbHVlXG4gICAgICApfTwvYT5gXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc3RhdGljIGRhdGVUaW1lQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgaWYgKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSB7XG4gICAgICAgIC8vIHJhbmdlIHZhbHVlIGZyb20gc2VhcmNoIGZvcm0gdGFibGVcbiAgICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlLm9wZXJhdG9yID09PVxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICA/IENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuc2Vjb25kVmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgIClcbiAgICAgICAgICA6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgIHBhcmFtLnZhbHVlLFxuICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUodmFsdWUsIGNvbnRleHQsIHBhdHRlcm4pIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJuby12YWx1ZVwiPiR7Y29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5pbnB1dC5udWxsJyl9PC9zcGFuPmA7XG4gICAgfVxuICAgIHJldHVybiBgPHNwYW4gZGF0ZT1cIiR7dmFsdWV9XCI+JHtjb250ZXh0LmRhdGVQaXBlLnRyYW5zZm9ybShcbiAgICAgIHZhbHVlLFxuICAgICAgcGF0dGVyblxuICAgICl9PC9zcGFuPmA7XG4gIH1cblxuICBzdGF0aWMgYm9vbGVhbkNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gYDxwYXRoIGNsYXNzPVwiYmFja2dyb3VuZFwiIGQ9XCJNMTksM0g1QzMuOSwzLDMsMy45LDMsNXYxNGMwLDEuMSwwLjksMiwyLDJoMTRjMS4xLDAsMi0wLjksMi0yVjVDMjEsMy45LDIwLjEsMywxOSwzelwiLz5gO1xuXG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSB0cnVlIHx8IHBhcmFtLnZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgIHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+XG4gICAgICAgICAgICAgPHBvbHlsaW5lIGNsYXNzPVwiY2hlY2ttYXJrXCIgcG9pbnRzPVwiNi4zLDExLjggNy44LDEwLjMgMTAuOCwxMy4zIDE2LjMsNy44IDE3LjgsOS4zIDEwLjgsMTYuMyA2LjMsMTEuOFwiLz5gO1xuICAgIH0gZWxzZSBpZiAocGFyYW0udmFsdWUgPT09IGZhbHNlIHx8IHBhcmFtLnZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICB2YWwgPSBgPHBhdGggY2xhc3M9XCJvdXRsaW5lXCIgZD1cIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCIvPmA7XG4gICAgfVxuICAgIHJldHVybiBgPHN2ZyBjbGFzcz1cImNoZWNrYm94XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke3ZhbH08L3N2Zz5gO1xuICB9XG5cbiAgc3RhdGljIG11bHRpU2VsZWN0Q2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKSA/IHBhcmFtLnZhbHVlIDogW3BhcmFtLnZhbHVlXSkuZm9yRWFjaChcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIHZhbCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodmFsdWUpfTwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgbGlua0NlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSkgPyBwYXJhbS52YWx1ZSA6IFtwYXJhbS52YWx1ZV0pLmZvckVhY2goXG4gICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgICAgICAgIHR5cGVzOiBbcGFyYW0ucmVmZXJlbmNlLnR5cGVdLFxuICAgICAgICAgICAgZmlsdGVyczoge31cbiAgICAgICAgICB9O1xuICAgICAgICAgIHF1ZXJ5LmZpbHRlcnNbcGFyYW0ucmVmZXJlbmNlLmVsZW1lbnRdID0ge1xuICAgICAgICAgICAgbzogJ2VxJyxcbiAgICAgICAgICAgIHYxOiB2YWx1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgbGluayA9IFV0aWxzLmJ1aWxkVXJpKCdyZXN1bHQnLCB7XG4gICAgICAgICAgICBxdWVyeTogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWwgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgaHJlZj1cIiR7bGlua31cIiB0YXJnZXQ9XCJfYmxhbmtcIiBvbmNsaWNrPVwicmV0dXJuIGZhbHNlO1wiPlxuICAgICAgICAgIDxzdmcgZm9jdXNhYmxlPVwiZmFsc2VcIiBjbGFzcz1cInJlZi1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TThcbiAgICAgICAgICAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCI+PC9wYXRoPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYT48c3Bhbj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodmFsdWUpfTwvc3Bhbj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIHJlZmVyZW5jZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdGV4dCA9ICcnO1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW0uZGF0YSA/IHBhcmFtLmRhdGFbcGFyYW0uY29sRGVmLmZpZWxkXSA6ICcnO1xuICAgIGNvbnN0IHR5cGUgPSBwYXJhbS5jb250ZXh0LnN5c3RlbS5nZXRPYmplY3RUeXBlKHBhcmFtLnJlZmVyZW5jZS50eXBlKTtcbiAgICBpZiAoIVV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2YWx1ZSkgJiYgdHlwZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKS5mb3JFYWNoKCh2YWwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSAnb2JqZWN0LycgKyB2YWwgKyAnP3R5cGU9JyArIHBhcmFtLnJlZmVyZW5jZS50eXBlO1xuICAgICAgICBjb25zdCBpY29uVXJsID1cbiAgICAgICAgICBwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0QmFzZVdpdGhDb250ZXh0KHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKSArXG4gICAgICAgICAgJy91aS9pY29uLycgK1xuICAgICAgICAgIHR5cGUuaWNvbklkICtcbiAgICAgICAgICAnLnN2Zyc7XG4gICAgICAgIGxldCB0aXRsZSA9IEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpXG4gICAgICAgICAgPyBwYXJhbS52YWx1ZVtpbmRleF1cbiAgICAgICAgICA6IHBhcmFtLnZhbHVlO1xuXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIG5vdCBhbGxvd2VkIHRvIHNlZSB0aGUgcmVmZXJlbmNlIG9iamVjdCBvciB0aGUgb2JqZWN0IHdhcyBkZWxldGVkLCB3ZSBkb24ndCBzaG93IHRoZSBsaW5rLlxuICAgICAgICB0ZXh0ICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAke1xuICAgICAgICAgICF0aXRsZVxuICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgOiBgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgaHJlZj1cIiR7bGlua31cIiB0YXJnZXQ9XCJfYmxhbmtcIiBvbmNsaWNrPVwicmV0dXJuIGZhbHNlO1wiPlxuICAgICAgICAgIDxzdmcgZm9jdXNhYmxlPVwiZmFsc2VcIiBjbGFzcz1cInJlZi1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TThcbiAgICAgICAgICAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCI+PC9wYXRoPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYT5gXG4gICAgICAgICAgfVxuICAgICAgICA8aW1nIGNsYXNzPVwidHlwZS1pY29uXCIgc3JjPVwiJHtpY29uVXJsfVwiIHRpdGxlPVwiJHt0eXBlLmxhYmVsfVwiPlxuICAgICAgICA8c3Bhbj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodGl0bGUgfHwgdHlwZS5sYWJlbCl9PC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dCB8fCBwYXJhbS52YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBub1ZhbHVlUmVuZGVyZXIocGFyYW0pIHtcbiAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwibm8tdmFsdWVcIj4ke3BhcmFtLmNvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uaW5wdXQubnVsbCcpfTwvc3Bhbj5gO1xuICB9XG5cbn1cbiJdfQ==
|
|
728
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVSxLQUFLLElBQUksT0FBTyxFQUFnRCxNQUFNLHlCQUF5QixDQUFDO0FBQzlILE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUtMLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUViLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7QUFHekYsTUFBTSxPQUFPLFdBQVc7SUFHdEIsSUFBSSxlQUFlO1FBQ2pCLE9BQU87WUFDTCxRQUFRLEVBQUUsUUFBUTtZQUNsQixlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDOUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFB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LENBQUM7Z0JBRWhCLDRHQUE0RztnQkFDNUcsSUFBSSxJQUFJO1VBRU4sQ0FBQyxLQUFLO29CQUNKLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxxQ0FBcUMsSUFBSTs7Ozs7ZUFNN0M7c0NBQzRCLE9BQU8sWUFBWSxJQUFJLENBQUMsS0FBSztnQkFDbkQsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUM7O0FBOVNNLHNCQUFTLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyLCBDb2xEZWYsIFV0aWxzIGFzIEFnVXRpbHMsIENzdkV4cG9ydFBhcmFtcywgUm93Tm9kZSwgQ29sdW1uLCBHcmlkT3B0aW9uc30gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XG4gIGNvbnRleHQ6IGFueTtcblxuICBnZXQgY3N2RXhwb3J0UGFyYW1zKCk6IENzdkV4cG9ydFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVOYW1lOiAnZXhwb3J0JyxcbiAgICAgIGNvbHVtblNlcGFyYXRvcjogdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJyA/ICc7JyA6ICcsJyxcbiAgICAgIHByb2Nlc3NDZWxsQ2FsbGJhY2s6IChwYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxDbGFzcyBhcyBhbnkgfHwgJycpLmluY2x1ZGVzKCdjb2wtbnVtYmVyJylcbiAgICAgICAgICA/IChwYXJhbXMuY29sdW1uLmdldENvbERlZigpLmNlbGxSZW5kZXJlciBhcyBhbnkpKHBhcmFtcykucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcYCArIHRoaXMuY29udGV4dD8ubnVtYmVyUGlwZS5zZXBhcmF0b3IsICdnJyksICcnKSAvLyByZW1vdmVkIGdyb3VwaW5nXG4gICAgICAgICAgOiBwYXJhbXMudmFsdWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBlc2NhcGVIdG1sKHN0cikge1xuICAgIHN0ciA9IHN0ciA/IHN0ciA6ICcnO1xuICAgIGNvbnN0IGVudGl0eU1hcCA9IHtcbiAgICAgICcmJzogJyZhbXA7JyxcbiAgICAgICc8JzogJyZsdDsnLFxuICAgICAgJz4nOiAnJmd0OycsXG4gICAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICAgICdcXCcnOiAnJiMzOTsnLFxuICAgICAgJy8nOiAnJiN4MkY7J1xuICAgIH07XG4gICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2UoL1smPD5cIidcXC9dL2csIHMgPT4gZW50aXR5TWFwW3NdKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZUZvcm1hdHRlcihxbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChxbmFtZSB8fCAnJykucmVwbGFjZShuZXcgUmVnRXhwKCdzeXNvYmplY3QufHN5c2RvY3VtZW50LicpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgcW5hbWVNYXRjaChxbmFtZTogc3RyaW5nLCBxbmFtZTI6IHN0cmluZykge1xuICAgIHJldHVybiBHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihxbmFtZSkgPT09IEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lMik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgdHJhbnNsYXRlLFxuICAgICAgc3lzdGVtLFxuICAgICAgYmFja2VuZCxcbiAgICAgIHJvdXRlcixcbiAgICAgIGZpbGVTaXplUGlwZTogbmV3IEZpbGVTaXplUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgbnVtYmVyUGlwZTogbmV3IExvY2FsZU51bWJlclBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGRhdGVQaXBlOiBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKSxcbiAgICAgIGNyOiBDZWxsUmVuZGVyZXIsXG4gICAgICBiYXNlSHJlZjogRW52aXJvbm1lbnRFbmFpby5pc1dlYkVudmlyb25tZW50KCkgPyB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpIDogJy4vJyxcbiAgICAgIG1pbWV0eXBlZ3JvdXBPcHRzOiBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFMpLm1hcChrID0+IGsudG9Mb3dlckNhc2UoKSksXG4gICAgICB0eXBlT3B0czogW11cbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoXG4gICAgICAodXNlcjogRW9Vc2VyKSA9PlxuICAgICAgICAodGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbiA9XG4gICAgICAgICAgdXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnKVxuICAgICk7XG5cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZTogU2VhcmNoU3RhdGUpID0+IHRoaXMudXBkYXRlQ29udGV4dChBcnJheS5mcm9tKHN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlLmtleXMoKSkpKTtcbiAgfVxuXG4gIC8vIGNvcHkgY29udGVudCBvZiBlaXRoZXIgcm93IG9yIHRhYmxlIGNlbGwgdG8gY2xpcGJvYXJkXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUNlbnRlclZpZXdwb3J0O1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB2aWV3cG9ydC5zY3JvbGxMZWZ0O1xuXG4gICAgY29uc3QgZm9jdXNlZENlbGwgPSBncmlkT3B0aW9ucy5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcbiAgICBjb25zdCByb3dzOiBSb3dOb2RlW10gPSBldmVudC5zaGlmdEtleSA/IGdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkgOiBbZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoZm9jdXNlZENlbGwucm93SW5kZXgpXTtcbiAgICBjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZE9wdGlvbnMuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKS5maWx0ZXIoKGM6IGFueSkgPT4gYy5jb2xJZCAhPT0gJ19fc2VsZWN0aW9uRmllbGQnKSA6IFtmb2N1c2VkQ2VsbC5jb2x1bW5dO1xuICAgIGNvbnN0IGdldENlbGwgPSAoY29sLCByb3cpID0+IGdyaWRPcHRpb25zLmFwaVsnZ3JpZFBhbmVsJ10uZUd1aS5xdWVyeVNlbGVjdG9yKGBkaXZbcm93LWluZGV4PVwiJHtyb3cucm93SW5kZXh9XCJdIFtjb2wtaWQ9XCIke2NvbC5jb2xJZH1cIl1gKTtcbiAgICBjb25zdCB2YWx1ZSA9IChjb2wsIHJvdykgPT4ge1xuICAgICAgZ3JpZE9wdGlvbnMuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoY29sKTtcbiAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgIGlmICghY2VsbCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgY2hpcHMgPSBjZWxsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jaGlwJykgfHwgW107XG4gICAgICBjb25zdCB2YWwgPSBBcnJheS5mcm9tKGNoaXBzLmxlbmd0aCA/IGNoaXBzIDogW2NlbGxdKS5tYXAoKGM6IGFueSkgPT4gKGMgJiYgYy50ZXh0Q29udGVudCAmJiBjLnRleHRDb250ZW50LnRyaW0oKSkgfHwgJycpO1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKSB8fCBncmlkT3B0aW9ucy5hcGkuZ2V0VmFsdWUoY29sLCByb3cpO1xuICAgICAgcmV0dXJuICFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgOiAnJztcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBjb250ZW50ICs9IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gY29sLmdldENvbERlZigpLmhlYWRlck5hbWUpLmpvaW4oJ1x0JykgKyAnXFxuJztcbiAgICBjb250ZW50ICs9IHJvd3MubWFwKChyb3cpID0+IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gdmFsdWUoY29sLCByb3cpKS5qb2luKCdcdCcpKS5qb2luKCdcXG4nKTtcblxuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICByb3dzLm1hcCgocm93KSA9PlxuICAgICAgICAgIGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoY29sLCByb3cpO1xuICAgICAgICAgICAgY2VsbCAmJiBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NvcHktY2VsbCcpO1xuICAgICAgICAgICAgY2VsbCAmJiBzZXRUaW1lb3V0KCgpID0+IGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjb3B5LWNlbGwnKSwgNDAwMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICAvLyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTsgLy8gb25seSBpZiBjbGllbnQgcnVucyBodHRwc1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgY29uc3QgY29weVN1Y2Nlc3MgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHVibGljIG9wZW5MaW5rKHVyaTogc3RyaW5nLCBuZXdUYWIgPSBmYWxzZSkge1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvcmNlIHJlbG9hZCBpbiBjYXNlIG9mIHNhbWUgVVJMXG4gICAgICBjb25zdCBleHRyYXMgPSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLnVybCkgPT09IENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSA/IGAke3VyaS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfXJlbG9hZD10cnVlYCA6ICcnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmkgKyBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleChlbCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5nZXRBdHRyaWJ1dGUoJ3Jvdy1pbmRleCcpXG4gICAgICAgID8gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKSwgMTApXG4gICAgICAgIDogdGhpcy5nZXRSb3dJbmRleChlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZXJMaW5rKGVsLCBwYXJlbnRDbGFzcykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5sb2NhbE5hbWUgPT09ICdhJyAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JvdXRlci1saW5rJylcbiAgICAgICAgPyBlbFxuICAgICAgICA6IHRoaXMuZ2V0Um91dGVyTGluayhlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUm91dGVyTGluayhldmVudDogTW91c2VFdmVudCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoXG4gICAgICBldmVudC50YXJnZXQsXG4gICAgICBwYXJlbnRDbGFzc1xuICAgICkgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgaWYgKGxpbmsgJiYgbGluay5ocmVmKSB7XG4gICAgICB0aGlzLm9wZW5MaW5rKGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGV2ZW50LmN0cmxLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB7Li4udGhpcy5jb250ZXh0LCBjb3VudDogMCwgcm93Q291bnQ6IDB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodHlwZU9wdHM6IHN0cmluZ1tdLCBvcHRpb25zID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwge3R5cGVPcHRzOiAodHlwZU9wdHMgJiYgdHlwZU9wdHMubGVuZ3RoID8gdHlwZU9wdHMgOiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpLm1hcChvID0+IG8ucW5hbWUpKX0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkRlZnMoXG4gICAgZWxlbWVudHM6IGFueVtdLFxuICAgIHNvcnRvcmRlcjogYW55W10gPSBbXSxcbiAgICBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZDogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnR4OiB7cW5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSA9IFtdLFxuICAgIGVuYWJsZVJvd0dyb3VwID0gdHJ1ZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKTogQ29sRGVmW10ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZiA9PlxuICAgICAgdGhpcy5nZXRDb2x1bW5EZWZpbml0aW9uKFxuICAgICAgICBmLFxuICAgICAgICBzb3J0b3JkZXIsXG4gICAgICAgIGdyb3Vwb3JkZXIsXG4gICAgICAgIHBpbm5lZCxcbiAgICAgICAgYWxpZ25tZW50eCxcbiAgICAgICAgZW5hYmxlUm93R3JvdXAsXG4gICAgICAgIGNhY2hlZENvbHVtbnMsXG4gICAgICAgIG1vZGVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHZpc3VhbCBvdXRwdXQgb2YgZm9ybSBlbGVtZW50cyBiYXNlZCBvbiBpdHMgdHlwZSBldGMuIChzZWUgSW5kZXhkYXRhU3VtbWFyeUNvbXBvbmVudCBmb3IgdXNhZ2UgZGV0YWlscylcbiAgICogQHBhcmFtIGVsZW1lbnRzIC0gVGhlIGZvcm0gZWxlbWVudHMgdG8gYmUgcmVuZGVyZWRcbiAgICogQHJldHVybnMgVGhlIHJlbmRlcmVkIEhUTUwgZm9yIHRoZSBnaXZlbiBlbGVtZW50c1xuICAgKi9cbiAgcHVibGljIGdldFJlc29sdmVkRGVmcyhlbGVtZW50czogYW55W10pIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGVsID0+IHtcbiAgICAgIGxldCBjb2xEZWY6IENvbERlZiA9IHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihlbCk7XG4gICAgICBsZXQgdmFsdWUgPSBlbC52YWx1ZTtcbiAgICAgIGxldCBkYXRhID0ge307XG4gICAgICBkYXRhW2NvbERlZi5maWVsZF0gPSB2YWx1ZTtcbiAgICAgIGlmIChlbC5tZXRhKSB7XG4gICAgICAgIGRhdGFbY29sRGVmLmZpZWxkICsgJ19tZXRhJ10gPSBlbC5tZXRhO1xuICAgICAgfVxuICAgICAgLy8gaW52b2tlIHZhbHVlR2V0dGVyIGlmIHByb3ZpZGVkXG4gICAgICBpZiAoY29sRGVmLnZhbHVlR2V0dGVyKSB7XG4gICAgICAgIHZhbHVlID0gKGNvbERlZi52YWx1ZUdldHRlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWZcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBydW4gdGhlIGNlbGwgcmVuZGVyZXIgd2l0aCB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGUgdmFsdWVHZXR0ZXJcbiAgICAgIGlmIChjb2xEZWYuY2VsbFJlbmRlcmVyKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBub2RlOiB7fSxcbiAgICAgICAgICBjb2xEZWY6IGNvbERlZixcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH07XG4gICAgICAgIGVsLl92YWx1ZSA9IChjb2xEZWYuY2VsbFJlbmRlcmVyIGFzIEZ1bmN0aW9uKS5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGVzIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiByZXN1bHQgZmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIHRoZSByZXN1bHQgZmllbGQgKGFzIHJldHJpZXZlZCBmcm9tIC4uL3VzZXIvY29uZmlnL3Jlc3VsdC8qKSB0byBjcmVhdGUgdGhlXG4gICAqIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCBmb3JcbiAgICpcbiAgICogQHBhcmFtIHNvcnRGaWVsZHMgLSBBcnJheSBvZiBmaWVsZHMgdG8gYmUgc29ydGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICByZXN1bHRGaWVsZCxcbiAgICBzb3J0RmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIGdyb3VwRmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZEZpZWxkczogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnRGaWVsZHM6IHtxbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gW10sXG4gICAgZW5hYmxlUm93R3JvdXAgPSBmYWxzZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKSB7XG4gICAgbGV0IGNvbERlZiA9IDxDb2xEZWY+e307XG4gICAgY29sRGVmLmhlYWRlck5hbWUgPSByZXN1bHRGaWVsZC5sYWJlbDtcbiAgICBjb2xEZWYuZmllbGQgPSByZXN1bHRGaWVsZC5oaXRuYW1lIHx8IHJlc3VsdEZpZWxkLm5hbWU7XG4gICAgY29sRGVmLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHBhcmFtcyA9PiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtcy52YWx1ZSk7XG4gICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW1zID0+IHtcbiAgICAgIHJldHVybiBwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEgPyAnJyA6IHBhcmFtcy5kYXRhW2NvbERlZi5maWVsZF07XG4gICAgfTtcbiAgICBjb2xEZWYucmVmRGF0YSA9IHtxbmFtZTogcmVzdWx0RmllbGQucW5hbWUgfHwgJyd9O1xuXG4gICAgLyoqXG4gICAgICogaGVhZGVyQ2xhc3NcbiAgICAgKiBhZGQgc3BlY2lhbCBoZWFkZXIgY2xhc3MgZm9yIGZpZWxkcyBmcm9tIHRoZSBjb250ZXh0Zm9sZGVyXG4gICAgICovXG4gICAgaWYgKHJlc3VsdEZpZWxkLnNlbGVjdGVkZm9yZW5yaWNobWVudCAmJiBtb2RlICE9PSAnQ09NTU9OJykge1xuICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbnRleHRmb2xkZXInO1xuICAgIH1cbiAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZiwgcmVzdWx0RmllbGQpO1xuICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZiwgY29sRGVmLmZpZWxkKTtcblxuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgZGVib3VuY2VNczogODAwLFxuICAgICAgY2xlYXJCdXR0b246IGZhbHNlLFxuICAgICAgbmV3Um93c0FjdGlvbjogJ2tlZXAnLFxuICAgICAgZmlsdGVyT3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGNvbERlZi5maWx0ZXIgPT09ICdhZ1RleHRDb2x1bW5GaWx0ZXInKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBjb2xEZWYucmVmRGF0YS5xbmFtZS5tYXRjaCgvKF5zeXNvYmplY3RcXC58XnN5c2RvY3VtZW50XFwuKSh0aXRsZSR8ZGVzY3JpcHRpb24kKS8pID8gWydlcXVhbHMnXSA6IFtcbiAgICAgICAgJ2NvbnRhaW5zJyxcbiAgICAgICAgJ2VxdWFscycsXG4gICAgICAgICdzdGFydHNXaXRoJyxcbiAgICAgICAgJ2VuZHNXaXRoJ1xuICAgICAgXTtcblxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInIHx8XG4gICAgICBjb2xEZWYuZmlsdGVyID09PSAnYWdEYXRlQ29sdW1uRmlsdGVyJ1xuICAgICkge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAnZXF1YWxzJyxcbiAgICAgICAgJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICdncmVhdGVyVGhhbicsXG4gICAgICAgICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAnaW5SYW5nZSdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gbWltZXR5cGUgZmlsdGVyIHN1cHBvcnRzIG9ubHkgZXF1YWxzIG9wdGlvblxuICAgIGlmIChjb2xEZWYuZmllbGQgPT09ICdtaW1ldHlwZScpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZGVmYXVsdE9wdGlvbiA9ICdlcXVhbHMnO1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gWydlcXVhbHMnXTtcbiAgICB9XG5cbiAgICAvLyBmaWxlc2l6ZSBmaWx0ZXIgc3VwcG9ydHMgb25seSBpbnRlcnZhbCBvcHRpb25zXG4gICAgaWYgKGNvbERlZi5maWVsZCA9PT0gJ2ZpbGVzaXplJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5kZWZhdWx0T3B0aW9uID0gJ2xlc3NUaGFuT3JFcXVhbCc7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgICAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgJ2luUmFuZ2UnXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0RmllbGQuc29ydGFibGUpIHtcbiAgICAgIGNvbERlZi5zb3J0YWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdEZpZWxkLnNlYXJjaGFibGUpIHtcbiAgICAgIGNvbERlZi5zdXBwcmVzc01lbnUgPSB0cnVlO1xuICAgICAgY29sRGVmLmZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzb3J0RmllbGQgPSBzb3J0RmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHNvcnRGaWVsZCkge1xuICAgICAgY29sRGVmLnNvcnQgPSBzb3J0RmllbGQuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZVJvd0dyb3VwKSB7XG4gICAgICBsZXQgZ3JvdXBGaWVsZEluZGV4ID0gZ3JvdXBGaWVsZHMuZmluZEluZGV4KFxuICAgICAgICBmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lXG4gICAgICApO1xuICAgICAgaWYgKH5ncm91cEZpZWxkSW5kZXgpIHtcbiAgICAgICAgY29sRGVmLnJvd0dyb3VwSW5kZXggPSBncm91cEZpZWxkSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBpbm5lZEZpZWxkID0gcGlubmVkRmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKHBpbm5lZEZpZWxkKSB7XG4gICAgICBjb2xEZWYucGlubmVkID0gcGlubmVkRmllbGQucG9zaXRpb24gfHwgdGhpcy5jb250ZXh0LmRlZmF1bHRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgIGNvbERlZi53aWR0aCA9IGNhY2hlZENvbHVtbi53aWR0aDtcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25tZW50RmllbGQgPSBhbGlnbm1lbnRGaWVsZHMuZmluZChmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lKTtcbiAgICBpZiAoYWxpZ25tZW50RmllbGQgJiYgYWxpZ25tZW50RmllbGQudmFsdWUpIHtcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7J2p1c3RpZnktY29udGVudCc6IGFsaWdubWVudEZpZWxkLnZhbHVlfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsnanVzdGlmeS1jb250ZW50JzogcmVzdWx0RmllbGQuYWxpZ25tZW50eCA/IHJlc3VsdEZpZWxkLmFsaWdubWVudHggOiAnJ307XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgdHlwZSBzcGVjaWZpYyBjb2x1bW4gZGVmaW5pdGlvbiBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBjb2xEZWYgLSB0aGUgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0IHRvIGJlIGV4dGVuZGVkIGJ5IHR5cGUgc3BlY2lmaWMgYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gcmVzdWx0RmllbGQgLSBvYmplY3QgZGVmaW5pbmcgdGhlIHJlc3VsdCBmaWVsZFxuICAgKlxuICAgKiBAcmV0dXJucyBlbnJpY2hlZCBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBhZGRDb2xEZWZBdHRyc0J5VHlwZShjb2xEZWY6IENvbERlZiwgcmVzdWx0RmllbGQpIHtcbiAgICBzd2l0Y2ggKHJlc3VsdEZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ1JFRkVSRU5DRSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ3JvdXRlci1saW5rLWNlbGwnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5yZWZlcmVuY2VDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlIHx8IHt9LCBjb2xEZWY6IGNvbERlZn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgIHBhcmFtLm5vZGUuZ3JvdXAgfHwgIXBhcmFtLmRhdGEgPyAnJyA6IHBhcmFtLmRhdGFbY29sRGVmLmZpZWxkXTtcblxuICAgICAgICAgIGNvbnN0IHJlZk1ldGEgPSBwYXJhbSAmJiBwYXJhbS5kYXRhICYmIHBhcmFtLmRhdGEuX3JlZmVyZW5jZXM7XG4gICAgICAgICAgLy8gdXNlIG9iamVjdCB0eXBlIGxhYmVsIHdoZW4gbWV0YSBpcyBtaXNzaW5nIChzZWFyY2ggc3ZjIGRvZXMgbm90IHN1cHBvcnQgbWV0YSlcbiAgICAgICAgICByZXR1cm4gVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKVxuICAgICAgICAgICAgPyAnJyA6IHJlZk1ldGFcbiAgICAgICAgICAgICAgPyByZWZNZXRhW2NvbERlZi5maWVsZF1cbiAgICAgICAgICAgICAgOiB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+IHYudGl0bGUpKHBhcmFtKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdTVFJJTkcnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIHN0cmluZydcbiAgICAgICAgICA6ICdzdHJpbmcnO1xuICAgICAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlDbGFzc2lmaWNhdGlvbihjb2xEZWYsIHJlc3VsdEZpZWxkLmNsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLnJlZmVyZW5jZSkge1xuICAgICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAncm91dGVyLWxpbmstY2VsbCc7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICAgIENlbGxSZW5kZXJlci5saW5rQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNvbXBhcmF0b3IgPSAoYSwgYikgPT4gQWdVdGlscy5kZWZhdWx0Q29tcGFyYXRvcihhLCBiLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdEQVRFVElNRSc6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTUwO1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnRGF0ZUNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgY29tcGFyYXRvcjogdGhpcy5kYXRlQ29tcGFyYXRvcih0aGlzLmNvbnRleHQuZGF0ZVBpcGUpLFxuICAgICAgICAgIHZhbHVlR2V0dGVyOiB0aGlzLmRhdGVGaWx0ZXJWYWx1ZUdldHRlcihjb2xEZWYuZmllbGQpLFxuICAgICAgICAgIHdpdGhUaW1lOiByZXN1bHRGaWVsZC53aXRodGltZSxcbiAgICAgICAgICBpblJhbmdlSW5jbHVzaXZlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQuZmllbGQ7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7bXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PiB2LmRlZmF1bHRyZXByZXNlbnRhdGlvbik7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBjb2Rlc3lzdGVtJ1xuICAgICAgICAgIDogJ2NvZGVzeXN0ZW0nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ05VTUJFUic6IHtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdjb2wtbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbC1oZWFkZXItbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDE1MDtcbiAgICAgICAgY29uc3Qge3NjYWxlLCBncm91cGluZywgcGF0dGVybn0gPSByZXN1bHRGaWVsZDtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge2luUmFuZ2VJbmNsdXNpdmUgOiB0cnVlfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnT3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQucW5hbWU7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7bXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PlxuICAgICAgICAgIHYudGl0bGUgJiYgdi5uYW1lID8gYCR7di50aXRsZX0gKCR7di5uYW1lfSlgIDogYCR7di5pZH1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBvcmdhbml6YXRpb24nXG4gICAgICAgICAgOiAnb3JnYW5pemF0aW9uJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdCT09MRUFOJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ2NvbC1ib29sZWFuJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICBjZWxsSGVpZ2h0OiAzMCxcbiAgICAgICAgICB2YWx1ZXM6IFtmYWxzZSwgdHJ1ZV0sXG4gICAgICAgICAgc3VwcHJlc3NNaW5pRmlsdGVyOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDEwMDtcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9ICgpID0+ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgY2xhc3NpZmljYXRpb24gc3BlY2lmaWMgY29sdW1uIGRlZmluaXRpb24gYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gY29sRGVmIC0gdGhlIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICAgKiBAcGFyYW0gY2xhc3NpZmljYXRpb24gLSB0aGUgY2xhc3NpZmljYXRpb24gdG8gZXZhbHVhdGVcbiAgICpcbiAgICogQHJldHVybnMgZW5yaWNoZWQgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGFkZENvbERlZkF0dHJzQnlDbGFzc2lmaWNhdGlvbihjb2xEZWY6IENvbERlZiwgY2xhc3NpZmljYXRpb24pIHtcbiAgICBzd2l0Y2ggKGNsYXNzaWZpY2F0aW9uKSB7XG4gICAgICBjYXNlICdlbWFpbCc6IHtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5lbWFpbENlbGxSZW5kZXJlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd1cmwnOiB7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIudXJsQ2VsbFJlbmRlcmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ29sRGVmQXR0cnNCeUZpZWxkKGNvbERlZjogQ29sRGVmLCByZXN1bHRGaWVsZE5hbWUpIHtcbiAgICBzd2l0Y2ggKHJlc3VsdEZpZWxkTmFtZSkge1xuICAgICAgY2FzZSAndHlwZSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdMaXN0RmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci50eXBlQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYud2lkdGggPSA4MDtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdyZXMtaWNvJztcbiAgICAgICAgY29sRGVmLmdldFF1aWNrRmlsdGVyVGV4dCA9ICgpID0+ICcnO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci50eXBlQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC50eXBlT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21pbWV0eXBlZ3JvdXAnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDEwMTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC5taW1ldHlwZWdyb3VwT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcnNpb24nOiB7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ZpbGVzaXplJzoge1xuICAgICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29sLWhlYWRlci1maWxlc2l6ZSc7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSBGaWxlc2l6ZUZpbHRlcjtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5maWxlc2l6ZUNlbGxSZW5kZXJlclxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9tQ29udGV4dChmbmMsIG1peGluPykge1xuICAgIHJldHVybiBwYXJhbSA9PiB7XG4gICAgICByZXR1cm4gZm5jKE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7Y29udGV4dDogdGhpcy5jb250ZXh0fSwgbWl4aW4pKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG1ldGFWYWx1ZUdldHRlcih0aXRsZUZuYzogRnVuY3Rpb24sIG1hcEZuYzogRnVuY3Rpb24gPSB2ID0+IHYpIHtcbiAgICByZXR1cm4gcGFyYW1zID0+IHtcbiAgICAgIC8vIGRhdGEgY291bGQgYmUgZW1wdHkgb24gZmlyc3QgcmVuZGVyaW5nIGEgY2VsbCB3aGlsZSBpbmZpbml0ZSBzY3JvbGxpbmdcbiAgICAgIGlmIChwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvLyB0b2RvOiBzdXBlciBob3RmaXggLSBDT09MLTg5ODkgLSBzb2x2ZXMgcHJvYmxlbSB3aXRoIHJlc29sdmluZyBvZiBPUkdBTklaQVRJT04gdmFsdWUgKHZpYSBxbmFtZSlcbiAgICAgIGNvbnN0IGZpZWxkTWV0YSA9IHBhcmFtcy5jb2xEZWYuZmllbGQgKyAnX21ldGEnO1xuICAgICAgY29uc3QgdmFsdWUgPSAhcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoZmllbGRNZXRhKVxuICAgICAgICA/IG1hcEZuYyhcbiAgICAgICAgICAocGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5maWVsZF0gIT09IHVuZGVmaW5lZCkgPyBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSA6XG4gICAgICAgICAgcGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5yZWZEYXRhLnFuYW1lXVxuICAgICAgICApXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShwYXJhbXMuZGF0YVtmaWVsZE1ldGFdKVxuICAgICAgICAgID8gcGFyYW1zLmRhdGFbZmllbGRNZXRhXS5tYXAodiA9PiB0aXRsZUZuYyh2IHx8IHt9KSlcbiAgICAgICAgICA6IHRpdGxlRm5jKHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0gfHwge30pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF0ZUNvbXBhcmF0b3IoZGF0ZVBpcGUpIHtcbiAgICByZXR1cm4gKGE6IERhdGUsIGIpID0+IHtcbiAgICAgIGlmICghYiB8fCAhYi52YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGIuZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IF9kYXRlID0gIWIuYWN0aXZlUmFuZ2UgPyBiLmZpbHRlci5kYXRlRnJvbSA6IGIuZmlsdGVyLmRhdGVUbztcbiAgICAgICAgYi5hY3RpdmVSYW5nZSA9IGIuZmlsdGVyLnR5cGUgPT09IFNpbXBsZUZpbHRlci5JTl9SQU5HRTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYi5maWx0ZXIud2l0aFRpbWUgPyAxNiA6IDEwO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgQWdVdGlscy5kZWZhdWx0Q29tcGFyYXRvcihcbiAgICAgICAgICAgIF9kYXRlICYmIF9kYXRlLnNsaWNlKDAsIGxlbmd0aCksXG4gICAgICAgICAgICBiLnZhbHVlLnNsaWNlKDAsIGxlbmd0aClcbiAgICAgICAgICApICogLTFcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGUgPSBiLmxlbmd0aCA9PT0gMTAgPyBiIDogZGF0ZVBpcGUudHJhbnNmb3JtKGIsICd5eXl5LU1NLWRkJyk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBBZ1V0aWxzLmRlZmF1bHRDb21wYXJhdG9yKGRhdGVQaXBlLnRyYW5zZm9ybShhLCAneXl5eS1NTS1kZCcpLCBkYXRlKSAqXG4gICAgICAgIC0xXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF0ZUZpbHRlclZhbHVlR2V0dGVyKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9kZSA9PiB7XG4gICAgICBsZXQgX2ZpbHRlciA9IG5vZGUuZ3JpZE9wdGlvbnNXcmFwcGVyLmdyaWRPcHRpb25zLmFwaS5nZXRGaWx0ZXJJbnN0YW5jZShcbiAgICAgICAgZmllbGRcbiAgICAgICk7XG4gICAgICBsZXQgdmFsdWUgPSBub2RlLmRhdGFbZmllbGRdO1xuICAgICAgcmV0dXJuIHtmaWx0ZXI6IF9maWx0ZXJbJ19maWx0ZXJNb2RlbCddLCB2YWx1ZX07XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2VsbFJlbmRlcmVyIHtcblxuICBzdGF0aWMgc2l0dWF0aW9uID0gJyc7XG5cbiAgc3RhdGljIHdpbmRvd1VSSSh1cmk6IGFueSkge1xuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ15cXC98XlxcXFxcXFxcJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyByZW5kZXIodHlwZTogc3RyaW5nLCBwYXJhbTogYW55LCBuZXdQYXJhbT86IGFueSkge1xuICAgIHJldHVybiBDZWxsUmVuZGVyZXJbdHlwZSArICdDZWxsUmVuZGVyZXInXShcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCBuZXdQYXJhbSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGZpbGVzaXplQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZSA/IHBhcmFtLmNvbnRleHQuZmlsZVNpemVQaXBlLnRyYW5zZm9ybShwYXJhbS52YWx1ZSkgOiAnJztcbiAgfVxuXG4gIHN0YXRpYyBudW1iZXJDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtLnZhbHVlIHx8IHBhcmFtLnZhbHVlID09PSAwKSB7XG4gICAgICBpZiAocGFyYW0udmFsdWUub3BlcmF0b3IpIHtcbiAgICAgICAgLy8gcmFuZ2UgdmFsdWUgZnJvbSBzZWFyY2ggZm9ybSB0YWJsZVxuICAgICAgICByZXR1cm4gcGFyYW0udmFsdWUub3BlcmF0b3IgPT09XG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxuICAgICAgICAgID8gQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgICkgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5zZWNvbmRWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgIClcbiAgICAgICAgICA6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgIHBhcmFtLnZhbHVlLFxuICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICBwYXJhbS5zY2FsZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgIHZhbHVlLFxuICAgIGNvbnRleHQsXG4gICAgZ3JvdXBpbmc/LFxuICAgIHBhdHRlcm4/LFxuICAgIHNjYWxlP1xuICApIHtcbiAgICByZXR1cm4gY29udGV4dC5udW1iZXJQaXBlLnRyYW5zZm9ybShcbiAgICAgIHZhbHVlLFxuICAgICAgZ3JvdXBpbmcsXG4gICAgICBwYXR0ZXJuLFxuICAgICAgc2NhbGVcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIHN0cmluZ0NlbGxyZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gR3JpZFNlcnZpY2UuZXNjYXBlSHRtbChwYXJhbS52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgdHlwZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICBsZXQgb2JqZWN0VHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0udmFsdWUpO1xuICAgICAgaWYgKCFvYmplY3RUeXBlKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLmljb25DZWxsUmVuZGVyZXIoXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7dmFsdWU6IG9iamVjdFR5cGV9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBpY29uQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUgJiYgKHBhcmFtLnZhbHVlLnVybCB8fCBwYXJhbS52YWx1ZS5pY29uSWQpKSB7XG4gICAgICBsZXQgaWNvblVybCA9IHBhcmFtLnZhbHVlLnVybFxuICAgICAgICA/IHBhcmFtLmNvbnRleHQuYmFzZUhyZWYgKyBwYXJhbS52YWx1ZS51cmxcbiAgICAgICAgOiBwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0QmFzZVdpdGhDb250ZXh0KHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKSArXG4gICAgICAgICcvdWkvaWNvbi8nICtcbiAgICAgICAgcGFyYW0udmFsdWUuaWNvbklkICtcbiAgICAgICAgJy5zdmcnO1xuICAgICAgbGV0IGxhYmVsID0gcGFyYW0udmFsdWUubGFiZWw7XG4gICAgICB2YWwgPSBgPGltZyBjbGFzcz1cIm9iamVjdC10eXBlXCIgc3JjPVwiJHtpY29uVXJsfVwiIHRpdGxlPVwiJHtsYWJlbH1cIj48c3BhbiBjbGFzcz1cIm9iamVjdC10eXBlLWxhYmVsXCI+JHtsYWJlbH08L3NwYW4+YDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBlbWFpbENlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWVcbiAgICAgID8gYDxhIGhyZWY9XCJtYWlsdG86JHtwYXJhbS52YWx1ZX1cIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwoXG4gICAgICAgIHBhcmFtLnZhbHVlXG4gICAgICApfTwvYT5gXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc3RhdGljIHVybENlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWVcbiAgICAgID8gYDxhIHRhcmdldD1cIl9ibGFuayBcIiBocmVmPVwiJHtwYXJhbS52YWx1ZX1cIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwoXG4gICAgICAgIHBhcmFtLnZhbHVlXG4gICAgICApfTwvYT5gXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc3RhdGljIGRhdGVUaW1lQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgaWYgKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSB7XG4gICAgICAgIC8vIHJhbmdlIHZhbHVlIGZyb20gc2VhcmNoIGZvcm0gdGFibGVcbiAgICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlLm9wZXJhdG9yID09PVxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICA/IENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuc2Vjb25kVmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgIClcbiAgICAgICAgICA6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgIHBhcmFtLnZhbHVlLFxuICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUodmFsdWUsIGNvbnRleHQsIHBhdHRlcm4pIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJuby12YWx1ZVwiPiR7Y29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5pbnB1dC5udWxsJyl9PC9zcGFuPmA7XG4gICAgfVxuICAgIHJldHVybiBgPHNwYW4gZGF0ZT1cIiR7dmFsdWV9XCI+JHtjb250ZXh0LmRhdGVQaXBlLnRyYW5zZm9ybShcbiAgICAgIHZhbHVlLFxuICAgICAgcGF0dGVyblxuICAgICl9PC9zcGFuPmA7XG4gIH1cblxuICBzdGF0aWMgYm9vbGVhbkNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gYDxwYXRoIGNsYXNzPVwib3V0bGluZVwiIGQ9XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTSA1LDE5IEwgMTksNVwiIHN0cm9rZT1cInJnYmEoMCwgMCwgMCwgMC41NClcIiBzdHJva2Utd2lkdGg9XCIyXCIvPmA7XG5cbiAgICBpZiAocGFyYW0udmFsdWUgPT09IHRydWUgfHwgcGFyYW0udmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgdmFsID0gYDxwYXRoIGNsYXNzPVwib3V0bGluZVwiIGQ9XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwiLz5cbiAgICAgICAgICAgICA8cG9seWxpbmUgY2xhc3M9XCJjaGVja21hcmtcIiBwb2ludHM9XCI2LjMsMTEuOCA3LjgsMTAuMyAxMC44LDEzLjMgMTYuMyw3LjggMTcuOCw5LjMgMTAuOCwxNi4zIDYuMywxMS44XCIvPmA7XG4gICAgfSBlbHNlIGlmIChwYXJhbS52YWx1ZSA9PT0gZmFsc2UgfHwgcGFyYW0udmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+YDtcbiAgICB9XG4gICAgcmV0dXJuIGA8c3ZnIGNsYXNzPVwiY2hlY2tib3hcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7dmFsfTwvc3ZnPmA7XG4gIH1cblxuICBzdGF0aWMgbXVsdGlTZWxlY3RDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpID8gcGFyYW0udmFsdWUgOiBbcGFyYW0udmFsdWVdKS5mb3JFYWNoKFxuICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgdmFsICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh2YWx1ZSl9PC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyBsaW5rQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKSA/IHBhcmFtLnZhbHVlIDogW3BhcmFtLnZhbHVlXSkuZm9yRWFjaChcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgICAgdHlwZXM6IFtwYXJhbS5yZWZlcmVuY2UudHlwZV0sXG4gICAgICAgICAgICBmaWx0ZXJzOiB7fVxuICAgICAgICAgIH07XG4gICAgICAgICAgcXVlcnkuZmlsdGVyc1twYXJhbS5yZWZlcmVuY2UuZWxlbWVudF0gPSB7XG4gICAgICAgICAgICBvOiAnZXEnLFxuICAgICAgICAgICAgdjE6IHZhbHVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBsaW5rID0gVXRpbHMuYnVpbGRVcmkoJ3Jlc3VsdCcsIHtcbiAgICAgICAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOFxuICAgICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9hPjxzcGFuPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh2YWx1ZSl9PC9zcGFuPjwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgcmVmZXJlbmNlQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbS5kYXRhID8gcGFyYW0uZGF0YVtwYXJhbS5jb2xEZWYuZmllbGRdIDogJyc7XG4gICAgY29uc3QgdHlwZSA9IHBhcmFtLmNvbnRleHQuc3lzdGVtLmdldE9iamVjdFR5cGUocGFyYW0ucmVmZXJlbmNlLnR5cGUpO1xuICAgIGlmICghVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKSAmJiB0eXBlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pLmZvckVhY2goKHZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGluayA9ICdvYmplY3QvJyArIHZhbCArICc/dHlwZT0nICsgcGFyYW0ucmVmZXJlbmNlLnR5cGU7XG4gICAgICAgIGNvbnN0IGljb25VcmwgPVxuICAgICAgICAgIHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQocGFyYW0uY29udGV4dC5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICtcbiAgICAgICAgICAnL3VpL2ljb24vJyArXG4gICAgICAgICAgdHlwZS5pY29uSWQgK1xuICAgICAgICAgICcuc3ZnJztcbiAgICAgICAgbGV0IHRpdGxlID0gQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSlcbiAgICAgICAgICA/IHBhcmFtLnZhbHVlW2luZGV4XVxuICAgICAgICAgIDogcGFyYW0udmFsdWU7XG5cbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gc2VlIHRoZSByZWZlcmVuY2Ugb2JqZWN0IG9yIHRoZSBvYmplY3Qgd2FzIGRlbGV0ZWQsIHdlIGRvbid0IHNob3cgdGhlIGxpbmsuXG4gICAgICAgIHRleHQgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICR7XG4gICAgICAgICAgIXRpdGxlXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6IGA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOFxuICAgICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9hPmBcbiAgICAgICAgICB9XG4gICAgICAgIDxpbWcgY2xhc3M9XCJ0eXBlLWljb25cIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke3R5cGUubGFiZWx9XCI+XG4gICAgICAgIDxzcGFuPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbCh0aXRsZSB8fCB0eXBlLmxhYmVsKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0IHx8IHBhcmFtLnZhbHVlO1xuICB9XG5cbiAgc3RhdGljIG5vVmFsdWVSZW5kZXJlcihwYXJhbSkge1xuICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJuby12YWx1ZVwiPiR7cGFyYW0uY29udGV4dC50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5pbnB1dC5udWxsJyl9PC9zcGFuPmA7XG4gIH1cblxufVxuIl19
|
|
@@ -108,6 +108,7 @@ export class PluginsService {
|
|
|
108
108
|
},
|
|
109
109
|
translate: (key, data) => this.translate.instant(key, data),
|
|
110
110
|
encodeFileName: (filename) => this.encodeFileName(filename),
|
|
111
|
+
decodeHtmlCharCodes: (filename) => this.decodeHtmlCharCodes(filename),
|
|
111
112
|
notifier: {
|
|
112
113
|
success: (text, title) => this.notifications.success(title, text),
|
|
113
114
|
error: (text, title) => this.notifications.error(title, text),
|
|
@@ -189,6 +190,9 @@ export class PluginsService {
|
|
|
189
190
|
encodeFileName(filename) {
|
|
190
191
|
return Utils.encodeFileName(filename);
|
|
191
192
|
}
|
|
193
|
+
decodeHtmlCharCodes(str) {
|
|
194
|
+
return str.replace(/(&#(\d+);)/g, (match, capture, charCode) => String.fromCharCode(charCode));
|
|
195
|
+
}
|
|
192
196
|
getConfig() {
|
|
193
197
|
return {
|
|
194
198
|
serviceBase: this.backend.getServiceBase()
|
|
@@ -251,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
251
255
|
providedIn: 'root'
|
|
252
256
|
}]
|
|
253
257
|
}], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i1.NotificationsService }, { type: i1.ClipboardService }, { type: i1.Logger }, { type: i1.TranslateService }, { type: i1.DmsService }, { type: i2.Router }, { type: i3.AgentService }, { type: i1.EventService }, { type: i1.UserService }, { type: i0.ApplicationRef }, { type: i0.NgZone }]; } });
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDOzs7OztBQU10QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFJN0MsTUFBTSxPQUFPLGNBQWM7SUFZekIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBOEIsRUFBRSxNQUFlLEVBQUUsSUFBVTtRQUM5RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDM0MsQ0FBQyxDQUFDLFdBQVcsR0FBRyx5QkFBeUI7WUFDekMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUk7WUFDRixPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEg7UUFBQyxPQUFNLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTztTQUNSO0lBQ0wsQ0FBQztJQUVELFlBQW9CLE9BQXVCLEVBQ2pDLGFBQW1DLEVBQ25DLFNBQTJCLEVBQzNCLE1BQWMsRUFDZixTQUEyQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsTUFBc0IsRUFDdEIsTUFBYztRQVhKLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTVDaEIsZ0JBQVcsR0FBRztZQUNwQixJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsV0FBVyxFQUFFLDBCQUEwQjtZQUN2QyxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLGdCQUFnQixFQUFFLCtCQUErQjtZQUNqRCxRQUFRLEVBQUUsMEJBQTBCO1NBQ3JDLENBQUM7UUF1Q0EsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFekIsSUFBSSxDQUFDLFdBQVc7YUFDYixLQUFLO2FBQ0wsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQ0FBZ0M7SUFFekIsTUFBTTtRQUNYLE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNWLENBQUM7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNO2FBQ3ZCO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLGNBQWMsRUFBRSxVQUFVO2dCQUMxQixFQUFFLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLEVBQUUsQ0FBQyxJQUFZLEVBQUUsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDcEc7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDckM7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7Z0JBQ3RFLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztnQkFDekQsZUFBZSxFQUFFLENBQUMsVUFBdUIsRUFBRSxTQUdqQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO2FBQ25FO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO2dCQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO2dCQUN2RSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztnQkFDekQsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN0RTtZQUNELE1BQU0sRUFBRTtnQkFDTixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUM1QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDMUgsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDaEosVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxDQUFDO2FBQzVGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2dCQUNoRixFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO2dCQUNwRixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxNQUFXLE1BQU0sRUFBRSxFQUFFO29CQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLENBQUMsQ0FBQyxFQUFFO3dCQUNOLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbEM7b0JBQ0QsQ0FBQyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztnQkFDM0QsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztnQkFDM0QsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7b0JBQ2pFLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7b0JBQzdELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7aUJBQ2xFO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLENBQUMsUUFBcUIsRUFBRSxNQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTthQUNwQztZQUNELFFBQVE7WUFDUixLQUFLLEVBQUU7Z0JBQ0wsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDbEQsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQ3RFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVzthQUN6QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBR00sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtnQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSTtRQUVwQyxRQUFRLE1BQU0sRUFBRTtZQUNkLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2dCQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2lCQUNwRDtxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM3RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDeEU7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE9BQXFCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLElBQUksRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdFLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsT0FBcUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFTSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE9BQXFCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE9BQXFCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQVE7UUFDNUIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUUxQyw2RUFBNkU7WUFDN0UsNERBQTREO1lBQzVELDBDQUEwQztZQUMxQyxxREFBcUQ7WUFDckQsc0NBQXNDO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSTtRQUUzQixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqSSxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLE9BQU8sQ0FBQyx1QkFBdUIsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7YUFDcEUsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFO2dCQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDdEM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU87UUFFNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7YUFDM0QsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7OzJHQXJRVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEVvVXNlciwgTG9nZ2VyLCBOb3RpZmljYXRpb25zU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIENsaXBib2FyZFNlcnZpY2UsXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcbiAgVHJhbnNsYXRlU2VydmljZSwgSHR0cE9wdGlvbnMsIEVuYWlvRXZlbnRcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHsgYXBpOiBhbnk7IH1cbn1cblxuZXhwb3J0IGNvbnN0IFVORE9DS19XSU5ET1dfTkFNRSA9ICdlb1ZpZXdlcic7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5zU2VydmljZSB7XG5cbiAgcHJpdmF0ZSB1c2VyOiBFb1VzZXI7XG4gIHByaXZhdGUgYWdlbnRBY3Rpb24gPSB7XG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcbiAgICBNQUlMOiAnZW8uYWdlbnQuYWN0aW9uLm1haWwnLFxuICAgIE1BSUxfQVNfUERGOiAnZW8uYWdlbnQuYWN0aW9uLm1haWwtcGRmJyxcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcbiAgICBDTElQQk9BUkRfQVNfUERGOiAnZW8uYWdlbnQuYWN0aW9uLmNsaXBib2FyZC1wZGYnLFxuICAgIEVYVEVSTkFMOiAnZW8uYWdlbnQuYWN0aW9uLmV4dGVybmFsJ1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgY3VycmVudFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xuICB9XG5cbiAgcHVibGljIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBpKCk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlGdW5jdGlvbih2YWx1ZTogc3RyaW5nIHwgRnVuY3Rpb24gfCBhbnksIHBhcmFtcz86IHN0cmluZywgYXJncz86IGFueSkge1xuICAgIGNvbnN0IGZuYyA9IHZhbHVlPy50b1N0cmluZygpLnRyaW0oKTtcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xuICAgIGNvbnN0IGYgPSBmbmMubWF0Y2goL15mdW5jdGlvbnxeXFwoLipcXClcXHMqPT4vKVxuICAgICAgPyBgcmV0dXJuICgke2ZuY30pLmFwcGx5KHRoaXMsYXJndW1lbnRzKWBcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXG4gICAgICA/IGByZXR1cm4gJyR7Zm5jfSdgXG4gICAgICA6IGByZXR1cm4gJHtmbmN9YDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb24oLi4uKHBhcmFtcyB8fCAnYXBpJykuc3BsaXQoJywnKS5tYXAoKGEpID0+IGEudHJpbSgpKSwgZikuYXBwbHkodGhpcy5hcGksIGFyZ3MgfHwgW3RoaXMuYXBpXSk7XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpcGJvYXJkOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRtc1NlcnZpY2U6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcblxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcblxuICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgIC51c2VyJFxuICAgICAgLnN1YnNjcmliZSgodXNlcikgPT4gdGhpcy51c2VyID0gdXNlcik7XG4gIH1cblxuICAvLyB0b2RvOiBjcmVhdGUgaW5yZWZhY2UgZm9yIEFQSVxuXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGV0ZWN0Q2hhbmdlczogKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9LFxuICAgICAgcm91dGVyOiB7XG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5yb3V0ZXJcbiAgICAgIH0sXG4gICAgICBldmVudHM6IHtcbiAgICAgICAgZW5haW9FdmVudFR5cGU6IEVuYWlvRXZlbnQsXG4gICAgICAgIG9uOiAodHlwZTogc3RyaW5nKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2Uub24odHlwZSkpLFxuICAgICAgICB0cmlnZ2VyOiAodHlwZTogc3RyaW5nLCBkYXRhPzogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcih0eXBlLCBkYXRhKSlcbiAgICAgIH0sXG4gICAgICBzZXNzaW9uOiB7XG4gICAgICAgIGdldFVzZXI6ICgpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKVxuICAgICAgfSxcbiAgICAgIGRtczoge1xuICAgICAgICBnZXRPYmplY3Q6IChpZCwgdHlwZSwgdmVyc2lvbikgPT4gdGhpcy5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24pLFxuICAgICAgICBnZXRSZXN1bHQ6IChmaWVsZHMsIHR5cGUpID0+IHRoaXMuZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSksXG4gICAgICAgIGRvd25sb2FkQ29udGVudDogKGRtc09iamVjdHM6IERtc09iamVjdFtdLCByZW5kaXRpb24/OiAnUERGJ1xuICAgICAgICAgIHwgJ1RJRkYnXG4gICAgICAgICAgfCAnVEVYVCdcbiAgICAgICAgICB8ICdKUEVHJykgPT4gdGhpcy5iYWNrZW5kLmRvd25sb2FkQ29udGVudChkbXNPYmplY3RzLCByZW5kaXRpb24pXG4gICAgICB9LFxuICAgICAgaHR0cDoge1xuICAgICAgICBnZXQ6ICh1cmksIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMuZ2V0KHVyaSwgYmFzZSwgb3B0aW9ucyksXG4gICAgICAgIHBvc3Q6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucG9zdCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBkZWw6ICh1cmksIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMuZGVsKHVyaSwgYmFzZSwgb3B0aW9ucyksXG4gICAgICAgIHB1dDogKHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5wdXQodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBnZXQ6ICgpID0+IHRoaXMuZ2V0Q29uZmlnKClcbiAgICAgIH0sXG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIHZpZXdlcjogKCkgPT4gd2luZG93W1VORE9DS19XSU5ET1dfTkFNRV0gfHwgKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdlby1tZWRpYSBpZnJhbWVbc3JjXScpIHx8IHt9KVsnY29udGVudFdpbmRvdyddLFxuICAgICAgICB0cmlnZ2VyRXJyb3I6IChlcnIsIHdpbiwgcGFyYW1ldGVycykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJywgeyBlcnIsIHdpbiwgcGFyYW1ldGVycyB9KSksXG4gICAgICAgIGNhdGNoRXJyb3I6ICgpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InKSlcbiAgICAgIH0sXG4gICAgICB1dGlsOiB7XG4gICAgICAgICQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3RvcnMpLFxuICAgICAgICAkJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycyksXG4gICAgICAgIHN0eWxlczogKHN0eWxlcywgaWQgPSAnX19zdHlsZXMnLCB3aW46IGFueSA9IHdpbmRvdykgPT4ge1xuICAgICAgICAgIGxldCBzID0gd2luLmRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignIycgKyBpZCk7XG4gICAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICBzID0gd2luLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgICAgICAgICB3aW4uZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcy5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogKGtleSwgZGF0YSkgPT4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXksIGRhdGEpLFxuICAgICAgICBlbmNvZGVGaWxlTmFtZTogKGZpbGVuYW1lKSA9PiB0aGlzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSxcbiAgICAgICAgbm90aWZpZXI6IHtcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxuICAgICAgICAgIGluZm86ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmluZm8odGl0bGUsIHRleHQpLFxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjbGlwYm9hcmQ6IHtcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxuICAgICAgICBnZXQ6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmdldCgpLFxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxuICAgICAgfSxcbiAgICAgIC8vIEFnZW50XG4gICAgICBhZ2VudDoge1xuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcbiAgICAgICAgZXhlY3V0ZUFjdGlvbjogKGFjdGlvbiwgYXJncykgPT4gdGhpcy5leGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG5cbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LlVOQVZBSUxBQkxFKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxuICAgICAgICBpZiAoIWFyZ3MuZXhlY3V0YWJsZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGaWVsZCBhcmdzLmFyZ3MgbXVzdCBiZSBlbXB0eSBvciBhcnJheS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTF9BU19QREY6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk9QRU46XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucyA/IHJlcyA6IHsgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiByZXMuYm9keSB9O1xuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsKHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXG5cbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XG4gICAgICAvLyBhZnRlciBzcGVha2luZyB0byBBbmRyZWFzIGFsc28gcmVtb3ZlZCBmcm9tIGRvY3VtZW50YXRpb25cbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcbiAgICAgIC8vIHRoZW1lQmFzZTogJGVvQ29uZmlnLmdldFRoZW1lQmFzZSgpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSk6IFByb21pc2U8RG1zT2JqZWN0W10+IHtcblxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNPYmplY3RzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBETVMgb2JqZWN0IGZyb20gdGhlIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gW3R5cGVdIC0gVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBzZWxlY3RlZCBETVMtT2JqZWN0LiBXaWxsIGltcHJvdmUgcGVyZm9ybWFuY2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyBnZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudD8pOiBQcm9taXNlPERtc09iamVjdD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgfVxufVxuIl19
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDOzs7OztBQU10QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFJN0MsTUFBTSxPQUFPLGNBQWM7SUFZekIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBOEIsRUFBRSxNQUFlLEVBQUUsSUFBVTtRQUM5RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDM0MsQ0FBQyxDQUFDLFdBQVcsR0FBRyx5QkFBeUI7WUFDekMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUk7WUFDRixPQUFPLElBQUks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O2FBQ3BFLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFPO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQzNELFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzsyR0ExUVUsY0FBYzsrR0FBZCxjQUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FnZW50U2VydmljZX0gZnJvbSAnLi4vYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxuICBEbXNTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBEbXNPYmplY3QsIENsaXBib2FyZEFjdGlvbiwgVXRpbHMsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsIEh0dHBPcHRpb25zLCBFbmFpb0V2ZW50XG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IGFwaTogYW55OyB9XG59XG5cbmV4cG9ydCBjb25zdCBVTkRPQ0tfV0lORE9XX05BTUUgPSAnZW9WaWV3ZXInO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgdXNlcjogRW9Vc2VyO1xuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xuICAgIE9QRU46ICdlby5hZ2VudC5hY3Rpb24ub3BlbicsXG4gICAgTUFJTDogJ2VvLmFnZW50LmFjdGlvbi5tYWlsJyxcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXG4gICAgQ0xJUEJPQVJEOiAnZW8uYWdlbnQuYWN0aW9uLmNsaXBib2FyZCcsXG4gICAgQ0xJUEJPQVJEX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5jbGlwYm9hcmQtcGRmJyxcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFwaSgpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RnVuY3Rpb24odmFsdWU6IHN0cmluZyB8IEZ1bmN0aW9uIHwgYW55LCBwYXJhbXM/OiBzdHJpbmcsIGFyZ3M/OiBhbnkpIHtcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XG4gICAgaWYgKCFmbmMpIHJldHVybjtcbiAgICBjb25zdCBmID0gZm5jLm1hdGNoKC9eZnVuY3Rpb258XlxcKC4qXFwpXFxzKj0+LylcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXG4gICAgICA6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWZuYy5zdGFydHNXaXRoKFwiJ1wiKVxuICAgICAgPyBgcmV0dXJuICcke2ZuY30nYFxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKC4uLihwYXJhbXMgfHwgJ2FwaScpLnNwbGl0KCcsJykubWFwKChhKSA9PiBhLnRyaW0oKSksIGYpLmFwcGx5KHRoaXMuYXBpLCBhcmdzIHx8IFt0aGlzLmFwaV0pO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG5cbiAgICB3aW5kb3dbJ2FwaSddID0gdGhpcy5hcGk7XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAudXNlciRcbiAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHRoaXMudXNlciA9IHVzZXIpO1xuICB9XG5cbiAgLy8gdG9kbzogY3JlYXRlIGlucmVmYWNlIGZvciBBUElcblxuICBwdWJsaWMgZ2V0QXBpKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfSxcbiAgICAgIHJvdXRlcjoge1xuICAgICAgICBnZXQ6ICgpID0+IHRoaXMucm91dGVyXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGVuYWlvRXZlbnRUeXBlOiBFbmFpb0V2ZW50LFxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcbiAgICAgIH0sXG4gICAgICBkbXM6IHtcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcbiAgICAgICAgZ2V0UmVzdWx0OiAoZmllbGRzLCB0eXBlKSA9PiB0aGlzLmdldFJlc3VsdChmaWVsZHMsIHR5cGUpLFxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcbiAgICAgICAgICB8ICdUSUZGJ1xuICAgICAgICAgIHwgJ1RFWFQnXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxuICAgICAgfSxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgZGVsOiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmRlbCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXG4gICAgICB9LFxuICAgICAgY29udGVudDoge1xuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxuICAgICAgICBjYXRjaEVycm9yOiAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2Uub24oVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJykpXG4gICAgICB9LFxuICAgICAgdXRpbDoge1xuICAgICAgICAkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzKSxcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcbiAgICAgICAgICBsZXQgcyA9IHdpbi5kb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJyMnICsgaWQpO1xuICAgICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcbiAgICAgICAgZW5jb2RlRmlsZU5hbWU6IChmaWxlbmFtZSkgPT4gdGhpcy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSksXG4gICAgICAgIGRlY29kZUh0bWxDaGFyQ29kZXM6IChmaWxlbmFtZSkgPT4gdGhpcy5kZWNvZGVIdG1sQ2hhckNvZGVzKGZpbGVuYW1lKSxcbiAgICAgICAgbm90aWZpZXI6IHtcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxuICAgICAgICAgIGluZm86ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmluZm8odGl0bGUsIHRleHQpLFxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjbGlwYm9hcmQ6IHtcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxuICAgICAgICBnZXQ6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmdldCgpLFxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxuICAgICAgfSxcbiAgICAgIC8vIEFnZW50XG4gICAgICBhZ2VudDoge1xuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcbiAgICAgICAgZXhlY3V0ZUFjdGlvbjogKGFjdGlvbiwgYXJncykgPT4gdGhpcy5leGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG5cbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LlVOQVZBSUxBQkxFKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxuICAgICAgICBpZiAoIWFyZ3MuZXhlY3V0YWJsZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGaWVsZCBhcmdzLmFyZ3MgbXVzdCBiZSBlbXB0eSBvciBhcnJheS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTF9BU19QREY6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk9QRU46XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucyA/IHJlcyA6IHsgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiByZXMuYm9keSB9O1xuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsKHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpO1xuICB9XG5cbiAgcHVibGljIGRlY29kZUh0bWxDaGFyQ29kZXMoc3RyKSB7IFxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKCYjKFxcZCspOykvZywgKG1hdGNoLCBjYXB0dXJlLCBjaGFyQ29kZSkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpO1xuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXG5cbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XG4gICAgICAvLyBhZnRlciBzcGVha2luZyB0byBBbmRyZWFzIGFsc28gcmVtb3ZlZCBmcm9tIGRvY3VtZW50YXRpb25cbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcbiAgICAgIC8vIHRoZW1lQmFzZTogJGVvQ29uZmlnLmdldFRoZW1lQmFzZSgpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSk6IFByb21pc2U8RG1zT2JqZWN0W10+IHtcblxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNPYmplY3RzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBETVMgb2JqZWN0IGZyb20gdGhlIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gW3R5cGVdIC0gVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBzZWxlY3RlZCBETVMtT2JqZWN0LiBXaWxsIGltcHJvdmUgcGVyZm9ybWFuY2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyBnZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudD8pOiBQcm9taXNlPERtc09iamVjdD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgfVxufVxuIl19
|