@eo-sdk/client 10.6.0-rc.5 → 10.6.0-rc.7

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.
Files changed (27) hide show
  1. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +0 -6
  2. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  3. package/app/eo-framework/media/media.component.d.ts +6 -1
  4. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  5. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -0
  6. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  7. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  8. package/app/eo-framework-core/api/plugins.service.d.ts +1 -0
  9. package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
  10. package/assets/_default/i18n/de.json +4 -3
  11. package/assets/_default/i18n/en.json +3 -3
  12. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  13. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +14 -9
  14. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +4 -3
  15. package/esm2020/app/eo-framework/media/media.component.mjs +12 -4
  16. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +2 -2
  17. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +10 -3
  18. package/esm2020/app/eo-framework-core/api/grid.service.mjs +3 -2
  19. package/esm2020/app/eo-framework-core/api/plugins.service.mjs +5 -1
  20. package/fesm2015/eo-sdk-client.mjs +45 -19
  21. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  22. package/fesm2020/eo-sdk-client.mjs +43 -18
  23. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  24. package/package.json +2 -2
  25. package/scss/_main.scss +1 -0
  26. package/scss/_yuuvis-components.scss +8 -0
  27. package/styles.css +8 -1
@@ -59,10 +59,13 @@ let MediaComponent = MediaComponent_1 = class MediaComponent {
59
59
  path: file.path,
60
60
  mediaTypeName: item.typeName
61
61
  };
62
- if (!!file.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.startsWith(MediaComponent_1.PDF_VIEWER)) {
62
+ if (!!file.mimegroup?.match(/^mail|octet-stream/) && this.viewer.viewer.match('/view/api/pdf/')) {
63
63
  this.slideUri = this.dms.getSlide(item.content.id, item.content.type, this.useVersion ? item.version : null, 256);
64
64
  this.attachmentsLoading = this.dms.getAttachments(item).subscribe(a => this.setAttachments = a);
65
65
  }
66
+ if (this.viewer.viewer.match('/view/api/mail/')) {
67
+ this.dms.getAttachments(item).subscribe(a => window.api.content.attachments = a);
68
+ }
66
69
  }
