vscode-debugadapter-testsupport
Advanced tools
Comparing version 1.49.0 to 1.50.0-pre.0
@@ -44,3 +44,3 @@ /// <reference types="node" /> | ||
*/ | ||
constructor(runtime: string, executable: string, debugType: string, spawnOptions?: cp.SpawnOptions, enableStderr?: boolean); | ||
constructor(debugAdapterRuntime: string, debugAdapterExecutable: string, debugType: string, spawnOptions?: cp.SpawnOptions, enableStderr?: boolean); | ||
/** | ||
@@ -47,0 +47,0 @@ * Starts a new debug adapter and sets up communication via stdin/stdout. |
@@ -31,7 +31,7 @@ "use strict"; | ||
*/ | ||
constructor(runtime, executable, debugType, spawnOptions, enableStderr) { | ||
constructor(debugAdapterRuntime, debugAdapterExecutable, debugType, spawnOptions, enableStderr) { | ||
super(); | ||
this.defaultTimeout = 5000; | ||
this._runtime = runtime; | ||
this._executable = executable; | ||
this._runtime = debugAdapterRuntime; | ||
this._executable = debugAdapterExecutable; | ||
this._spawnOptions = spawnOptions; | ||
@@ -385,2 +385,2 @@ this._enableStderr = enableStderr; | ||
exports.DebugClient = DebugClient; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVidWdDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOzs7QUFFaEcseUJBQTBCO0FBQzFCLHVDQUF3QztBQUN4QyxvQ0FBcUM7QUFDckMsaUNBQWtDO0FBQ2xDLDJCQUE0QjtBQUU1QixxREFBZ0Q7QUFnQmhELE1BQWEsV0FBWSxTQUFRLCtCQUFjO0lBZ0I5Qzs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxZQUFZLE9BQWUsRUFBRSxVQUFrQixFQUFFLFNBQWlCLEVBQUUsWUFBOEIsRUFBRSxZQUFzQjtRQUN6SCxLQUFLLEVBQUUsQ0FBQztRQW5CRixtQkFBYyxHQUFHLElBQUksQ0FBQztRQW9CNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEtBQUssQ0FBQztRQUUvQyxJQUFJLFdBQVcsQ0FBQywyQkFBMkIsS0FBSyxTQUFTLEVBQUU7WUFDMUQsSUFBSTtnQkFDSCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RCxXQUFXLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO2FBQy9DO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ2IsV0FBVyxDQUFDLDJCQUEy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T0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUV2QixJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLG9CQUFvQixJQUFJLFFBQVEsQ0FBQztTQUUxRSxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Q7QUFqY0Qsa0NBaWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5pbXBvcnQgY29uc3RhbnRzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG5pbXBvcnQgY3AgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG5pbXBvcnQgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5pbXBvcnQgbmV0ID0gcmVxdWlyZSgnbmV0Jyk7XG5pbXBvcnQge0RlYnVnUHJvdG9jb2x9IGZyb20gJ3ZzY29kZS1kZWJ1Z3Byb3RvY29sJztcbmltcG9ydCB7UHJvdG9jb2xDbGllbnR9IGZyb20gJy4vcHJvdG9jb2xDbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMb2NhdGlvbiB7XG5cdHBhdGg6IHN0cmluZztcblx0bGluZTogbnVtYmVyO1xuXHRjb2x1bW4/OiBudW1iZXI7XG5cdHZlcmlmaWVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGFydGlhbExvY2F0aW9uIHtcblx0cGF0aD86IHN0cmluZztcblx0bGluZT86IG51bWJlcjtcblx0Y29sdW1uPzogbnVtYmVyO1xuXHR2ZXJpZmllZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0NsaWVudCBleHRlbmRzIFByb3RvY29sQ2xpZW50IHtcblxuXHRwcml2YXRlIHN0YXRpYyBDQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0gOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX3J1bnRpbWU6IHN0cmluZztcblx0cHJpdmF0ZSBfZXhlY3V0YWJsZTogc3RyaW5nO1xuXHRwcml2YXRlIF9hZGFwdGVyUHJvY2VzczogY3AuQ2hpbGRQcm9jZXNzO1xuXHRwcml2YXRlIF9zcGF3bk9wdGlvbnM6IGNwLlNwYXduT3B0aW9ucztcblx0cHJpdmF0ZSBfZW5hYmxlU3RkZXJyOiBib29sZWFuO1xuXHRwcml2YXRlIF9kZWJ1Z1R5cGU6IHN0cmluZztcblx0cHJpdmF0ZSBfc29ja2V0OiBuZXQuU29ja2V0O1xuXG5cdHByaXZhdGUgX3N1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0OiBib29sZWFuO1xuXG5cdHB1YmxpYyBkZWZhdWx0VGltZW91dCA9IDUwMDA7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBEZWJ1Z0NsaWVudCBvYmplY3QgdGhhdCBwcm92aWRlcyBhIHByb21pc2UtYmFzZWQgQVBJIHRvIHdyaXRlXG5cdCAqIGRlYnVnIGFkYXB0ZXIgdGVzdHMuXG5cdCAqIEEgc2ltcGxlIG1vY2hhIGV4YW1wbGUgZm9yIHNldHRpbmcgYW5kIGhpdHRpbmcgYSBicmVha3BvaW50IGluIGxpbmUgMTUgb2YgYSBwcm9ncmFtICd0ZXN0LmpzJyBsb29rcyBsaWtlIHRoaXM6XG5cdCAqXG5cdCAqIHZhciBkYztcblx0ICogc2V0dXAoICgpID0+IHtcblx0ICogICAgIGRjID0gbmV3IERlYnVnQ2xpZW50KCdub2RlJywgJy4vb3V0L25vZGUvbm9kZURlYnVnLmpzJywgJ25vZGUnKTtcblx0ICogICAgIHJldHVybiBkYy5zdGFydCgpO1xuXHQgKiB9KTtcblx0ICogdGVhcmRvd24oICgpID0+IGRjLnN0b3AoKSApO1xuXHQgKlxuXHQgKiB0ZXN0KCdzaG91bGQgc3RvcCBvbiBhIGJyZWFrcG9pbnQnLCAoKSA9PiB7XG5cdCAqICAgICByZXR1cm4gZGMuaGl0QnJlYWtwb2ludCh7IHByb2dyYW06ICd0ZXN0LmpzJyB9LCAndGVzdC5qcycsIDE1KTtcblx0ICogfSk7XG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihydW50aW1lOiBzdHJpbmcsIGV4ZWN1dGFibGU6IHN0cmluZywgZGVidWdUeXBlOiBzdHJpbmcsIHNwYXduT3B0aW9ucz86IGNwLlNwYXduT3B0aW9ucywgZW5hYmxlU3RkZXJyPzogYm9vbGVhbikge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5fcnVudGltZSA9IHJ1bnRpbWU7XG5cdFx0dGhpcy5fZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGU7XG5cdFx0dGhpcy5fc3Bhd25PcHRpb25zID0gc3Bhd25PcHRpb25zO1xuXHRcdHRoaXMuX2VuYWJsZVN0ZGVyciA9IGVuYWJsZVN0ZGVycjtcblx0XHR0aGlzLl9kZWJ1Z1R5cGUgPSBkZWJ1Z1R5cGU7XG5cdFx0dGhpcy5fc3VwcG9ydHNDb25maWd1cmF0aW9uRG9uZVJlcXVlc3QgPSBmYWxzZTtcblxuXHRcdGlmIChEZWJ1Z0NsaWVudC5DQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZnMuYWNjZXNzU3luYyhwcm9jZXNzLmV4ZWNQYXRoLnRvTG93ZXJDYXNlKCksIGNvbnN0YW50cy5GX09LKTtcblx0XHRcdFx0ZnMuYWNjZXNzU3luYyhwcm9jZXNzLmV4ZWNQYXRoLnRvVXBwZXJDYXNlKCksIGNvbnN0YW50cy5GX09LKTtcblx0XHRcdFx0RGVidWdDbGllbnQuQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNID0gdHJ1ZTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHREZWJ1Z0NsaWVudC5DQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0gPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyAtLS0tIGxpZmUgY3ljbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQvKipcblx0ICogU3RhcnRzIGEgbmV3IGRlYnVnIGFkYXB0ZXIgYW5kIHNldHMgdXAgY29tbXVuaWNhdGlvbiB2aWEgc3RkaW4vc3Rkb3V0LlxuXHQgKiBJZiBhIHBvcnQgbnVtYmVyIGlzIHNwZWNpZmllZCB0aGUgYWRhcHRlciBpcyBub3QgbGF1bmNoZWQgYnV0IGEgY29ubmVjdGlvbiB0b1xuXHQgKiBhIGRlYnVnIGFkYXB0ZXIgcnVubmluZyBpbiBzZXJ2ZXIgbW9kZSBpcyBlc3RhYmxpc2hlZC4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZ1xuXHQgKiB0aGUgYWRhcHRlciB3aGlsZSBydW5uaW5nIHRlc3RzLiBGb3IgdGhpcyByZWFzb24gYWxsIHRpbWVvdXRzIGFyZSBkaXNhYmxlZCBpbiBzZXJ2ZXIgbW9kZS5cblx0ICovXG5cdHB1YmxpYyBzdGFydChwb3J0PzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBwb3J0ID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHR0aGlzLl9zb2NrZXQgPSBuZXQuY3JlYXRlQ29ubmVjdGlvbihwb3J0LCAnMTI3LjAuMC4xJywgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY29ubmVjdCh0aGlzLl9zb2NrZXQsIHRoaXMuX3NvY2tldCk7XG5cdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuX2FkYXB0ZXJQcm9jZXNzID0gY3Auc3Bhd24odGhpcy5fcnVudGltZSwgWyB0aGlzLl9leGVjdXRhYmxlIF0sIHRoaXMuX3NwYXduT3B0aW9ucyk7XG5cdFx0XHRcdGNvbnN0IHNhbml0aXplID0gKHM6IHN0cmluZykgPT4gcy50b1N0cmluZygpLnJlcGxhY2UoL1xccj9cXG4kL21nLCAnJyk7XG5cdFx0XHRcdHRoaXMuX2FkYXB0ZXJQcm9jZXNzLnN0ZGVyci5vbignZGF0YScsIChkYXRhOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5fZW5hYmxlU3RkZXJyKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzYW5pdGl6ZShkYXRhKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2Vzcy5vbignZXJyb3InLCAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRyZWplY3QoZXJyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuX2FkYXB0ZXJQcm9jZXNzLm9uKCdleGl0JywgKGNvZGU6IG51bWJlciwgc2lnbmFsOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRpZiAoY29kZSkge1xuXHRcdFx0XHRcdFx0Ly8gZG9uZShuZXcgRXJyb3IoJ2RlYnVnIGFkYXB0ZXIgZXhpdCBjb2RlOiAnICsgY29kZSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0dGhpcy5jb25uZWN0KHRoaXMuX2FkYXB0ZXJQcm9jZXNzLnN0ZG91dCwgdGhpcy5fYWRhcHRlclByb2Nlc3Muc3RkaW4pO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2h1dGRvd24gdGhlIGRlYnVnZ2VlIGFuZCB0aGUgZGVidWcgYWRhcHRlciAob3IgZGlzY29ubmVjdCBpZiBpbiBzZXJ2ZXIgbW9kZSkuXG5cdCAqL1xuXHRwdWJsaWMgc3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcblxuXHRcdHJldHVybiB0aGlzLmRpc2Nvbm5lY3RSZXF1ZXN0KCkudGhlbigoKSA9PiB7XG5cdFx0XHR0aGlzLnN0b3BBZGFwdGVyKCk7XG5cdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0dGhpcy5zdG9wQWRhcHRlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9wQWRhcHRlcigpIHtcblx0XHRpZiAodGhpcy5fYWRhcHRlclByb2Nlc3MpIHtcblx0XHRcdHRoaXMuX2FkYXB0ZXJQcm9jZXNzLmtpbGwoKTtcblx0XHRcdHRoaXMuX2FkYXB0ZXJQcm9jZXNzID0gbnVsbDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX3NvY2tldCkge1xuXHRcdFx0dGhpcy5fc29ja2V0LmVuZCgpO1xuXHRcdFx0dGhpcy5fc29ja2V0ID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHQvLyAtLS0tIHByb3RvY29sIHJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwdWJsaWMgaW5pdGlhbGl6ZVJlcXVlc3QoYXJncz86IERlYnVnUHJvdG9jb2wuSW5pdGlhbGl6ZVJlcXVlc3RBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuSW5pdGlhbGl6ZVJlc3BvbnNlPiB7XG5cdFx0aWYgKCFhcmdzKSB7XG5cdFx0XHRhcmdzID0ge1xuXHRcdFx0XHRhZGFwdGVySUQ6IHRoaXMuX2RlYnVnVHlwZSxcblx0XHRcdFx0bGluZXNTdGFydEF0MTogdHJ1ZSxcblx0XHRcdFx0Y29sdW1uc1N0YXJ0QXQxOiB0cnVlLFxuXHRcdFx0XHRwYXRoRm9ybWF0OiAncGF0aCdcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2luaXRpYWxpemUnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBjb25maWd1cmF0aW9uRG9uZVJlcXVlc3QoYXJncz86IERlYnVnUHJvdG9jb2wuQ29uZmlndXJhdGlvbkRvbmVBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuQ29uZmlndXJhdGlvbkRvbmVSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2NvbmZpZ3VyYXRpb25Eb25lJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgbGF1bmNoUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkxhdW5jaFJlcXVlc3RBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuTGF1bmNoUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdsYXVuY2gnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBhdHRhY2hSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuQXR0YWNoUmVxdWVzdEFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5BdHRhY2hSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2F0dGFjaCcsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHJlc3RhcnRSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuUmVzdGFydEFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5SZXN0YXJ0UmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdyZXN0YXJ0JywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgdGVybWluYXRlUmVxdWVzdChhcmdzPzogRGVidWdQcm90b2NvbC5UZXJtaW5hdGVBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuVGVybWluYXRlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCd0ZXJtaW5hdGUnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBkaXNjb25uZWN0UmVxdWVzdChhcmdzPzogRGVidWdQcm90b2NvbC5EaXNjb25uZWN0QXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkRpc2Nvbm5lY3RSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2Rpc2Nvbm5lY3QnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRCcmVha3BvaW50c1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TZXRCcmVha3BvaW50c0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TZXRCcmVha3BvaW50c1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2V0QnJlYWtwb2ludHMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRGdW5jdGlvbkJyZWFrcG9pbnRzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlNldEZ1bmN0aW9uQnJlYWtwb2ludHNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuU2V0RnVuY3Rpb25CcmVha3BvaW50c1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2V0RnVuY3Rpb25CcmVha3BvaW50cycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzZXRFeGNlcHRpb25CcmVha3BvaW50cycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIGRhdGFCcmVha3BvaW50SW5mb1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5EYXRhQnJlYWtwb2ludEluZm9Bcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuRGF0YUJyZWFrcG9pbnRJbmZvUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdkYXRhQnJlYWtwb2ludEluZm8nLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzZXREYXRhQnJlYWtwb2ludHNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU2V0RGF0YUJyZWFrcG9pbnRzQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNldERhdGFCcmVha3BvaW50c1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2V0RGF0YUJyZWFrcG9pbnRzJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgY29udGludWVSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuQ29udGludWVBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuQ29udGludWVSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2NvbnRpbnVlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgbmV4dFJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5OZXh0QXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLk5leHRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ25leHQnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzdGVwSW5SZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU3RlcEluQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlN0ZXBJblJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc3RlcEluJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc3RlcE91dFJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TdGVwT3V0QXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlN0ZXBPdXRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3N0ZXBPdXQnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzdGVwQmFja1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TdGVwQmFja0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGVwQmFja1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc3RlcEJhY2snLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyByZXZlcnNlQ29udGludWVSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuUmV2ZXJzZUNvbnRpbnVlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlJldmVyc2VDb250aW51ZVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgncmV2ZXJzZUNvbnRpbnVlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgcmVzdGFydEZyYW1lUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlJlc3RhcnRGcmFtZUFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5SZXN0YXJ0RnJhbWVSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3Jlc3RhcnRGcmFtZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIGdvdG9SZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuR290b0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5Hb3RvUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdnb3RvJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgcGF1c2VSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuUGF1c2VBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuUGF1c2VSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3BhdXNlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc3RhY2tUcmFjZVJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TdGFja1RyYWNlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlN0YWNrVHJhY2VSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3N0YWNrVHJhY2UnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzY29wZXNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU2NvcGVzQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNjb3Blc1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2NvcGVzJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgdmFyaWFibGVzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlZhcmlhYmxlc0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5WYXJpYWJsZXNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3ZhcmlhYmxlcycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHNldFZhcmlhYmxlUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlNldFZhcmlhYmxlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNldFZhcmlhYmxlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzZXRWYXJpYWJsZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHNvdXJjZVJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5Tb3VyY2VBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuU291cmNlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzb3VyY2UnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyB0aHJlYWRzUmVxdWVzdCgpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuVGhyZWFkc1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgndGhyZWFkcycpO1xuXHR9XG5cblx0cHVibGljIG1vZHVsZXNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuTW9kdWxlc0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5Nb2R1bGVzUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdtb2R1bGVzJyk7XG5cdH1cblxuXHRwdWJsaWMgZXZhbHVhdGVSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuRXZhbHVhdGVBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuRXZhbHVhdGVSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2V2YWx1YXRlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc3RlcEluVGFyZ2V0c1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TdGVwSW5UYXJnZXRzQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlN0ZXBJblRhcmdldHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3N0ZXBJblRhcmdldHMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBnb3RvVGFyZ2V0c1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5Hb3RvVGFyZ2V0c0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5Hb3RvVGFyZ2V0c1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnZ290b1RhcmdldHMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBjb21wbGV0aW9uc1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5Db21wbGV0aW9uc0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5Db21wbGV0aW9uc1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnY29tcGxldGlvbnMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBleGNlcHRpb25JbmZvUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkV4Y2VwdGlvbkluZm9Bcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuRXhjZXB0aW9uSW5mb1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnZXhjZXB0aW9uSW5mbycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIGN1c3RvbVJlcXVlc3QoY29tbWFuZDogc3RyaW5nLCBhcmdzPzogYW55KTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZChjb21tYW5kLCBhcmdzKTtcblx0fVxuXG5cdC8vIC0tLS0gY29udmVuaWVuY2UgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdC8qXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGlmIGFuIGV2ZW50IHdpdGggYSBzcGVjaWZpYyB0eXBlIHdhcyByZWNlaXZlZCB3aXRoaW4gc29tZSBzcGVjaWZpZWQgdGltZS5cblx0ICogVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiBhIHRpbWVvdXQgb2NjdXJzLlxuXHQgKi9cblx0cHVibGljIHdhaXRGb3JFdmVudChldmVudFR5cGU6IHN0cmluZywgdGltZW91dD86IG51bWJlcik6IFByb21pc2U8RGVidWdQcm90b2NvbC5FdmVudD4ge1xuXG5cdFx0dGltZW91dCA9IHRpbWVvdXQgfHwgdGhpcy5kZWZhdWx0VGltZW91dDtcblx0XHRsZXQgdGltZW91dEhhbmRsZXI6IGFueTtcblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLm9uY2UoZXZlbnRUeXBlLCBldmVudCA9PiB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlcik7XG5cdFx0XHRcdHJlc29sdmUoZXZlbnQpO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoIXRoaXMuX3NvY2tldCkge1x0Ly8gbm8gdGltZW91dHMgaWYgZGVidWdnaW5nIHRoZSB0ZXN0c1xuXHRcdFx0XHR0aW1lb3V0SGFuZGxlciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHJlamVjdChuZXcgRXJyb3IoYG5vIGV2ZW50ICcke2V2ZW50VHlwZX0nIHJlY2VpdmVkIGFmdGVyICR7dGltZW91dH0gbXNgKSk7XG5cdFx0XHRcdH0sIHRpbWVvdXQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Lypcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgaWYgYW4gJ2luaXRpYWxpemVkJyBldmVudCB3YXMgcmVjZWl2ZWQgd2l0aGluIHNvbWUgc3BlY2lmaWVkIHRpbWVcblx0ICogYW5kIGEgc3Vic2VxdWVudCAnY29uZmlndXJhdGlvbkRvbmUnIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseSBleGVjdXRlZC5cblx0ICogVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiBhIHRpbWVvdXQgb2NjdXJzIG9yIGlmIHRoZSAnY29uZmlndXJhdGlvbkRvbmUnIHJlcXVlc3QgZmFpbHMuXG5cdCAqL1xuXHRwdWJsaWMgY29uZmlndXJhdGlvblNlcXVlbmNlKCk6IFByb21pc2U8YW55PiB7XG5cblx0XHRyZXR1cm4gdGhpcy53YWl0Rm9yRXZlbnQoJ2luaXRpYWxpemVkJykudGhlbihldmVudCA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uRG9uZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGlmIGEgJ2luaXRpYWxpemUnIGFuZCBhICdsYXVuY2gnIHJlcXVlc3Qgd2VyZSBzdWNjZXNzZnVsLlxuXHQgKi9cblx0cHVibGljIGxhdW5jaChsYXVuY2hBcmdzOiBhbnkpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuTGF1bmNoUmVzcG9uc2U+IHtcblxuXHRcdHJldHVybiB0aGlzLmluaXRpYWxpemVSZXF1ZXN0KCkudGhlbihyZXNwb25zZSA9PiB7XG5cdFx0XHRpZiAocmVzcG9uc2UuYm9keSAmJiByZXNwb25zZS5ib2R5LnN1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0KSB7XG5cdFx0XHRcdHRoaXMuX3N1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmxhdW5jaFJlcXVlc3QobGF1bmNoQXJncyk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNvbmZpZ3VyYXRpb25Eb25lKCkgOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuUmVzcG9uc2U+IHtcblx0XHRpZiAodGhpcy5fc3VwcG9ydHNDb25maWd1cmF0aW9uRG9uZVJlcXVlc3QpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpZiBkZWJ1ZyBhZGFwdGVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0IHdlIGhhdmUgdG8gc2VuZCB0aGUgc2V0RXhjZXB0aW9uQnJlYWtwb2ludHNSZXF1ZXN0LlxuXHRcdFx0cmV0dXJuIHRoaXMuc2V0RXhjZXB0aW9uQnJlYWtwb2ludHNSZXF1ZXN0KHsgZmlsdGVyczogWyAnYWxsJyBdIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGlmIGEgJ3N0b3BwZWQnIGV2ZW50IHdhcyByZWNlaXZlZCB3aXRoaW4gc29tZSBzcGVjaWZpZWQgdGltZVxuXHQgKiBhbmQgdGhlIGV2ZW50J3MgcmVhc29uIGFuZCBsaW5lIG51bWJlciB3YXMgYXNzZXJ0ZWQuXG5cdCAqIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgYSB0aW1lb3V0IG9jY3VycywgdGhlIGFzc2VydGlvbnMgZmFpbCwgb3IgaWYgdGhlICdzdGFja1RyYWNlJyByZXF1ZXN0IGZhaWxzLlxuXHQgKi9cblx0cHVibGljIGFzc2VydFN0b3BwZWRMb2NhdGlvbihyZWFzb246IHN0cmluZywgZXhwZWN0ZWQ6IHsgcGF0aD86IHN0cmluZyB8IFJlZ0V4cCwgbGluZT86IG51bWJlciwgY29sdW1uPzogbnVtYmVyIH0gKSA6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGFja1RyYWNlUmVzcG9uc2U+IHtcblxuXHRcdHJldHVybiB0aGlzLndhaXRGb3JFdmVudCgnc3RvcHBlZCcpLnRoZW4oZXZlbnQgPT4ge1xuXHRcdFx0YXNzZXJ0LmVxdWFsKGV2ZW50LmJvZHkucmVhc29uLCByZWFzb24pO1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RhY2tUcmFjZVJlcXVlc3Qoe1xuXHRcdFx0XHR0aHJlYWRJZDogZXZlbnQuYm9keS50aHJlYWRJZFxuXHRcdFx0fSk7XG5cdFx0fSkudGhlbihyZXNwb25zZSA9PiB7XG5cdFx0XHRjb25zdCBmcmFtZSA9IHJlc3BvbnNlLmJvZHkuc3RhY2tGcmFtZXNbMF07XG5cdFx0XHRpZiAodHlwZW9mIGV4cGVjdGVkLnBhdGggPT09ICdzdHJpbmcnIHx8IGV4cGVjdGVkLnBhdGggaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdFx0dGhpcy5hc3NlcnRQYXRoKGZyYW1lLnNvdXJjZS5wYXRoLCBleHBlY3RlZC5wYXRoLCAnc3RvcHBlZCBsb2NhdGlvbjogcGF0aCBtaXNtYXRjaCcpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBleHBlY3RlZC5saW5lID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRhc3NlcnQuZXF1YWwoZnJhbWUubGluZSwgZXhwZWN0ZWQubGluZSwgJ3N0b3BwZWQgbG9jYXRpb246IGxpbmUgbWlzbWF0Y2gnKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgZXhwZWN0ZWQuY29sdW1uID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRhc3NlcnQuZXF1YWwoZnJhbWUuY29sdW1uLCBleHBlY3RlZC5jb2x1bW4sICdzdG9wcGVkIGxvY2F0aW9uOiBjb2x1bW4gbWlzbWF0Y2gnKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXNwb25zZTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYXNzZXJ0UGFydGlhbExvY2F0aW9uc0VxdWFsKGxvY0E6IElQYXJ0aWFsTG9jYXRpb24sIGxvY0I6IElQYXJ0aWFsTG9jYXRpb24pOiB2b2lkIHtcblx0XHRpZiAobG9jQS5wYXRoKSB7XG5cdFx0XHR0aGlzLmFzc2VydFBhdGgobG9jQS5wYXRoLCBsb2NCLnBhdGgsICdicmVha3BvaW50IHZlcmlmaWNhdGlvbiBtaXNtYXRjaDogcGF0aCcpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGxvY0EubGluZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdGFzc2VydC5lcXVhbChsb2NBLmxpbmUsIGxvY0IubGluZSwgJ2JyZWFrcG9pbnQgdmVyaWZpY2F0aW9uIG1pc21hdGNoOiBsaW5lJyk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgbG9jQi5jb2x1bW4gPT09ICdudW1iZXInICYmIHR5cGVvZiBsb2NBLmNvbHVtbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdGFzc2VydC5lcXVhbChsb2NBLmNvbHVtbiwgbG9jQi5jb2x1bW4sICdicmVha3BvaW50IHZlcmlmaWNhdGlvbiBtaXNtYXRjaDogY29sdW1uJyk7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgaWYgZW5vdWdoIG91dHB1dCBldmVudHMgd2l0aCB0aGUgZ2l2ZW4gY2F0ZWdvcnkgaGF2ZSBiZWVuIHJlY2VpdmVkXG5cdCAqIGFuZCB0aGUgY29uY2F0ZW5hdGVkIGRhdGEgbWF0Y2ggdGhlIGV4cGVjdGVkIGRhdGEuXG5cdCAqIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgYXMgc29vbiBhcyB0aGUgcmVjZWl2ZWQgZGF0YSBjYW5ub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGRhdGEgb3IgaWYgYSB0aW1lb3V0IG9jY3Vycy5cblx0ICovXG5cdHB1YmxpYyBhc3NlcnRPdXRwdXQoY2F0ZWdvcnk6IHN0cmluZywgZXhwZWN0ZWQ6IHN0cmluZywgdGltZW91dD86IG51bWJlcik6IFByb21pc2U8RGVidWdQcm90b2NvbC5FdmVudD4ge1xuXG5cdFx0dGltZW91dCA9IHRpbWVvdXQgfHwgdGhpcy5kZWZhdWx0VGltZW91dDtcblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRsZXQgb3V0cHV0ID0gJyc7XG5cdFx0XHRsZXQgdGltZW91dEhhbmRsZXI6IGFueTtcblx0XHRcdHRoaXMub24oJ291dHB1dCcsIGV2ZW50ID0+IHtcblx0XHRcdFx0Y29uc3QgZSA9IDxEZWJ1Z1Byb3RvY29sLk91dHB1dEV2ZW50PiBldmVudDtcblx0XHRcdFx0aWYgKGUuYm9keS5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkpIHtcblx0XHRcdFx0XHRvdXRwdXQgKz0gZS5ib2R5Lm91dHB1dDtcblx0XHRcdFx0XHRpZiAob3V0cHV0LmluZGV4T2YoZXhwZWN0ZWQpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZXIpO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShldmVudCk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChleHBlY3RlZC5pbmRleE9mKG91dHB1dCkgIT09IDApIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNhbml0aXplID0gKHM6IHN0cmluZykgPT4gcy50b1N0cmluZygpLnJlcGxhY2UoL1xcci9tZywgJ1xcXFxyJykucmVwbGFjZSgvXFxuL21nLCAnXFxcXG4nKTtcblx0XHRcdFx0XHRcdHJlamVjdChuZXcgRXJyb3IoYHJlY2VpdmVkIGRhdGEgJyR7c2FuaXRpemUob3V0cHV0KX0nIGlzIG5vdCBhIHByZWZpeCBvZiB0aGUgZXhwZWN0ZWQgZGF0YSAnJHtzYW5pdGl6ZShleHBlY3RlZCl9J2ApKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKCF0aGlzLl9zb2NrZXQpIHtcdC8vIG5vIHRpbWVvdXRzIGlmIGRlYnVnZ2luZyB0aGUgdGVzdHNcblx0XHRcdFx0dGltZW91dEhhbmRsZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKGBub3QgZW5vdWdoIG91dHB1dCBkYXRhIHJlY2VpdmVkIGFmdGVyICR7dGltZW91dH0gbXNgKSk7XG5cdFx0XHRcdH0sIHRpbWVvdXQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGFzc2VydFBhdGgocGF0aDogc3RyaW5nLCBleHBlY3RlZDogc3RyaW5nIHwgUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKSB7XG5cblx0XHRpZiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdGFzc2VydC5vaygoPFJlZ0V4cD5leHBlY3RlZCkudGVzdChwYXRoKSwgbWVzc2FnZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChEZWJ1Z0NsaWVudC5DQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdHBhdGggPSBwYXRoLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRleHBlY3RlZCA9ICg8c3RyaW5nPmV4cGVjdGVkKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRhc3NlcnQuZXF1YWwocGF0aCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdC8vIC0tLS0gc2NlbmFyaW9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBpZiBhIGNvbmZpZ3VyYWJsZSBicmVha3BvaW50IGhhcyBiZWVuIGhpdCB3aXRoaW4gc29tZSB0aW1lXG5cdCAqIGFuZCB0aGUgZXZlbnQncyByZWFzb24gYW5kIGxpbmUgbnVtYmVyIHdhcyBhc3NlcnRlZC5cblx0ICogVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiBhIHRpbWVvdXQgb2NjdXJzLCB0aGUgYXNzZXJ0aW9ucyBmYWlsLCBvciBpZiB0aGUgcmVxdWVzdHMgZmFpbHMuXG5cdCAqL1xuXHRwdWJsaWMgaGl0QnJlYWtwb2ludChsYXVuY2hBcmdzOiBhbnksIGxvY2F0aW9uOiBJTG9jYXRpb24sIGV4cGVjdGVkU3RvcExvY2F0aW9uPzogSVBhcnRpYWxMb2NhdGlvbiwgZXhwZWN0ZWRCUExvY2F0aW9uPzogSVBhcnRpYWxMb2NhdGlvbikgOiBQcm9taXNlPGFueT4ge1xuXG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKFtcblxuXHRcdFx0dGhpcy53YWl0Rm9yRXZlbnQoJ2luaXRpYWxpemVkJykudGhlbihldmVudCA9PiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnNldEJyZWFrcG9pbnRzUmVxdWVzdCh7XG5cdFx0XHRcdFx0bGluZXM6IFsgbG9jYXRpb24ubGluZSBdLFxuXHRcdFx0XHRcdGJyZWFrcG9pbnRzOiBbIHsgbGluZTogbG9jYXRpb24ubGluZSwgY29sdW1uOiBsb2NhdGlvbi5jb2x1bW4gfSBdLFxuXHRcdFx0XHRcdHNvdXJjZTogeyBwYXRoOiBsb2NhdGlvbi5wYXRoIH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KS50aGVuKHJlc3BvbnNlID0+IHtcblxuXHRcdFx0XHRjb25zdCBicCA9IHJlc3BvbnNlLmJvZHkuYnJlYWtwb2ludHNbMF07XG5cblx0XHRcdFx0Y29uc3QgdmVyaWZpZWQgPSAodHlwZW9mIGxvY2F0aW9uLnZlcmlmaWVkID09PSAnYm9vbGVhbicpID8gbG9jYXRpb24udmVyaWZpZWQgOiB0cnVlO1xuXHRcdFx0XHRhc3NlcnQuZXF1YWwoYnAudmVyaWZpZWQsIHZlcmlmaWVkLCAnYnJlYWtwb2ludCB2ZXJpZmljYXRpb24gbWlzbWF0Y2g6IHZlcmlmaWVkJyk7XG5cblx0XHRcdFx0Y29uc3QgYWN0dWFsTG9jYXRpb246IElMb2NhdGlvbiA9IHtcblx0XHRcdFx0XHRjb2x1bW46IGJwLmNvbHVtbixcblx0XHRcdFx0XHRsaW5lOiBicC5saW5lLFxuXHRcdFx0XHRcdHBhdGg6IGJwLnNvdXJjZSAmJiBicC5zb3VyY2UucGF0aFxuXHRcdFx0XHR9O1xuXHRcdFx0XHR0aGlzLmFzc2VydFBhcnRpYWxMb2NhdGlvbnNFcXVhbChhY3R1YWxMb2NhdGlvbiwgZXhwZWN0ZWRCUExvY2F0aW9uIHx8IGxvY2F0aW9uKTtcblxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uRG9uZSgpO1xuXHRcdFx0fSksXG5cblx0XHRcdHRoaXMubGF1bmNoKGxhdW5jaEFyZ3MpLFxuXG5cdFx0XHR0aGlzLmFzc2VydFN0b3BwZWRMb2NhdGlvbignYnJlYWtwb2ludCcsIGV4cGVjdGVkU3RvcExvY2F0aW9uIHx8IGxvY2F0aW9uKVxuXG5cdFx0XSk7XG5cdH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVidWdDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOzs7QUFFaEcseUJBQTBCO0FBQzFCLHVDQUF3QztBQUN4QyxvQ0FBcUM7QUFDckMsaUNBQWtDO0FBQ2xDLDJCQUE0QjtBQUU1QixxREFBZ0Q7QUFnQmhELE1BQWEsV0FBWSxTQUFRLCtCQUFjO0lBZ0I5Qzs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxZQUFZLG1CQUEyQixFQUFFLHNCQUE4QixFQUFFLFNBQWlCLEVBQUUsWUFBOEIsRUFBRSxZQUFzQjtRQUNqSixLQUFLLEVBQUUsQ0FBQztRQW5CRixtQkFBYyxHQUFHLElBQUksQ0FBQztRQW9CNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLHNCQUFzQixDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxLQUFLLENBQUM7UUFFL0MsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEtBQUssU0FBUyxFQUFFO1lBQzFELElBQUk7Z0JBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUQsV0FBVyxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQzthQUMvQztZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNiLFdBQVcsQ0FB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Z0JBRWpGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFFdkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxvQkFBb0IsSUFBSSxRQUFRLENBQUM7U0FFMUUsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNEO0FBamNELGtDQWljQyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5pbXBvcnQgZnMgPSByZXF1aXJlKCdmcycpO1xuaW1wb3J0IGNvbnN0YW50cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuaW1wb3J0IGNwID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuaW1wb3J0IG5ldCA9IHJlcXVpcmUoJ25ldCcpO1xuaW1wb3J0IHtEZWJ1Z1Byb3RvY29sfSBmcm9tICd2c2NvZGUtZGVidWdwcm90b2NvbCc7XG5pbXBvcnQge1Byb3RvY29sQ2xpZW50fSBmcm9tICcuL3Byb3RvY29sQ2xpZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJTG9jYXRpb24ge1xuXHRwYXRoOiBzdHJpbmc7XG5cdGxpbmU6IG51bWJlcjtcblx0Y29sdW1uPzogbnVtYmVyO1xuXHR2ZXJpZmllZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhcnRpYWxMb2NhdGlvbiB7XG5cdHBhdGg/OiBzdHJpbmc7XG5cdGxpbmU/OiBudW1iZXI7XG5cdGNvbHVtbj86IG51bWJlcjtcblx0dmVyaWZpZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRGVidWdDbGllbnQgZXh0ZW5kcyBQcm90b2NvbENsaWVudCB7XG5cblx0cHJpdmF0ZSBzdGF0aWMgQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNIDogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9ydW50aW1lOiBzdHJpbmc7XG5cdHByaXZhdGUgX2V4ZWN1dGFibGU6IHN0cmluZztcblx0cHJpdmF0ZSBfYWRhcHRlclByb2Nlc3M6IGNwLkNoaWxkUHJvY2Vzcztcblx0cHJpdmF0ZSBfc3Bhd25PcHRpb25zOiBjcC5TcGF3bk9wdGlvbnM7XG5cdHByaXZhdGUgX2VuYWJsZVN0ZGVycjogYm9vbGVhbjtcblx0cHJpdmF0ZSBfZGVidWdUeXBlOiBzdHJpbmc7XG5cdHByaXZhdGUgX3NvY2tldDogbmV0LlNvY2tldDtcblxuXHRwcml2YXRlIF9zdXBwb3J0c0NvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdDogYm9vbGVhbjtcblxuXHRwdWJsaWMgZGVmYXVsdFRpbWVvdXQgPSA1MDAwO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgRGVidWdDbGllbnQgb2JqZWN0IHRoYXQgcHJvdmlkZXMgYSBwcm9taXNlLWJhc2VkIEFQSSB0byB3cml0ZVxuXHQgKiBkZWJ1ZyBhZGFwdGVyIHRlc3RzLlxuXHQgKiBBIHNpbXBsZSBtb2NoYSBleGFtcGxlIGZvciBzZXR0aW5nIGFuZCBoaXR0aW5nIGEgYnJlYWtwb2ludCBpbiBsaW5lIDE1IG9mIGEgcHJvZ3JhbSAndGVzdC5qcycgbG9va3MgbGlrZSB0aGlzOlxuXHQgKlxuXHQgKiB2YXIgZGM7XG5cdCAqIHNldHVwKCAoKSA9PiB7XG5cdCAqICAgICBkYyA9IG5ldyBEZWJ1Z0NsaWVudCgnbm9kZScsICcuL291dC9ub2RlL25vZGVEZWJ1Zy5qcycsICdub2RlJyk7XG5cdCAqICAgICByZXR1cm4gZGMuc3RhcnQoKTtcblx0ICogfSk7XG5cdCAqIHRlYXJkb3duKCAoKSA9PiBkYy5zdG9wKCkgKTtcblx0ICpcblx0ICogdGVzdCgnc2hvdWxkIHN0b3Agb24gYSBicmVha3BvaW50JywgKCkgPT4ge1xuXHQgKiAgICAgcmV0dXJuIGRjLmhpdEJyZWFrcG9pbnQoeyBwcm9ncmFtOiAndGVzdC5qcycgfSwgJ3Rlc3QuanMnLCAxNSk7XG5cdCAqIH0pO1xuXHQgKi9cblx0Y29uc3RydWN0b3IoZGVidWdBZGFwdGVyUnVudGltZTogc3RyaW5nLCBkZWJ1Z0FkYXB0ZXJFeGVjdXRhYmxlOiBzdHJpbmcsIGRlYnVnVHlwZTogc3RyaW5nLCBzcGF3bk9wdGlvbnM/OiBjcC5TcGF3bk9wdGlvbnMsIGVuYWJsZVN0ZGVycj86IGJvb2xlYW4pIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX3J1bnRpbWUgPSBkZWJ1Z0FkYXB0ZXJSdW50aW1lO1xuXHRcdHRoaXMuX2V4ZWN1dGFibGUgPSBkZWJ1Z0FkYXB0ZXJFeGVjdXRhYmxlO1xuXHRcdHRoaXMuX3NwYXduT3B0aW9ucyA9IHNwYXduT3B0aW9ucztcblx0XHR0aGlzLl9lbmFibGVTdGRlcnIgPSBlbmFibGVTdGRlcnI7XG5cdFx0dGhpcy5fZGVidWdUeXBlID0gZGVidWdUeXBlO1xuXHRcdHRoaXMuX3N1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0ID0gZmFsc2U7XG5cblx0XHRpZiAoRGVidWdDbGllbnQuQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGZzLmFjY2Vzc1N5bmMocHJvY2Vzcy5leGVjUGF0aC50b0xvd2VyQ2FzZSgpLCBjb25zdGFudHMuRl9PSyk7XG5cdFx0XHRcdGZzLmFjY2Vzc1N5bmMocHJvY2Vzcy5leGVjUGF0aC50b1VwcGVyQ2FzZSgpLCBjb25zdGFudHMuRl9PSyk7XG5cdFx0XHRcdERlYnVnQ2xpZW50LkNBU0VfSU5TRU5TSVRJVkVfRklMRVNZU1RFTSA9IHRydWU7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0RGVidWdDbGllbnQuQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gLS0tLSBsaWZlIGN5Y2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0LyoqXG5cdCAqIFN0YXJ0cyBhIG5ldyBkZWJ1ZyBhZGFwdGVyIGFuZCBzZXRzIHVwIGNvbW11bmljYXRpb24gdmlhIHN0ZGluL3N0ZG91dC5cblx0ICogSWYgYSBwb3J0IG51bWJlciBpcyBzcGVjaWZpZWQgdGhlIGFkYXB0ZXIgaXMgbm90IGxhdW5jaGVkIGJ1dCBhIGNvbm5lY3Rpb24gdG9cblx0ICogYSBkZWJ1ZyBhZGFwdGVyIHJ1bm5pbmcgaW4gc2VydmVyIG1vZGUgaXMgZXN0YWJsaXNoZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmdcblx0ICogdGhlIGFkYXB0ZXIgd2hpbGUgcnVubmluZyB0ZXN0cy4gRm9yIHRoaXMgcmVhc29uIGFsbCB0aW1lb3V0cyBhcmUgZGlzYWJsZWQgaW4gc2VydmVyIG1vZGUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhcnQocG9ydD86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgcG9ydCA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0dGhpcy5fc29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24ocG9ydCwgJzEyNy4wLjAuMScsICgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNvbm5lY3QodGhpcy5fc29ja2V0LCB0aGlzLl9zb2NrZXQpO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2VzcyA9IGNwLnNwYXduKHRoaXMuX3J1bnRpbWUsIFsgdGhpcy5fZXhlY3V0YWJsZSBdLCB0aGlzLl9zcGF3bk9wdGlvbnMpO1xuXHRcdFx0XHRjb25zdCBzYW5pdGl6ZSA9IChzOiBzdHJpbmcpID0+IHMudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHI/XFxuJC9tZywgJycpO1xuXHRcdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2Vzcy5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuX2VuYWJsZVN0ZGVycikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2FuaXRpemUoZGF0YSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0dGhpcy5fYWRhcHRlclByb2Nlc3Mub24oJ2Vycm9yJywgKGVycikgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XG5cdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2Vzcy5vbignZXhpdCcsIChjb2RlOiBudW1iZXIsIHNpZ25hbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGNvZGUpIHtcblx0XHRcdFx0XHRcdC8vIGRvbmUobmV3IEVycm9yKCdkZWJ1ZyBhZGFwdGVyIGV4aXQgY29kZTogJyArIGNvZGUpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHRoaXMuY29ubmVjdCh0aGlzLl9hZGFwdGVyUHJvY2Vzcy5zdGRvdXQsIHRoaXMuX2FkYXB0ZXJQcm9jZXNzLnN0ZGluKTtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNodXRkb3duIHRoZSBkZWJ1Z2dlZSBhbmQgdGhlIGRlYnVnIGFkYXB0ZXIgKG9yIGRpc2Nvbm5lY3QgaWYgaW4gc2VydmVyIG1vZGUpLlxuXHQgKi9cblx0cHVibGljIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG5cblx0XHRyZXR1cm4gdGhpcy5kaXNjb25uZWN0UmVxdWVzdCgpLnRoZW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5zdG9wQWRhcHRlcigpO1xuXHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdHRoaXMuc3RvcEFkYXB0ZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc3RvcEFkYXB0ZXIoKSB7XG5cdFx0aWYgKHRoaXMuX2FkYXB0ZXJQcm9jZXNzKSB7XG5cdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2Vzcy5raWxsKCk7XG5cdFx0XHR0aGlzLl9hZGFwdGVyUHJvY2VzcyA9IG51bGw7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9zb2NrZXQpIHtcblx0XHRcdHRoaXMuX3NvY2tldC5lbmQoKTtcblx0XHRcdHRoaXMuX3NvY2tldCA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0Ly8gLS0tLSBwcm90b2NvbCByZXF1ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHVibGljIGluaXRpYWxpemVSZXF1ZXN0KGFyZ3M/OiBEZWJ1Z1Byb3RvY29sLkluaXRpYWxpemVSZXF1ZXN0QXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkluaXRpYWxpemVSZXNwb25zZT4ge1xuXHRcdGlmICghYXJncykge1xuXHRcdFx0YXJncyA9IHtcblx0XHRcdFx0YWRhcHRlcklEOiB0aGlzLl9kZWJ1Z1R5cGUsXG5cdFx0XHRcdGxpbmVzU3RhcnRBdDE6IHRydWUsXG5cdFx0XHRcdGNvbHVtbnNTdGFydEF0MTogdHJ1ZSxcblx0XHRcdFx0cGF0aEZvcm1hdDogJ3BhdGgnXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdpbml0aWFsaXplJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgY29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0KGFyZ3M/OiBEZWJ1Z1Byb3RvY29sLkNvbmZpZ3VyYXRpb25Eb25lQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkNvbmZpZ3VyYXRpb25Eb25lUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdjb25maWd1cmF0aW9uRG9uZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIGxhdW5jaFJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5MYXVuY2hSZXF1ZXN0QXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkxhdW5jaFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnbGF1bmNoJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgYXR0YWNoUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkF0dGFjaFJlcXVlc3RBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuQXR0YWNoUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdhdHRhY2gnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyByZXN0YXJ0UmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlJlc3RhcnRBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuUmVzdGFydFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgncmVzdGFydCcsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHRlcm1pbmF0ZVJlcXVlc3QoYXJncz86IERlYnVnUHJvdG9jb2wuVGVybWluYXRlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlRlcm1pbmF0ZVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgndGVybWluYXRlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgZGlzY29ubmVjdFJlcXVlc3QoYXJncz86IERlYnVnUHJvdG9jb2wuRGlzY29ubmVjdEFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5EaXNjb25uZWN0UmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdkaXNjb25uZWN0JywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QnJlYWtwb2ludHNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU2V0QnJlYWtwb2ludHNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuU2V0QnJlYWtwb2ludHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3NldEJyZWFrcG9pbnRzJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0RnVuY3Rpb25CcmVha3BvaW50c1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TZXRGdW5jdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNldEZ1bmN0aW9uQnJlYWtwb2ludHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRFeGNlcHRpb25CcmVha3BvaW50c1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TZXRFeGNlcHRpb25CcmVha3BvaW50c0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TZXRFeGNlcHRpb25CcmVha3BvaW50c1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBkYXRhQnJlYWtwb2ludEluZm9SZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuRGF0YUJyZWFrcG9pbnRJbmZvQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkRhdGFCcmVha3BvaW50SW5mb1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnZGF0YUJyZWFrcG9pbnRJbmZvJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0RGF0YUJyZWFrcG9pbnRzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlNldERhdGFCcmVha3BvaW50c0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TZXREYXRhQnJlYWtwb2ludHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3NldERhdGFCcmVha3BvaW50cycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIGNvbnRpbnVlUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkNvbnRpbnVlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkNvbnRpbnVlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdjb250aW51ZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIG5leHRSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuTmV4dEFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5OZXh0UmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCduZXh0JywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc3RlcEluUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlN0ZXBJbkFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGVwSW5SZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3N0ZXBJbicsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHN0ZXBPdXRSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU3RlcE91dEFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGVwT3V0UmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzdGVwT3V0JywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc3RlcEJhY2tSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU3RlcEJhY2tBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuU3RlcEJhY2tSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3N0ZXBCYWNrJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgcmV2ZXJzZUNvbnRpbnVlUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlJldmVyc2VDb250aW51ZUFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5SZXZlcnNlQ29udGludWVSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3JldmVyc2VDb250aW51ZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHJlc3RhcnRGcmFtZVJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5SZXN0YXJ0RnJhbWVBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuUmVzdGFydEZyYW1lUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdyZXN0YXJ0RnJhbWUnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBnb3RvUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkdvdG9Bcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuR290b1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnZ290bycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHBhdXNlUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlBhdXNlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlBhdXNlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdwYXVzZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHN0YWNrVHJhY2VSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU3RhY2tUcmFjZUFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGFja1RyYWNlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzdGFja1RyYWNlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgc2NvcGVzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLlNjb3Blc0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TY29wZXNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3Njb3BlcycsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHZhcmlhYmxlc1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5WYXJpYWJsZXNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuVmFyaWFibGVzUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCd2YXJpYWJsZXMnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRWYXJpYWJsZVJlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5TZXRWYXJpYWJsZUFyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TZXRWYXJpYWJsZVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc2V0VmFyaWFibGUnLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBzb3VyY2VSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU291cmNlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlNvdXJjZVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnc291cmNlJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgdGhyZWFkc1JlcXVlc3QoKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlRocmVhZHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ3RocmVhZHMnKTtcblx0fVxuXG5cdHB1YmxpYyBtb2R1bGVzUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLk1vZHVsZXNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuTW9kdWxlc1Jlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuc2VuZCgnbW9kdWxlcycpO1xuXHR9XG5cblx0cHVibGljIGV2YWx1YXRlUmVxdWVzdChhcmdzOiBEZWJ1Z1Byb3RvY29sLkV2YWx1YXRlQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkV2YWx1YXRlUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdldmFsdWF0ZScsIGFyZ3MpO1xuXHR9XG5cblx0cHVibGljIHN0ZXBJblRhcmdldHNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuU3RlcEluVGFyZ2V0c0FyZ3VtZW50cyk6IFByb21pc2U8RGVidWdQcm90b2NvbC5TdGVwSW5UYXJnZXRzUmVzcG9uc2U+IHtcblx0XHRyZXR1cm4gdGhpcy5zZW5kKCdzdGVwSW5UYXJnZXRzJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgZ290b1RhcmdldHNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuR290b1RhcmdldHNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuR290b1RhcmdldHNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2dvdG9UYXJnZXRzJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgY29tcGxldGlvbnNSZXF1ZXN0KGFyZ3M6IERlYnVnUHJvdG9jb2wuQ29tcGxldGlvbnNBcmd1bWVudHMpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuQ29tcGxldGlvbnNSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2NvbXBsZXRpb25zJywgYXJncyk7XG5cdH1cblxuXHRwdWJsaWMgZXhjZXB0aW9uSW5mb1JlcXVlc3QoYXJnczogRGVidWdQcm90b2NvbC5FeGNlcHRpb25JbmZvQXJndW1lbnRzKTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkV4Y2VwdGlvbkluZm9SZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoJ2V4Y2VwdGlvbkluZm8nLCBhcmdzKTtcblx0fVxuXG5cdHB1YmxpYyBjdXN0b21SZXF1ZXN0KGNvbW1hbmQ6IHN0cmluZywgYXJncz86IGFueSk6IFByb21pc2U8RGVidWdQcm90b2NvbC5SZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLnNlbmQoY29tbWFuZCwgYXJncyk7XG5cdH1cblxuXHQvLyAtLS0tIGNvbnZlbmllbmNlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQvKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBpZiBhbiBldmVudCB3aXRoIGEgc3BlY2lmaWMgdHlwZSB3YXMgcmVjZWl2ZWQgd2l0aGluIHNvbWUgc3BlY2lmaWVkIHRpbWUuXG5cdCAqIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgYSB0aW1lb3V0IG9jY3Vycy5cblx0ICovXG5cdHB1YmxpYyB3YWl0Rm9yRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuRXZlbnQ+IHtcblxuXHRcdHRpbWVvdXQgPSB0aW1lb3V0IHx8IHRoaXMuZGVmYXVsdFRpbWVvdXQ7XG5cdFx0bGV0IHRpbWVvdXRIYW5kbGVyOiBhbnk7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5vbmNlKGV2ZW50VHlwZSwgZXZlbnQgPT4ge1xuXHRcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZXIpO1xuXHRcdFx0XHRyZXNvbHZlKGV2ZW50KTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCF0aGlzLl9zb2NrZXQpIHtcdC8vIG5vIHRpbWVvdXRzIGlmIGRlYnVnZ2luZyB0aGUgdGVzdHNcblx0XHRcdFx0dGltZW91dEhhbmRsZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKGBubyBldmVudCAnJHtldmVudFR5cGV9JyByZWNlaXZlZCBhZnRlciAke3RpbWVvdXR9IG1zYCkpO1xuXHRcdFx0XHR9LCB0aW1lb3V0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGlmIGFuICdpbml0aWFsaXplZCcgZXZlbnQgd2FzIHJlY2VpdmVkIHdpdGhpbiBzb21lIHNwZWNpZmllZCB0aW1lXG5cdCAqIGFuZCBhIHN1YnNlcXVlbnQgJ2NvbmZpZ3VyYXRpb25Eb25lJyByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQuXG5cdCAqIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgYSB0aW1lb3V0IG9jY3VycyBvciBpZiB0aGUgJ2NvbmZpZ3VyYXRpb25Eb25lJyByZXF1ZXN0IGZhaWxzLlxuXHQgKi9cblx0cHVibGljIGNvbmZpZ3VyYXRpb25TZXF1ZW5jZSgpOiBQcm9taXNlPGFueT4ge1xuXG5cdFx0cmV0dXJuIHRoaXMud2FpdEZvckV2ZW50KCdpbml0aWFsaXplZCcpLnRoZW4oZXZlbnQgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkRvbmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBpZiBhICdpbml0aWFsaXplJyBhbmQgYSAnbGF1bmNoJyByZXF1ZXN0IHdlcmUgc3VjY2Vzc2Z1bC5cblx0ICovXG5cdHB1YmxpYyBsYXVuY2gobGF1bmNoQXJnczogYW55KTogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLkxhdW5jaFJlc3BvbnNlPiB7XG5cblx0XHRyZXR1cm4gdGhpcy5pbml0aWFsaXplUmVxdWVzdCgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuXHRcdFx0aWYgKHJlc3BvbnNlLmJvZHkgJiYgcmVzcG9uc2UuYm9keS5zdXBwb3J0c0NvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCkge1xuXHRcdFx0XHR0aGlzLl9zdXBwb3J0c0NvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy5sYXVuY2hSZXF1ZXN0KGxhdW5jaEFyZ3MpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb25maWd1cmF0aW9uRG9uZSgpIDogUHJvbWlzZTxEZWJ1Z1Byb3RvY29sLlJlc3BvbnNlPiB7XG5cdFx0aWYgKHRoaXMuX3N1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uRG9uZVJlcXVlc3QoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaWYgZGVidWcgYWRhcHRlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGNvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCB3ZSBoYXZlIHRvIHNlbmQgdGhlIHNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVxdWVzdC5cblx0XHRcdHJldHVybiB0aGlzLnNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVxdWVzdCh7IGZpbHRlcnM6IFsgJ2FsbCcgXSB9KTtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBpZiBhICdzdG9wcGVkJyBldmVudCB3YXMgcmVjZWl2ZWQgd2l0aGluIHNvbWUgc3BlY2lmaWVkIHRpbWVcblx0ICogYW5kIHRoZSBldmVudCdzIHJlYXNvbiBhbmQgbGluZSBudW1iZXIgd2FzIGFzc2VydGVkLlxuXHQgKiBUaGUgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIGlmIGEgdGltZW91dCBvY2N1cnMsIHRoZSBhc3NlcnRpb25zIGZhaWwsIG9yIGlmIHRoZSAnc3RhY2tUcmFjZScgcmVxdWVzdCBmYWlscy5cblx0ICovXG5cdHB1YmxpYyBhc3NlcnRTdG9wcGVkTG9jYXRpb24ocmVhc29uOiBzdHJpbmcsIGV4cGVjdGVkOiB7IHBhdGg/OiBzdHJpbmcgfCBSZWdFeHAsIGxpbmU/OiBudW1iZXIsIGNvbHVtbj86IG51bWJlciB9ICkgOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuU3RhY2tUcmFjZVJlc3BvbnNlPiB7XG5cblx0XHRyZXR1cm4gdGhpcy53YWl0Rm9yRXZlbnQoJ3N0b3BwZWQnKS50aGVuKGV2ZW50ID0+IHtcblx0XHRcdGFzc2VydC5lcXVhbChldmVudC5ib2R5LnJlYXNvbiwgcmVhc29uKTtcblx0XHRcdHJldHVybiB0aGlzLnN0YWNrVHJhY2VSZXF1ZXN0KHtcblx0XHRcdFx0dGhyZWFkSWQ6IGV2ZW50LmJvZHkudGhyZWFkSWRcblx0XHRcdH0pO1xuXHRcdH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuXHRcdFx0Y29uc3QgZnJhbWUgPSByZXNwb25zZS5ib2R5LnN0YWNrRnJhbWVzWzBdO1xuXHRcdFx0aWYgKHR5cGVvZiBleHBlY3RlZC5wYXRoID09PSAnc3RyaW5nJyB8fCBleHBlY3RlZC5wYXRoIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdFx0XHRcdHRoaXMuYXNzZXJ0UGF0aChmcmFtZS5zb3VyY2UucGF0aCwgZXhwZWN0ZWQucGF0aCwgJ3N0b3BwZWQgbG9jYXRpb246IHBhdGggbWlzbWF0Y2gnKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgZXhwZWN0ZWQubGluZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0YXNzZXJ0LmVxdWFsKGZyYW1lLmxpbmUsIGV4cGVjdGVkLmxpbmUsICdzdG9wcGVkIGxvY2F0aW9uOiBsaW5lIG1pc21hdGNoJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIGV4cGVjdGVkLmNvbHVtbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0YXNzZXJ0LmVxdWFsKGZyYW1lLmNvbHVtbiwgZXhwZWN0ZWQuY29sdW1uLCAnc3RvcHBlZCBsb2NhdGlvbjogY29sdW1uIG1pc21hdGNoJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGFzc2VydFBhcnRpYWxMb2NhdGlvbnNFcXVhbChsb2NBOiBJUGFydGlhbExvY2F0aW9uLCBsb2NCOiBJUGFydGlhbExvY2F0aW9uKTogdm9pZCB7XG5cdFx0aWYgKGxvY0EucGF0aCkge1xuXHRcdFx0dGhpcy5hc3NlcnRQYXRoKGxvY0EucGF0aCwgbG9jQi5wYXRoLCAnYnJlYWtwb2ludCB2ZXJpZmljYXRpb24gbWlzbWF0Y2g6IHBhdGgnKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBsb2NBLmxpbmUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRhc3NlcnQuZXF1YWwobG9jQS5saW5lLCBsb2NCLmxpbmUsICdicmVha3BvaW50IHZlcmlmaWNhdGlvbiBtaXNtYXRjaDogbGluZScpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGxvY0IuY29sdW1uID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgbG9jQS5jb2x1bW4gPT09ICdudW1iZXInKSB7XG5cdFx0XHRhc3NlcnQuZXF1YWwobG9jQS5jb2x1bW4sIGxvY0IuY29sdW1uLCAnYnJlYWtwb2ludCB2ZXJpZmljYXRpb24gbWlzbWF0Y2g6IGNvbHVtbicpO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgd2lsbCByZXNvbHZlIGlmIGVub3VnaCBvdXRwdXQgZXZlbnRzIHdpdGggdGhlIGdpdmVuIGNhdGVnb3J5IGhhdmUgYmVlbiByZWNlaXZlZFxuXHQgKiBhbmQgdGhlIGNvbmNhdGVuYXRlZCBkYXRhIG1hdGNoIHRoZSBleHBlY3RlZCBkYXRhLlxuXHQgKiBUaGUgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIGFzIHNvb24gYXMgdGhlIHJlY2VpdmVkIGRhdGEgY2Fubm90IG1hdGNoIHRoZSBleHBlY3RlZCBkYXRhIG9yIGlmIGEgdGltZW91dCBvY2N1cnMuXG5cdCAqL1xuXHRwdWJsaWMgYXNzZXJ0T3V0cHV0KGNhdGVnb3J5OiBzdHJpbmcsIGV4cGVjdGVkOiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPERlYnVnUHJvdG9jb2wuRXZlbnQ+IHtcblxuXHRcdHRpbWVvdXQgPSB0aW1lb3V0IHx8IHRoaXMuZGVmYXVsdFRpbWVvdXQ7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0bGV0IG91dHB1dCA9ICcnO1xuXHRcdFx0bGV0IHRpbWVvdXRIYW5kbGVyOiBhbnk7XG5cdFx0XHR0aGlzLm9uKCdvdXRwdXQnLCBldmVudCA9PiB7XG5cdFx0XHRcdGNvbnN0IGUgPSA8RGVidWdQcm90b2NvbC5PdXRwdXRFdmVudD4gZXZlbnQ7XG5cdFx0XHRcdGlmIChlLmJvZHkuY2F0ZWdvcnkgPT09IGNhdGVnb3J5KSB7XG5cdFx0XHRcdFx0b3V0cHV0ICs9IGUuYm9keS5vdXRwdXQ7XG5cdFx0XHRcdFx0aWYgKG91dHB1dC5pbmRleE9mKGV4cGVjdGVkKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGVyKTtcblx0XHRcdFx0XHRcdHJlc29sdmUoZXZlbnQpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZXhwZWN0ZWQuaW5kZXhPZihvdXRwdXQpICE9PSAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzYW5pdGl6ZSA9IChzOiBzdHJpbmcpID0+IHMudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHIvbWcsICdcXFxccicpLnJlcGxhY2UoL1xcbi9tZywgJ1xcXFxuJyk7XG5cdFx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKGByZWNlaXZlZCBkYXRhICcke3Nhbml0aXplKG91dHB1dCl9JyBpcyBub3QgYSBwcmVmaXggb2YgdGhlIGV4cGVjdGVkIGRhdGEgJyR7c2FuaXRpemUoZXhwZWN0ZWQpfSdgKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmICghdGhpcy5fc29ja2V0KSB7XHQvLyBubyB0aW1lb3V0cyBpZiBkZWJ1Z2dpbmcgdGhlIHRlc3RzXG5cdFx0XHRcdHRpbWVvdXRIYW5kbGVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihgbm90IGVub3VnaCBvdXRwdXQgZGF0YSByZWNlaXZlZCBhZnRlciAke3RpbWVvdXR9IG1zYCkpO1xuXHRcdFx0XHR9LCB0aW1lb3V0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBhc3NlcnRQYXRoKHBhdGg6IHN0cmluZywgZXhwZWN0ZWQ6IHN0cmluZyB8IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykge1xuXG5cdFx0aWYgKGV4cGVjdGVkIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdFx0XHRhc3NlcnQub2soKDxSZWdFeHA+ZXhwZWN0ZWQpLnRlc3QocGF0aCksIG1lc3NhZ2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoRGVidWdDbGllbnQuQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRwYXRoID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0ZXhwZWN0ZWQgPSAoPHN0cmluZz5leHBlY3RlZCkudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXNzZXJ0LmVxdWFsKHBhdGgsIGV4cGVjdGVkLCBtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvLyAtLS0tIHNjZW5hcmlvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgaWYgYSBjb25maWd1cmFibGUgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQgd2l0aGluIHNvbWUgdGltZVxuXHQgKiBhbmQgdGhlIGV2ZW50J3MgcmVhc29uIGFuZCBsaW5lIG51bWJlciB3YXMgYXNzZXJ0ZWQuXG5cdCAqIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgYSB0aW1lb3V0IG9jY3VycywgdGhlIGFzc2VydGlvbnMgZmFpbCwgb3IgaWYgdGhlIHJlcXVlc3RzIGZhaWxzLlxuXHQgKi9cblx0cHVibGljIGhpdEJyZWFrcG9pbnQobGF1bmNoQXJnczogYW55LCBsb2NhdGlvbjogSUxvY2F0aW9uLCBleHBlY3RlZFN0b3BMb2NhdGlvbj86IElQYXJ0aWFsTG9jYXRpb24sIGV4cGVjdGVkQlBMb2NhdGlvbj86IElQYXJ0aWFsTG9jYXRpb24pIDogUHJvbWlzZTxhbnk+IHtcblxuXHRcdHJldHVybiBQcm9taXNlLmFsbChbXG5cblx0XHRcdHRoaXMud2FpdEZvckV2ZW50KCdpbml0aWFsaXplZCcpLnRoZW4oZXZlbnQgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRCcmVha3BvaW50c1JlcXVlc3Qoe1xuXHRcdFx0XHRcdGxpbmVzOiBbIGxvY2F0aW9uLmxpbmUgXSxcblx0XHRcdFx0XHRicmVha3BvaW50czogWyB7IGxpbmU6IGxvY2F0aW9uLmxpbmUsIGNvbHVtbjogbG9jYXRpb24uY29sdW1uIH0gXSxcblx0XHRcdFx0XHRzb3VyY2U6IHsgcGF0aDogbG9jYXRpb24ucGF0aCB9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSkudGhlbihyZXNwb25zZSA9PiB7XG5cblx0XHRcdFx0Y29uc3QgYnAgPSByZXNwb25zZS5ib2R5LmJyZWFrcG9pbnRzWzBdO1xuXG5cdFx0XHRcdGNvbnN0IHZlcmlmaWVkID0gKHR5cGVvZiBsb2NhdGlvbi52ZXJpZmllZCA9PT0gJ2Jvb2xlYW4nKSA/IGxvY2F0aW9uLnZlcmlmaWVkIDogdHJ1ZTtcblx0XHRcdFx0YXNzZXJ0LmVxdWFsKGJwLnZlcmlmaWVkLCB2ZXJpZmllZCwgJ2JyZWFrcG9pbnQgdmVyaWZpY2F0aW9uIG1pc21hdGNoOiB2ZXJpZmllZCcpO1xuXG5cdFx0XHRcdGNvbnN0IGFjdHVhbExvY2F0aW9uOiBJTG9jYXRpb24gPSB7XG5cdFx0XHRcdFx0Y29sdW1uOiBicC5jb2x1bW4sXG5cdFx0XHRcdFx0bGluZTogYnAubGluZSxcblx0XHRcdFx0XHRwYXRoOiBicC5zb3VyY2UgJiYgYnAuc291cmNlLnBhdGhcblx0XHRcdFx0fTtcblx0XHRcdFx0dGhpcy5hc3NlcnRQYXJ0aWFsTG9jYXRpb25zRXF1YWwoYWN0dWFsTG9jYXRpb24sIGV4cGVjdGVkQlBMb2NhdGlvbiB8fCBsb2NhdGlvbik7XG5cblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkRvbmUoKTtcblx0XHRcdH0pLFxuXG5cdFx0XHR0aGlzLmxhdW5jaChsYXVuY2hBcmdzKSxcblxuXHRcdFx0dGhpcy5hc3NlcnRTdG9wcGVkTG9jYXRpb24oJ2JyZWFrcG9pbnQnLCBleHBlY3RlZFN0b3BMb2NhdGlvbiB8fCBsb2NhdGlvbilcblxuXHRcdF0pO1xuXHR9XG59XG4iXX0= |
{ | ||
"name": "vscode-debugadapter-testsupport", | ||
"description": "Npm module with mocha test support for Visual Studio Code debug adapters", | ||
"version": "1.49.0", | ||
"version": "1.50.0-pre.0", | ||
"author": "Microsoft Corporation", | ||
@@ -9,6 +9,6 @@ "license": "MIT", | ||
"type": "git", | ||
"url": "https://github.com/Microsoft/vscode-debugadapter-node.git" | ||
"url": "https://github.com/microsoft/vscode-debugadapter-node.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/Microsoft/vscode-debugadapter-node/issues" | ||
"url": "https://github.com/microsoft/vscode-debugadapter-node/issues" | ||
}, | ||
@@ -18,7 +18,7 @@ "main": "./lib/main.js", | ||
"dependencies": { | ||
"vscode-debugprotocol": "^1.49.0" | ||
"vscode-debugprotocol": "^1.50.0-pre.0" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "14.x", | ||
"typescript": "4.3.5" | ||
"typescript": "4.4.4" | ||
}, | ||
@@ -25,0 +25,0 @@ "scripts": { |
@@ -47,2 +47,2 @@ # Test Support for VS Code Debug Adapters | ||
[MIT](https://github.com/Microsoft/vscode-languageserver-node/blob/master/License.txt) | ||
[MIT](https://github.com/microsoft/vscode-debugadapter-node/blob/main/License.txt) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
90810
0
2