@sinequa/assistant 3.9.7 → 3.9.8
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.
|
@@ -162,7 +162,7 @@ export class ChatMessageComponent {
|
|
|
162
162
|
console.error("Unsupported message content type", typeof message.content);
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
|
-
content = content.replaceAll(/\s
|
|
165
|
+
content = content.replaceAll(/\s*\[[^\]]*]\s*/g, "");
|
|
166
166
|
this._copyToClipboard(content);
|
|
167
167
|
this.copy.emit(message);
|
|
168
168
|
}
|
|
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
246
246
|
}], debug: [{
|
|
247
247
|
type: Output
|
|
248
248
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUduRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUF5QmhFLE1BQU0sT0FBTyxvQkFBb0I7SUFrRC9CLFlBQ1MsRUFBYSxFQUNiLGdCQUFrQyxFQUNsQyxHQUFzQixF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bEMsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY29TY29wZSwgVHJhbnNsb2NvUGlwZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NoYXJ0cy9jaGFydC9jaGFydC5jb21wb25lbnRcIjtcbmltcG9ydCB7IENoYXRSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hhdC1yZWZlcmVuY2UvY2hhdC1yZWZlcmVuY2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJbml0aWFsc0F2YXRhckNvbXBvbmVudCB9IGZyb20gXCIuLi9pbml0aWFscy1hdmF0YXIvaW5pdGlhbHMtYXZhdGFyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTWVzc2FnZUNvbnRlbnRQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL21lc3NhZ2UtY29udGVudC5waXBlXCI7XG5pbXBvcnQgeyBJbmxpbmVJbWFnZVJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gXCIuLi9yZWZlcmVuY2VzL2lubGluZS1pbWFnZS1yZWZlcmVuY2VcIjtcbmltcG9ydCB7IElubGluZVBhZ2VSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tIFwiLi4vcmVmZXJlbmNlcy9pbmxpbmUtcGFnZS1yZWZlcmVuY2VcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvcHJpbmNpcGFsLnNlcnZpY2VcIjtcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy91aS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTbWFydFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3NtYXJ0LXJlbmRlcmVyL3NtYXJ0LXJlbmRlcmVyXCI7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSBcIi4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IENoYXRDb250ZXh0QXR0YWNobWVudCwgQ2hhdE1lc3NhZ2UsIFN1Z2dlc3RlZEFjdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgVGV4dE1lc3NhZ2VDb250ZW50IH0gZnJvbSBcIi4uL3R5cGVzL21lc3NhZ2UtY29udGVudC50eXBlc1wiO1xuaW1wb3J0IHsgTWVzc2FnZUltYWdlUmVmZXJlbmNlIH0gZnJvbSBcIi4uL3R5cGVzL21lc3NhZ2UtcmVmZXJlbmNlLnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzcS1jaGF0LW1lc3NhZ2VcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jaGF0LW1lc3NhZ2UuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBJbml0aWFsc0F2YXRhckNvbXBvbmVudCxcbiAgICBDaGF0UmVmZXJlbmNlQ29tcG9uZW50LFxuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VDb250ZW50UGlwZSxcbiAgICBJbmxpbmVJbWFnZVJlZmVyZW5jZUNvbXBvbmVudCxcbiAgICBJbmxpbmVQYWdlUmVmZXJlbmNlQ29tcG9uZW50LFxuICAgIFRyYW5zbG9jb1BpcGUsXG4gICAgU21hcnRSZW5kZXJlckNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlVHJhbnNsb2NvU2NvcGUoJ2NoYXQtbWVzc2FnZScpXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICBASW5wdXQoKSBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgQElucHV0KCkgY29udmVyc2F0aW9uOiBDaGF0TWVzc2FnZVtdO1xuICBASW5wdXQoKSBzdWdnZXN0ZWRBY3Rpb25zOiBTdWdnZXN0ZWRBY3Rpb25bXSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXNzaXN0YW50TWVzc2FnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgdXNlck1lc3NhZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbm5lY3Rpb25FcnJvck1lc3NhZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlYXJjaFdhcm5pbmdNZXNzYWdlSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBzdHJlYW1pbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuUmVnZW5lcmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5Db3B5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRlYnVnOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkxpa2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGlzbGlrZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjb2xsYXBzZVJlZmVyZW5jZXM6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgb3BlbkRvY3VtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgcmVmZXJlbmNlOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQ7XG4gICAgcGFydElkPzogbnVtYmVyO1xuICB9PigpO1xuICBAT3V0cHV0KCkgb3BlblByZXZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICByZWZlcmVuY2U6IENoYXRDb250ZXh0QXR0YWNobWVudDtcbiAgICBwYXJ0SWQ/OiBudW1iZXI7XG4gIH0+KCk7XG4gIEBPdXRwdXQoKSBzdWdnZXN0QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTdWdnZXN0ZWRBY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgcmVnZW5lcmF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdE1lc3NhZ2U+KCk7XG4gIEBPdXRwdXQoKSBsaWtlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzbGlrZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRlYnVnID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcblxuICAvLyBzaWduYWwgYmFzZWQgc2V0IG9mIHJlZmVyZW5jZXMgdG8gYXZvaWQgZHVwbGljYXRlc1xuICByZWZzID0gc2lnbmFsPG51bWJlcltdPihbXSk7XG4gIHJlZmVyZW5jZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVmcygpLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYSAtIGIpLm1hcCgocikgPT4gXCJcIiArIHIpXG4gICk7XG4gIHJlZmVyZW5jZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBDaGF0Q29udGV4dEF0dGFjaG1lbnQ+KCk7XG4gIGltYWdlUmVmZXJlbmNlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBNZXNzYWdlSW1hZ2VSZWZlcmVuY2U+KCk7XG4gIHBhZ2VSZWZlcmVuY2VzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1lc3NhZ2VJbWFnZVJlZmVyZW5jZT4oKTtcbiAgY29sbGFwc2VQcm9ncmVzczogYm9vbGVhbjtcbiAgaWNvblNpemUgPSAyNDtcblxuICBoaWRkZW5Ub29sdGlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gdXNlZCBieSB0aGUgdGVtcGxhdGVcbiAgQXJyYXkgPSBBcnJheTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdWk6IFVJU2VydmljZSxcbiAgICBwdWJsaWMgcHJpbmNpcGFsU2VydmljZTogUHJpbmNpcGFsU2VydmljZSxcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdHJlYW1pbmcpIHtcbiAgICAgIHRoaXMuY29sbGFwc2VQcm9ncmVzcyA9ICF0aGlzLnN0cmVhbWluZztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tZXNzYWdlPy5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZU1hcC5jbGVhcigpO1xuICAgICAgZm9yIChsZXQgbSBvZiB0aGlzLmNvbnZlcnNhdGlvbikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCAmJlxuICAgICAgICAgIG0uYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGF0dGFjaG1lbnQgb2YgbS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCkge1xuICAgICAgICAgICAgLy8gc2tpcCBlbXB0eSBhdHRhY2htZW50XG4gICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnQpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXQoXCJcIiArIGF0dGFjaG1lbnQuY29udGV4dElkLCB7XG4gICAgICAgICAgICAgIC4uLmF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICRwYXJ0SWQ6IGF0dGFjaG1lbnQucGFydHM/LlswXT8ucGFydElkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoISFhdHRhY2htZW50LnBhcnRzICYmIGF0dGFjaG1lbnQucGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dGFjaG1lbnQucGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWZJZCA9IGAke2F0dGFjaG1lbnQuY29udGV4dElkfS4ke2F0dGFjaG1lbnQucGFydHNbaV0ucGFydElkfWA7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAuc2V0KHJlZklkLCB7XG4gICAgICAgICAgICAgICAgICAuLi5hdHRhY2htZW50LFxuICAgICAgICAgICAgICAgICAgJHBhcnRJZDogYXR0YWNobWVudC5wYXJ0cz8uW2ldPy5wYXJ0SWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb2Nlc3NNZXNzYWdlVHlwZShtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRFbWJlZGRlZEltYWdlUmVmZXJlbmNlKHJlZjogc3RyaW5nKTogTWVzc2FnZUltYWdlUmVmZXJlbmNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBbZG9jLCBwYXJ0LCBpbWFnZV0gPSByZWYuc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IGltYWdlcyA9IHRoaXMucmVmZXJlbmNlTWFwLmdldChkb2MpPy5wYXJ0cz8uWytwYXJ0IC0gMV0/LmltYWdlcztcblxuICAgIGlmICghaW1hZ2VzIHx8IGltYWdlcy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIGltYWdlc1swXSAhPT0gXCJvYmplY3RcIilcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtZXNzYWdlSW1hZ2VSZWZlcmVuY2U6IE1lc3NhZ2VJbWFnZVJlZmVyZW5jZSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGFydGljbGU6IHRoaXMucmVmZXJlbmNlTWFwLmdldChkb2MpPy5yZWNvcmQsXG4gICAgICAgIGFydGljbGVJZDogdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnJlY29yZElkLFxuICAgICAgfSxcbiAgICAgIGltYWdlc1sraW1hZ2UgLSAxXVxuICAgICk7XG5cbiAgICAvLyBzYXZlIHJlZmVyZW5jZSBpbiBtYXAgZm9yIHJlZmVyZW5jZSBsaXN0XG4gICAgaWYgKCF0aGlzLmltYWdlUmVmZXJlbmNlc01hcC5oYXMocmVmKSlcbiAgICAgIHRoaXMuaW1hZ2VSZWZlcmVuY2VzTWFwLnNldChyZWYsIG1lc3NhZ2VJbWFnZVJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbWVzc2FnZUltYWdlUmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0RW1iZWRkZWRQYWdlUmVmZXJlbmNlKHJlZjogc3RyaW5nKTogTWVzc2FnZUltYWdlUmVmZXJlbmNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBbZG9jLCBwYWdlXSA9IHJlZi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgcGFnZVJlZiA9IHRoaXMucmVmZXJlbmNlTWFwLmdldChkb2MpPy5wYWdlcz8uZmluZCh4ID0+IHgucGFnZU51bWJlciA9PT0gK3BhZ2UpO1xuXG4gICAgaWYgKCFwYWdlUmVmIHx8IHR5cGVvZiBwYWdlUmVmICE9PSBcIm9iamVjdFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbWVzc2FnZVBhZ2VSZWZlcmVuY2U6IE1lc3NhZ2VJbWFnZVJlZmVyZW5jZSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGFydGljbGU6IHRoaXMucmVmZXJlbmNlTWFwLmdldChkb2MpPy5yZWNvcmQsXG4gICAgICAgIGFydGljbGVJZDogdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnJlY29yZElkLFxuICAgICAgfSxcbiAgICAgIHBhZ2VSZWZcbiAgICApO1xuXG4gICAgLy8gc2F2ZSByZWZlcmVuY2UgaW4gbWFwIGZvciByZWZlcmVuY2UgbGlzdFxuICAgIGlmICghdGhpcy5wYWdlUmVmZXJlbmNlc01hcC5oYXMocmVmKSlcbiAgICAgIHRoaXMucGFnZVJlZmVyZW5jZXNNYXAuc2V0KHJlZiwgbWVzc2FnZVBhZ2VSZWZlcmVuY2UpO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2VQYWdlUmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gIXRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWxcbiAgICAgID8gXCJcIlxuICAgICAgOiAodGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbFtcImZ1bGxOYW1lXCJdIGFzIHN0cmluZykgfHxcbiAgICAgICAgICB0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsLm5hbWU7XG4gIH1cblxuICBnZXQgaXNBZG1pbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbD8uaXNBZG1pbmlzdHJhdG9yIHx8IGZhbHNlO1xuICB9XG5cbiAgcHJvY2Vzc01lc3NhZ2VUeXBlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSB7XG4gICAgLy8gUHJvY2VzcyBtZXNzYWdlIHR5cGUgd2hlbiBzcGVjIGlzIGRvbmVcbiAgICAvLyBub3AgZm9yIG5ldyBtZXNzYWdlIHR5cGVzXG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgIT09IFwic3RyaW5nXCIpIHJldHVybjtcblxuICAgIC8vIExlZ2FjeSBtZXNzYWdlIHR5cGVcbiAgICBpZiAobWVzc2FnZS5jb250ZW50LnN0YXJ0c1dpdGgoXCI8Y2hhcnRqcz5cIikpIHtcbiAgICAgIG1lc3NhZ2UubWVzc2FnZVR5cGUgPSBcIkNIQVJUXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lc3NhZ2UubWVzc2FnZVR5cGUgPSBcIk1BUktET1dOXCI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBhIHJlZmVyZW5jZSBzdHJpbmcgYnkgdmFsaWRhdGluZyBhbmQgYWRkaW5nIGl0IHRvIHRoZSBzZXQgb2YgcmVmZXJlbmNlcyBpZiBhcHBsaWNhYmxlLlxuICAgKlxuICAgKiAtIElnbm9yZXMgZW1wdHkgb3IgZmFsc3kgcmVmZXJlbmNlcy5cbiAgICogLSBJZ25vcmVzIHJlZmVyZW5jZXMgdGhhdCBhcmUgbm90IG51bWVyaWMuXG4gICAqIC0gSWdub3JlcyByZWZlcmVuY2VzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgc2V0LlxuICAgKiAtIENvbnZlcnRzIHRoZSByZWZlcmVuY2UgdG8gYSBudW1iZXIgYW5kIGFkZHMgaXQgdG8gdGhlIHNldCBvZiByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBAcGFyYW0gcmVmIC0gVGhlIHJlZmVyZW5jZSBzdHJpbmcgdG8gcHJvY2Vzcy5cbiAgICovXG4gIHByb2Nlc3NSZWZlcmVuY2VzKHJlZjogc3RyaW5nKSB7XG4gICAgaWYgKCFyZWYpIHJldHVybjtcbiAgICBpZiAoaXNOYU4oK3JlZikpIHJldHVybjtcbiAgICBjb25zdCByZWZOdW0gPSArcmVmO1xuICAgIGlmICh0aGlzLnJlZnMoKS5pbmNsdWRlcyhyZWZOdW0pKSByZXR1cm47XG4gICAgdGhpcy5yZWZzLnVwZGF0ZShhcnIgPT4gWy4uLmFyciwgcmVmTnVtXSk7XG4gIH1cblxuICBwcml2YXRlIF9jb3B5VG9DbGlwYm9hcmQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy51aS5jb3B5VG9DbGlwYm9hcmQoY29udGVudCk7XG4gIH1cblxuICBjb3B5TWVzc2FnZShtZXNzYWdlOiBDaGF0TWVzc2FnZSkge1xuICAgIGxldCBjb250ZW50OiBzdHJpbmcgPSBcIlwiO1xuXG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgICBjb250ZW50ID0gbWVzc2FnZS5jb250ZW50O1xuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KSlcbiAgICAgIGNvbnRlbnQgPSAobWVzc2FnZS5jb250ZW50WzBdIGFzIFRleHRNZXNzYWdlQ29udGVudCkudGV4dDtcbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbnN1cHBvcnRlZCBtZXNzYWdlIGNvbnRlbnQgdHlwZVwiLCB0eXBlb2YgbWVzc2FnZS5jb250ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlQWxsKC9cXHMrXFxbLis/XFxdL2csIFwiXCIpO1xuXG4gICAgdGhpcy5fY29weVRvQ2xpcGJvYXJkKGNvbnRlbnQpO1xuICAgIHRoaXMuY29weS5lbWl0KG1lc3NhZ2UpO1xuICB9XG5cbiAgb3BlbkF0dGFjaG1lbnRQcmV2aWV3KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuUHJldmlldy5lbWl0KHsgcmVmZXJlbmNlOiBhdHRhY2htZW50LCBwYXJ0SWQgfSk7XG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICB9XG5cbiAgb3Blbk9yaWdpbmFsQXR0YWNobWVudChhdHRhY2htZW50OiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcikge1xuICAgIHRoaXMub3BlbkRvY3VtZW50LmVtaXQoeyByZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZCB9KTtcbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gIH1cblxuICBoaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGRlblRvb2x0aXAgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oaWRkZW5Ub29sdGlwID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS0gTWVzc2FnZSBpY29uIC0tPlxuPHNwYW4gY2xhc3M9XCJtZXNzYWdlLWljb25cIiBbdGl0bGVdPVwibWVzc2FnZT8ucm9sZVwiPlxuICA8aSBjbGFzcz1cImQtYmxvY2tcIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIiAqbmdJZj1cIiFtZXNzYWdlXCI+PC9pPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXNzYWdlPy5yb2xlXCI+XG4gICAgPCEtLSBGb3IgJ2Fzc2lzdGFudCcgLS0+XG4gICAgPGkgKm5nU3dpdGNoQ2FzZT1cIidhc3Npc3RhbnQnXCIgW25nQ2xhc3NdPVwiYXNzaXN0YW50TWVzc2FnZUljb25cIiBbc3R5bGUuLS1zcS1zaXplLnB4XT1cImljb25TaXplXCI+PC9pPlxuXG4gICAgPCEtLSBGb3IgJ3VzZXInIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid1c2VyJ1wiPlxuICAgICAgPGkgKm5nSWY9XCIhIXVzZXJNZXNzYWdlSWNvbjsgZWxzZSBpbml0aWFsc0F2YXRhclwiIFtuZ0NsYXNzXT1cInVzZXJNZXNzYWdlSWNvblwiIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIj48L2k+XG4gICAgICA8bmctdGVtcGxhdGUgI2luaXRpYWxzQXZhdGFyPlxuICAgICAgICA8c3EtaW5pdGlhbHMtYXZhdGFyIFtmdWxsTmFtZV09XCJuYW1lXCI+PC9zcS1pbml0aWFscy1hdmF0YXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBGb3IgJ2Nvbm5lY3Rpb24tZXJyb3InIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb25uZWN0aW9uLWVycm9yJ1wiPlxuICAgICAgPGkgKm5nSWY9XCIhIWNvbm5lY3Rpb25FcnJvck1lc3NhZ2VJY29uOyBlbHNlIGRlZmF1bHRFcnJvckljb25cIiBbbmdDbGFzc109XCJjb25uZWN0aW9uRXJyb3JNZXNzYWdlSWNvblwiIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIj48L2k+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFcnJvckljb24+XG4gICAgICAgIDxzdmcgW3N0eWxlLi0tc3Etc2l6ZS5weF09XCJpY29uU2l6ZVwiIGNsYXNzPVwiY29ubmVjdGlvbi1lcnJvclwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xNy4xIDI5MmMtMTIuOS0yMi4zLTEyLjktNDkuNyAwLTcyTDEwNS40IDY3LjFjMTIuOS0yMi4zIDM2LjYtMzYgNjIuNC0zNmwxNzYuNiAwYzI1LjcgMCA0OS41IDEzLjcgNjIuNCAzNkw0OTQuOSAyMjBjMTIuOSAyMi4zIDEyLjkgNDkuNyAwIDcyTDQwNi42IDQ0NC45Yy0xMi45IDIyLjMtMzYuNiAzNi02Mi40IDM2bC0xNzYuNiAwYy0yNS43IDAtNDkuNS0xMy43LTYyLjQtMzZMMTcuMSAyOTJ6TTI1NiAxMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTMyIDIyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBGb3IgJ3NlYXJjaC13YXJuaW5nJyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VhcmNoLXdhcm5pbmcnXCI+XG4gICAgICA8aSAqbmdJZj1cIiEhc2VhcmNoV2FybmluZ01lc3NhZ2VJY29uOyBlbHNlIGRlZmF1bHRXYXJuaW5nSWNvblwiIFtuZ0NsYXNzXT1cInNlYXJjaFdhcm5pbmdNZXNzYWdlSWNvblwiIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIj48L2k+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRXYXJuaW5nSWNvbj5cbiAgICAgICAgPHN2ZyBbc3R5bGUuLS1zcS1zaXplLnB4XT1cImljb25TaXplXCIgY2xhc3M9XCJzZWFyY2gtd2FybmluZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDM4NCA1MTJcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0yNzIgMzg0YzkuNi0zMS45IDI5LjUtNTkuMSA0OS4yLTg2LjJjMCAwIDAgMCAwIDBjNS4yLTcuMSAxMC40LTE0LjIgMTUuNC0yMS40YzE5LjgtMjguNSAzMS40LTYzIDMxLjQtMTAwLjNDMzY4IDc4LjggMjg5LjIgMCAxOTIgMFMxNiA3OC44IDE2IDE3NmMwIDM3LjMgMTEuNiA3MS45IDMxLjQgMTAwLjNjNSA3LjIgMTAuMiAxNC4zIDE1LjQgMjEuNGMwIDAgMCAwIDAgMGMxOS44IDI3LjEgMzkuNyA1NC40IDQ5LjIgODYuMmwxNjAgMHpNMTkyIDUxMmM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTE2LTE2MCAwIDAgMTZjMCA0NC4yIDM1LjggODAgODAgODB6bTAtNDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTEyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0xNjAgMjg4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuXG48IS0tIE1lc3NhZ2UgYm9keSAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBwb3NpdGlvbi1yZWxhdGl2ZSByZWxhdGl2ZVwiIHN0eWxlPVwibWluLXdpZHRoOiAwO1wiIFtuZ0NsYXNzXT1cIidtZXNzYWdlLScrbWVzc2FnZS5yb2xlXCI+XG5cbiAgPCEtLSBQcm9ncmVzcyBzdGVwcyAtLT5cbiAgPGRpdiAqbmdJZj1cIm1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzIGFzIHByb2dyZXNzXCIgY2xhc3M9XCJzbWFsbCBtcy0zIG1iLTJcIj5cbiAgICA8ZGV0YWlscyByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWxlY3Qtbm9uZVwiIFtvcGVuXT1cIiFjb2xsYXBzZVByb2dyZXNzXCI+XG4gICAgICA8c3VtbWFyeSBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAge3sgJ2NoYXRNZXNzYWdlLnZpZXdQcm9ncmVzcycgfCB0cmFuc2xvY28gfX1cbiAgICAgIDwvc3VtbWFyeT5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHByb2dyZXNzXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZncgZmEtY2hlY2sgdGV4dC1zdWNjZXNzXCIgKm5nSWY9XCJzdGVwLmRvbmVcIj48L2k+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1wdWxzZSBzdGVwLW9uZ29pbmdcIiAqbmdJZj1cIiFzdGVwLmRvbmUgJiYgc3RyZWFtaW5nXCI+PC9pPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtYmFuIHN0ZXAtZXJyb3JcIiAqbmdJZj1cIiFzdGVwLmRvbmUgJiYgIXN0cmVhbWluZ1wiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgZnctYm9sZFwiPnt7c3RlcC50aXRsZX19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcC5jb250ZW50XCIgW2lubmVySFRNTF09XCInOiAnICsgc3RlcC5jb250ZW50XCI+PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2RldGFpbHM+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTWVzc2FnZSBjb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1jb250ZW50XCIgKm5nSWY9XCJtZXNzYWdlLmNvbnRlbnRcIj5cblxuICAgIDwhLS0gQ3VzdG9tIHJlbmRlcmluZyBmb3IgV1BTLCB0byBiZSByZW1vdmUgd2l0aCBodHRwczovL3NpbmVxdWEuYXRsYXNzaWFuLm5ldC9icm93c2UvRVMtMjM3MTAgLS0+XG4gICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2U/LnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIG1lc3NhZ2UubWVzc2FnZVR5cGUgPT09ICdDSEFSVCdcIj5cbiAgICAgIDxzcS1hc3Npc3RhbnQtY2hhcnQgW3Jhd0NoYXJ0RGF0YV09XCJtZXNzYWdlLmNvbnRlbnRcIj48L3NxLWFzc2lzdGFudC1jaGFydD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVGhpcyBzZWN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBjdXN0b21pemluZyB0aGUgdGVtcGxhdGUgbm9kZXMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgIFRlbXBsYXRlIG5vZGVzIGFyZSBwcmVkZWZpbmVkIHN0cnVjdHVyZXMgdGhhdCBzZXJ2ZSBhcyBibHVlcHJpbnRzIGZvciBjcmVhdGluZy9jdXN0b21pemluZyBkeW5hbWljIGNvbnRlbnQgLS0+XG5cblxuICAgIEBpZihtZXNzYWdlPy5yb2xlID09PSAnYXNzaXN0YW50JyAmJiBtZXNzYWdlLm1lc3NhZ2VUeXBlICE9PSAnQ0hBUlQnKSB7XG4gICAgICA8U21hcnRSZW5kZXJlclxuICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlLmNvbnRlbnQgfCBtZXNzYWdlQ29udGVudFwiXG4gICAgICAgIFtjb250ZXh0XT1cIntcbiAgICAgICAgICBnZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2U6IGdldEVtYmVkZGVkUGFnZVJlZmVyZW5jZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGdldEVtYmVkZGVkSW1hZ2VSZWZlcmVuY2U6IGdldEVtYmVkZGVkSW1hZ2VSZWZlcmVuY2UuYmluZCh0aGlzKSxcbiAgICAgICAgICByZWZlcmVuY2VzTWFwOiByZWZlcmVuY2VNYXAsXG4gICAgICAgICAgcmVmZXJlbmNlczogcHJvY2Vzc1JlZmVyZW5jZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICByYW5rOiBpZCgpXG4gICAgICAgIH1cIj5cbiAgICAgIDwvU21hcnRSZW5kZXJlcj5cbiAgICB9XG5cbiAgICA8cCAqbmdJZj1cIm1lc3NhZ2U/LnJvbGUgPT09ICd1c2VyJ1wiPnt7IG1lc3NhZ2UuY29udGVudCB8IG1lc3NhZ2VDb250ZW50IH19PC9wPlxuXG4gICAgPCEtLSBMaXN0IG9mIHJlZmVyZW5jZSwgaWYgYW55IC0tPlxuICBAbGV0IHJlZmVyZW5jZXNBcnJheSA9IHJlZmVyZW5jZXMoKTtcbiAgICBAaWYgKHJlZmVyZW5jZXNBcnJheT8ubGVuZ3RoID4gMCB8fCBpbWFnZVJlZmVyZW5jZXNNYXA/LnNpemUgPiAwIHx8IHBhZ2VSZWZlcmVuY2VzTWFwPy5zaXplID4gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZXNcIj5cbiAgICAgICAgPGRldGFpbHMgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0LW5vbmVcIiBbb3Blbl09XCIhY29sbGFwc2VSZWZlcmVuY2VzXCI+XG4gICAgICAgICAgPHN1bW1hcnkgY2xhc3M9XCJyZWZlcmVuY2VzLXRpdGxlXCI+e3sgJ2NoYXRNZXNzYWdlLnJlZmVyZW5jZXMnIHwgdHJhbnNsb2NvIH19PC9zdW1tYXJ5PlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIEBmb3IgKHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzQXJyYXk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICBAbGV0IGF0dGFjaG1lbnQgPSByZWZlcmVuY2VNYXAuZ2V0KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgIDwhLS0gT25seSBkaXNwbGF5IHRoZSByZWZlcmVuY2Ugd2hlbiB0aGUga2V5IGlzIGEgaW50ZWdlciBub3QgYSBkZWNpbWFsIC0tPlxuICAgICAgICAgICAgICAgQGlmKGF0dGFjaG1lbnQpIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3EtY2hhdC1yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cImF0dGFjaG1lbnQ/LiRleHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRhY2htZW50XT1cImF0dGFjaG1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbcmVmZXJlbmNlXT1cInJlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VNYXBdPVwicmVmZXJlbmNlTWFwXCJcbiAgICAgICAgICAgICAgICAgICAgW2ltYWdlc109XCJBcnJheS5mcm9tKGltYWdlUmVmZXJlbmNlc01hcC5rZXlzKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2VzXT1cIkFycmF5LmZyb20ocGFnZVJlZmVyZW5jZXNNYXAua2V5cygpKVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuUHJldmlldyk9XCJvcGVuQXR0YWNobWVudFByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuRG9jdW1lbnQpPVwib3Blbk9yaWdpbmFsQXR0YWNobWVudCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8L3NxLWNoYXQtcmVmZXJlbmNlPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGV0YWlscz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgICA8IS0tIEVkaXQgLyBSZWdlbmVyYXRlIGZsb2F0aW5nIGFjdGlvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJzcS1jaGF0LW1lc3NhZ2UtYWN0aW9uc1wiICpuZ0lmPVwibWVzc2FnZVwiPlxuICAgIDwhLS0gQ29tbW9uIGFjdGlvbiBidXR0b25zIGZvciBcInVzZXJcIiAmIFwiYXNzaXN0YW50XCIgbWVzc2FnZSAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiICpuZ0lmPVwiY2FuQ29weVwiIFtzcVRvb2x0aXBdPVwiJ2NoYXRNZXNzYWdlLmNvcHlUZXh0JyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJjb3B5TWVzc2FnZShtZXNzYWdlKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2xpcGJvYXJkXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDwhLS0gQWN0aW9uIGJ1dHRvbnMgZm9yIFwidXNlclwiIG1lc3NhZ2UgLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhbkVkaXRcIiBbc3FUb29sdGlwXT1cIidjaGF0TWVzc2FnZS5lZGl0TWVzc2FnZScgfCB0cmFuc2xvY29cIiAoY2xpY2spPVwiZWRpdC5lbWl0KG1lc3NhZ2UpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1lZGl0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDwhLS0gQWN0aW9uIGJ1dHRvbnMgZm9yIFwiYXNzaXN0YW50XCIgbWVzc2FnZSAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiIFtjbGFzcy5ib3VuY2VdPVwibWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kbGlrZWRcIiAqbmdJZj1cImNhbkxpa2VcIiBbc3FUb29sdGlwXT1cIidjaGF0TWVzc2FnZS5saWtlQW5zd2VyJyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJsaWtlLmVtaXQoKVwiPlxuICAgICAgPGkgKm5nSWY9XCIhbWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kbGlrZWRcIiBjbGFzcz1cImZhciBmYS10aHVtYnMtdXAgXCI+PC9pPlxuICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRsaWtlZFwiIGNsYXNzPVwiZmFzIGZhLXRodW1icy11cFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiIFtjbGFzcy5ib3VuY2VdPVwibWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kZGlzbGlrZWRcIiAqbmdJZj1cImNhbkRpc2xpa2VcIiBbc3FUb29sdGlwXT1cIidjaGF0TWVzc2FnZS5yZXBvcnRJc3N1ZScgfCB0cmFuc2xvY29cIiAoY2xpY2spPVwiZGlzbGlrZS5lbWl0KClcIj5cbiAgICAgIDxpICpuZ0lmPVwiIW1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJGRpc2xpa2VkXCIgY2xhc3M9XCJmYXIgZmEtdGh1bWJzLWRvd24gXCI+PC9pPlxuICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRkaXNsaWtlZFwiIGNsYXNzPVwiZmFzIGZhLXRodW1icy1kb3duXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5SZWdlbmVyYXRlXCIgW3NxVG9vbHRpcF09XCInY2hhdE1lc3NhZ2UucmVnZW5lcmF0ZVJlc3BvbnNlJyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJyZWdlbmVyYXRlLmVtaXQobWVzc2FnZSlcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXN5bmMtYWx0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5EZWJ1Z1wiIFtzcVRvb2x0aXBdPVwiJ2NoYXRNZXNzYWdlLnNob3dMb2dJbmZvcm1hdGlvbicgfCB0cmFuc2xvY29cIiAoY2xpY2spPVwiZGVidWcuZW1pdChtZXNzYWdlKTtcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWxpc3QtYWx0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIExpc3Qgb2Ygc3VnZ2VzdGVkIGFjdGlvbnMsIGlmIGFueSAtLT5cbiAgPGRpdiAqbmdJZj1cInN1Z2dlc3RlZEFjdGlvbnNcIiBjbGFzcz1cIm10LTIgbWVzc2FnZS1zdWdnZXN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInN1Z2dlc3RlZC1hY3Rpb25cIiAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkQWN0aW9uIG9mIHN1Z2dlc3RlZEFjdGlvbnNcIiAoY2xpY2spPVwic3VnZ2VzdEFjdGlvbi5lbWl0KHN1Z2dlc3RlZEFjdGlvbilcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWljb25cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIj5cbiAgICAgICAgPHA+PGkgY2xhc3M9XCJmYXMgZmEtY2xpcGJvYXJkLXF1ZXN0aW9uXCI+PC9pPiB7e3N1Z2dlc3RlZEFjdGlvbi5jb250ZW50fX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNpbWFnZVRvb2x0aXBUcGwgbGV0LXJlZj5cbiAgICA8SW5saW5lSW1hZ2VSZWZlcmVuY2VcbiAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAzMHZ3O1wiXG4gICAgICBbaWRdPVwicmVmLmlkXCJcbiAgICAgIFtyZWZdPVwicmVmLm9ialwiXG4gICAgICAob3BlblByZXZpZXcpPVwib3BlbkF0dGFjaG1lbnRQcmV2aWV3KCRldmVudClcIlxuICAgICAgKG9wZW5Eb2N1bWVudCk9XCJvcGVuT3JpZ2luYWxBdHRhY2htZW50KCRldmVudCwgJGV2ZW50LiRwYXJ0SWQpXCJcbiAgICAgIChvcGVuTW9kYWwpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgLz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI3BhZ2VUb29sdGlwVHBsIGxldC1yZWY+XG4gICAgPElubGluZVBhZ2VSZWZlcmVuY2VcbiAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAzMHZ3O1wiXG4gICAgICBbaWRdPVwicmVmLmlkXCJcbiAgICAgIFtyZWZdPVwicmVmLm9ialwiXG4gICAgICAob3BlblByZXZpZXcpPVwib3BlbkF0dGFjaG1lbnRQcmV2aWV3KCRldmVudClcIlxuICAgICAgKG9wZW5Eb2N1bWVudCk9XCJvcGVuT3JpZ2luYWxBdHRhY2htZW50KCRldmVudCwgJGV2ZW50LiRwYXJ0SWQpXCJcbiAgICAgIChvcGVuTW9kYWwpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgLz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBUcGwgbGV0LXJlZj5cbiAgICA8c3EtY2hhdC1yZWZlcmVuY2VcbiAgICAgICpuZ0lmPVwiIWhpZGRlblRvb2x0aXBcIlxuICAgICAgY2xhc3M9XCJleHBhbmRlZFwiXG4gICAgICBbYXR0YWNobWVudF09XCJyZWZcIlxuICAgICAgW3JlZmVyZW5jZV09XCJyZWYuY29udGV4dElkXCJcbiAgICAgIFtwYXJ0SWRdPVwicmVmLiRwYXJ0SWRcIlxuICAgICAgKG9wZW5QcmV2aWV3KT1cIm9wZW5BdHRhY2htZW50UHJldmlldygkZXZlbnQsIHJlZi4kcGFydElkKVwiXG4gICAgICAob3BlbkRvY3VtZW50KT1cIm9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoJGV2ZW50LCByZWYuJHBhcnRJZClcIj5cbiAgICA8L3NxLWNoYXQtcmVmZXJlbmNlPlxuICA8L25nLXRlbXBsYXRlPlxuXG48L2Rpdj5cbiJdfQ==
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUduRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUF5QmhFLE1BQU0sT0FBTyxvQkFBb0I7SUFrRC9CLFlBQ1MsRUFBYSxFQUNiLGdCQUFrQyxFQUNsQyxHQUFzQixF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QUFsQyxLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jb1Njb3BlLCBUcmFuc2xvY29QaXBlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcblxuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hhcnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ2hhdFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jaGF0LXJlZmVyZW5jZS9jaGF0LXJlZmVyZW5jZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IEluaXRpYWxzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2luaXRpYWxzLWF2YXRhci9pbml0aWFscy1hdmF0YXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNZXNzYWdlQ29udGVudFBpcGUgfSBmcm9tIFwiLi4vcGlwZXMvbWVzc2FnZS1jb250ZW50LnBpcGVcIjtcbmltcG9ydCB7IElubGluZUltYWdlUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL3JlZmVyZW5jZXMvaW5saW5lLWltYWdlLXJlZmVyZW5jZVwiO1xuaW1wb3J0IHsgSW5saW5lUGFnZVJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gXCIuLi9yZWZlcmVuY2VzL2lubGluZS1wYWdlLXJlZmVyZW5jZVwiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9wcmluY2lwYWwuc2VydmljZVwiO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3VpLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNtYXJ0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vc21hcnQtcmVuZGVyZXIvc21hcnQtcmVuZGVyZXJcIjtcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tIFwiLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgQ2hhdENvbnRleHRBdHRhY2htZW50LCBDaGF0TWVzc2FnZSwgU3VnZ2VzdGVkQWN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBUZXh0TWVzc2FnZUNvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXMvbWVzc2FnZS1jb250ZW50LnR5cGVzXCI7XG5pbXBvcnQgeyBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgfSBmcm9tIFwiLi4vdHlwZXMvbWVzc2FnZS1yZWZlcmVuY2UudHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInNxLWNoYXQtbWVzc2FnZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIEluaXRpYWxzQXZhdGFyQ29tcG9uZW50LFxuICAgIENoYXRSZWZlcmVuY2VDb21wb25lbnQsXG4gICAgQ2hhcnRDb21wb25lbnQsXG4gICAgTWVzc2FnZUNvbnRlbnRQaXBlLFxuICAgIElubGluZUltYWdlUmVmZXJlbmNlQ29tcG9uZW50LFxuICAgIElubGluZVBhZ2VSZWZlcmVuY2VDb21wb25lbnQsXG4gICAgVHJhbnNsb2NvUGlwZSxcbiAgICBTbWFydFJlbmRlcmVyQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xvY29TY29wZSgnY2hhdC1tZXNzYWdlJyldLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IENoYXRNZXNzYWdlO1xuICBASW5wdXQoKSBjb252ZXJzYXRpb246IENoYXRNZXNzYWdlW107XG4gIEBJbnB1dCgpIHN1Z2dlc3RlZEFjdGlvbnM6IFN1Z2dlc3RlZEFjdGlvbltdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhc3Npc3RhbnRNZXNzYWdlSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSB1c2VyTWVzc2FnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgY29ubmVjdGlvbkVycm9yTWVzc2FnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgc2VhcmNoV2FybmluZ01lc3NhZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0cmVhbWluZzogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5SZWdlbmVyYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkNvcHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuTGlrZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5EaXNsaWtlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbGxhcHNlUmVmZXJlbmNlczogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKSBvcGVuRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICByZWZlcmVuY2U6IENoYXRDb250ZXh0QXR0YWNobWVudDtcbiAgICBwYXJ0SWQ/OiBudW1iZXI7XG4gIH0+KCk7XG4gIEBPdXRwdXQoKSBvcGVuUHJldmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHJlZmVyZW5jZTogQ2hhdENvbnRleHRBdHRhY2htZW50O1xuICAgIHBhcnRJZD86IG51bWJlcjtcbiAgfT4oKTtcbiAgQE91dHB1dCgpIHN1Z2dlc3RBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFN1Z2dlc3RlZEFjdGlvbj4oKTtcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuICBAT3V0cHV0KCkgY29weSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdE1lc3NhZ2U+KCk7XG4gIEBPdXRwdXQoKSByZWdlbmVyYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGF0TWVzc2FnZT4oKTtcbiAgQE91dHB1dCgpIGxpa2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNsaWtlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGVidWcgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXRNZXNzYWdlPigpO1xuXG4gIC8vIHNpZ25hbCBiYXNlZCBzZXQgb2YgcmVmZXJlbmNlcyB0byBhdm9pZCBkdXBsaWNhdGVzXG4gIHJlZnMgPSBzaWduYWw8bnVtYmVyW10+KFtdKTtcbiAgcmVmZXJlbmNlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5yZWZzKCkuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhIC0gYikubWFwKChyKSA9PiBcIlwiICsgcilcbiAgKTtcbiAgcmVmZXJlbmNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENoYXRDb250ZXh0QXR0YWNobWVudD4oKTtcbiAgaW1hZ2VSZWZlcmVuY2VzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1lc3NhZ2VJbWFnZVJlZmVyZW5jZT4oKTtcbiAgcGFnZVJlZmVyZW5jZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgTWVzc2FnZUltYWdlUmVmZXJlbmNlPigpO1xuICBjb2xsYXBzZVByb2dyZXNzOiBib29sZWFuO1xuICBpY29uU2l6ZSA9IDI0O1xuXG4gIGhpZGRlblRvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyB1c2VkIGJ5IHRoZSB0ZW1wbGF0ZVxuICBBcnJheSA9IEFycmF5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1aTogVUlTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcmluY2lwYWxTZXJ2aWNlOiBQcmluY2lwYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnN0cmVhbWluZykge1xuICAgICAgdGhpcy5jb2xsYXBzZVByb2dyZXNzID0gIXRoaXMuc3RyZWFtaW5nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1lc3NhZ2U/LnJvbGUgPT09IFwiYXNzaXN0YW50XCIpIHtcbiAgICAgIHRoaXMucmVmZXJlbmNlTWFwLmNsZWFyKCk7XG4gICAgICBmb3IgKGxldCBtIG9mIHRoaXMuY29udmVyc2F0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50ICYmXG4gICAgICAgICAgbS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudC5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50KSB7XG4gICAgICAgICAgICAvLyBza2lwIGVtcHR5IGF0dGFjaG1lbnRcbiAgICAgICAgICAgIGlmICghYXR0YWNobWVudCkgY29udGludWU7XG5cbiAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlTWFwLnNldChcIlwiICsgYXR0YWNobWVudC5jb250ZXh0SWQsIHtcbiAgICAgICAgICAgICAgLi4uYXR0YWNobWVudCxcbiAgICAgICAgICAgICAgJHBhcnRJZDogYXR0YWNobWVudC5wYXJ0cz8uWzBdPy5wYXJ0SWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghIWF0dGFjaG1lbnQucGFydHMgJiYgYXR0YWNobWVudC5wYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0YWNobWVudC5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZklkID0gYCR7YXR0YWNobWVudC5jb250ZXh0SWR9LiR7YXR0YWNobWVudC5wYXJ0c1tpXS5wYXJ0SWR9YDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXQocmVmSWQsIHtcbiAgICAgICAgICAgICAgICAgIC4uLmF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgICAkcGFydElkOiBhdHRhY2htZW50LnBhcnRzPy5baV0/LnBhcnRJZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc01lc3NhZ2VUeXBlKG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEVtYmVkZGVkSW1hZ2VSZWZlcmVuY2UocmVmOiBzdHJpbmcpOiBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtkb2MsIHBhcnQsIGltYWdlXSA9IHJlZi5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgaW1hZ2VzID0gdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnBhcnRzPy5bK3BhcnQgLSAxXT8uaW1hZ2VzO1xuXG4gICAgaWYgKCFpbWFnZXMgfHwgaW1hZ2VzLmxlbmd0aCA9PT0gMCB8fCB0eXBlb2YgaW1hZ2VzWzBdICE9PSBcIm9iamVjdFwiKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG1lc3NhZ2VJbWFnZVJlZmVyZW5jZTogTWVzc2FnZUltYWdlUmVmZXJlbmNlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYXJ0aWNsZTogdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnJlY29yZCxcbiAgICAgICAgYXJ0aWNsZUlkOiB0aGlzLnJlZmVyZW5jZU1hcC5nZXQoZG9jKT8ucmVjb3JkSWQsXG4gICAgICB9LFxuICAgICAgaW1hZ2VzWytpbWFnZSAtIDFdXG4gICAgKTtcblxuICAgIC8vIHNhdmUgcmVmZXJlbmNlIGluIG1hcCBmb3IgcmVmZXJlbmNlIGxpc3RcbiAgICBpZiAoIXRoaXMuaW1hZ2VSZWZlcmVuY2VzTWFwLmhhcyhyZWYpKVxuICAgICAgdGhpcy5pbWFnZVJlZmVyZW5jZXNNYXAuc2V0KHJlZiwgbWVzc2FnZUltYWdlUmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBtZXNzYWdlSW1hZ2VSZWZlcmVuY2U7XG4gIH1cblxuICBnZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2UocmVmOiBzdHJpbmcpOiBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtkb2MsIHBhZ2VdID0gcmVmLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBwYWdlUmVmID0gdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnBhZ2VzPy5maW5kKHggPT4geC5wYWdlTnVtYmVyID09PSArcGFnZSk7XG5cbiAgICBpZiAoIXBhZ2VSZWYgfHwgdHlwZW9mIHBhZ2VSZWYgIT09IFwib2JqZWN0XCIpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtZXNzYWdlUGFnZVJlZmVyZW5jZTogTWVzc2FnZUltYWdlUmVmZXJlbmNlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYXJ0aWNsZTogdGhpcy5yZWZlcmVuY2VNYXAuZ2V0KGRvYyk/LnJlY29yZCxcbiAgICAgICAgYXJ0aWNsZUlkOiB0aGlzLnJlZmVyZW5jZU1hcC5nZXQoZG9jKT8ucmVjb3JkSWQsXG4gICAgICB9LFxuICAgICAgcGFnZVJlZlxuICAgICk7XG5cbiAgICAvLyBzYXZlIHJlZmVyZW5jZSBpbiBtYXAgZm9yIHJlZmVyZW5jZSBsaXN0XG4gICAgaWYgKCF0aGlzLnBhZ2VSZWZlcmVuY2VzTWFwLmhhcyhyZWYpKVxuICAgICAgdGhpcy5wYWdlUmVmZXJlbmNlc01hcC5zZXQocmVmLCBtZXNzYWdlUGFnZVJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gbWVzc2FnZVBhZ2VSZWZlcmVuY2U7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAhdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbFxuICAgICAgPyBcIlwiXG4gICAgICA6ICh0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsW1wiZnVsbE5hbWVcIl0gYXMgc3RyaW5nKSB8fFxuICAgICAgICAgIHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWwubmFtZTtcbiAgfVxuXG4gIGdldCBpc0FkbWluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByaW5jaXBhbFNlcnZpY2UucHJpbmNpcGFsPy5pc0FkbWluaXN0cmF0b3IgfHwgZmFsc2U7XG4gIH1cblxuICBwcm9jZXNzTWVzc2FnZVR5cGUobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcbiAgICAvLyBQcm9jZXNzIG1lc3NhZ2UgdHlwZSB3aGVuIHNwZWMgaXMgZG9uZVxuICAgIC8vIG5vcCBmb3IgbmV3IG1lc3NhZ2UgdHlwZXNcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UuY29udGVudCAhPT0gXCJzdHJpbmdcIikgcmV0dXJuO1xuXG4gICAgLy8gTGVnYWN5IG1lc3NhZ2UgdHlwZVxuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQuc3RhcnRzV2l0aChcIjxjaGFydGpzPlwiKSkge1xuICAgICAgbWVzc2FnZS5tZXNzYWdlVHlwZSA9IFwiQ0hBUlRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZS5tZXNzYWdlVHlwZSA9IFwiTUFSS0RPV05cIjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGEgcmVmZXJlbmNlIHN0cmluZyBieSB2YWxpZGF0aW5nIGFuZCBhZGRpbmcgaXQgdG8gdGhlIHNldCBvZiByZWZlcmVuY2VzIGlmIGFwcGxpY2FibGUuXG4gICAqXG4gICAqIC0gSWdub3JlcyBlbXB0eSBvciBmYWxzeSByZWZlcmVuY2VzLlxuICAgKiAtIElnbm9yZXMgcmVmZXJlbmNlcyB0aGF0IGFyZSBub3QgbnVtZXJpYy5cbiAgICogLSBJZ25vcmVzIHJlZmVyZW5jZXMgdGhhdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBzZXQuXG4gICAqIC0gQ29udmVydHMgdGhlIHJlZmVyZW5jZSB0byBhIG51bWJlciBhbmQgYWRkcyBpdCB0byB0aGUgc2V0IG9mIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgLSBUaGUgcmVmZXJlbmNlIHN0cmluZyB0byBwcm9jZXNzLlxuICAgKi9cbiAgcHJvY2Vzc1JlZmVyZW5jZXMocmVmOiBzdHJpbmcpIHtcbiAgICBpZiAoIXJlZikgcmV0dXJuO1xuICAgIGlmIChpc05hTigrcmVmKSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlZk51bSA9ICtyZWY7XG4gICAgaWYgKHRoaXMucmVmcygpLmluY2x1ZGVzKHJlZk51bSkpIHJldHVybjtcbiAgICB0aGlzLnJlZnMudXBkYXRlKGFyciA9PiBbLi4uYXJyLCByZWZOdW1dKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvcHlUb0NsaXBib2FyZChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVpLmNvcHlUb0NsaXBib2FyZChjb250ZW50KTtcbiAgfVxuXG4gIGNvcHlNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSB7XG4gICAgbGV0IGNvbnRlbnQ6IHN0cmluZyA9IFwiXCI7XG5cbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICAgIGNvbnRlbnQgPSBtZXNzYWdlLmNvbnRlbnQ7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlLmNvbnRlbnQpKVxuICAgICAgY29udGVudCA9IChtZXNzYWdlLmNvbnRlbnRbMF0gYXMgVGV4dE1lc3NhZ2VDb250ZW50KS50ZXh0O1xuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcIlVuc3VwcG9ydGVkIG1lc3NhZ2UgY29udGVudCB0eXBlXCIsIHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2VBbGwoL1xccypcXFtbXlxcXV0qXVxccyovZywgXCJcIik7XG5cbiAgICB0aGlzLl9jb3B5VG9DbGlwYm9hcmQoY29udGVudCk7XG4gICAgdGhpcy5jb3B5LmVtaXQobWVzc2FnZSk7XG4gIH1cblxuICBvcGVuQXR0YWNobWVudFByZXZpZXcoYXR0YWNobWVudDogQ2hhdENvbnRleHRBdHRhY2htZW50LCBwYXJ0SWQ/OiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5QcmV2aWV3LmVtaXQoeyByZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZCB9KTtcbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gIH1cblxuICBvcGVuT3JpZ2luYWxBdHRhY2htZW50KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuRG9jdW1lbnQuZW1pdCh7IHJlZmVyZW5jZTogYXR0YWNobWVudCwgcGFydElkIH0pO1xuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgfVxuXG4gIGhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZGVuVG9vbHRpcCA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGRlblRvb2x0aXAgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLSBNZXNzYWdlIGljb24gLS0+XG48c3BhbiBjbGFzcz1cIm1lc3NhZ2UtaWNvblwiIFt0aXRsZV09XCJtZXNzYWdlPy5yb2xlXCI+XG4gIDxpIGNsYXNzPVwiZC1ibG9ja1wiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZVwiICpuZ0lmPVwiIW1lc3NhZ2VcIj48L2k+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1lc3NhZ2U/LnJvbGVcIj5cbiAgICA8IS0tIEZvciAnYXNzaXN0YW50JyAtLT5cbiAgICA8aSAqbmdTd2l0Y2hDYXNlPVwiJ2Fzc2lzdGFudCdcIiBbbmdDbGFzc109XCJhc3Npc3RhbnRNZXNzYWdlSWNvblwiIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIj48L2k+XG5cbiAgICA8IS0tIEZvciAndXNlcicgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXInXCI+XG4gICAgICA8aSAqbmdJZj1cIiEhdXNlck1lc3NhZ2VJY29uOyBlbHNlIGluaXRpYWxzQXZhdGFyXCIgW25nQ2xhc3NdPVwidXNlck1lc3NhZ2VJY29uXCIgW3N0eWxlLi0tc3Etc2l6ZS5weF09XCJpY29uU2l6ZVwiPjwvaT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5pdGlhbHNBdmF0YXI+XG4gICAgICAgIDxzcS1pbml0aWFscy1hdmF0YXIgW2Z1bGxOYW1lXT1cIm5hbWVcIj48L3NxLWluaXRpYWxzLWF2YXRhcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEZvciAnY29ubmVjdGlvbi1lcnJvcicgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Nvbm5lY3Rpb24tZXJyb3InXCI+XG4gICAgICA8aSAqbmdJZj1cIiEhY29ubmVjdGlvbkVycm9yTWVzc2FnZUljb247IGVsc2UgZGVmYXVsdEVycm9ySWNvblwiIFtuZ0NsYXNzXT1cImNvbm5lY3Rpb25FcnJvck1lc3NhZ2VJY29uXCIgW3N0eWxlLi0tc3Etc2l6ZS5weF09XCJpY29uU2l6ZVwiPjwvaT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVycm9ySWNvbj5cbiAgICAgICAgPHN2ZyBbc3R5bGUuLS1zcS1zaXplLnB4XT1cImljb25TaXplXCIgY2xhc3M9XCJjb25uZWN0aW9uLWVycm9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPlxuICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE3LjEgMjkyYy0xMi45LTIyLjMtMTIuOS00OS43IDAtNzJMMTA1LjQgNjcuMWMxMi45LTIyLjMgMzYuNi0zNiA2Mi40LTM2bDE3Ni42IDBjMjUuNyAwIDQ5LjUgMTMuNyA2Mi40IDM2TDQ5NC45IDIyMGMxMi45IDIyLjMgMTIuOSA0OS43IDAgNzJMNDA2LjYgNDQ0LjljLTEyLjkgMjIuMy0zNi42IDM2LTYyLjQgMzZsLTE3Ni42IDBjLTI1LjcgMC00OS41LTEzLjctNjIuNC0zNkwxNy4xIDI5MnpNMjU2IDEyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzIgMjI0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEZvciAnc2VhcmNoLXdhcm5pbmcnIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWFyY2gtd2FybmluZydcIj5cbiAgICAgIDxpICpuZ0lmPVwiISFzZWFyY2hXYXJuaW5nTWVzc2FnZUljb247IGVsc2UgZGVmYXVsdFdhcm5pbmdJY29uXCIgW25nQ2xhc3NdPVwic2VhcmNoV2FybmluZ01lc3NhZ2VJY29uXCIgW3N0eWxlLi0tc3Etc2l6ZS5weF09XCJpY29uU2l6ZVwiPjwvaT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFdhcm5pbmdJY29uPlxuICAgICAgICA8c3ZnIFtzdHlsZS4tLXNxLXNpemUucHhdPVwiaWNvblNpemVcIiBjbGFzcz1cInNlYXJjaC13YXJuaW5nXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzg0IDUxMlwiPlxuICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTI3MiAzODRjOS42LTMxLjkgMjkuNS01OS4xIDQ5LjItODYuMmMwIDAgMCAwIDAgMGM1LjItNy4xIDEwLjQtMTQuMiAxNS40LTIxLjRjMTkuOC0yOC41IDMxLjQtNjMgMzEuNC0xMDAuM0MzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgMzcuMyAxMS42IDcxLjkgMzEuNCAxMDAuM2M1IDcuMiAxMC4yIDE0LjMgMTUuNCAyMS40YzAgMCAwIDAgMCAwYzE5LjggMjcuMSAzOS43IDU0LjQgNDkuMiA4Ni4ybDE2MCAwek0xOTIgNTEyYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtMTYtMTYwIDAgMCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHptMC00NDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xMTJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTE2MCAyODhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L3NwYW4+XG5cbjwhLS0gTWVzc2FnZSBib2R5IC0tPlxuPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHBvc2l0aW9uLXJlbGF0aXZlIHJlbGF0aXZlXCIgc3R5bGU9XCJtaW4td2lkdGg6IDA7XCIgW25nQ2xhc3NdPVwiJ21lc3NhZ2UtJyttZXNzYWdlLnJvbGVcIj5cblxuICA8IS0tIFByb2dyZXNzIHN0ZXBzIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kcHJvZ3Jlc3MgYXMgcHJvZ3Jlc3NcIiBjbGFzcz1cInNtYWxsIG1zLTMgbWItMlwiPlxuICAgIDxkZXRhaWxzIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cInNlbGVjdC1ub25lXCIgW29wZW5dPVwiIWNvbGxhcHNlUHJvZ3Jlc3NcIj5cbiAgICAgIDxzdW1tYXJ5IGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICB7eyAnY2hhdE1lc3NhZ2Uudmlld1Byb2dyZXNzJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgPC9zdW1tYXJ5PlxuICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2YgcHJvZ3Jlc3NcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1mdyBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cInN0ZXAuZG9uZVwiPjwvaT5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXB1bHNlIHN0ZXAtb25nb2luZ1wiICpuZ0lmPVwiIXN0ZXAuZG9uZSAmJiBzdHJlYW1pbmdcIj48L2k+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1iYW4gc3RlcC1lcnJvclwiICpuZ0lmPVwiIXN0ZXAuZG9uZSAmJiAhc3RyZWFtaW5nXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBmdy1ib2xkXCI+e3tzdGVwLnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLmNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cIic6ICcgKyBzdGVwLmNvbnRlbnRcIj48L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGV0YWlscz5cbiAgPC9kaXY+XG5cbiAgPCEtLSBNZXNzYWdlIGNvbnRlbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIiAqbmdJZj1cIm1lc3NhZ2UuY29udGVudFwiPlxuXG4gICAgPCEtLSBDdXN0b20gcmVuZGVyaW5nIGZvciBXUFMsIHRvIGJlIHJlbW92ZSB3aXRoIGh0dHBzOi8vc2luZXF1YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9FUy0yMzcxMCAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZT8ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgJiYgbWVzc2FnZS5tZXNzYWdlVHlwZSA9PT0gJ0NIQVJUJ1wiPlxuICAgICAgPHNxLWFzc2lzdGFudC1jaGFydCBbcmF3Q2hhcnREYXRhXT1cIm1lc3NhZ2UuY29udGVudFwiPjwvc3EtYXNzaXN0YW50LWNoYXJ0PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaGlzIHNlY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGN1c3RvbWl6aW5nIHRoZSB0ZW1wbGF0ZSBub2RlcyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgVGVtcGxhdGUgbm9kZXMgYXJlIHByZWRlZmluZWQgc3RydWN0dXJlcyB0aGF0IHNlcnZlIGFzIGJsdWVwcmludHMgZm9yIGNyZWF0aW5nL2N1c3RvbWl6aW5nIGR5bmFtaWMgY29udGVudCAtLT5cblxuXG4gICAgQGlmKG1lc3NhZ2U/LnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIG1lc3NhZ2UubWVzc2FnZVR5cGUgIT09ICdDSEFSVCcpIHtcbiAgICAgIDxTbWFydFJlbmRlcmVyXG4gICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2UuY29udGVudCB8IG1lc3NhZ2VDb250ZW50XCJcbiAgICAgICAgW2NvbnRleHRdPVwie1xuICAgICAgICAgIGdldEVtYmVkZGVkUGFnZVJlZmVyZW5jZTogZ2V0RW1iZWRkZWRQYWdlUmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgICAgZ2V0RW1iZWRkZWRJbWFnZVJlZmVyZW5jZTogZ2V0RW1iZWRkZWRJbWFnZVJlZmVyZW5jZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJlZmVyZW5jZXNNYXA6IHJlZmVyZW5jZU1hcCxcbiAgICAgICAgICByZWZlcmVuY2VzOiBwcm9jZXNzUmVmZXJlbmNlcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHJhbms6IGlkKClcbiAgICAgICAgfVwiPlxuICAgICAgPC9TbWFydFJlbmRlcmVyPlxuICAgIH1cblxuICAgIDxwICpuZ0lmPVwibWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInXCI+e3sgbWVzc2FnZS5jb250ZW50IHwgbWVzc2FnZUNvbnRlbnQgfX08L3A+XG5cbiAgICA8IS0tIExpc3Qgb2YgcmVmZXJlbmNlLCBpZiBhbnkgLS0+XG4gIEBsZXQgcmVmZXJlbmNlc0FycmF5ID0gcmVmZXJlbmNlcygpO1xuICAgIEBpZiAocmVmZXJlbmNlc0FycmF5Py5sZW5ndGggPiAwIHx8IGltYWdlUmVmZXJlbmNlc01hcD8uc2l6ZSA+IDAgfHwgcGFnZVJlZmVyZW5jZXNNYXA/LnNpemUgPiAwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicmVmZXJlbmNlc1wiPlxuICAgICAgICA8ZGV0YWlscyByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZWxlY3Qtbm9uZVwiIFtvcGVuXT1cIiFjb2xsYXBzZVJlZmVyZW5jZXNcIj5cbiAgICAgICAgICA8c3VtbWFyeSBjbGFzcz1cInJlZmVyZW5jZXMtdGl0bGVcIj57eyAnY2hhdE1lc3NhZ2UucmVmZXJlbmNlcycgfCB0cmFuc2xvY28gfX08L3N1bW1hcnk+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgQGZvciAocmVmZXJlbmNlIG9mIHJlZmVyZW5jZXNBcnJheTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIEBsZXQgYXR0YWNobWVudCA9IHJlZmVyZW5jZU1hcC5nZXQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgPCEtLSBPbmx5IGRpc3BsYXkgdGhlIHJlZmVyZW5jZSB3aGVuIHRoZSBrZXkgaXMgYSBpbnRlZ2VyIG5vdCBhIGRlY2ltYWwgLS0+XG4gICAgICAgICAgICAgICBAaWYoYXR0YWNobWVudCkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcS1jaGF0LXJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXhwYW5kZWRdPVwiYXR0YWNobWVudD8uJGV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dGFjaG1lbnRdPVwiYXR0YWNobWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VdPVwicmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZU1hcF09XCJyZWZlcmVuY2VNYXBcIlxuICAgICAgICAgICAgICAgICAgICBbaW1hZ2VzXT1cIkFycmF5LmZyb20oaW1hZ2VSZWZlcmVuY2VzTWFwLmtleXMoKSlcIlxuICAgICAgICAgICAgICAgICAgICBbcGFnZXNdPVwiQXJyYXkuZnJvbShwYWdlUmVmZXJlbmNlc01hcC5rZXlzKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5QcmV2aWV3KT1cIm9wZW5BdHRhY2htZW50UHJldmlldygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5Eb2N1bWVudCk9XCJvcGVuT3JpZ2luYWxBdHRhY2htZW50KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDwvc3EtY2hhdC1yZWZlcmVuY2U+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICAgIDwhLS0gRWRpdCAvIFJlZ2VuZXJhdGUgZmxvYXRpbmcgYWN0aW9ucyAtLT5cbiAgPGRpdiBjbGFzcz1cInNxLWNoYXQtbWVzc2FnZS1hY3Rpb25zXCIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gICAgPCEtLSBDb21tb24gYWN0aW9uIGJ1dHRvbnMgZm9yIFwidXNlclwiICYgXCJhc3Npc3RhbnRcIiBtZXNzYWdlIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKm5nSWY9XCJjYW5Db3B5XCIgW3NxVG9vbHRpcF09XCInY2hhdE1lc3NhZ2UuY29weVRleHQnIHwgdHJhbnNsb2NvXCIgKGNsaWNrKT1cImNvcHlNZXNzYWdlKG1lc3NhZ2UpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhciBmYS1jbGlwYm9hcmRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBBY3Rpb24gYnV0dG9ucyBmb3IgXCJ1c2VyXCIgbWVzc2FnZSAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbVwiICpuZ0lmPVwiY2FuRWRpdFwiIFtzcVRvb2x0aXBdPVwiJ2NoYXRNZXNzYWdlLmVkaXRNZXNzYWdlJyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJlZGl0LmVtaXQobWVzc2FnZSlcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVkaXRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBBY3Rpb24gYnV0dG9ucyBmb3IgXCJhc3Npc3RhbnRcIiBtZXNzYWdlIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgW2NsYXNzLmJvdW5jZV09XCJtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRsaWtlZFwiICpuZ0lmPVwiY2FuTGlrZVwiIFtzcVRvb2x0aXBdPVwiJ2NoYXRNZXNzYWdlLmxpa2VBbnN3ZXInIHwgdHJhbnNsb2NvXCIgKGNsaWNrKT1cImxpa2UuZW1pdCgpXCI+XG4gICAgICA8aSAqbmdJZj1cIiFtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRsaWtlZFwiIGNsYXNzPVwiZmFyIGZhLXRodW1icy11cCBcIj48L2k+XG4gICAgICA8aSAqbmdJZj1cIm1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJGxpa2VkXCIgY2xhc3M9XCJmYXMgZmEtdGh1bWJzLXVwXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgW2NsYXNzLmJvdW5jZV09XCJtZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRkaXNsaWtlZFwiICpuZ0lmPVwiY2FuRGlzbGlrZVwiIFtzcVRvb2x0aXBdPVwiJ2NoYXRNZXNzYWdlLnJlcG9ydElzc3VlJyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJkaXNsaWtlLmVtaXQoKVwiPlxuICAgICAgPGkgKm5nSWY9XCIhbWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy4kZGlzbGlrZWRcIiBjbGFzcz1cImZhciBmYS10aHVtYnMtZG93biBcIj48L2k+XG4gICAgICA8aSAqbmdJZj1cIm1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMuJGRpc2xpa2VkXCIgY2xhc3M9XCJmYXMgZmEtdGh1bWJzLWRvd25cIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhblJlZ2VuZXJhdGVcIiBbc3FUb29sdGlwXT1cIidjaGF0TWVzc2FnZS5yZWdlbmVyYXRlUmVzcG9uc2UnIHwgdHJhbnNsb2NvXCIgKGNsaWNrKT1cInJlZ2VuZXJhdGUuZW1pdChtZXNzYWdlKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3luYy1hbHRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc21cIiAqbmdJZj1cImNhbkRlYnVnXCIgW3NxVG9vbHRpcF09XCInY2hhdE1lc3NhZ2Uuc2hvd0xvZ0luZm9ybWF0aW9uJyB8IHRyYW5zbG9jb1wiIChjbGljayk9XCJkZWJ1Zy5lbWl0KG1lc3NhZ2UpO1wiPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtbGlzdC1hbHRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTGlzdCBvZiBzdWdnZXN0ZWQgYWN0aW9ucywgaWYgYW55IC0tPlxuICA8ZGl2ICpuZ0lmPVwic3VnZ2VzdGVkQWN0aW9uc1wiIGNsYXNzPVwibXQtMiBtZXNzYWdlLXN1Z2dlc3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGVkLWFjdGlvblwiICpuZ0Zvcj1cImxldCBzdWdnZXN0ZWRBY3Rpb24gb2Ygc3VnZ2VzdGVkQWN0aW9uc1wiIChjbGljayk9XCJzdWdnZXN0QWN0aW9uLmVtaXQoc3VnZ2VzdGVkQWN0aW9uKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtaWNvblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxuICAgICAgICA8cD48aSBjbGFzcz1cImZhcyBmYS1jbGlwYm9hcmQtcXVlc3Rpb25cIj48L2k+IHt7c3VnZ2VzdGVkQWN0aW9uLmNvbnRlbnR9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2ltYWdlVG9vbHRpcFRwbCBsZXQtcmVmPlxuICAgIDxJbmxpbmVJbWFnZVJlZmVyZW5jZVxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDMwdnc7XCJcbiAgICAgIFtpZF09XCJyZWYuaWRcIlxuICAgICAgW3JlZl09XCJyZWYub2JqXCJcbiAgICAgIChvcGVuUHJldmlldyk9XCJvcGVuQXR0YWNobWVudFByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAob3BlbkRvY3VtZW50KT1cIm9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxuICAgICAgKG9wZW5Nb2RhbCk9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAvPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcGFnZVRvb2x0aXBUcGwgbGV0LXJlZj5cbiAgICA8SW5saW5lUGFnZVJlZmVyZW5jZVxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDMwdnc7XCJcbiAgICAgIFtpZF09XCJyZWYuaWRcIlxuICAgICAgW3JlZl09XCJyZWYub2JqXCJcbiAgICAgIChvcGVuUHJldmlldyk9XCJvcGVuQXR0YWNobWVudFByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAob3BlbkRvY3VtZW50KT1cIm9wZW5PcmlnaW5hbEF0dGFjaG1lbnQoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxuICAgICAgKG9wZW5Nb2RhbCk9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAvPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcFRwbCBsZXQtcmVmPlxuICAgIDxzcS1jaGF0LXJlZmVyZW5jZVxuICAgICAgKm5nSWY9XCIhaGlkZGVuVG9vbHRpcFwiXG4gICAgICBjbGFzcz1cImV4cGFuZGVkXCJcbiAgICAgIFthdHRhY2htZW50XT1cInJlZlwiXG4gICAgICBbcmVmZXJlbmNlXT1cInJlZi5jb250ZXh0SWRcIlxuICAgICAgW3BhcnRJZF09XCJyZWYuJHBhcnRJZFwiXG4gICAgICAob3BlblByZXZpZXcpPVwib3BlbkF0dGFjaG1lbnRQcmV2aWV3KCRldmVudCwgcmVmLiRwYXJ0SWQpXCJcbiAgICAgIChvcGVuRG9jdW1lbnQpPVwib3Blbk9yaWdpbmFsQXR0YWNobWVudCgkZXZlbnQsIHJlZi4kcGFydElkKVwiPlxuICAgIDwvc3EtY2hhdC1yZWZlcmVuY2U+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuIl19
|
|
@@ -1557,7 +1557,7 @@ class ChatMessageComponent {
|
|
|
1557
1557
|
console.error("Unsupported message content type", typeof message.content);
|
|
1558
1558
|
return;
|
|
1559
1559
|
}
|
|
1560
|
-
content = content.replaceAll(/\s
|
|
1560
|
+
content = content.replaceAll(/\s*\[[^\]]*]\s*/g, "");
|
|
1561
1561
|
this._copyToClipboard(content);
|
|
1562
1562
|
this.copy.emit(message);
|
|
1563
1563
|
}
|