67
70
  else {
68
71
  this.previewUri = '';
@@ -96,8 +99,13 @@ let MediaComponent = MediaComponent_1 = class MediaComponent {
96
99
  "mimeType": ["message/rfc822", "application/vnd.ms-outlook"],
97
100
  "viewer": "viewer/view/api/mail/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
98
101
  },
99
- // We need another pathPdf for email attachment files. This will only come in place if the mimetype is pdf or one of the not supported ones.
100
- { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d)')); if (attachment) {parameters.pathPdf = location.origin + '/rest-ws/service/dms/' + dmsObject.content.id + '/attachments/' + attachment[1]} return parameters.defaultViewer;}" },
102
+ // ONLY applies to localhost env; fixed email cors for localhost testing
103
+ {
104
+ "type": "extend",
105
+ "viewer": "() => { if (parameters.viewer.match('/view/api/mail/') && parameters.path.match('localhost')) { var host = 'localhost:4200'; var cors = 'kolibriproliant.optimal-systems.de'; parameters.path = parameters.path.replace(host, cors); return parameters.viewer + '&cors=' + cors;} return parameters.viewer; }"
106
+ },
107
+ // We need another pathPdf for email attachment files. This will only come in place if the mimetype is pdf or one of the not supported ones. (viewer attachments & api attachments can be parsed in different order, so we have to match them by filename)
108
+ { "viewer": "() => {var attachment = parameters.pathPdf.match(new RegExp('attachment=(\\\\d+)')); var a = attachment && api.content.viewer().document.querySelector('iframe').contentDocument.querySelector('a[data-src$=\"' + attachment[0] + '\"]'); var params = a && (api.content.attachments || []).find(att => api.util.decodeHtmlCharCodes(att.name) === a.getAttribute('data-filename')); if(params && params.previewUri) { debugger; parameters.pathPdf = location.origin + params.previewUri; } return parameters.defaultViewer;}" },
101
109
  { "error": true, "type": "error", "viewer": "viewer/view/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
102
110
  ];
103
111
  this.undockDisabled = false;
@@ -297,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
297
305
  }], dmsObject: [{
298
306
  type: Input
299
307
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFVNUcsT0FBTyxFQUFDLHFCQUFxQixFQUFxQixNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFLN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBMEI1RCxJQUFNLGNBQWMsc0JBQXBCLE1BQU0sY0FBYztJQStEekIsSUFDSSxjQUFjLENBQUMsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxVQUFVO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxXQUFX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RmQsQ0FBQyxxQkFBcUIsQ0FBQywwSUN6Q3BDLGt0REFtQ0E7QURRYSxjQUFjO0lBUDFCLFlBQVksRUFBRTtHQU9GLGNBQWMsQ0FxVDFCO1NBclRZLGNBQWM7MkZBQWQsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLGFBR1QsQ0FBQyxxQkFBcUIsQ0FBQztzT0F1RHpCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNxQixJQUFJO3NCQUE5QixXQUFXO3VCQUFDLFlBQVk7Z0JBRVksTUFBTTtzQkFBMUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUcvQixjQUFjO3NCQURqQixLQUFLO3VCQUFDLGFBQWE7Z0JBT2hCLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsWUFBWTtnQkFNZixVQUFVO3NCQURiLEtBQUs7Z0JBV0YsV0FBVztzQkFEZCxLQUFLO2dCQWNGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc09iamVjdEF0dGFjaG1lbnQsXG4gIERtc1NlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1BvcG91dFRyaWdnZXJQb3NpdGlvbiwgUG9wb3V0V2luZG93Q29uZmlnfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvcG9wb3V0JztcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2ZpbGVzaXplLnBpcGUnO1xuaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlJztcbmltcG9ydCB7Q29udGVudFByZXZpZXdTZXJ2aWNlfSBmcm9tICcuL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3ZXJDb25maWcge1xuICBtaW1lVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHZpZXdlcjogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIHR5cGU/OiAnY29tcGFyZScgfCAnZXh0ZW5kJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdGaWxlIHtcbiAgdXJpOiBzdHJpbmc7XG4gIHVyaVBkZjogc3RyaW5nO1xuICBtaW1ldHlwZTogc3RyaW5nO1xuICBtaW1lZ3JvdXA6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBwYXRoPzogc3RyaW5nO1xuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nO1xuICBtZWRpYVR5cGVOYW1lPzogc3RyaW5nO1xufVxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1tZWRpYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbnRlbnRQcmV2aWV3U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWVkaWFDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHN0YXRpYyBWSURFT19WSUVXRVIgPSAndmlld2VyL3ZpZXcvYXBpL3ZpZGVvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSc7XG4gIHN0YXRpYyBQREZfVklFV0VSID0gJ3ZpZXdlci92aWV3L2FwaS9wZGYvd2ViL3ZpZXdlci5odG1sP2ZpbGU9JnBhdGg9JHtwYXRofSZwYXRoUGRmPSR7cGF0aFBkZn0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZjc3M9JTIzdG9vbGJhclZpZXdlclJpZ2h0JTIwJTIzcHJpbnQlN0JkaXNwbGF5JTNBYmxvY2shaW1wb3J0YW50JTNCJTdEJztcblxuICBwcml2YXRlIFNJWkVfTElNSVQgPSAxMDI0ICogMTAyNCAqIDEwOyAvLyAxME1CXG4gIHByaXZhdGUgcGRmanM6IGFueTtcbiAgbGF0ZXN0VXJpOiBzdHJpbmc7XG4gIHNsaWRlVXJpOiBzdHJpbmc7XG4gIHZpZXdlcjogYW55O1xuICBkbXNPYmplY3RUaXRsZTogc3RyaW5nO1xuICBwcml2YXRlIF9wcmV2aWV3VXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Rtc09iamVjdDogRG1zT2JqZWN0O1xuICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZTtcbiAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gIGF0dGFjaG1lbnRzOiBEbXNPYmplY3RBdHRhY2htZW50W10gPSBbXTtcbiAgYXR0YWNobWVudHNMb2FkaW5nOiBTdWJzY3JpcHRpb247XG4gIGF0dGFjaG1lbnRzU2hvd246IGJvb2xlYW47XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgbWVkaWFUeXBlOiBPYmplY3RUeXBlO1xuICBjdXN0b21Db25maWc6IGFueVtdID0gW107XG5cbiAgcG9wb3V0VHJpZ2dlclBvc2l0aW9uID0gUG9wb3V0VHJpZ2dlclBvc2l0aW9uLkJPVFRPTV9SSUdIVFxuICBwb3BvdXRXaW5kb3dDb25maWc6IFBvcG91dFdpbmRvd0NvbmZpZztcblxuXG5cblxuICBkZWZhdWx0Vmlld2VycyA9IFtcbiAgICB7XG4gICAgICBcIm1pbWVUeXBlXCI6IFtcImFwcGxpY2F0aW9uL2pzb25cIiwgXCJ0ZXh0L2pzb25cIiwgXCJ0ZXh0L3BsYWluXCIsIFwidGV4dC94bWxcIiwgXCJ0ZXh0L2phdmFcIiwgXCJ0ZXh0L2phdmFzY3JpcHRcIiwgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIsIFwidGV4dC9odG1sXCIsIFwidGV4dC9tYXJrZG93blwiLCBcInRleHQveC13ZWItbWFya2Rvd25cIiwgXCJ0ZXh0L3gtbWFya2Rvd25cIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXVkaW8vbXAzXCIsIFwiYXVkaW8vd2VibVwiLCBcImF1ZGlvL29nZ1wiLCBcImF1ZGlvL21wZWdcIiwgXCJ2aWRlby9tcDRcIiwgXCJ2aWRlby93ZWJtXCIsIFwidmlkZW8vb2dnXCIsIFwiYXBwbGljYXRpb24vb2dnXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJ2aWV3ZXIvdmlldy9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiaW1hZ2UvdGlmZlwiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9hcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2Uvc3ZnK3htbFwiLCBcImltYWdlL3dlYnBcIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9pbWcvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wibWVzc2FnZS9yZmM4MjJcIiwgXCJhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9va1wiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL21haWwvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIC8vIFdlIG5lZWQgYW5vdGhlciBwYXRoUGRmIGZvciBlbWFpbCBhdHRhY2htZW50IGZpbGVzLiBUaGlzIHdpbGwgb25seSBjb21lIGluIHBsYWNlIGlmIHRoZSBtaW1ldHlwZSBpcyBwZGYgb3Igb25lIG9mIHRoZSBub3Qgc3VwcG9ydGVkIG9uZXMuXG4gICAge1widmlld2VyXCI6IFwiKCkgPT4ge3ZhciBhdHRhY2htZW50ID0gcGFyYW1ldGVycy5wYXRoUGRmLm1hdGNoKG5ldyBSZWdFeHAoJ2F0dGFjaG1lbnQ9KFxcXFxcXFxcZCknKSk7IGlmIChhdHRhY2htZW50KSB7cGFyYW1ldGVycy5wYXRoUGRmID0gbG9jYXRpb24ub3JpZ2luICsgJy9yZXN0LXdzL3NlcnZpY2UvZG1zLycgKyBkbXNPYmplY3QuY29udGVudC5pZCArICcvYXR0YWNobWVudHMvJyArIGF0dGFjaG1lbnRbMV19IHJldHVybiBwYXJhbWV0ZXJzLmRlZmF1bHRWaWV3ZXI7fVwifSxcbiAgICB7XCJlcnJvclwiOiB0cnVlLCBcInR5cGVcIjogXCJlcnJvclwiLCBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9lcnJvci8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIn1cbiAgXTtcblxuICBpc1VuZG9ja2VkOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHVuZG9ja0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZW5hYmxlQ2xvc2VCdG4gPSBmYWxzZTtcbiAgLy8gYnkgZGVmYXVsdCwgdGhlIHZpZXdlciBpZ25vcmVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0LiBUaGlzIHdpbGwgYWx3YXlzIHNob3cgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAvLyBXZSBuZWVkIHRoaXMgdG8gYmUgYWJsZSB0byByZWZyZXNoIHRoZSB2aWV3ZXIgYmVjYXVzZSBvdGhlcndpc2UgcGRmanMgd29ya2VyIHdpbGwgZmFpbC5cbiAgQElucHV0KCkgdXNlVmVyc2lvbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9wZW4nKSBvcGVuO1xuXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWU7XG5cbiAgQElucHV0KCdhdHRhY2htZW50cycpXG4gIHNldCBzZXRBdHRhY2htZW50cyhhdHRhY2htZW50cykge1xuICAgIHRoaXMuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB0aGlzLmF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIEBJbnB1dCgnc2VhcmNoVGVybScpXG4gIHNldCBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHByZXZpZXdVcmkodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wcmV2aWV3VXJpID0gdXJpO1xuICAgIHRoaXMudG9nZ2xlVmlld2VyKCk7XG4gIH1cblxuICBnZXQgcHJldmlld1VyaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld1VyaTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwcmV2aWV3RmlsZShmaWxlOiBQcmV2aWV3RmlsZSkge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLnZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKGZpbGUpO1xuICAgICAgdGhpcy5tZWRpYVR5cGUgPSBmaWxlLm1lZGlhVHlwZU5hbWUgJiYgdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShmaWxlLm1lZGlhVHlwZU5hbWUpO1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gdGhpcy52aWV3ZXIucHJldmlld1VyaTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gJyc7XG4gICAgICB0aGlzLnBvcG91dFdpbmRvd0NvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5fc2V0UG9wb3V0V2luZG93Q29uZmlnKCFmaWxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkbXNPYmplY3QoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5fZG1zT2JqZWN0ID0gaXRlbTtcbiAgICB0aGlzLmRtc09iamVjdFRpdGxlID0gaXRlbS50aXRsZSB8fCAnLi4uJztcblxuXG4gICAgdGhpcy5zZXRBdHRhY2htZW50cyA9IFtdO1xuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzTG9hZGluZykge1xuICAgICAgLy8gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAoaXRlbS5jb250ZW50ICYmIGl0ZW0uY29udGVudC5jb250ZW50cyAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gaXRlbS5jb250ZW50LmNvbnRlbnRzWzBdIHx8IHt9O1xuXG4gICAgICB0aGlzLnByZXZpZXdGaWxlID0ge1xuICAgICAgICB1cmk6IHRoaXMuZG1zLmdldFByZXZpZXcoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgdW5kZWZpbmVkLCB0cnVlKSxcbiAgICAgICAgdXJpUGRmOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsICdQREYnLCB0cnVlKSxcbiAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXG4gICAgICAgIG1pbWVncm91cDogZmlsZS5taW1lZ3JvdXAsXG4gICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgICAgICBtZWRpYVR5cGVOYW1lOiBpdGVtLnR5cGVOYW1lXG4gICAgICB9O1xuXG4gICAgICBpZiAoISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15tYWlsfG9jdGV0LXN0cmVhbS8pICYmIHRoaXMudmlld2VyLnZpZXdlci5zdGFydHNXaXRoKE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVIpKSB7XG4gICAgICAgIHRoaXMuc2xpZGVVcmkgPSB0aGlzLmRtcy5nZXRTbGlkZShpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsLCAyNTYpO1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZyA9IHRoaXMuZG1zLmdldEF0dGFjaG1lbnRzKGl0ZW0pLnN1YnNjcmliZShhID0+IHRoaXMuc2V0QXR0YWNobWVudHMgPSBhKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlKSB7XG4gICAgdGhpcy5TSVpFX0xJTUlUID0gdGhpcy5jb25maWcuZ2V0UmF3KCdwcmV2aWV3LmZpbGVTaXplTGltaXQnKSB8fCB0aGlzLlNJWkVfTElNSVQ7XG4gICAgdGhpcy5jdXN0b21Db25maWcgPSAodGhpcy5jb25maWcuZ2V0UmF3KCdwcmV2aWV3LnZpZXdlcnMnKSB8fCBbXSkuY29uY2F0KHRoaXMuZGVmYXVsdFZpZXdlcnMpO1xuXG4gICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGkuY29udGVudC5jYXRjaEVycm9yKCkuc3Vic2NyaWJlKChldnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qge2Vyciwgd2luLCBwYXJhbWV0ZXJzfSA9IGV2dC5kYXRhO1xuICAgICAgY29uc3QgdXJpID0gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMuY3VzdG9tQ29uZmlnPy5maW5kKCh2KSA9PiB2LmVycm9yKT8udmlld2VyLCAnYXBpLCBlcnIsIHdpbiwgcGFyYW1ldGVycycsIFtcbiAgICAgICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGksXG4gICAgICAgIGVycixcbiAgICAgICAgd2luLFxuICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICBdKTtcbiAgICAgIHVyaSAmJiB3aW4gJiYgKHdpbi5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZXNvbHZlVXJpKHVyaSwgcGFyYW1ldGVycykpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0UG9wb3V0V2luZG93Q29uZmlnKHJlc2V0PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHdpbkluc2V0ID0gMjA7XG4gICAgdGhpcy5wb3BvdXRXaW5kb3dDb25maWcgPSAhcmVzZXQgPyB7XG4gICAgICB0aXRsZTogdGhpcy5kbXNPYmplY3RUaXRsZSxcbiAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIGJsb2NrU3RhcnQ6IHdpbkluc2V0LFxuICAgICAgICBpbmxpbmVTdGFydDogd2luZG93LnNjcmVlbi53aWR0aCAvIDJcbiAgICAgIH0sIHNpemU6IHtcbiAgICAgICAgd2lkdGg6IHdpbmRvdy5zY3JlZW4ud2lkdGggLyAyIC0gd2luSW5zZXQsXG4gICAgICAgIGhlaWdodDogd2luZG93LnNjcmVlbi5oZWlnaHQgLSB3aW5JbnNldCAqIDIsXG4gICAgICB9XG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdEF0dGFjaG1lbnQoYXR0YWNobWVudD86IGFueSkge1xuICAgIGNvbnN0IHByZXZpZXdVcmkgPSBhdHRhY2htZW50ICYmIHRoaXMuZ2V0Vmlld2VyKHt1cmlQZGY6IGF0dGFjaG1lbnQucHJldmlld1VyaX0gYXMgUHJldmlld0ZpbGUpLnByZXZpZXdVcmk7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnQocHJldmlld1VyaSB8fCB0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVZpZXdlcigpIHtcbiAgICB0aGlzLm9wZW4gPSAhIXRoaXMucHJldmlld1VyaTtcbiAgICBpZiAoISF0aGlzLnByZXZpZXdVcmkpIHtcbiAgICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpLCB0cnVlKTtcbiAgfVxuXG4gIGdldFZpZXdlcihmaWxlOiBQcmV2aWV3RmlsZSk6IGFueSB7XG4gICAgY29uc3QgaXNWaWRlbyA9ICEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9eYXVkaW98XnZpZGVvLyk7XG4gICAgY29uc3QgZGVmYXVsdFZpZXdlciA9IGlzVmlkZW8gPyBNZWRpYUNvbXBvbmVudC5WSURFT19WSUVXRVIgOiBNZWRpYUNvbXBvbmVudC5QREZfVklFV0VSO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlLmZpbGVFeHRlbnNpb24gfHwgKGZpbGUucGF0aD8uaW5jbHVkZXMoJy4nKSA/IGZpbGUucGF0aC5zcGxpdCgnLicpLnBvcCgpIDogJycpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gZmlsZS5taW1ldHlwZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjOiBWaWV3ZXJDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoTVQgPSAhYy5taW1lVHlwZSB8fCAodHlwZW9mIGMubWltZVR5cGUgPT09ICdzdHJpbmcnID8gW2MubWltZVR5cGVdIDogYy5taW1lVHlwZSkuaW5jbHVkZXMobWltZVR5cGU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgbWF0Y2hGRSA9ICFjLmZpbGVFeHRlbnNpb24gfHwgKHR5cGVvZiBjLmZpbGVFeHRlbnNpb24gPT09ICdzdHJpbmcnID8gW2MuZmlsZUV4dGVuc2lvbl0gOiBjLmZpbGVFeHRlbnNpb24pLmluY2x1ZGVzKChmaWxlRXh0ZW5zaW9uKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiBtYXRjaE1UICYmIG1hdGNoRkUgJiYgKCFjLnR5cGUgfHwgYy50eXBlID09PSAnZGVmYXVsdCcpO1xuICAgIH0pO1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBmaWxlLFxuICAgICAgcGF0aDogbG9jYXRpb24ub3JpZ2luICsgZmlsZS51cmksXG4gICAgICBwYXRoUGRmOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaVBkZixcbiAgICAgIHZpZXdlcjogY29uZmlnPy52aWV3ZXIgfHwgZGVmYXVsdFZpZXdlcixcbiAgICAgIGxvYWQ6IGNvbmZpZz8ubG9hZCxcbiAgICAgIGZpbGVFeHRlbnNpb24sXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIHRoZW1lOiAnJyxcbiAgICAgIGRlZmF1bHRWaWV3ZXIsXG4gICAgICBwcmV2aWV3VXJpOiAnJ1xuICAgIH07XG4gICAgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24ocGFyYW1ldGVycy52aWV3ZXIsICdjb21wb25lbnQsIGRtc09iamVjdCwgcGFyYW1ldGVycycsIFt0aGlzLCB0aGlzLl9kbXNPYmplY3QsIHBhcmFtZXRlcnNdKSB8fCBkZWZhdWx0Vmlld2VyO1xuXG4gICAgY29uc3QgZXh0ZW5kID0gdGhpcy5jdXN0b21Db25maWcuZmluZCgoYykgPT4gYy50eXBlID09PSAnZXh0ZW5kJyk7XG4gICAgaWYgKGV4dGVuZCkgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24oZXh0ZW5kLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pO1xuXG4gICAgcGFyYW1ldGVycy5wcmV2aWV3VXJpID0gdGhpcy5yZXNvbHZlVXJpKHBhcmFtZXRlcnMudmlld2VyLCBwYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVyaSh2aWV3ZXI6IHN0cmluZywgcGFyYW1ldGVyczogYW55KSB7XG4gICAgY29uc3Qgb3JpZ2luID0gdmlld2VyLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/ICcnIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3VyaS5jb250ZXh0UGF0aCcpIHx8ICcvJyk7XG5cbiAgICByZXR1cm4gb3JpZ2luICsgdmlld2VyXG4gICAgICAucmVwbGFjZSgnJHtvcmlnaW5hbFBhdGh9JywgcGFyYW1ldGVycy5wYXRoKVxuICAgICAgLnJlcGxhY2UoJyR7cGF0aH0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5wYXRoKSlcbiAgICAgIC5yZXBsYWNlKCcke3BhdGhQZGZ9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aFBkZikpXG4gICAgICAucmVwbGFjZSgnJHtmaWxlRXh0ZW5zaW9ufScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLmZpbGVFeHRlbnNpb24pKVxuICAgICAgLnJlcGxhY2UoJyR7bWltZVR5cGV9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMubWltZVR5cGUpKVxuICAgICAgLnJlcGxhY2UoJyR7dGhlbWV9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMudGhlbWUpKVxuICAgICAgLnJlcGxhY2UoJyR7bGFuZ30nLCBDb250ZW50UHJldmlld1NlcnZpY2UubWFwTGFuZyh0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykpO1xuICB9XG5cbiAgbG9hZERvY3VtZW50KHVyaTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWZvcmNlICYmICghdXJpIHx8ICh1cmkgPT09IHRoaXMubGF0ZXN0VXJpKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5sYXRlc3RVcmkgPSB1cmkgfHwgJyc7XG5cbiAgICBpZiAodGhpcy5wcmV2aWV3VXJpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpc10pO1xuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCB0aGlzLmxhdGVzdFVyaSk7XG4gICAgICBjb25zdCBvbmxvYWQgPSAoKSA9PiB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy52aWV3ZXI/LmxvYWQsICdpZnJhbWUsIGNvbXBvbmVudCcsIFt0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCB0aGlzXSk7XG4gICAgICB0aGlzLmlmcmFtZUluaXQodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpcy52aWV3ZXI/LmxvYWQgJiYgb25sb2FkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3VzdG9tIHNlYXJjaCBpbnNpZGUgUERGLkpTIGJhc2VkIG9uIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSB0ZXJtIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSB3aW4gaWZyYW1lIHdpbmRvd1xuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hQREYodGVybSA9ICcnLCB3aW46IGFueSkge1xuICAgIC8vIHJlbW92ZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgdGVybSA9ICh0ZXJtIHx8ICcnKS5yZXBsYWNlKC9bXFxcInxcXCpdL2csICcnKS50cmltKCk7XG4gICAgaWYgKHRlcm0gJiYgd2luPy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8uYXBwQ29uZmlnPy5maW5kQmFyKSB7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuZmluZEZpZWxkLnZhbHVlID0gdGVybTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5oaWdobGlnaHRBbGxDaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5jYXNlU2Vuc2l0aXZlQ2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgLy8gdHJpZ2dlciBmaW5kIGV2ZW50IG9uIHBkZi5qcyBsb2FkXG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uaW5pdGlhbGl6ZWRQcm9taXNlPy50aGVuKCgpID0+IHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5maW5kQmFyLmRpc3BhdGNoRXZlbnQoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50RHJvcEV2ZW50KHdpbjogYW55KSB7XG4gICAgaWYgKHdpbj8ubG9jYXRpb24/Lm9yaWdpbiA9PT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpKTtcbiAgICAgIC8vIGRpc3BhY2ggZHJhZyAmIGRyb3AgZXZlbnRzIHRvIG1haW4gd2luZG93XG4gICAgICB3aW4/LmRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZSkgPT4ge1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2xlYXZlJywgZSkpLCAxMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZnJhbWVJbml0KGlmcmFtZSA9IHRoaXMuaWZyYW1lLCBvbmxvYWQ/OiBGdW5jdGlvbikge1xuICAgIGlmIChpZnJhbWUpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBpZnJhbWUuX2luaXQgfHwgZnJvbUV2ZW50KGlmcmFtZSwgJ2xvYWQnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2luID0gdGhpcy5zZXRBcGkoaWZyYW1lKTtcbiAgICAgICAgICBvbmxvYWQgJiYgb25sb2FkKCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBERih0aGlzLnNlYXJjaFRlcm0sIHdpbik7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnREcm9wRXZlbnQod2luKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9KTtcbiAgICAgIGlmcmFtZS5faW5pdCA9ICEhdGhpcy5zZXRBcGkoaWZyYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFwaShpZnJhbWU6IGFueSkge1xuICAgIC8vIHNldCBhcGkgdG8gaWZyYW1lIHdpbmRvd1xuICAgIGNvbnN0IHdpbiA9IGlmcmFtZT8uY29udGVudFdpbmRvdyB8fCBpZnJhbWU7XG4gICAgd2luWydhcGknXSA9IHdpbmRvd1snYXBpJ107XG4gICAgaWYgKHdpblsnYXBpJ10/LmNvbnRlbnQpIHtcbiAgICAgIHdpblsnYXBpJ10uY29udGVudC5yZXNvbHZlVmlld2VyUGFyYW1zID0gKHBhcmFtZXRlcnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cmkgPSBwYXJhbWV0ZXJzLnBhdGgucmVwbGFjZShsb2NhdGlvbi5vcmlnaW4sICcnKTtcbiAgICAgICAgY29uc3Qgdmlld2VyID0gdGhpcy5nZXRWaWV3ZXIoe3VyaSwgbWltZXR5cGU6IHBhcmFtZXRlcnMubWltZVR5cGUsIGZpbGVFeHRlbnNpb246IHBhcmFtZXRlcnMuZmlsZUV4dGVuc2lvbiwgdXJpUGRmOiB1cmksIG1pbWVncm91cDogJycsIHNpemU6IDF9KTtcbiAgICAgICAgcmV0dXJuIHt1cmk6IHZpZXdlci5wcmV2aWV3VXJpIHx8IHBhcmFtZXRlcnMucGF0aH07XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gIH1cblxufVxuIiwiPGRpdiBbaGlkZGVuXT1cIiFvcGVuXCI+XG4gIDwhLS0gYXR0YWNobWVudHMgb3ZlcmxheSAtLT5cbiAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCIgKm5nSWY9XCJhdHRhY2htZW50cz8ubGVuZ3RoXCJcbiAgICBbbmdDbGFzc109XCJ7bm90bWFpbjogbGF0ZXN0VXJpICE9PSBwcmV2aWV3VXJpICYmICFhdHRhY2htZW50c1Nob3duLCBhY3RpdmU6IGF0dGFjaG1lbnRzU2hvd259XCJcbiAgICAoZW9PdXRzaWRlQ2xpY2spPVwiYXR0YWNobWVudHNTaG93biA9IGZhbHNlXCI+XG4gICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLWxpc3RcIiAqbmdJZj1cImF0dGFjaG1lbnRzU2hvd25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IG1haW5cIiAoY2xpY2spPVwic2VsZWN0QXR0YWNobWVudChudWxsKVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBsYXRlc3RVcmkgPT09IHByZXZpZXdVcml9XCI+e3tkbXNPYmplY3RUaXRsZX19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudFwiICpuZ0Zvcj1cImxldCBhIG9mIGF0dGFjaG1lbnRzXCIgKGNsaWNrKT1cInNlbGVjdEF0dGFjaG1lbnQoYSlcIiBbbmdDbGFzc109XCJ7Y3VycmVudDogbGF0ZXN0VXJpID09PSBhLnByZXZpZXdVcml9XCI+XG4gICAgICAgIHt7YS5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGVvLWljb24gY2xhc3M9XCJidXR0b25cIiBbYmFkZ2VdPVwiYXR0YWNobWVudHM/Lmxlbmd0aFwiIChjbGljayk9XCJhdHRhY2htZW50c1Nob3duID0gIWF0dGFjaG1lbnRzU2hvd25cIlxuICAgICAgW2ljb25TcmNdPVwiYXR0YWNobWVudHNTaG93biA/ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZycgOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hdHRhY2htZW50LnN2ZydcIj48L2VvLWljb24+XG4gIDwvZGl2PlxuXG4gIDx5dmMtcG9wb3V0XG4gIFtwb3BvdXRXaW5kb3dDb25maWddPVwicG9wb3V0V2luZG93Q29uZmlnXCJcbiAgW3RyaWdnZXJQb3NpdGlvbl09XCJwb3BvdXRUcmlnZ2VyUG9zaXRpb25cIiBbZGlzYWJsZWRdPVwidW5kb2NrRGlzYWJsZWRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lclwiIFtzdHlsZS5vdmVyZmxvd109XCInaGlkZGVuJ1wiPlxuICAgICAgPGlmcmFtZSBbaGlkZGVuXT1cImlzVW5kb2NrZWQgfHwgbG9hZGluZ1wiICNpZnJhbWUgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgY2xhc3M9XCJpZnJhbWVfX2xvYWRlclwiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2xpZGVcIiAqbmdJZj1cImlzVW5kb2NrZWRcIj5cbiAgICAgICAgPGVvLWljb24gKm5nSWY9XCJtZWRpYVR5cGVcIiBbb2JqZWN0VHlwZV09XCJtZWRpYVR5cGVcIj48L2VvLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC95dmMtcG9wb3V0PlxuPC9kaXY+XG5cbjxkaXYgW2hpZGRlbl09XCJvcGVuXCIgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIj5cbiAgPGVvLWljb24gY2xhc3M9XCJub2ZpbGVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19uby1maWxlLnN2ZydcIj48L2VvLWljb24+XG48L2Rpdj5cbiJdfQ==
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFVNUcsT0FBTyxFQUFDLHFCQUFxQixFQUFxQixNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFLN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBMEI1RCxJQUFNLGNBQWMsc0JBQXBCLE1BQU0sY0FBYztJQW9FekIsSUFDSSxjQUFjLENBQUMsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxVQUFVO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxXQUFX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RUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUNsSixPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksRUFBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxXQUFXO0lBQ1gsQ0FBQzs7QUExVE0sMkJBQVksR0FBRyxxSEFBcUgsQ0FBQztBQUNySSx5QkFBVSxHQUFHLGtPQUFrTyxDQUFDOzJHQUg1TyxjQUFjOytGQUFkLGNBQWMsbVhBRmQsQ0FBQyxxQkFBcUIsQ0FBQywwSUN6Q3BDLGt0REFtQ0E7QURRYSxjQUFjO0lBUDFCLFlBQVksRUFBRTtHQU9GLGNBQWMsQ0E4VDFCO1NBOVRZLGNBQWM7MkZBQWQsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLGFBR1QsQ0FBQyxxQkFBcUIsQ0FBQztzT0E0RHpCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNxQixJQUFJO3NCQUE5QixXQUFXO3VCQUFDLFlBQVk7Z0JBRVksTUFBTTtzQkFBMUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUcvQixjQUFjO3NCQURqQixLQUFLO3VCQUFDLGFBQWE7Z0JBT2hCLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsWUFBWTtnQkFNZixVQUFVO3NCQURiLEtBQUs7Z0JBV0YsV0FBVztzQkFEZCxLQUFLO2dCQWNGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc09iamVjdEF0dGFjaG1lbnQsXG4gIERtc1NlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1BvcG91dFRyaWdnZXJQb3NpdGlvbiwgUG9wb3V0V2luZG93Q29uZmlnfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvcG9wb3V0JztcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtGaWxlU2l6ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2ZpbGVzaXplLnBpcGUnO1xuaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlJztcbmltcG9ydCB7Q29udGVudFByZXZpZXdTZXJ2aWNlfSBmcm9tICcuL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3ZXJDb25maWcge1xuICBtaW1lVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHZpZXdlcjogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIHR5cGU/OiAnY29tcGFyZScgfCAnZXh0ZW5kJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdGaWxlIHtcbiAgdXJpOiBzdHJpbmc7XG4gIHVyaVBkZjogc3RyaW5nO1xuICBtaW1ldHlwZTogc3RyaW5nO1xuICBtaW1lZ3JvdXA6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBwYXRoPzogc3RyaW5nO1xuICBmaWxlRXh0ZW5zaW9uPzogc3RyaW5nO1xuICBtZWRpYVR5cGVOYW1lPzogc3RyaW5nO1xufVxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1tZWRpYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZGlhLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbnRlbnRQcmV2aWV3U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWVkaWFDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHN0YXRpYyBWSURFT19WSUVXRVIgPSAndmlld2VyL3ZpZXcvYXBpL3ZpZGVvLz9wYXRoPSR7cGF0aH0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSc7XG4gIHN0YXRpYyBQREZfVklFV0VSID0gJ3ZpZXdlci92aWV3L2FwaS9wZGYvd2ViL3ZpZXdlci5odG1sP2ZpbGU9JnBhdGg9JHtwYXRofSZwYXRoUGRmPSR7cGF0aFBkZn0mbWltZVR5cGU9JHttaW1lVHlwZX0mZmlsZUV4dGVuc2lvbj0ke2ZpbGVFeHRlbnNpb259Jmxhbmc9JHtsYW5nfSZ0aGVtZT0ke3RoZW1lfSZjc3M9JTIzdG9vbGJhclZpZXdlclJpZ2h0JTIwJTIzcHJpbnQlN0JkaXNwbGF5JTNBYmxvY2shaW1wb3J0YW50JTNCJTdEJztcblxuICBwcml2YXRlIFNJWkVfTElNSVQgPSAxMDI0ICogMTAyNCAqIDEwOyAvLyAxME1CXG4gIHByaXZhdGUgcGRmanM6IGFueTtcbiAgbGF0ZXN0VXJpOiBzdHJpbmc7XG4gIHNsaWRlVXJpOiBzdHJpbmc7XG4gIHZpZXdlcjogYW55O1xuICBkbXNPYmplY3RUaXRsZTogc3RyaW5nO1xuICBwcml2YXRlIF9wcmV2aWV3VXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Rtc09iamVjdDogRG1zT2JqZWN0O1xuICBmaWxlU2l6ZVBpcGU6IEZpbGVTaXplUGlwZTtcbiAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gIGF0dGFjaG1lbnRzOiBEbXNPYmplY3RBdHRhY2htZW50W10gPSBbXTtcbiAgYXR0YWNobWVudHNMb2FkaW5nOiBTdWJzY3JpcHRpb247XG4gIGF0dGFjaG1lbnRzU2hvd246IGJvb2xlYW47XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgbWVkaWFUeXBlOiBPYmplY3RUeXBlO1xuICBjdXN0b21Db25maWc6IGFueVtdID0gW107XG5cbiAgcG9wb3V0VHJpZ2dlclBvc2l0aW9uID0gUG9wb3V0VHJpZ2dlclBvc2l0aW9uLkJPVFRPTV9SSUdIVFxuICBwb3BvdXRXaW5kb3dDb25maWc6IFBvcG91dFdpbmRvd0NvbmZpZztcblxuXG5cblxuICBkZWZhdWx0Vmlld2VycyA9IFtcbiAgICB7XG4gICAgICBcIm1pbWVUeXBlXCI6IFtcImFwcGxpY2F0aW9uL2pzb25cIiwgXCJ0ZXh0L2pzb25cIiwgXCJ0ZXh0L3BsYWluXCIsIFwidGV4dC94bWxcIiwgXCJ0ZXh0L2phdmFcIiwgXCJ0ZXh0L2phdmFzY3JpcHRcIiwgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIsIFwidGV4dC9odG1sXCIsIFwidGV4dC9tYXJrZG93blwiLCBcInRleHQveC13ZWItbWFya2Rvd25cIiwgXCJ0ZXh0L3gtbWFya2Rvd25cIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9tb25hY28vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXVkaW8vbXAzXCIsIFwiYXVkaW8vd2VibVwiLCBcImF1ZGlvL29nZ1wiLCBcImF1ZGlvL21wZWdcIiwgXCJ2aWRlby9tcDRcIiwgXCJ2aWRlby93ZWJtXCIsIFwidmlkZW8vb2dnXCIsIFwiYXBwbGljYXRpb24vb2dnXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJ2aWV3ZXIvdmlldy9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiaW1hZ2UvdGlmZlwiLCBcImltYWdlL2pwZWdcIiwgXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9hcG5nXCIsIFwiaW1hZ2UvZ2lmXCIsIFwiaW1hZ2Uvc3ZnK3htbFwiLCBcImltYWdlL3dlYnBcIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9pbWcvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wibWVzc2FnZS9yZmM4MjJcIiwgXCJhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9va1wiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL21haWwvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJcbiAgICB9LFxuICAgIC8vIE9OTFkgYXBwbGllcyB0byBsb2NhbGhvc3QgZW52OyBmaXhlZCBlbWFpbCBjb3JzIGZvciBsb2NhbGhvc3QgdGVzdGluZ1xuICAgIHtcbiAgICAgIFwidHlwZVwiOiBcImV4dGVuZFwiLFxuICAgICAgXCJ2aWV3ZXJcIjogXCIoKSA9PiB7IGlmIChwYXJhbWV0ZXJzLnZpZXdlci5tYXRjaCgnL3ZpZXcvYXBpL21haWwvJykgJiYgcGFyYW1ldGVycy5wYXRoLm1hdGNoKCdsb2NhbGhvc3QnKSkgeyB2YXIgaG9zdCA9ICdsb2NhbGhvc3Q6NDIwMCc7IHZhciBjb3JzID0gJ2tvbGlicmlwcm9saWFudC5vcHRpbWFsLXN5c3RlbXMuZGUnOyBwYXJhbWV0ZXJzLnBhdGggPSBwYXJhbWV0ZXJzLnBhdGgucmVwbGFjZShob3N0LCBjb3JzKTsgcmV0dXJuIHBhcmFtZXRlcnMudmlld2VyICsgJyZjb3JzPScgKyBjb3JzO30gcmV0dXJuIHBhcmFtZXRlcnMudmlld2VyOyB9XCJcbiAgICB9LFxuICAgIC8vIFdlIG5lZWQgYW5vdGhlciBwYXRoUGRmIGZvciBlbWFpbCBhdHRhY2htZW50IGZpbGVzLiBUaGlzIHdpbGwgb25seSBjb21lIGluIHBsYWNlIGlmIHRoZSBtaW1ldHlwZSBpcyBwZGYgb3Igb25lIG9mIHRoZSBub3Qgc3VwcG9ydGVkIG9uZXMuICh2aWV3ZXIgYXR0YWNobWVudHMgJiBhcGkgYXR0YWNobWVudHMgY2FuIGJlIHBhcnNlZCBpbiBkaWZmZXJlbnQgb3JkZXIsIHNvIHdlIGhhdmUgdG8gbWF0Y2ggdGhlbSBieSBmaWxlbmFtZSlcbiAgICB7XCJ2aWV3ZXJcIjogXCIoKSA9PiB7dmFyIGF0dGFjaG1lbnQgPSBwYXJhbWV0ZXJzLnBhdGhQZGYubWF0Y2gobmV3IFJlZ0V4cCgnYXR0YWNobWVudD0oXFxcXFxcXFxkKyknKSk7IHZhciBhID0gYXR0YWNobWVudCAmJiBhcGkuY29udGVudC52aWV3ZXIoKS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignYVtkYXRhLXNyYyQ9XFxcIicgKyBhdHRhY2htZW50WzBdICsgJ1xcXCJdJyk7ICB2YXIgcGFyYW1zID0gYSAmJiAoYXBpLmNvbnRlbnQuYXR0YWNobWVudHMgfHwgW10pLmZpbmQoYXR0ID0+IGFwaS51dGlsLmRlY29kZUh0bWxDaGFyQ29kZXMoYXR0Lm5hbWUpID09PSBhLmdldEF0dHJpYnV0ZSgnZGF0YS1maWxlbmFtZScpKTsgaWYocGFyYW1zICYmIHBhcmFtcy5wcmV2aWV3VXJpKSB7IGRlYnVnZ2VyOyBwYXJhbWV0ZXJzLnBhdGhQZGYgPSBsb2NhdGlvbi5vcmlnaW4gKyBwYXJhbXMucHJldmlld1VyaTsgfSByZXR1cm4gcGFyYW1ldGVycy5kZWZhdWx0Vmlld2VyO31cIn0sXG4gICAge1wiZXJyb3JcIjogdHJ1ZSwgXCJ0eXBlXCI6IFwiZXJyb3JcIiwgXCJ2aWV3ZXJcIjogXCJ2aWV3ZXIvdmlldy9hcGkvZXJyb3IvP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9XCJ9XG4gIF07XG5cbiAgaXNVbmRvY2tlZDogYm9vbGVhbjtcbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICBASW5wdXQoKSB1bmRvY2tEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGVuYWJsZUNsb3NlQnRuID0gZmFsc2U7XG4gIC8vIGJ5IGRlZmF1bHQsIHRoZSB2aWV3ZXIgaWdub3JlcyB0aGUgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdC4gVGhpcyB3aWxsIGFsd2F5cyBzaG93IHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgLy8gV2UgbmVlZCB0aGlzIHRvIGJlIGFibGUgdG8gcmVmcmVzaCB0aGUgdmlld2VyIGJlY2F1c2Ugb3RoZXJ3aXNlIHBkZmpzIHdvcmtlciB3aWxsIGZhaWwuXG4gIEBJbnB1dCgpIHVzZVZlcnNpb24gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgb3BlbjtcblxuICBAVmlld0NoaWxkKCdpZnJhbWUnLCB7c3RhdGljOiB0cnVlfSkgaWZyYW1lO1xuXG4gIEBJbnB1dCgnYXR0YWNobWVudHMnKVxuICBzZXQgc2V0QXR0YWNobWVudHMoYXR0YWNobWVudHMpIHtcbiAgICB0aGlzLmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XG4gICAgdGhpcy5hdHRhY2htZW50c1Nob3duID0gZmFsc2U7XG4gIH1cblxuICBASW5wdXQoJ3NlYXJjaFRlcm0nKVxuICBzZXQgc2V0U2VhcmNoVGVybShzZWFyY2hUZXJtKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSB8fCAnJztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwcmV2aWV3VXJpKHVyaTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcHJldmlld1VyaSA9IHVyaTtcbiAgICB0aGlzLnRvZ2dsZVZpZXdlcigpO1xuICB9XG5cbiAgZ2V0IHByZXZpZXdVcmkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdVcmk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcHJldmlld0ZpbGUoZmlsZTogUHJldmlld0ZpbGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgdGhpcy52aWV3ZXIgPSB0aGlzLmdldFZpZXdlcihmaWxlKTtcbiAgICAgIHRoaXMubWVkaWFUeXBlID0gZmlsZS5tZWRpYVR5cGVOYW1lICYmIHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUoZmlsZS5tZWRpYVR5cGVOYW1lKTtcbiAgICAgIHRoaXMucHJldmlld1VyaSA9IHRoaXMudmlld2VyLnByZXZpZXdVcmk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlld1VyaSA9ICcnO1xuICAgICAgdGhpcy5wb3BvdXRXaW5kb3dDb25maWcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuX3NldFBvcG91dFdpbmRvd0NvbmZpZyghZmlsZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZG1zT2JqZWN0KGl0ZW06IERtc09iamVjdCkge1xuICAgIHRoaXMuX2Rtc09iamVjdCA9IGl0ZW07XG4gICAgdGhpcy5kbXNPYmplY3RUaXRsZSA9IGl0ZW0udGl0bGUgfHwgJy4uLic7XG5cblxuICAgIHRoaXMuc2V0QXR0YWNobWVudHMgPSBbXTtcbiAgICBpZiAodGhpcy5hdHRhY2htZW50c0xvYWRpbmcpIHtcbiAgICAgIC8vIGNhbmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0c1xuICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uY29udGVudCAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMgJiYgaXRlbS5jb250ZW50LmNvbnRlbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgZmlsZSA9IGl0ZW0uY29udGVudC5jb250ZW50c1swXSB8fCB7fTtcblxuICAgICAgdGhpcy5wcmV2aWV3RmlsZSA9IHtcbiAgICAgICAgdXJpOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsIHVuZGVmaW5lZCwgdHJ1ZSksXG4gICAgICAgIHVyaVBkZjogdGhpcy5kbXMuZ2V0UHJldmlldyhpdGVtLmNvbnRlbnQuaWQsIGl0ZW0uY29udGVudC50eXBlLCB0aGlzLnVzZVZlcnNpb24gPyBpdGVtLnZlcnNpb24gOiBudWxsLCAnUERGJywgdHJ1ZSksXG4gICAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgICBtaW1lZ3JvdXA6IGZpbGUubWltZWdyb3VwLFxuICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgIHBhdGg6IGZpbGUucGF0aCxcbiAgICAgICAgbWVkaWFUeXBlTmFtZTogaXRlbS50eXBlTmFtZVxuICAgICAgfTtcblxuICAgICAgaWYgKCEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9ebWFpbHxvY3RldC1zdHJlYW0vKSAmJiB0aGlzLnZpZXdlci52aWV3ZXIubWF0Y2goJy92aWV3L2FwaS9wZGYvJykpIHtcbiAgICAgICAgdGhpcy5zbGlkZVVyaSA9IHRoaXMuZG1zLmdldFNsaWRlKGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsIDI1Nik7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudHNMb2FkaW5nID0gdGhpcy5kbXMuZ2V0QXR0YWNobWVudHMoaXRlbSkuc3Vic2NyaWJlKGEgPT4gdGhpcy5zZXRBdHRhY2htZW50cyA9IGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy52aWV3ZXIudmlld2VyLm1hdGNoKCcvdmlldy9hcGkvbWFpbC8nKSkge1xuICAgICAgICB0aGlzLmRtcy5nZXRBdHRhY2htZW50cyhpdGVtKS5zdWJzY3JpYmUoYSA9PiB3aW5kb3cuYXBpLmNvbnRlbnQuYXR0YWNobWVudHMgPSBhKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdVcmkgPSAnJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlKSB7XG4gICAgdGhpcy5TSVpFX0xJTUlUID0gdGhpcy5jb25maWcuZ2V0UmF3KCdwcmV2aWV3LmZpbGVTaXplTGltaXQnKSB8fCB0aGlzLlNJWkVfTElNSVQ7XG4gICAgdGhpcy5jdXN0b21Db25maWcgPSAodGhpcy5jb25maWcuZ2V0UmF3KCdwcmV2aWV3LnZpZXdlcnMnKSB8fCBbXSkuY29uY2F0KHRoaXMuZGVmYXVsdFZpZXdlcnMpO1xuXG4gICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGkuY29udGVudC5jYXRjaEVycm9yKCkuc3Vic2NyaWJlKChldnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qge2Vyciwgd2luLCBwYXJhbWV0ZXJzfSA9IGV2dC5kYXRhO1xuICAgICAgY29uc3QgdXJpID0gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMuY3VzdG9tQ29uZmlnPy5maW5kKCh2KSA9PiB2LmVycm9yKT8udmlld2VyLCAnYXBpLCBlcnIsIHdpbiwgcGFyYW1ldGVycycsIFtcbiAgICAgICAgdGhpcy5wbHVnaW5zU2VydmljZS5hcGksXG4gICAgICAgIGVycixcbiAgICAgICAgd2luLFxuICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICBdKTtcbiAgICAgIHVyaSAmJiB3aW4gJiYgKHdpbi5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZXNvbHZlVXJpKHVyaSwgcGFyYW1ldGVycykpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0UG9wb3V0V2luZG93Q29uZmlnKHJlc2V0PzogYm9vbGVhbikge1xuICAgIGNvbnN0IHdpbkluc2V0ID0gMjA7XG4gICAgdGhpcy5wb3BvdXRXaW5kb3dDb25maWcgPSAhcmVzZXQgPyB7XG4gICAgICB0aXRsZTogdGhpcy5kbXNPYmplY3RUaXRsZSxcbiAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIGJsb2NrU3RhcnQ6IHdpbkluc2V0LFxuICAgICAgICBpbmxpbmVTdGFydDogd2luZG93LnNjcmVlbi53aWR0aCAvIDJcbiAgICAgIH0sIHNpemU6IHtcbiAgICAgICAgd2lkdGg6IHdpbmRvdy5zY3JlZW4ud2lkdGggLyAyIC0gd2luSW5zZXQsXG4gICAgICAgIGhlaWdodDogd2luZG93LnNjcmVlbi5oZWlnaHQgLSB3aW5JbnNldCAqIDIsXG4gICAgICB9XG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNlbGVjdEF0dGFjaG1lbnQoYXR0YWNobWVudD86IGFueSkge1xuICAgIGNvbnN0IHByZXZpZXdVcmkgPSBhdHRhY2htZW50ICYmIHRoaXMuZ2V0Vmlld2VyKHt1cmlQZGY6IGF0dGFjaG1lbnQucHJldmlld1VyaX0gYXMgUHJldmlld0ZpbGUpLnByZXZpZXdVcmk7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnQocHJldmlld1VyaSB8fCB0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVZpZXdlcigpIHtcbiAgICB0aGlzLm9wZW4gPSAhIXRoaXMucHJldmlld1VyaTtcbiAgICBpZiAoISF0aGlzLnByZXZpZXdVcmkpIHtcbiAgICAgIHRoaXMubG9hZERvY3VtZW50KHRoaXMucHJldmlld1VyaSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpLCB0cnVlKTtcbiAgfVxuXG4gIGdldFZpZXdlcihmaWxlOiBQcmV2aWV3RmlsZSk6IGFueSB7XG4gICAgY29uc3QgaXNWaWRlbyA9ICEhZmlsZS5taW1lZ3JvdXA/Lm1hdGNoKC9eYXVkaW98XnZpZGVvLyk7XG4gICAgY29uc3QgZGVmYXVsdFZpZXdlciA9IGlzVmlkZW8gPyBNZWRpYUNvbXBvbmVudC5WSURFT19WSUVXRVIgOiBNZWRpYUNvbXBvbmVudC5QREZfVklFV0VSO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlLmZpbGVFeHRlbnNpb24gfHwgKGZpbGUucGF0aD8uaW5jbHVkZXMoJy4nKSA/IGZpbGUucGF0aC5zcGxpdCgnLicpLnBvcCgpIDogJycpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gZmlsZS5taW1ldHlwZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjOiBWaWV3ZXJDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoTVQgPSAhYy5taW1lVHlwZSB8fCAodHlwZW9mIGMubWltZVR5cGUgPT09ICdzdHJpbmcnID8gW2MubWltZVR5cGVdIDogYy5taW1lVHlwZSkuaW5jbHVkZXMobWltZVR5cGU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgbWF0Y2hGRSA9ICFjLmZpbGVFeHRlbnNpb24gfHwgKHR5cGVvZiBjLmZpbGVFeHRlbnNpb24gPT09ICdzdHJpbmcnID8gW2MuZmlsZUV4dGVuc2lvbl0gOiBjLmZpbGVFeHRlbnNpb24pLmluY2x1ZGVzKChmaWxlRXh0ZW5zaW9uKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiBtYXRjaE1UICYmIG1hdGNoRkUgJiYgKCFjLnR5cGUgfHwgYy50eXBlID09PSAnZGVmYXVsdCcpO1xuICAgIH0pO1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBmaWxlLFxuICAgICAgcGF0aDogbG9jYXRpb24ub3JpZ2luICsgZmlsZS51cmksXG4gICAgICBwYXRoUGRmOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaVBkZixcbiAgICAgIHZpZXdlcjogY29uZmlnPy52aWV3ZXIgfHwgZGVmYXVsdFZpZXdlcixcbiAgICAgIGxvYWQ6IGNvbmZpZz8ubG9hZCxcbiAgICAgIGZpbGVFeHRlbnNpb24sXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIHRoZW1lOiAnJyxcbiAgICAgIGRlZmF1bHRWaWV3ZXIsXG4gICAgICBwcmV2aWV3VXJpOiAnJ1xuICAgIH07XG4gICAgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24ocGFyYW1ldGVycy52aWV3ZXIsICdjb21wb25lbnQsIGRtc09iamVjdCwgcGFyYW1ldGVycycsIFt0aGlzLCB0aGlzLl9kbXNPYmplY3QsIHBhcmFtZXRlcnNdKSB8fCBkZWZhdWx0Vmlld2VyO1xuXG4gICAgY29uc3QgZXh0ZW5kID0gdGhpcy5jdXN0b21Db25maWcuZmluZCgoYykgPT4gYy50eXBlID09PSAnZXh0ZW5kJyk7XG4gICAgaWYgKGV4dGVuZCkgcGFyYW1ldGVycy52aWV3ZXIgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24oZXh0ZW5kLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pO1xuXG4gICAgcGFyYW1ldGVycy5wcmV2aWV3VXJpID0gdGhpcy5yZXNvbHZlVXJpKHBhcmFtZXRlcnMudmlld2VyLCBwYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVyaSh2aWV3ZXI6IHN0cmluZywgcGFyYW1ldGVyczogYW55KSB7XG4gICAgY29uc3Qgb3JpZ2luID0gdmlld2VyLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/ICcnIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3VyaS5jb250ZXh0UGF0aCcpIHx8ICcvJyk7XG5cbiAgICByZXR1cm4gb3JpZ2luICsgdmlld2VyXG4gICAgICAucmVwbGFjZSgnJHtvcmlnaW5hbFBhdGh9JywgcGFyYW1ldGVycy5wYXRoKVxuICAgICAgLnJlcGxhY2UoJyR7cGF0aH0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5wYXRoKSlcbiAgICAgIC5yZXBsYWNlKCcke3BhdGhQZGZ9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aFBkZikpXG4gICAgICAucmVwbGFjZSgnJHtmaWxlRXh0ZW5zaW9ufScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLmZpbGVFeHRlbnNpb24pKVxuICAgICAgLnJlcGxhY2UoJyR7bWltZVR5cGV9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMubWltZVR5cGUpKVxuICAgICAgLnJlcGxhY2UoJyR7dGhlbWV9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMudGhlbWUpKVxuICAgICAgLnJlcGxhY2UoJyR7bGFuZ30nLCBDb250ZW50UHJldmlld1NlcnZpY2UubWFwTGFuZyh0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykpO1xuICB9XG5cbiAgbG9hZERvY3VtZW50KHVyaTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWZvcmNlICYmICghdXJpIHx8ICh1cmkgPT09IHRoaXMubGF0ZXN0VXJpKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5sYXRlc3RVcmkgPSB1cmkgfHwgJyc7XG5cbiAgICBpZiAodGhpcy5wcmV2aWV3VXJpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpc10pO1xuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCB0aGlzLmxhdGVzdFVyaSk7XG4gICAgICBjb25zdCBvbmxvYWQgPSAoKSA9PiB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy52aWV3ZXI/LmxvYWQsICdpZnJhbWUsIGNvbXBvbmVudCcsIFt0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCB0aGlzXSk7XG4gICAgICB0aGlzLmlmcmFtZUluaXQodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpcy52aWV3ZXI/LmxvYWQgJiYgb25sb2FkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3VzdG9tIHNlYXJjaCBpbnNpZGUgUERGLkpTIGJhc2VkIG9uIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSB0ZXJtIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSB3aW4gaWZyYW1lIHdpbmRvd1xuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hQREYodGVybSA9ICcnLCB3aW46IGFueSkge1xuICAgIC8vIHJlbW92ZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgdGVybSA9ICh0ZXJtIHx8ICcnKS5yZXBsYWNlKC9bXFxcInxcXCpdL2csICcnKS50cmltKCk7XG4gICAgaWYgKHRlcm0gJiYgd2luPy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8uYXBwQ29uZmlnPy5maW5kQmFyKSB7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuZmluZEZpZWxkLnZhbHVlID0gdGVybTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5oaWdobGlnaHRBbGxDaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgIHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5hcHBDb25maWcuZmluZEJhci5jYXNlU2Vuc2l0aXZlQ2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgLy8gdHJpZ2dlciBmaW5kIGV2ZW50IG9uIHBkZi5qcyBsb2FkXG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uaW5pdGlhbGl6ZWRQcm9taXNlPy50aGVuKCgpID0+IHdpbi5QREZWaWV3ZXJBcHBsaWNhdGlvbi5maW5kQmFyLmRpc3BhdGNoRXZlbnQoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50RHJvcEV2ZW50KHdpbjogYW55KSB7XG4gICAgaWYgKHdpbj8ubG9jYXRpb24/Lm9yaWdpbiA9PT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpKTtcbiAgICAgIC8vIGRpc3BhY2ggZHJhZyAmIGRyb3AgZXZlbnRzIHRvIG1haW4gd2luZG93XG4gICAgICB3aW4/LmRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZSkgPT4ge1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRHJhZ0V2ZW50KCdkcmFnZW50ZXInLCBlKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2xlYXZlJywgZSkpLCAxMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZnJhbWVJbml0KGlmcmFtZSA9IHRoaXMuaWZyYW1lLCBvbmxvYWQ/OiBGdW5jdGlvbikge1xuICAgIGlmIChpZnJhbWUpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBpZnJhbWUuX2luaXQgfHwgZnJvbUV2ZW50KGlmcmFtZSwgJ2xvYWQnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2luID0gdGhpcy5zZXRBcGkoaWZyYW1lKTtcbiAgICAgICAgICBvbmxvYWQgJiYgb25sb2FkKCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBERih0aGlzLnNlYXJjaFRlcm0sIHdpbik7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnREcm9wRXZlbnQod2luKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9KTtcbiAgICAgIGlmcmFtZS5faW5pdCA9ICEhdGhpcy5zZXRBcGkoaWZyYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFwaShpZnJhbWU6IGFueSkge1xuICAgIC8vIHNldCBhcGkgdG8gaWZyYW1lIHdpbmRvd1xuICAgIGNvbnN0IHdpbiA9IGlmcmFtZT8uY29udGVudFdpbmRvdyB8fCBpZnJhbWU7XG4gICAgd2luWydhcGknXSA9IHdpbmRvd1snYXBpJ107XG4gICAgaWYgKHdpblsnYXBpJ10/LmNvbnRlbnQpIHtcbiAgICAgIHdpblsnYXBpJ10uY29udGVudC5yZXNvbHZlVmlld2VyUGFyYW1zID0gKHBhcmFtZXRlcnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cmkgPSBwYXJhbWV0ZXJzLnBhdGgucmVwbGFjZShsb2NhdGlvbi5vcmlnaW4sICcnKTtcbiAgICAgICAgY29uc3Qgdmlld2VyID0gdGhpcy5nZXRWaWV3ZXIoe3VyaSwgbWltZXR5cGU6IHBhcmFtZXRlcnMubWltZVR5cGUsIGZpbGVFeHRlbnNpb246IHBhcmFtZXRlcnMuZmlsZUV4dGVuc2lvbiwgdXJpUGRmOiB1cmksIG1pbWVncm91cDogJycsIHNpemU6IDF9KTtcbiAgICAgICAgcmV0dXJuIHt1cmk6IHZpZXdlci5wcmV2aWV3VXJpIHx8IHBhcmFtZXRlcnMucGF0aH07XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gIH1cblxufVxuIiwiPGRpdiBbaGlkZGVuXT1cIiFvcGVuXCI+XG4gIDwhLS0gYXR0YWNobWVudHMgb3ZlcmxheSAtLT5cbiAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCIgKm5nSWY9XCJhdHRhY2htZW50cz8ubGVuZ3RoXCJcbiAgICBbbmdDbGFzc109XCJ7bm90bWFpbjogbGF0ZXN0VXJpICE9PSBwcmV2aWV3VXJpICYmICFhdHRhY2htZW50c1Nob3duLCBhY3RpdmU6IGF0dGFjaG1lbnRzU2hvd259XCJcbiAgICAoZW9PdXRzaWRlQ2xpY2spPVwiYXR0YWNobWVudHNTaG93biA9IGZhbHNlXCI+XG4gICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLWxpc3RcIiAqbmdJZj1cImF0dGFjaG1lbnRzU2hvd25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IG1haW5cIiAoY2xpY2spPVwic2VsZWN0QXR0YWNobWVudChudWxsKVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBsYXRlc3RVcmkgPT09IHByZXZpZXdVcml9XCI+e3tkbXNPYmplY3RUaXRsZX19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudFwiICpuZ0Zvcj1cImxldCBhIG9mIGF0dGFjaG1lbnRzXCIgKGNsaWNrKT1cInNlbGVjdEF0dGFjaG1lbnQoYSlcIiBbbmdDbGFzc109XCJ7Y3VycmVudDogbGF0ZXN0VXJpID09PSBhLnByZXZpZXdVcml9XCI+XG4gICAgICAgIHt7YS5uYW1lfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGVvLWljb24gY2xhc3M9XCJidXR0b25cIiBbYmFkZ2VdPVwiYXR0YWNobWVudHM/Lmxlbmd0aFwiIChjbGljayk9XCJhdHRhY2htZW50c1Nob3duID0gIWF0dGFjaG1lbnRzU2hvd25cIlxuICAgICAgW2ljb25TcmNdPVwiYXR0YWNobWVudHNTaG93biA/ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZycgOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hdHRhY2htZW50LnN2ZydcIj48L2VvLWljb24+XG4gIDwvZGl2PlxuXG4gIDx5dmMtcG9wb3V0XG4gIFtwb3BvdXRXaW5kb3dDb25maWddPVwicG9wb3V0V2luZG93Q29uZmlnXCJcbiAgW3RyaWdnZXJQb3NpdGlvbl09XCJwb3BvdXRUcmlnZ2VyUG9zaXRpb25cIiBbZGlzYWJsZWRdPVwidW5kb2NrRGlzYWJsZWRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lclwiIFtzdHlsZS5vdmVyZmxvd109XCInaGlkZGVuJ1wiPlxuICAgICAgPGlmcmFtZSBbaGlkZGVuXT1cImlzVW5kb2NrZWQgfHwgbG9hZGluZ1wiICNpZnJhbWUgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgY2xhc3M9XCJpZnJhbWVfX2xvYWRlclwiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2xpZGVcIiAqbmdJZj1cImlzVW5kb2NrZWRcIj5cbiAgICAgICAgPGVvLWljb24gKm5nSWY9XCJtZWRpYVR5cGVcIiBbb2JqZWN0VHlwZV09XCJtZWRpYVR5cGVcIj48L2VvLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC95dmMtcG9wb3V0PlxuPC9kaXY+XG5cbjxkaXYgW2hpZGRlbl09XCJvcGVuXCIgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIj5cbiAgPGVvLWljb24gY2xhc3M9XCJub2ZpbGVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19uby1maWxlLnN2ZydcIj48L2VvLWljb24+XG48L2Rpdj5cbiJdfQ==
@@ -520,7 +520,7 @@ let FormElementTableComponent = FormElementTableComponent_1 = class FormElementT
520
520
  this.overlayGridOptions.api.ensureNodeVisible(rowNode);
521
521
  }
522
522
  onCellClicked($event) {
523
- if ($event.rowIndex !== null && !this.pendingChanges.check()) {
523
+ if ($event.rowIndex !== null && !this.pendingChanges.checkForPendingTasks(this.rowEdit ? this.rowEdit.pendingTaskId : undefined)) {
524
524
  if (!$event.node.group && $event.data) {
525
525
  if ($event.colDef.cellClass === 'router-link-cell') {
526
526
  this.gridApi.openRouterLink($event.event, 'ag-row');
@@ -620,4 +620,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
620
620
  type: HostListener,
621
621
  args: ['keydown.control.c', ['$event']]
622
622
  }] } });
623
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQXVCLGFBQWEsRUFBRSxpQkFBaUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNySCxPQUFPLEVBQTZFLEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUMsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFjLE1BQU0sZ0RBQWdELENBQUM7QUFJekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFzQnhELElBQU0seUJBQXlCLGlDQUEvQixN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cm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsJztcbmltcG9ydCB7Q29sRGVmLCBHcmlkT3B0aW9ucywgTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0NzdkV4cG9ydE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnQnO1xuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZSwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0NlbGxSZW5kZXJlciwgR3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4vLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7RWRpdFJvdywgVGFibGVDb21wb25lbnRQYXJhbXN9IGZyb20gJy4vZm9ybS1lbGVtZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1Jvd0VkaXRDb21wb25lbnR9IGZyb20gJy4vcm93LWVkaXQvcm93LWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSBcIi4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlXCI7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5zY3NzJ1xuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1FbGVtZW50VGFibGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0IHtcblxuICBwcml2YXRlIF9jYWNoZWRDb2x1bW5zOiBhbnlbXTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uc092ZXJsYXk6IGFueVtdO1xuXG4gIHB1YmxpYyBtb2R1bGVzOiBNb2R1bGVbXSA9IFtDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIENzdkV4cG9ydE1vZHVsZV07XG5cbiAgQkFTRV9DQUNIRV9MQVlPVVRfS0VZID0gJ3RhYmxlLnN0YXRlJztcbiAgY2FjaGVMYXlvdXRLZXkgPSB0aGlzLkJBU0VfQ0FDSEVfTEFZT1VUX0tFWTtcblxuICBAVmlld0NoaWxkKCdyb3dFZGl0Jykgcm93RWRpdDogUm93RWRpdENvbXBvbmVudDtcbiAgLy8gQFZpZXdDaGlsZCgnc3BsaXRWaWV3Jykgc3BsaXRWaWV3OiBTcGxpdENvbXBvbmVudDtcblxuICBASW5wdXQoKSBsaW1pdDogbnVtYmVyO1xuICBASW5wdXQoKSBoYXNQcmV2aWV3RmlsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbWluV2lkdGggPSAnOTd2dyc7XG4gIEBJbnB1dCgpIGhlaWdodCA9ICc5NXZoJztcblxuICBfcGFyYW1zOiBUYWJsZUNvbXBvbmVudFBhcmFtcztcbiAgcHJpdmF0ZSBfZWxlbWVudHM6IGFueVtdO1xuICBncmlkUmVhZHkgPSBmYWxzZTtcbiAgdmFsdWU6IGFueVtdO1xuICBpbm5lclZhbHVlOiBhbnlbXTtcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBvdmVybGF5R3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBlZGl0aW5nUm93OiBFZGl0Um93O1xuICBzaG93RGlhbG9nID0gZmFsc2U7XG4gIHNob3dQcmV2aWV3ID0gZmFsc2U7XG4gIHNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSBmYWxzZTtcbiAgbWFwcGVkUm93cyA9IFtdO1xuICBtYXBwaW5nRXJyb3JGaWVsZHMgPSBbXTtcblxuICBASW5wdXQoKVxuICBzZXQgcGFyYW1zKHA6IFRhYmxlQ29tcG9uZW50UGFyYW1zKSB7XG4gICAgdGhpcy5jYWNoZUxheW91dEtleSA9IHAgPyBgJHt0aGlzLkJBU0VfQ0FDSEVfTEFZT1VUX0tFWX0uJHtwLmVsZW1lbnQubmFtZX1gIDogdGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVk7XG4gICAgaWYgKHApIHtcbiAgICAgIHRoaXMuX3BhcmFtcyA9IHA7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZicpIHx8IFtdO1xuICAgICAgdGhpcy5fY2FjaGVkQ29sdW1uc092ZXJsYXkgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuY29sRGVmT3ZlcmxheScpIHx8IFtdO1xuICAgICAgdGhpcy5zaG93UHJldmlldyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5zaG93UHJldmlldycpO1xuXG5cbiAgICAgIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPSB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uO1xuICAgICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5zaXplID0gJ3N1cGVyc21hbGwnO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5fcGFyYW1zLnNpemUpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1zLnNpemUgPSAnc21hbGwnO1xuICAgICAgfVxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2VsZW1lbnRzID0gcC5lbGVtZW50LmVsZW1lbnRzO1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gdGhpcy5jcmVhdGVDb2x1bW5EZWZpbml0aW9uKCk7XG4gICAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLnB1c2goe2hlYWRlck5hbWU6ICcnLCBjb2xJZDogJ2FjdGlvbnMnLCB3aWR0aDogMzQsIG1pbldpZHRoOiAzNCwgcGlubmVkOiAncmlnaHQnLCBjZWxsUmVuZGVyZXI6IHRoaXMuYWN0aW9uc0NlbGxSZW5kZXJlcn0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuY3JlYXRlQ29sdW1uRGVmaW5pdGlvbih0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ncmlkUmVhZHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuc2hpZnQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5hbHQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5jJywgWyckZXZlbnQnXSlcbiAgY29weUNlbGxIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5ncmlkQXBpLmNvcHlUb0NsaXBib2FyZChldmVudCwgdGhpcy5ncmlkT3B0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3Q6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XG4gICAgICBjb250ZXh0OiB0aGlzLmdyaWRBcGkuZ2V0Q29udGV4dCgpLFxuICAgICAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgICAgIHJvd0hlaWdodDogMzAsXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICAvLyBzdXBwcmVzc0NlbGxTZWxlY3Rpb246IHRydWUsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnLFxuICAgICAgc3VwcHJlc3NNb3ZhYmxlQ29sdW1uczogdHJ1ZSxcbiAgICAgIGVuYWJsZUZpbHRlcjogZmFsc2UsXG4gICAgICBzdXBwcmVzc05vUm93c092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0xvYWRpbmdPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBoZWFkZXJIZWlnaHQ6IDMwLFxuICAgICAgcm93SGVpZ2h0OiAzMCxcbiAgICAgIHJvd0J1ZmZlcjogMjAsXG4gICAgICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgICAgIGFjY2VudGVkU29ydDogdHJ1ZSxcbiAgICAgIC8vIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgZW5hYmxlRmlsdGVyOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTG9hZGluZ092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0NvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5jb250ZXh0LnRhYmxlQ29tcG9uZW50ID0gdGhpcztcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5yb3dDbGFzc1J1bGVzID0ge1xuICAgICAgJ25ldy1yb3cnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMuZGF0YS5pc05ld1Jvdykge1xuICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZGF0YS5pc05ld1JvdztcbiAgICAgICAgICBkZWxldGUgcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuaW5uZXJWYWx1ZVtwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5pbm5lclZhbHVlLmxlbmd0aCAtIDFdLmlzTmV3Um93O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLnRhc2tzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhc2tzID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9ICEhdGhpcy5yb3dFZGl0ICYmICEhdGFza3MuaW5jbHVkZXModGhpcy5yb3dFZGl0LnBlbmRpbmdUYXNrSWQpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWN0aW9uc0NlbGxSZW5kZXJlcihwYXJhbXMpIHtcbiAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICBpZiAocGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQucGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIGRpdi5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz1cImFjdGlvbi1pY29uXCIgaWQ9XCJhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fVwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPHBhdGggZD1cIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5gO1xuICAgICAgbGV0IGNsZWFySWNvbiA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKGAjYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1gKVswXTtcbiAgICAgIGNsZWFySWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LmNsZWFyUm93KHBhcmFtcy5yb3dJbmRleCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXYuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJhY3Rpb24taWNvblwiIGlkPVwiYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1cIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+YDtcbiAgICAgIGxldCBkZWxldGVJY29uID0gZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoYCNhY3Rpb25JY29uLSR7cGFyYW1zLnJvd0luZGV4fWApWzBdO1xuICAgICAgZGVsZXRlSWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LmRlbGV0ZVJvdyhwYXJhbXMucm93SW5kZXgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcblxuICAgIGlmICghdmFsdWUgJiYgdGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIC8vIGZvciBzZWFyY2ggcm93IGRhdGEgd2lsbCBhbHdheXMgYmUgb25lIGVtcHR5IHJvd1xuICAgICAgLy8gdG9kbzogcmUtZW5hYmxlIGFnYWluIHdoZW4gc2VhcmNoIGluIHRhYmxlcyBpcyBzdXBwb3J0ZWRcbiAgICAgIHZhbHVlID0gW3t9XTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZSA6IFtdO1xuICAgIC8vIGNyZWF0ZSBhIGNsb25lIG9mIHRoZSBhY3R1YWwgdmFsdWUgZm9yIGludGVybmFsIHVzYWdlXG4gICAgdGhpcy5pbm5lclZhbHVlID0gVXRpbHMuZm9ybURhdGFQYXJzZShVdGlscy5mb3JtRGF0YVN0cmluZ2lmeSh0aGlzLnZhbHVlKSk7XG5cbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5hcGkpIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNldFJvd0RhdGEodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dEYXRhID0gdGhpcy5pbm5lclZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RWRpdFJvdygpLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBjb2x1bW4gZGVmaW5pdGlvbiBmcm9tIGZvcm0gZWxlbWVudC5cbiAgICogQHJldHVybnMgY29sdW1uIGRlZmluaXRpb24gdG8gYmUgYWRkZWQgdG8gdGhlIGdyaWRPcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNvbHVtbkRlZmluaXRpb24ob3ZlcmxheT86IGJvb2xlYW4pOiBDb2xEZWZbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzLm1hcCgoZWwpID0+IHtcbiAgICAgIGxldCBjb2w6IENvbERlZiA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZpbml0aW9uKGVsKTtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29sLCB7XG4gICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgIGZpZWxkOiBlbC5uYW1lLFxuICAgICAgICByZWZEYXRhOiB7XG4gICAgICAgICAgLi4uY29sLnJlZkRhdGEsXG4gICAgICAgICAgX2VvRm9ybUVsZW1lbnQ6IGVsLFxuICAgICAgICAgIF9zaXR1YXRpb246IHRoaXMuX3BhcmFtcy5zaXR1YXRpb25cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsZXQgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnM7XG4gICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1uc092ZXJsYXk7XG4gICAgICB9XG4gICAgICBsZXQgY2FjaGVkQ29sdW1uID0gY2FjaGVkQ29sdW1ucy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gZWwucW5hbWUpO1xuICAgICAgaWYgKGNhY2hlZENvbHVtbikge1xuICAgICAgICBjb2wud2lkdGggPSBjYWNoZWRDb2x1bW4ud2lkdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkUm93KCkge1xuICAgIGNvbnN0IHJvd0RhdGEgPSB7fTtcbiAgICBjb25zdCBhc3luY0ZldGNoZXMgPSBbXTtcbiAgICB0aGlzLl9lbGVtZW50c1xuICAgICAgLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBpZiAoZWwuZGVmYXVsdHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByb3dEYXRhW2VsLm5hbWVdID0gZWwuZGVmYXVsdHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uKSB7XG4gICAgICAgICAgcm93RGF0YVtlbC5uYW1lXSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXREZWZhdWx0VmFsdWUoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24pO1xuICAgICAgICAgIGlmIChlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbiA9PT0gJ0NVUlJFTlRfVVNFUicpIHtcbiAgICAgICAgICAgIGFzeW5jRmV0Y2hlcy5wdXNoKHRoaXMucmVzb2x2ZU9yZ0RhdGFNZXRhKGVsLm5hbWUsIHJvd0RhdGFbZWwubmFtZV0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgaWYgKGFzeW5jRmV0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JrSm9pbihhc3luY0ZldGNoZXMpLnN1YnNjcmliZSgocmVzOiB7a2V5OiBzdHJpbmcsIHZhbHVlOiBhbnl9W10pID0+IHtcbiAgICAgICAgcmVzLmZvckVhY2gociA9PiB7XG4gICAgICAgICAgcm93RGF0YVtyLmtleV0gPSByLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRFZGl0Um93KC0xLCByb3dEYXRhKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3coLTEsIHJvd0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU9yZ0RhdGFNZXRhKGVsZW1lbnROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdCh2YWx1ZSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gKHtcbiAgICAgICAga2V5OiBgJHtlbGVtZW50TmFtZX1fbWV0YWAsXG4gICAgICAgIHZhbHVlOiByZXNcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBlZGl0Um93KGV2ZW50KSB7XG4gICAgdGhpcy5zZXRFZGl0Um93KGV2ZW50Lm5vZGUuaWQsIGV2ZW50Lm5vZGUuZGF0YSk7XG4gIH1cblxuICBvbkVkaXRDb21wbGV0ZShldmVudCkge1xuICAgIC8vdG9kbzogaXMgaXQgb2Jzb2xldGU/XG4gIH1cblxuICBwcml2YXRlIHNldEVkaXRSb3coaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XG4gICAgLy8gc2V0dXAgdGhlIHJvdyB0byBiZSBlZGl0ZWQuIEJlc2lkZSBzb21lIHByb3BlcnRpZXMsIHRoZVxuICAgIC8vIHJvdyBjb250YWlucyBhIGZvcm0gbW9kZWwgYW5kIGZvcm0gZGF0YS4gSWYgdGhlIHBhcmVudCBmb3JtIG1vZGVsXG4gICAgLy8gcHJvdmlkZWQgYSBzY3JpcHQsIHRoaXMgd2lsbCBiZSBhZGRlZCBhcyB3ZWxsLCBzbyBlZGl0aW5nIGEgcm93IHdpbGxcbiAgICAvLyByZXNwZWN0IHRoZSBmb3JtIHNjcmlwdC5cbiAgICB0aGlzLmVkaXRpbmdSb3cgPSB7XG4gICAgICBzaXR1YXRpb246IHRoaXMuX3BhcmFtcy5zaXR1YXRpb24sXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB0YWJsZUVsZW1lbnQ6IHRoaXMuX3BhcmFtcy5lbGVtZW50LFxuICAgICAgZm9ybToge1xuICAgICAgICBlbGVtZW50czogdGhpcy5fZWxlbWVudHMsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLl9wYXJhbXMuZWxlbWVudC5yZWFkb25seSxcbiAgICAgICAgZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RWRpdFJvdygpLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0RWRpdFJvdygpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgIGlmICh0aGlzLmVkaXRpbmdSb3cgJiYgdGhpcy5lZGl0aW5nUm93LmluZGV4ICE9PSAtMSkge1xuICAgICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgdGhpcy5lZGl0aW5nUm93LmluZGV4KTtcbiAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFibGVWYWx1ZSgpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaSkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLnNldFJvd0RhdGEodGhpcy5pbm5lclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy52YWx1ZS5pbmNsdWRlcygnaXNOZXdSb3cnKSkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnZhbHVlWydpc05ld1JvdyddO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGNhbmNlbFJvd0VkaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RWRpdCkge1xuICAgICAgdGhpcy5yb3dFZGl0LmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICBpZiAodGhpcy5fcGFyYW1zLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5lZGl0aW5nUm93ID0gbnVsbDtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbEltcG9ydFJlcG9ydCgpIHtcbiAgICB0aGlzLnNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLm1hcHBlZFJvd3MgPSBbXTtcbiAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcyA9IFtdO1xuICB9XG5cbiAgdXBkYXRlUm93KHJvd1Jlc3VsdDogYW55KSB7XG4gICAgY29uc3QgaXNOZXdSb3cgPSByb3dSZXN1bHQuaW5kZXggPT09IC0xO1xuICAgIGlmIChpc05ld1Jvdykge1xuICAgICAgdGhpcy5pbm5lclZhbHVlLnB1c2goey4uLnJvd1Jlc3VsdC5yb3dEYXRhLCAuLi57aXNOZXdSb3c6IHRydWV9fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAvLyB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSA9IHsuLi50aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XSwgLi4ucm93UmVzdWx0LnJvd0RhdGF9O1xuICAgICAgICB0aGlzLmlubmVyVmFsdWVbcm93UmVzdWx0LmluZGV4XVtlbC5uYW1lXSA9IHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWVdO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZSArICdfbWV0YSddKSB7XG4gICAgICAgICAgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZSArICdfbWV0YSddID0gcm93UmVzdWx0LnJvd0RhdGFbZWwubmFtZSArICdfbWV0YSddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzTmV3Um93ICYmICFyb3dSZXN1bHQuY3JlYXRlTmV3Um93KSB7XG4gICAgICB0aGlzLnNldEVkaXRSb3codGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEsIHRoaXMuaW5uZXJWYWx1ZVt0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMV0pO1xuICAgIH0gZWxzZSBpZiAocm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5hZGRSb3coKTtcbiAgICAgIGxldCByb3dOb2RlID0gdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmdldFJvd05vZGUoJycgKyAodGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEpKTtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KHJvd1Jlc3VsdC5pbmRleCwgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0pO1xuICAgIH1cbiAgfVxuXG4gIGNvcHlSb3cocm93UmVzdWx0OiBhbnkpIHtcbiAgICByb3dSZXN1bHQuaW5kZXggPSAtMTtcbiAgICB0aGlzLmlubmVyVmFsdWUucHVzaCh7Li4ucm93UmVzdWx0LnJvd0RhdGEsIC4uLntpc05ld1JvdzogdHJ1ZX19KTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgICBpZiAocm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5hZGRSb3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJvd1Jlc3VsdC5yb3dEYXRhKSkpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgICBpZiAodGhpcy5pbm5lclZhbHVlLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBpbmRleCA9PSB0aGlzLmlubmVyVmFsdWUubGVuZ3RoID8gdGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDEgOiBpbmRleDtcbiAgICAgICAgdGhpcy5zZXRFZGl0Um93KG5leHRJbmRleCwgdGhpcy5pbm5lclZhbHVlW25leHRJbmRleF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYW5jZWxSb3dFZGl0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJSb3coaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaW5uZXJWYWx1ZVtpbmRleF0gPSB7fTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgfVxuXG4gIGV4cG9ydENTVigpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5leHBvcnREYXRhQXNDc3Yoe1xuICAgICAgLi4udGhpcy5ncmlkQXBpLmNzdkV4cG9ydFBhcmFtcyxcbiAgICAgIGZpbGVOYW1lOiB0aGlzLl9wYXJhbXMuZWxlbWVudC5sYWJlbFxuICAgIH0pO1xuICB9XG5cbiAgaW1wb3J0Q1NWKGV2ZW50KSB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5fcGFyYW1zLmVsZW1lbnQuZWxlbWVudHM7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGUgPT4ge1xuICAgICAgbGV0IHBhcnNlZGF0YSA9IFtdO1xuICAgICAgaWYgKHR5cGVvZiBlLnRhcmdldC5yZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGxldCBuZXdMaW5lQnJlYWsgPSBlLnRhcmdldC5yZXN1bHQuc3BsaXQoJ1xcbicpLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0ICE9PSAnJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3TGluZUJyZWFrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGFyc2VkYXRhLnB1c2gobmV3TGluZUJyZWFrW2ldLnNwbGl0KCc7JykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlZGF0YS5sZW5ndGggPiA1MDAwKSB7XG4gICAgICAgICAgdGhpcy50b2FzdC5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnVwbG9hZC5lcnJvcicpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VkYXRhID0gcGFyc2VkYXRhLm1hcChkYXRhID0+IGRhdGEubWFwKGQgPT4gZC5yZXBsYWNlKC9cIi9naSwgJycpLnJlcGxhY2UoJ1xcbicsICcnKS5yZXBsYWNlKC9bXi0uOixhLXpBLVowLTkoKSBdL2csICcnKS50cmltKCkpKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLm1hcChjb2x1bW4gPT4gY29sdW1uWydmaWVsZCddKTtcbiAgICAgICAgY29uc3QgY29sdW1uc1VwbG9hZGVkID0gcGFyc2VkYXRhWzBdO1xuICAgICAgICBwYXJzZWRhdGEuc2hpZnQoKTtcbiAgICAgICAgY29uc3Qgcm93c1VwbG9hZGVkID0gcGFyc2VkYXRhO1xuXG4gICAgICAgIGNvbnN0IG1ldGFGaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3NVcGxvYWRlZC5sZW5ndGg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICBjb25zdCBtYXBwZWRSb3cgPSB7fTtcbiAgICAgICAgICBsZXQgY3VycmVudFJvdyA9IHJvd3NVcGxvYWRlZFtyb3dJbmRleF07XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Um93Lmxlbmd0aCAmJiBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3dbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09IGNvbHVtbnNbaV0pO1xuICAgICAgICAgICAgICBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdPUkdBTklaQVRJT04nKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9yZ09iaiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QoY3VycmVudFJvd1tpXSkpO1xuICAgICAgICAgICAgICAgIGlmIChvcmdPYmouYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgICAgbWV0YUZpZWxkcy5wdXNoKHtjb2x1bW46IGNvbHVtbnNbaV0sIHJvd0luZGV4OiByb3dJbmRleCwgdmFsdWU6IG9yZ09ian0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGN1cnJlbnRGaWVsZC5jb2Rlc3lzdGVtLmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2Rlc3lzdGVtRW50cnkgPSBjb2Rlc3lzdGVtLmVudHJpZXMuZmluZChlbnRyeSA9PiBlbnRyeS5kYXRhID09PSBjdXJyZW50Um93W2ldIHx8IGVudHJ5LmRlZmF1bHRyZXByZXNlbnRhdGlvbiA9PT0gY3VycmVudFJvd1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGVzeXN0ZW1FbnRyeSkge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgICAgIG1ldGFGaWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uc1tpXSxcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDogY29kZXN5c3RlbUVudHJ5LmlkLCBkZWZhdWx0cmVwcmVzZW50YXRpb246IGNvZGVzeXN0ZW1FbnRyeS5kZWZhdWx0cmVwcmVzZW50YXRpb24sIGxhYmVsOiBjb2Rlc3lzdGVtRW50cnkubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnUkVGRVJFTkNFJykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Um93W2ldLmxlbmd0aCA9PT0gMzIpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnREFURVRJTUUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ldyBEYXRlKGN1cnJlbnRSb3dbaV0pLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ05VTUJFUicpIHtcbiAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBuZXcgTG9jYWxlTnVtYmVyUGlwZSh0aGlzLnRyYW5zbGF0ZSkuc3RyaW5nVG9OdW1iZXIoY3VycmVudFJvd1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKG1hcHBlZFJvd1tjb2x1bW5zW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMucHVzaCh7dGVjaG5pY2FsTmFtZTogY29sdW1uc1tpXSwgdXBsb2FkZWROYW1lOiBjb2x1bW5zVXBsb2FkZWRbaV0sIHJvdzogcm93SW5kZXgsIHZhbHVlOiBjdXJyZW50Um93W2ldfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tYXBwZWRSb3dzLnB1c2gobWFwcGVkUm93KTtcbiAgICAgICAgfVxuICAgICAgICBtZXRhRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMubWFwcGVkUm93c1tmaWVsZC5yb3dJbmRleF1bZmllbGQuY29sdW1uICsgJ19tZXRhJ10gPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3BlbkltcG9ydFJlcG9ydERpYWxvZygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgfVxuXG4gIGFkZEltcG9ydFZhbHVlc1RvVGFibGUoKSB7XG4gICAgdGhpcy5zaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuRGlhbG9nKCk7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gWy4uLnRoaXMuaW5uZXJWYWx1ZSwgLi4udGhpcy5tYXBwZWRSb3dzXTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlVmFsdWUoKTtcbiAgfVxuXG4gIHNpemVUb0ZpdChvdmVybGF5PzogYm9vbGVhbikge1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRpYWxvZygpIHtcbiAgICAvLyBUT0RPOiBTdGlsbCBuZWNlc3Nhcnk/IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5yZWZyZXNoVmlldygpO1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gIH1cblxuICBvcGVuSW1wb3J0UmVwb3J0RGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0ltcG9ydFJlcG9ydERpYWxvZyA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVGFibGVEYXRhKCk6IGJvb2xlYW4ge1xuICAgIC8vIHRvZG86IGltcGxlbWVudFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUYWJsZURhdGEoKSA/IG51bGwgOiB7XG4gICAgICB0YWJsZToge1xuICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgb25Nb3VzZURvd24oJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrRm9yUGVuZGluZ1Rhc2tzKHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkKSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5zdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm93RWRpdC5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgIGxldCByb3dJbmRleCA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dJbmRleCgkZXZlbnQudGFyZ2V0LCAnYWctYm9keScpO1xuICAgICAgICBpZiAocm93SW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHJvd0luZGV4KS5zZXRTZWxlY3RlZCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAkZXZlbnQudGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Tb3J0Q2hhbmdlZCgpIHtcbiAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgdGhpcy5lZGl0aW5nUm93LmluZGV4KTtcbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZW5zdXJlTm9kZVZpc2libGUocm93Tm9kZSk7XG4gIH1cblxuICBvbkNlbGxDbGlja2VkKCRldmVudCkge1xuICAgIGlmICgkZXZlbnQucm93SW5kZXggIT09IG51bGwgJiYgIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkge1xuICAgICAgaWYgKCEkZXZlbnQubm9kZS5ncm91cCAmJiAkZXZlbnQuZGF0YSkge1xuICAgICAgICBpZiAoJGV2ZW50LmNvbERlZi5jZWxsQ2xhc3MgPT09ICdyb3V0ZXItbGluay1jZWxsJykge1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5vcGVuUm91dGVyTGluaygkZXZlbnQuZXZlbnQsICdhZy1yb3cnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZChjb2x1bW46IGFueSwgb3ZlcmxheT86IGJvb2xlYW4pIHtcbiAgICBsZXQgY29sdW1uc0RlZmluaXRpb24gPSB0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWYnO1xuICAgIGxldCBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1ucztcbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgY29sdW1uc0RlZmluaXRpb24gPSB0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWZPdmVybGF5JztcbiAgICAgIGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheTtcbiAgICB9XG4gICAgbGV0IGNvbCA9IGNhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKGNvbHVtbnNEZWZpbml0aW9uLCBjYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgX3VwZGF0ZVNwbGl0Vmlld0xheW91dENhY2hlKCkge1xuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgdGhpcy5zcGxpdFZpZXc/LnVwZGF0ZUxheW91dENhY2hlKCk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICB0b2dnbGVQcmV2aWV3KCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhdGhpcy5zaG93UHJldmlldztcbiAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgbGF5b3V0IG9mIHRoZSBzcGxpdCB2aWV3IGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIHByZXZpZXcgcGFuZWxzXG4gICAgLy8gdmlzaWJpbGl0eSBjaGFuZ2VkXG4gICAgLy8gdGhpcy5fdXBkYXRlU3BsaXRWaWV3TGF5b3V0Q2FjaGUoKTtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuc2hvd1ByZXZpZXcnLCB0aGlzLnNob3dQcmV2aWV3KTtcbiAgfVxuXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgLy8gICB0aGlzLl91cGRhdGVTcGxpdFZpZXdMYXlvdXRDYWNoZSgpO1xuICAvLyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNQcmV2aWV3RmlsZSA9IHRoaXMuaGFzUHJldmlld0ZpbGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuaGFzUHJldmlld0ZpbGUgOiAhIXRoaXMucGFyYW1zLm9iamVjdD8uY29udGVudDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCIgW25nQ2xhc3NdPVwie21lZGl1bTogX3BhcmFtcy5zaXplID09PSAnbWVkaXVtJywgbGFyZ2U6IF9wYXJhbXMuc2l6ZSA9PT0gJ2xhcmdlJ31cIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlLWhlYWRlclwiPlxuICAgIDxzcGFuPnt7X3BhcmFtcy5lbGVtZW50LmxhYmVsfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9wYXJhbXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiPlxuXG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2V4cGFuZC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4ub3Blbid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGZcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaXplX3RvX2ZpdC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQoKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhPy5sZW5ndGhcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIlxuICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jc3YnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImV4cG9ydENTVigpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gKm5nSWY9XCIhcGFyYW1zLm9iamVjdC5pc0ZpbmFsaXplZFwiIGNsYXNzPVwic3RmXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdXBsb2FkMi5zdmcnXCJcbiAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnVwbG9hZCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZmlsZS5jbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmNzdlwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiICNmaWxlIChjaGFuZ2UpPVwiaW1wb3J0Q1NWKCRldmVudC50YXJnZXQpXCIgKGNsaWNrKT1cIiRldmVudC50YXJnZXQudmFsdWUgPSBudWxsXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZiBhZGQtcm93XCIgKm5nSWY9XCIhX3BhcmFtcy5lbGVtZW50LnJlYWRvbmx5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYWRkLnN2ZydcIlxuICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5hZGQnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9lby1pY29uPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ3JpZC1ib2R5IHNpemUte3sgcGFyYW1zLnNpemUgfX1cIj5cbiAgICA8YWctZ3JpZC1hbmd1bGFyICNhZ0dyaWQgKm5nSWY9XCJncmlkUmVhZHlcIiBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiIFttb2R1bGVzXT1cIm1vZHVsZXNcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIlxuICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwiZWRpdFJvdygkZXZlbnQpXCIgKGNlbGxDbGlja2VkKT1cIm9uQ2VsbENsaWNrZWQoJGV2ZW50KVwiIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKClcIlxuICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwib25FZGl0Q29tcGxldGUoJGV2ZW50KVwiIChjb2x1bW5SZXNpemVkKT1cIm9uQ29sdW1uUmVzaXplZCgkZXZlbnQuY29sdW1uKVwiPlxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cInBhcmFtcy5lbGVtZW50LmxhYmVsXCIgW3Zpc2libGVdPVwic2hvd0RpYWxvZ1wiIFtkaXJ0eUNoZWNrXT1cInJvd0VkaXQ/LnBlbmRpbmdUYXNrSWRcIlxuICBbbWluV2lkdGhdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnID8gbWluV2lkdGggOiAyMDBcIlxuICBbd2lkdGhdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnID8gJzk1dncnIDogNTAwXCJcbiAgW2hlaWdodF09XCJoZWlnaHRcIlxuICBbc3R5bGVDbGFzc109XCInb2JqZWN0LWZvcm0tdGFibGUtZGlhbG9nJ1wiIChoaWRlKT1cIm9uQ2xvc2UoKVwiIFtpc0Zvcm1UYWJsZV09XCJ0cnVlXCIgW2hhc1ByZXZpZXdGaWxlXT1cImhhc1ByZXZpZXdGaWxlXCJcbiAgW3Nob3dQcmV2aWV3XT1cInNob3dQcmV2aWV3XCIgKG9uVG9nZ2xlUHJldmlldyk9XCJ0b2dnbGVQcmV2aWV3KClcIj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwic2hvd0RpYWxvZ1wiPlxuXG4gICAgPCEtLSA8eXZjLXNwbGl0LXZpZXcgW2xheW91dFNldHRpbmdzSURdPVwiY2FjaGVMYXlvdXRLZXlcIj4gLS0+XG4gICAgPHl2Yy1zcGxpdC12aWV3PlxuXG4gICAgICA8IS0tIHRoZSB0YWJsZSBpdHNlbGYtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIiBbdmlzaWJsZV09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tdGFibGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtZm9ybS10YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2l6ZV90b19maXQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmZpdCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwic2l6ZVRvRml0KHRydWUpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhLmxlbmd0aFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNzdid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGYgYWRkLXJvd1wiICpuZ0lmPVwiIV9wYXJhbXMuZWxlbWVudC5yZWFkb25seVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2FkZC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uYWRkJ3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJhZGRSb3coKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWJvZHlcIj5cbiAgICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjYWdHcmlkMiAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwib3ZlcmxheUdyaWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZWxsQ2xpY2tlZCk9XCJvbkNlbGxDbGlja2VkKCRldmVudCk7ZWRpdFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uUmVzaXplZCk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50LmNvbHVtbiwgdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHRhYmxlIGVkaXQgY29tcG9uZW50LS0+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjIwXCIgW3Zpc2libGVdPVwiISFlZGl0aW5nUm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWJvZHlcIj5cbiAgICAgICAgICA8ZW8tcm93LWVkaXQgW3Jvd109XCJlZGl0aW5nUm93XCIgW2xpbWl0UmVhY2hlZF09XCJsaW1pdCA8PSBvdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YS5sZW5ndGhcIiAjcm93RWRpdFxuICAgICAgICAgICAgKG9uU2F2ZSk9XCJ1cGRhdGVSb3coJGV2ZW50KVwiIChvblNhdmVDb3B5KT1cImNvcHlSb3coJGV2ZW50KVwiIChvbkRlbGV0ZSk9XCJkZWxldGVSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsUm93RWRpdCgpXCI+PC9lby1yb3ctZWRpdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHZpZXdlci0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0MFwiIFt2aXNpYmxlXT1cInNob3dQcmV2aWV3ICYmIGhhc1ByZXZpZXdGaWxlXCI+XG4gICAgICAgIDxlby1tZWRpYSAqbmdJZj1cImhhc1ByZXZpZXdGaWxlXCIgW3VuZG9ja0Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICBbdXNlVmVyc2lvbl09XCJwYXJhbXMub2JqZWN0Py5pZCA9PT0gcGFyYW1zLm9iamVjdD8uY29udGVudD8uaWRcIiBbZG1zT2JqZWN0XT1cInBhcmFtcy5vYmplY3RcIj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwveXZjLXNwbGl0LXZpZXc+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIignZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC50aXRsZScgfCB0cmFuc2xhdGUpXCIgW3Zpc2libGVdPVwic2hvd0ltcG9ydFJlcG9ydERpYWxvZ1wiXG4gICAgICAgICAgIChoaWRlKT1cImNhbmNlbEltcG9ydFJlcG9ydCgpXCIgW3N0eWxlQ2xhc3NdPVwiJ2ltcG9ydC1yZXBvcnRfX2RpYWxvZydcIj5cbiAgPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICA8aDQgdHJhbnNsYXRlIFt0cmFuc2xhdGVQYXJhbXNdPVwie3JlYWRSb3dzOiBtYXBwZWRSb3dzLmxlbmd0aH1cIj5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LnJlYWRSb3dzPC9oND5cbiAgICA8ZGl2ICpuZ0lmPVwibWFwcGluZ0Vycm9yRmllbGRzLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgIDxoNCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnM8L2g0PlxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuZXJyb3JzLnJvdzwvdGg+XG4gICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmVycm9ycy5jc3ZDb2x1bW48L3RoPlxuICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudGFibGVDb2x1bW48L3RoPlxuICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudmFsdWU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgbWFwcGluZ0Vycm9yRmllbGRzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnJvdyArIDF9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnVwbG9hZGVkTmFtZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7ZXJyb3IudGVjaG5pY2FsTmFtZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7ZXJyb3IudmFsdWV9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsSW1wb3J0UmVwb3J0KClcIiBjbGFzcz1cImJ1dHRvbi1jYW5jZWxcIiB0cmFuc2xhdGU+ZW8ucmVzdWJtaXNzaW9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEltcG9ydFZhbHVlc1RvVGFibGUoKVwiIGNsYXNzPVwicHJpbWFyeVwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmltcG9ydDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19
623
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9mb3JtLWVsZW1lbnQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQXVCLGFBQWEsRUFBRSxpQkFBaUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNySCxPQUFPLEVBQTZFLEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUMsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFjLE1BQU0sZ0RBQWdELENBQUM7QUFJekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFzQnhELElBQU0seUJBQXlCLGlDQUEvQixN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bUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NsaWVudC1zaWRlLXJvdy1tb2RlbCc7XG5pbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnMsIE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtDc3ZFeHBvcnRNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jc3YtZXhwb3J0JztcbmltcG9ydCB7Q29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtDZWxsUmVuZGVyZXIsIEdyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0VkaXRSb3csIFRhYmxlQ29tcG9uZW50UGFyYW1zfSBmcm9tICcuL2Zvcm0tZWxlbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtSb3dFZGl0Q29tcG9uZW50fSBmcm9tICcuL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge0xvY2FsZU51bWJlclBpcGV9IGZyb20gXCIuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZVwiO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2Zvcm0tZWxlbWVudC10YWJsZS5jb21wb25lbnQuc2NzcydcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRWxlbWVudFRhYmxlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgX2NhY2hlZENvbHVtbnNPdmVybGF5OiBhbnlbXTtcblxuICBwdWJsaWMgbW9kdWxlczogTW9kdWxlW10gPSBbQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlLCBDc3ZFeHBvcnRNb2R1bGVdO1xuXG4gIEJBU0VfQ0FDSEVfTEFZT1VUX0tFWSA9ICd0YWJsZS5zdGF0ZSc7XG4gIGNhY2hlTGF5b3V0S2V5ID0gdGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVk7XG5cbiAgQFZpZXdDaGlsZCgncm93RWRpdCcpIHJvd0VkaXQ6IFJvd0VkaXRDb21wb25lbnQ7XG4gIC8vIEBWaWV3Q2hpbGQoJ3NwbGl0VmlldycpIHNwbGl0VmlldzogU3BsaXRDb21wb25lbnQ7XG5cbiAgQElucHV0KCkgbGltaXQ6IG51bWJlcjtcbiAgQElucHV0KCkgaGFzUHJldmlld0ZpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1pbldpZHRoID0gJzk3dncnO1xuICBASW5wdXQoKSBoZWlnaHQgPSAnOTV2aCc7XG5cbiAgX3BhcmFtczogVGFibGVDb21wb25lbnRQYXJhbXM7XG4gIHByaXZhdGUgX2VsZW1lbnRzOiBhbnlbXTtcbiAgZ3JpZFJlYWR5ID0gZmFsc2U7XG4gIHZhbHVlOiBhbnlbXTtcbiAgaW5uZXJWYWx1ZTogYW55W107XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgb3ZlcmxheUdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgZWRpdGluZ1JvdzogRWRpdFJvdztcbiAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBzaG93UHJldmlldyA9IGZhbHNlO1xuICBzaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gZmFsc2U7XG4gIG1hcHBlZFJvd3MgPSBbXTtcbiAgbWFwcGluZ0Vycm9yRmllbGRzID0gW107XG5cbiAgQElucHV0KClcbiAgc2V0IHBhcmFtcyhwOiBUYWJsZUNvbXBvbmVudFBhcmFtcykge1xuICAgIHRoaXMuY2FjaGVMYXlvdXRLZXkgPSBwID8gYCR7dGhpcy5CQVNFX0NBQ0hFX0xBWU9VVF9LRVl9LiR7cC5lbGVtZW50Lm5hbWV9YCA6IHRoaXMuQkFTRV9DQUNIRV9MQVlPVVRfS0VZO1xuICAgIGlmIChwKSB7XG4gICAgICB0aGlzLl9wYXJhbXMgPSBwO1xuICAgICAgdGhpcy5fY2FjaGVkQ29sdW1ucyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWYnKSB8fCBbXTtcbiAgICAgIHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5ID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuY2FjaGVMYXlvdXRLZXkgKyAnLmNvbERlZk92ZXJsYXknKSB8fCBbXTtcbiAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuc2hvd1ByZXZpZXcnKTtcblxuXG4gICAgICBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID0gdGhpcy5fcGFyYW1zLnNpdHVhdGlvbjtcbiAgICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgICB0aGlzLl9wYXJhbXMuc2l6ZSA9ICdzdXBlcnNtYWxsJztcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3BhcmFtcy5zaXplKSB7XG4gICAgICAgIHRoaXMuX3BhcmFtcy5zaXplID0gJ3NtYWxsJztcbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JpZFJlYWR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl9lbGVtZW50cyA9IHAuZWxlbWVudC5lbGVtZW50cztcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuY3JlYXRlQ29sdW1uRGVmaW5pdGlvbigpO1xuICAgICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcy5wdXNoKHtoZWFkZXJOYW1lOiAnJywgY29sSWQ6ICdhY3Rpb25zJywgd2lkdGg6IDM0LCBtaW5XaWR0aDogMzQsIHBpbm5lZDogJ3JpZ2h0JywgY2VsbFJlbmRlcmVyOiB0aGlzLmFjdGlvbnNDZWxsUmVuZGVyZXJ9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSB0aGlzLmNyZWF0ZUNvbHVtbkRlZmluaXRpb24odHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JpZFJlYWR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmFsdC5zaGlmdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYycsIFsnJGV2ZW50J10pXG4gIGNvcHlDZWxsSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuZ3JpZEFwaS5jb3B5VG9DbGlwYm9hcmQoZXZlbnQsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkQXBpOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0OiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSA8R3JpZE9wdGlvbnM+e1xuICAgICAgY29udGV4dDogdGhpcy5ncmlkQXBpLmdldENvbnRleHQoKSxcbiAgICAgIGhlYWRlckhlaWdodDogMzAsXG4gICAgICByb3dIZWlnaHQ6IDMwLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICAgICAgYWNjZW50ZWRTb3J0OiB0cnVlLFxuICAgICAgLy8gc3VwcHJlc3NDZWxsU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJyxcbiAgICAgIHN1cHByZXNzTW92YWJsZUNvbHVtbnM6IHRydWUsXG4gICAgICBlbmFibGVGaWx0ZXI6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NOb1Jvd3NPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NMb2FkaW5nT3ZlcmxheTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzQ29udGV4dE1lbnU6IHRydWVcbiAgICB9O1xuICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC50YWJsZUNvbXBvbmVudCA9IHRoaXM7XG5cbiAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XG4gICAgICBjb250ZXh0OiB0aGlzLmdyaWRBcGkuZ2V0Q29udGV4dCgpLFxuICAgICAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgICAgIHJvd0hlaWdodDogMzAsXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICAvLyBzdXBwcmVzc0NlbGxTZWxlY3Rpb246IHRydWUsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnLFxuICAgICAgc3VwcHJlc3NNb3ZhYmxlQ29sdW1uczogdHJ1ZSxcbiAgICAgIGVuYWJsZUZpbHRlcjogZmFsc2UsXG4gICAgICBzdXBwcmVzc05vUm93c092ZXJsYXk6IHRydWUsXG4gICAgICBzdXBwcmVzc0xvYWRpbmdPdmVybGF5OiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuY29udGV4dC50YWJsZUNvbXBvbmVudCA9IHRoaXM7XG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMucm93Q2xhc3NSdWxlcyA9IHtcbiAgICAgICduZXctcm93JzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zLmRhdGEuaXNOZXdSb3cpIHtcbiAgICAgICAgICBkZWxldGUgcGFyYW1zLmRhdGEuaXNOZXdSb3c7XG4gICAgICAgICAgZGVsZXRlIHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LmlubmVyVmFsdWVbcGFyYW1zLmNvbnRleHQudGFibGVDb21wb25lbnQuaW5uZXJWYWx1ZS5sZW5ndGggLSAxXS5pc05ld1JvdztcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy50YXNrcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0YXNrcyA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSAhIXRoaXMucm93RWRpdCAmJiAhIXRhc2tzLmluY2x1ZGVzKHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFjdGlvbnNDZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgaWYgKHBhcmFtcy5jb250ZXh0LnRhYmxlQ29tcG9uZW50LnBhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBkaXYuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJhY3Rpb24taWNvblwiIGlkPVwiYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1cIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+YDtcbiAgICAgIGxldCBjbGVhckljb24gPSBkaXYucXVlcnlTZWxlY3RvckFsbChgI2FjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9YClbMF07XG4gICAgICBjbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5jbGVhclJvdyhwYXJhbXMucm93SW5kZXgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGl2LmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwiYWN0aW9uLWljb25cIiBpZD1cImFjdGlvbkljb24tJHtwYXJhbXMucm93SW5kZXh9XCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PmA7XG4gICAgICBsZXQgZGVsZXRlSWNvbiA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKGAjYWN0aW9uSWNvbi0ke3BhcmFtcy5yb3dJbmRleH1gKVswXTtcbiAgICAgIGRlbGV0ZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBwYXJhbXMuY29udGV4dC50YWJsZUNvbXBvbmVudC5kZWxldGVSb3cocGFyYW1zLnJvd0luZGV4KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG5cbiAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAvLyBmb3Igc2VhcmNoIHJvdyBkYXRhIHdpbGwgYWx3YXlzIGJlIG9uZSBlbXB0eSByb3dcbiAgICAgIC8vIHRvZG86IHJlLWVuYWJsZSBhZ2FpbiB3aGVuIHNlYXJjaCBpbiB0YWJsZXMgaXMgc3VwcG9ydGVkXG4gICAgICB2YWx1ZSA9IFt7fV07XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbXTtcbiAgICAvLyBjcmVhdGUgYSBjbG9uZSBvZiB0aGUgYWN0dWFsIHZhbHVlIGZvciBpbnRlcm5hbCB1c2FnZVxuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLmZvcm1EYXRhUGFyc2UoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xuXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuYXBpKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5uZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY29sdW1uIGRlZmluaXRpb24gZnJvbSBmb3JtIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIGNvbHVtbiBkZWZpbml0aW9uIHRvIGJlIGFkZGVkIHRvIHRoZSBncmlkT3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5EZWZpbml0aW9uKG92ZXJsYXk/OiBib29sZWFuKTogQ29sRGVmW10ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cy5tYXAoKGVsKSA9PiB7XG4gICAgICBsZXQgY29sOiBDb2xEZWYgPSB0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uRGVmaW5pdGlvbihlbCk7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbCwge1xuICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICBmaWVsZDogZWwubmFtZSxcbiAgICAgICAgcmVmRGF0YToge1xuICAgICAgICAgIC4uLmNvbC5yZWZEYXRhLFxuICAgICAgICAgIF9lb0Zvcm1FbGVtZW50OiBlbCxcbiAgICAgICAgICBfc2l0dWF0aW9uOiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGV0IGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zO1xuICAgICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgICAgY2FjaGVkQ29sdW1ucyA9IHRoaXMuX2NhY2hlZENvbHVtbnNPdmVybGF5O1xuICAgICAgfVxuICAgICAgbGV0IGNhY2hlZENvbHVtbiA9IGNhY2hlZENvbHVtbnMuZmluZChmID0+IGYucW5hbWUgPT09IGVsLnFuYW1lKTtcbiAgICAgIGlmIChjYWNoZWRDb2x1bW4pIHtcbiAgICAgICAgY29sLndpZHRoID0gY2FjaGVkQ29sdW1uLndpZHRoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJvdygpIHtcbiAgICBjb25zdCByb3dEYXRhID0ge307XG4gICAgY29uc3QgYXN5bmNGZXRjaGVzID0gW107XG4gICAgdGhpcy5fZWxlbWVudHNcbiAgICAgIC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgaWYgKGVsLmRlZmF1bHR2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcm93RGF0YVtlbC5uYW1lXSA9IGVsLmRlZmF1bHR2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChlbC5kZWZhdWx0dmFsdWVmdW5jdGlvbikge1xuICAgICAgICAgIHJvd0RhdGFbZWwubmFtZV0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0RGVmYXVsdFZhbHVlKGVsLmRlZmF1bHR2YWx1ZWZ1bmN0aW9uKTtcbiAgICAgICAgICBpZiAoZWwuZGVmYXVsdHZhbHVlZnVuY3Rpb24gPT09ICdDVVJSRU5UX1VTRVInKSB7XG4gICAgICAgICAgICBhc3luY0ZldGNoZXMucHVzaCh0aGlzLnJlc29sdmVPcmdEYXRhTWV0YShlbC5uYW1lLCByb3dEYXRhW2VsLm5hbWVdKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGlmIChhc3luY0ZldGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9ya0pvaW4oYXN5bmNGZXRjaGVzKS5zdWJzY3JpYmUoKHJlczoge2tleTogc3RyaW5nLCB2YWx1ZTogYW55fVtdKSA9PiB7XG4gICAgICAgIHJlcy5mb3JFYWNoKHIgPT4ge1xuICAgICAgICAgIHJvd0RhdGFbci5rZXldID0gci52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0RWRpdFJvdygtMSwgcm93RGF0YSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KC0xLCByb3dEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVPcmdEYXRhTWV0YShlbGVtZW50TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QodmFsdWUpLnBpcGUoXG4gICAgICBtYXAocmVzID0+ICh7XG4gICAgICAgIGtleTogYCR7ZWxlbWVudE5hbWV9X21ldGFgLFxuICAgICAgICB2YWx1ZTogcmVzXG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgZWRpdFJvdyhldmVudCkge1xuICAgIHRoaXMuc2V0RWRpdFJvdyhldmVudC5ub2RlLmlkLCBldmVudC5ub2RlLmRhdGEpO1xuICB9XG5cbiAgb25FZGl0Q29tcGxldGUoZXZlbnQpIHtcbiAgICAvL3RvZG86IGlzIGl0IG9ic29sZXRlP1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFZGl0Um93KGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xuICAgIC8vIHNldHVwIHRoZSByb3cgdG8gYmUgZWRpdGVkLiBCZXNpZGUgc29tZSBwcm9wZXJ0aWVzLCB0aGVcbiAgICAvLyByb3cgY29udGFpbnMgYSBmb3JtIG1vZGVsIGFuZCBmb3JtIGRhdGEuIElmIHRoZSBwYXJlbnQgZm9ybSBtb2RlbFxuICAgIC8vIHByb3ZpZGVkIGEgc2NyaXB0LCB0aGlzIHdpbGwgYmUgYWRkZWQgYXMgd2VsbCwgc28gZWRpdGluZyBhIHJvdyB3aWxsXG4gICAgLy8gcmVzcGVjdCB0aGUgZm9ybSBzY3JpcHQuXG4gICAgdGhpcy5lZGl0aW5nUm93ID0ge1xuICAgICAgc2l0dWF0aW9uOiB0aGlzLl9wYXJhbXMuc2l0dWF0aW9uLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgdGFibGVFbGVtZW50OiB0aGlzLl9wYXJhbXMuZWxlbWVudCxcbiAgICAgIGZvcm06IHtcbiAgICAgICAgZWxlbWVudHM6IHRoaXMuX2VsZW1lbnRzLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5fcGFyYW1zLmVsZW1lbnQucmVhZG9ubHksXG4gICAgICAgIGRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdEVkaXRSb3coKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEVkaXRSb3coKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaSkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICBpZiAodGhpcy5lZGl0aW5nUm93ICYmIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCk7XG4gICAgICAgIHJvd05vZGUuc2V0U2VsZWN0ZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5lbnN1cmVOb2RlVmlzaWJsZShyb3dOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYmxlVmFsdWUoKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmlubmVyVmFsdWUpO1xuICAgIGlmICh0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkpIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnJvd0RhdGEgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWU7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMudmFsdWUuaW5jbHVkZXMoJ2lzTmV3Um93JykpKSB7XG4gICAgICBkZWxldGUgdGhpcy52YWx1ZVsnaXNOZXdSb3cnXTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBjYW5jZWxSb3dFZGl0KCkge1xuICAgIGlmICh0aGlzLnJvd0VkaXQpIHtcbiAgICAgIHRoaXMucm93RWRpdC5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgaWYgKHRoaXMuX3BhcmFtcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuZWRpdGluZ1JvdyA9IG51bGw7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWxJbXBvcnRSZXBvcnQoKSB7XG4gICAgdGhpcy5zaG93SW1wb3J0UmVwb3J0RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5tYXBwZWRSb3dzID0gW107XG4gICAgdGhpcy5tYXBwaW5nRXJyb3JGaWVsZHMgPSBbXTtcbiAgfVxuXG4gIHVwZGF0ZVJvdyhyb3dSZXN1bHQ6IGFueSkge1xuICAgIGNvbnN0IGlzTmV3Um93ID0gcm93UmVzdWx0LmluZGV4ID09PSAtMTtcbiAgICBpZiAoaXNOZXdSb3cpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZS5wdXNoKHsuLi5yb3dSZXN1bHQucm93RGF0YSwgLi4ue2lzTmV3Um93OiB0cnVlfX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgLy8gdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0gPSB7Li4udGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF0sIC4uLnJvd1Jlc3VsdC5yb3dEYXRhfTtcbiAgICAgICAgdGhpcy5pbm5lclZhbHVlW3Jvd1Jlc3VsdC5pbmRleF1bZWwubmFtZV0gPSByb3dSZXN1bHQucm93RGF0YVtlbC5uYW1lXTtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWUgKyAnX21ldGEnXSkge1xuICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdW2VsLm5hbWUgKyAnX21ldGEnXSA9IHJvd1Jlc3VsdC5yb3dEYXRhW2VsLm5hbWUgKyAnX21ldGEnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgIGlmICh0aGlzLl9wYXJhbXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpc05ld1JvdyAmJiAhcm93UmVzdWx0LmNyZWF0ZU5ld1Jvdykge1xuICAgICAgdGhpcy5zZXRFZGl0Um93KHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxLCB0aGlzLmlubmVyVmFsdWVbdGhpcy5pbm5lclZhbHVlLmxlbmd0aCAtIDFdKTtcbiAgICB9IGVsc2UgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgICBsZXQgcm93Tm9kZSA9IHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLmFwaS5nZXRSb3dOb2RlKCcnICsgKHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxKSk7XG4gICAgICB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZW5zdXJlTm9kZVZpc2libGUocm93Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyhyb3dSZXN1bHQuaW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtyb3dSZXN1bHQuaW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBjb3B5Um93KHJvd1Jlc3VsdDogYW55KSB7XG4gICAgcm93UmVzdWx0LmluZGV4ID0gLTE7XG4gICAgdGhpcy5pbm5lclZhbHVlLnB1c2goey4uLnJvd1Jlc3VsdC5yb3dEYXRhLCAuLi57aXNOZXdSb3c6IHRydWV9fSk7XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gICAgaWYgKHJvd1Jlc3VsdC5jcmVhdGVOZXdSb3cpIHtcbiAgICAgIHRoaXMuYWRkUm93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RWRpdFJvdyh0aGlzLmlubmVyVmFsdWUubGVuZ3RoIC0gMSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb3dSZXN1bHQucm93RGF0YSkpKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVSb3coaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBkYXRlVGFibGVWYWx1ZSgpO1xuICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gaW5kZXggPT0gdGhpcy5pbm5lclZhbHVlLmxlbmd0aCA/IHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxIDogaW5kZXg7XG4gICAgICAgIHRoaXMuc2V0RWRpdFJvdyhuZXh0SW5kZXgsIHRoaXMuaW5uZXJWYWx1ZVtuZXh0SW5kZXhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FuY2VsUm93RWRpdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyUm93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmlubmVyVmFsdWVbaW5kZXhdID0ge307XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gIH1cblxuICBleHBvcnRDU1YoKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZXhwb3J0RGF0YUFzQ3N2KHtcbiAgICAgIC4uLnRoaXMuZ3JpZEFwaS5jc3ZFeHBvcnRQYXJhbXMsXG4gICAgICBmaWxlTmFtZTogdGhpcy5fcGFyYW1zLmVsZW1lbnQubGFiZWxcbiAgICB9KTtcbiAgfVxuXG4gIGltcG9ydENTVihldmVudCkge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuX3BhcmFtcy5lbGVtZW50LmVsZW1lbnRzO1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC5maWxlc1swXTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBlID0+IHtcbiAgICAgIGxldCBwYXJzZWRhdGEgPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgZS50YXJnZXQucmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBsZXQgbmV3TGluZUJyZWFrID0gZS50YXJnZXQucmVzdWx0LnNwbGl0KCdcXG4nKS5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdCAhPT0gJycpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0xpbmVCcmVhay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHBhcnNlZGF0YS5wdXNoKG5ld0xpbmVCcmVha1tpXS5zcGxpdCgnOycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJzZWRhdGEubGVuZ3RoID4gNTAwMCkge1xuICAgICAgICAgIHRoaXMudG9hc3QuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi51cGxvYWQuZXJyb3InKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlZGF0YSA9IHBhcnNlZGF0YS5tYXAoZGF0YSA9PiBkYXRhLm1hcChkID0+IGQucmVwbGFjZSgvXCIvZ2ksICcnKS5yZXBsYWNlKCdcXG4nLCAnJykucmVwbGFjZSgvW14tLjosYS16QS1aMC05KCkgXS9nLCAnJykudHJpbSgpKSk7XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uRGVmcy5tYXAoY29sdW1uID0+IGNvbHVtblsnZmllbGQnXSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNVcGxvYWRlZCA9IHBhcnNlZGF0YVswXTtcbiAgICAgICAgcGFyc2VkYXRhLnNoaWZ0KCk7XG4gICAgICAgIGNvbnN0IHJvd3NVcGxvYWRlZCA9IHBhcnNlZGF0YTtcblxuICAgICAgICBjb25zdCBtZXRhRmllbGRzID0gW107XG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dzVXBsb2FkZWQubGVuZ3RoOyByb3dJbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgbWFwcGVkUm93ID0ge307XG4gICAgICAgICAgbGV0IGN1cnJlbnRSb3cgPSByb3dzVXBsb2FkZWRbcm93SW5kZXhdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudFJvdy5sZW5ndGggJiYgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Um93W2ldICE9PSAnJykge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSBjb2x1bW5zW2ldKTtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWVsZC50eXBlID09PSAnT1JHQU5JWkFUSU9OJykge1xuICAgICAgICAgICAgICAgIGxldCBvcmdPYmogPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0KGN1cnJlbnRSb3dbaV0pKTtcbiAgICAgICAgICAgICAgICBpZiAob3JnT2JqLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgICAgIG1ldGFGaWVsZHMucHVzaCh7Y29sdW1uOiBjb2x1bW5zW2ldLCByb3dJbmRleDogcm93SW5kZXgsIHZhbHVlOiBvcmdPYmp9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gJyc7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcy5wdXNoKHt0ZWNobmljYWxOYW1lOiBjb2x1bW5zW2ldLCB1cGxvYWRlZE5hbWU6IGNvbHVtbnNVcGxvYWRlZFtpXSwgcm93OiByb3dJbmRleCwgdmFsdWU6IGN1cnJlbnRSb3dbaV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdDT0RFU1lTVEVNJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShjdXJyZW50RmllbGQuY29kZXN5c3RlbS5pZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29kZXN5c3RlbUVudHJ5ID0gY29kZXN5c3RlbS5lbnRyaWVzLmZpbmQoZW50cnkgPT4gZW50cnkuZGF0YSA9PT0gY3VycmVudFJvd1tpXSB8fCBlbnRyeS5kZWZhdWx0cmVwcmVzZW50YXRpb24gPT09IGN1cnJlbnRSb3dbaV0pO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rlc3lzdGVtRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvd1tjb2x1bW5zW2ldXSA9IGN1cnJlbnRSb3dbaV07XG4gICAgICAgICAgICAgICAgICBtZXRhRmllbGRzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbnNbaV0sXG4gICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7aWQ6IGNvZGVzeXN0ZW1FbnRyeS5pZCwgZGVmYXVsdHJlcHJlc2VudGF0aW9uOiBjb2Rlc3lzdGVtRW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uLCBsYWJlbDogY29kZXN5c3RlbUVudHJ5LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJvd1tpXS5sZW5ndGggPT09IDMyKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RmllbGQudHlwZSA9PT0gJ0RBVEVUSU1FJykge1xuICAgICAgICAgICAgICAgIGlmIChuZXcgRGF0ZShjdXJyZW50Um93W2ldKS50b1N0cmluZygpID09PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gJyc7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmdFcnJvckZpZWxkcy5wdXNoKHt0ZWNobmljYWxOYW1lOiBjb2x1bW5zW2ldLCB1cGxvYWRlZE5hbWU6IGNvbHVtbnNVcGxvYWRlZFtpXSwgcm93OiByb3dJbmRleCwgdmFsdWU6IGN1cnJlbnRSb3dbaV19KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gY3VycmVudFJvd1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEZpZWxkLnR5cGUgPT09ICdOVU1CRVInKSB7XG4gICAgICAgICAgICAgICAgbWFwcGVkUm93W2NvbHVtbnNbaV1dID0gbmV3IExvY2FsZU51bWJlclBpcGUodGhpcy50cmFuc2xhdGUpLnN0cmluZ1RvTnVtYmVyKGN1cnJlbnRSb3dbaV0pO1xuICAgICAgICAgICAgICAgIGlmIChpc05hTihtYXBwZWRSb3dbY29sdW1uc1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSAnJztcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcGluZ0Vycm9yRmllbGRzLnB1c2goe3RlY2huaWNhbE5hbWU6IGNvbHVtbnNbaV0sIHVwbG9hZGVkTmFtZTogY29sdW1uc1VwbG9hZGVkW2ldLCByb3c6IHJvd0luZGV4LCB2YWx1ZTogY3VycmVudFJvd1tpXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXBwZWRSb3dbY29sdW1uc1tpXV0gPSBjdXJyZW50Um93W2ldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubWFwcGVkUm93cy5wdXNoKG1hcHBlZFJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICB0aGlzLm1hcHBlZFJvd3NbZmllbGQucm93SW5kZXhdW2ZpZWxkLmNvbHVtbiArICdfbWV0YSddID0gZmllbGQudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9wZW5JbXBvcnRSZXBvcnREaWFsb2coKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gIH1cblxuICBhZGRJbXBvcnRWYWx1ZXNUb1RhYmxlKCkge1xuICAgIHRoaXMuc2hvd0ltcG9ydFJlcG9ydERpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFsuLi50aGlzLmlubmVyVmFsdWUsIC4uLnRoaXMubWFwcGVkUm93c107XG4gICAgdGhpcy51cGRhdGVUYWJsZVZhbHVlKCk7XG4gIH1cblxuICBzaXplVG9GaXQob3ZlcmxheT86IGJvb2xlYW4pIHtcbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5EaWFsb2coKSB7XG4gICAgLy8gVE9ETzogU3RpbGwgbmVjZXNzYXJ5PyB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkucmVmcmVzaFZpZXcoKTtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb3BlbkltcG9ydFJlcG9ydERpYWxvZygpIHtcbiAgICB0aGlzLnNob3dJbXBvcnRSZXBvcnREaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRhYmxlRGF0YSgpOiBib29sZWFuIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVGFibGVEYXRhKCkgPyBudWxsIDoge1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIG9uTW91c2VEb3duKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheUdyaWRPcHRpb25zLnN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24pIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVja0ZvclBlbmRpbmdUYXNrcyh0aGlzLnJvd0VkaXQucGVuZGluZ1Rhc2tJZCkpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvd0VkaXQuZmluaXNoUGVuZGluZygpO1xuICAgICAgICBsZXQgcm93SW5kZXggPSB0aGlzLmdyaWRBcGkuZ2V0Um93SW5kZXgoJGV2ZW50LnRhcmdldCwgJ2FnLWJvZHknKTtcbiAgICAgICAgaWYgKHJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmdldFJvd05vZGUoJycgKyByb3dJbmRleCkuc2V0U2VsZWN0ZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgJGV2ZW50LnRhcmdldC5jbGljaygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU29ydENoYW5nZWQoKSB7XG4gICAgbGV0IHJvd05vZGUgPSB0aGlzLm92ZXJsYXlHcmlkT3B0aW9ucy5hcGkuZ2V0Um93Tm9kZSgnJyArIHRoaXMuZWRpdGluZ1Jvdy5pbmRleCk7XG4gICAgdGhpcy5vdmVybGF5R3JpZE9wdGlvbnMuYXBpLmVuc3VyZU5vZGVWaXNpYmxlKHJvd05vZGUpO1xuICB9XG5cbiAgb25DZWxsQ2xpY2tlZCgkZXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsICYmICF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrRm9yUGVuZGluZ1Rhc2tzKHRoaXMucm93RWRpdCA/IHRoaXMucm93RWRpdC5wZW5kaW5nVGFza0lkIDogdW5kZWZpbmVkKSkge1xuICAgICAgaWYgKCEkZXZlbnQubm9kZS5ncm91cCAmJiAkZXZlbnQuZGF0YSkge1xuICAgICAgICBpZiAoJGV2ZW50LmNvbERlZi5jZWxsQ2xhc3MgPT09ICdyb3V0ZXItbGluay1jZWxsJykge1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5vcGVuUm91dGVyTGluaygkZXZlbnQuZXZlbnQsICdhZy1yb3cnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZChjb2x1bW46IGFueSwgb3ZlcmxheT86IGJvb2xlYW4pIHtcbiAgICBsZXQgY29sdW1uc0RlZmluaXRpb24gPSB0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWYnO1xuICAgIGxldCBjYWNoZWRDb2x1bW5zID0gdGhpcy5fY2FjaGVkQ29sdW1ucztcbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgY29sdW1uc0RlZmluaXRpb24gPSB0aGlzLmNhY2hlTGF5b3V0S2V5ICsgJy5jb2xEZWZPdmVybGF5JztcbiAgICAgIGNhY2hlZENvbHVtbnMgPSB0aGlzLl9jYWNoZWRDb2x1bW5zT3ZlcmxheTtcbiAgICB9XG4gICAgbGV0IGNvbCA9IGNhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKGNvbHVtbnNEZWZpbml0aW9uLCBjYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgX3VwZGF0ZVNwbGl0Vmlld0xheW91dENhY2hlKCkge1xuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgdGhpcy5zcGxpdFZpZXc/LnVwZGF0ZUxheW91dENhY2hlKCk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICB0b2dnbGVQcmV2aWV3KCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSAhdGhpcy5zaG93UHJldmlldztcbiAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgbGF5b3V0IG9mIHRoZSBzcGxpdCB2aWV3IGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIHByZXZpZXcgcGFuZWxzXG4gICAgLy8gdmlzaWJpbGl0eSBjaGFuZ2VkXG4gICAgLy8gdGhpcy5fdXBkYXRlU3BsaXRWaWV3TGF5b3V0Q2FjaGUoKTtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5jYWNoZUxheW91dEtleSArICcuc2hvd1ByZXZpZXcnLCB0aGlzLnNob3dQcmV2aWV3KTtcbiAgfVxuXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgLy8gICB0aGlzLl91cGRhdGVTcGxpdFZpZXdMYXlvdXRDYWNoZSgpO1xuICAvLyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNQcmV2aWV3RmlsZSA9IHRoaXMuaGFzUHJldmlld0ZpbGUgIT09IHVuZGVmaW5lZCA/IHRoaXMuaGFzUHJldmlld0ZpbGUgOiAhIXRoaXMucGFyYW1zLm9iamVjdD8uY29udGVudDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlXCIgW25nQ2xhc3NdPVwie21lZGl1bTogX3BhcmFtcy5zaXplID09PSAnbWVkaXVtJywgbGFyZ2U6IF9wYXJhbXMuc2l6ZSA9PT0gJ2xhcmdlJ31cIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1mb3JtLXRhYmxlLWhlYWRlclwiPlxuICAgIDxzcGFuPnt7X3BhcmFtcy5lbGVtZW50LmxhYmVsfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9wYXJhbXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiPlxuXG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZlwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2V4cGFuZC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4ub3Blbid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGZcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaXplX3RvX2ZpdC5zdmcnXCJcbiAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZml0J3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJzaXplVG9GaXQoKVwiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhPy5sZW5ndGhcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIlxuICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jc3YnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImV4cG9ydENTVigpXCI+PC9lby1pY29uPlxuICAgICAgPGVvLWljb24gKm5nSWY9XCIhcGFyYW1zLm9iamVjdC5pc0ZpbmFsaXplZFwiIGNsYXNzPVwic3RmXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdXBsb2FkMi5zdmcnXCJcbiAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnVwbG9hZCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZmlsZS5jbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmNzdlwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiICNmaWxlIChjaGFuZ2UpPVwiaW1wb3J0Q1NWKCRldmVudC50YXJnZXQpXCIgKGNsaWNrKT1cIiRldmVudC50YXJnZXQudmFsdWUgPSBudWxsXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cInN0ZiBhZGQtcm93XCIgKm5nSWY9XCIhX3BhcmFtcy5lbGVtZW50LnJlYWRvbmx5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYWRkLnN2ZydcIlxuICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5hZGQnfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9lby1pY29uPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ3JpZC1ib2R5IHNpemUte3sgcGFyYW1zLnNpemUgfX1cIj5cbiAgICA8YWctZ3JpZC1hbmd1bGFyICNhZ0dyaWQgKm5nSWY9XCJncmlkUmVhZHlcIiBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiIFttb2R1bGVzXT1cIm1vZHVsZXNcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIlxuICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwiZWRpdFJvdygkZXZlbnQpXCIgKGNlbGxDbGlja2VkKT1cIm9uQ2VsbENsaWNrZWQoJGV2ZW50KVwiIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKClcIlxuICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwib25FZGl0Q29tcGxldGUoJGV2ZW50KVwiIChjb2x1bW5SZXNpemVkKT1cIm9uQ29sdW1uUmVzaXplZCgkZXZlbnQuY29sdW1uKVwiPlxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cInBhcmFtcy5lbGVtZW50LmxhYmVsXCIgW3Zpc2libGVdPVwic2hvd0RpYWxvZ1wiIFtkaXJ0eUNoZWNrXT1cInJvd0VkaXQ/LnBlbmRpbmdUYXNrSWRcIlxuICBbbWluV2lkdGhdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnID8gbWluV2lkdGggOiAyMDBcIlxuICBbd2lkdGhdPVwiX3BhcmFtcy5zaXR1YXRpb24gIT09ICdTRUFSQ0gnID8gJzk1dncnIDogNTAwXCJcbiAgW2hlaWdodF09XCJoZWlnaHRcIlxuICBbc3R5bGVDbGFzc109XCInb2JqZWN0LWZvcm0tdGFibGUtZGlhbG9nJ1wiIChoaWRlKT1cIm9uQ2xvc2UoKVwiIFtpc0Zvcm1UYWJsZV09XCJ0cnVlXCIgW2hhc1ByZXZpZXdGaWxlXT1cImhhc1ByZXZpZXdGaWxlXCJcbiAgW3Nob3dQcmV2aWV3XT1cInNob3dQcmV2aWV3XCIgKG9uVG9nZ2xlUHJldmlldyk9XCJ0b2dnbGVQcmV2aWV3KClcIj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwic2hvd0RpYWxvZ1wiPlxuXG4gICAgPCEtLSA8eXZjLXNwbGl0LXZpZXcgW2xheW91dFNldHRpbmdzSURdPVwiY2FjaGVMYXlvdXRLZXlcIj4gLS0+XG4gICAgPHl2Yy1zcGxpdC12aWV3PlxuXG4gICAgICA8IS0tIHRoZSB0YWJsZSBpdHNlbGYtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIiBbdmlzaWJsZV09XCJfcGFyYW1zLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWZvcm0tdGFibGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtZm9ybS10YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2l6ZV90b19maXQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmZpdCd8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwic2l6ZVRvRml0KHRydWUpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic3RmXCIgKm5nSWY9XCJncmlkT3B0aW9ucy5yb3dEYXRhLmxlbmd0aFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNzdid8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZXhwb3J0Q1NWKClcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdGYgYWRkLXJvd1wiICpuZ0lmPVwiIV9wYXJhbXMuZWxlbWVudC5yZWFkb25seVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2FkZC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uYWRkJ3wgdHJhbnNsYXRlKVwiIChjbGljayk9XCJhZGRSb3coKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWJvZHlcIj5cbiAgICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjYWdHcmlkMiAqbmdJZj1cImdyaWRSZWFkeVwiIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCIgW21vZHVsZXNdPVwibW9kdWxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwib3ZlcmxheUdyaWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZWxsQ2xpY2tlZCk9XCJvbkNlbGxDbGlja2VkKCRldmVudCk7ZWRpdFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJvbkVkaXRDb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uUmVzaXplZCk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50LmNvbHVtbiwgdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHRhYmxlIGVkaXQgY29tcG9uZW50LS0+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjIwXCIgW3Zpc2libGVdPVwiISFlZGl0aW5nUm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWJvZHlcIj5cbiAgICAgICAgICA8ZW8tcm93LWVkaXQgW3Jvd109XCJlZGl0aW5nUm93XCIgW2xpbWl0UmVhY2hlZF09XCJsaW1pdCA8PSBvdmVybGF5R3JpZE9wdGlvbnMucm93RGF0YS5sZW5ndGhcIiAjcm93RWRpdFxuICAgICAgICAgICAgKG9uU2F2ZSk9XCJ1cGRhdGVSb3coJGV2ZW50KVwiIChvblNhdmVDb3B5KT1cImNvcHlSb3coJGV2ZW50KVwiIChvbkRlbGV0ZSk9XCJkZWxldGVSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsUm93RWRpdCgpXCI+PC9lby1yb3ctZWRpdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHZpZXdlci0tPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0MFwiIFt2aXNpYmxlXT1cInNob3dQcmV2aWV3ICYmIGhhc1ByZXZpZXdGaWxlXCI+XG4gICAgICAgIDxlby1tZWRpYSAqbmdJZj1cImhhc1ByZXZpZXdGaWxlXCIgW3VuZG9ja0Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICBbdXNlVmVyc2lvbl09XCJwYXJhbXMub2JqZWN0Py5pZCA9PT0gcGFyYW1zLm9iamVjdD8uY29udGVudD8uaWRcIiBbZG1zT2JqZWN0XT1cInBhcmFtcy5vYmplY3RcIj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwveXZjLXNwbGl0LXZpZXc+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIignZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC50aXRsZScgfCB0cmFuc2xhdGUpXCIgW3Zpc2libGVdPVwic2hvd0ltcG9ydFJlcG9ydERpYWxvZ1wiXG4gICAgICAgICAgIChoaWRlKT1cImNhbmNlbEltcG9ydFJlcG9ydCgpXCIgW3N0eWxlQ2xhc3NdPVwiJ2ltcG9ydC1yZXBvcnRfX2RpYWxvZydcIj5cbiAgPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICA8aDQgdHJhbnNsYXRlIFt0cmFuc2xhdGVQYXJhbXNdPVwie3JlYWRSb3dzOiBtYXBwZWRSb3dzLmxlbmd0aH1cIj5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LnJlYWRSb3dzPC9oND5cbiAgICA8ZGl2ICpuZ0lmPVwibWFwcGluZ0Vycm9yRmllbGRzLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgIDxoNCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnM8L2g0PlxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggdHJhbnNsYXRlPmVvLmZvcm0udGFibGUuY3N2LmltcG9ydC5yZXBvcnQuZXJyb3JzLnJvdzwvdGg+XG4gICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmVycm9ycy5jc3ZDb2x1bW48L3RoPlxuICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudGFibGVDb2x1bW48L3RoPlxuICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5jc3YuaW1wb3J0LnJlcG9ydC5lcnJvcnMudmFsdWU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgbWFwcGluZ0Vycm9yRmllbGRzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnJvdyArIDF9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e2Vycm9yLnVwbG9hZGVkTmFtZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7ZXJyb3IudGVjaG5pY2FsTmFtZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7ZXJyb3IudmFsdWV9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsSW1wb3J0UmVwb3J0KClcIiBjbGFzcz1cImJ1dHRvbi1jYW5jZWxcIiB0cmFuc2xhdGU+ZW8ucmVzdWJtaXNzaW9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEltcG9ydFZhbHVlc1RvVGFibGUoKVwiIGNsYXNzPVwicHJpbWFyeVwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLmNzdi5pbXBvcnQucmVwb3J0LmltcG9ydDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19