hook-emitter
Advanced tools
Comparing version 4.1.0 to 4.1.1
@@ -319,3 +319,3 @@ "use strict"; | ||
emit(event, ...args) { | ||
async emit(event, ...args) { | ||
if (!event || typeof event !== 'string') { | ||
@@ -325,3 +325,3 @@ throw new TypeError('Expected event name to be a valid string.'); | ||
return this.compose({ | ||
return await this.compose({ | ||
type: event | ||
@@ -432,2 +432,2 @@ }).apply(this, args); | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwiSG9va0VtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIl9ldmVudHMiLCJNYXAiLCJfbGlua3MiLCJldmVudHMiLCJvbiIsImV2ZW50IiwicHJpb3JpdHkiLCJsaXN0ZW5lciIsIlR5cGVFcnJvciIsInNwbGl0IiwiZXZ0Iiwic2hpZnQiLCJsaXN0ZW5lcnMiLCJnZXQiLCJzZXQiLCJwdXNoIiwib25jZSIsIndyYXBwZXIiLCJvZmYiLCJhcHBseSIsImFyZ3VtZW50cyIsImJpbmQiLCJkZWxldGUiLCJsZW4iLCJsZW5ndGgiLCJpIiwic3BsaWNlIiwiY29tcG9zZSIsInR5cGUiLCJjYWxsYmFjayIsInRyYW5zZm9ybSIsInJlc3VsdCIsInBheWxvYWQiLCJhcmdzIiwiZ2V0TGlzdGVuZXJzIiwiQXJyYXkiLCJpc0FycmF5IiwibGlua2VkTGlzdGVuZXJzIiwibWFwIiwibGluayIsImVtaXR0ZXIiLCJwcmVmaXgiLCJjb25jYXQiLCJzb3J0IiwiYSIsImIiLCJwIiwiY3R4IiwiZGlzcGF0Y2giLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZpcmVkIiwiaW5uZXJSZXN1bHQiLCJuZXh0IiwidGhlbiIsImNhdGNoIiwidW5kZWZpbmVkIiwiZW1pdCIsImhvb2siLCJmbiIsImRhdGEiLCJjaGFpbiIsInVubGluayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBO0FBRUQ7Ozs7O0FBR08sTUFBTUMsV0FBTixDQUFrQjtBQUN4Qjs7Ozs7QUFLQUMsRUFBQUEsV0FBVyxHQUFHO0FBQ2IsU0FBS0MsT0FBTCxHQUFlLElBQUlDLEdBQUosRUFBZjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxFQUFkO0FBQ0E7QUFFRDs7Ozs7O0FB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VSxTQUFKLENBQWMsd0NBQWQsQ0FBTjtBQUNBOztBQUVELFNBQUtOLE1BQUwsQ0FBWWEsSUFBWixDQUFpQjtBQUFFeUIsTUFBQUEsT0FBRjtBQUFXQyxNQUFBQTtBQUFYLEtBQWpCOztBQUVBLFdBQU8sSUFBUDtBQUNBO0FBRUQ7Ozs7Ozs7OztBQU9Bc0IsRUFBQUEsTUFBTSxDQUFDdkIsT0FBRCxFQUFVO0FBQ2YsUUFBSSxFQUFFQSxPQUFPLFlBQVkxQyxXQUFyQixDQUFKLEVBQXVDO0FBQ3RDLFlBQU0sSUFBSVUsU0FBSixDQUFjLHdDQUFkLENBQU47QUFDQTs7QUFFRCxTQUFLLElBQUlpQixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUt2QixNQUFMLENBQVlzQixNQUFoQyxFQUF3Q0MsQ0FBQyxFQUF6QyxFQUE2QztBQUM1QyxVQUFJLEtBQUt2QixNQUFMLENBQVl1QixDQUFaLEVBQWVlLE9BQWYsS0FBMkJBLE9BQS9CLEVBQXdDO0FBQ3ZDLGFBQUt0QyxNQUFMLENBQVl3QixNQUFaLENBQW1CRCxDQUFDLEVBQXBCLEVBQXdCLENBQXhCO0FBQ0E7QUFDRDs7QUFFRCxXQUFPLElBQVA7QUFDQTs7QUFsWXVCOzs7ZUFxWVYzQixXIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoIUVycm9yLnByZXBhcmVTdGFja1RyYWNlKSB7XG5cdHJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlcicpO1xufVxuXG4vKipcbiAqIEVtaXRzIGV2ZW50cyBhbmQgaG9va3MgdG8gc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBIb29rRW1pdHRlciB7XG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGFuIEhvb2tFbWl0dGVyIG9iamVjdC5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX2V2ZW50cyA9IG5ldyBNYXAoKTtcblx0XHR0aGlzLl9saW5rcyA9IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGl0ZXJhdG9yIGZvciByZXR1cm5pbmcgYWxsIGV2ZW50cy5cblx0ICogQHR5cGUge0l0ZXJhdG9yfVxuXHQgKi9cblx0Z2V0IGV2ZW50cygpIHtcblx0XHRyZXR1cm4gdGhpcy5fZXZlbnRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBldmVudCAtIE9uZSBvciBtb3JlIHNwYWNlLXNlcGFyYXRlZCBldmVudCBuYW1lcyB0byBhZGRcblx0ICogdGhlIGxpc3RlbmVyIHRvLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW3ByaW9yaXR5PTBdIC0gVGhlIHByaW9yaXR5IG9mIGxpc3RlbmVyLiBUaGUgaGlnaGVyIHRoZVxuXHQgKiBwcmlvcml0eSwgdGhlIHNvb25lciBpdCB3aWxsIGJlIGV4ZWN1dGVkLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAtIEEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyBlbWl0dGVkLlxuXHQgKiBAcmV0dXJucyB7SG9va0VtaXR0ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRvbihldmVudCwgcHJpb3JpdHkgPSAwLCBsaXN0ZW5lcikge1xuXHRcdGlmICghZXZlbnQgfHwgdHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZXZlbnQgbmFtZSB0byBiZSBhIHZhbGlkIHN0cmluZy4nKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHByaW9yaXR5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsaXN0ZW5lciA9IHByaW9yaXR5O1xuXHRcdFx0cHJpb3JpdHkgPSAwO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcHJpb3JpdHkgIT09ICdudW1iZXInKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwcmlvcml0eSB0byBiZSBhIG51bWJlci4nKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHRcdH1cblxuXHRcdGxldCBldmVudHMgPSBldmVudC5zcGxpdCgvXFxzLyk7XG5cdFx0bGV0IGV2dDtcblxuXHRcdHdoaWxlIChldnQgPSBldmVudHMuc2hpZnQoKSkge1xuXHRcdFx0aWYgKGV2dCkge1xuXHRcdFx0XHRsZXQgbGlzdGVuZXJzID0gdGhpcy5fZXZlbnRzLmdldChldnQpO1xuXHRcdFx0XHRpZiAoIWxpc3RlbmVycykge1xuXHRcdFx0XHRcdHRoaXMuX2V2ZW50cy5zZXQoZXZ0LCBsaXN0ZW5lcnMgPSBbXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdGVuZXJzLnB1c2goeyBsaXN0ZW5lciwgcHJpb3JpdHkgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBldmVudCBsaXN0ZW5lciB0aGF0IHdpbGwgb25seSBiZSBjYWxsZWQgb25jZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IC0gT25lIG9yIG1vcmUgc3BhY2Utc2VwYXJhdGVkIGV2ZW50IG5hbWVzIHRvIGFkZFxuXHQgKiB0aGUgbGlzdGVuZXIgdG8uXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbcHJpb3JpdHk9MF0gLSBUaGUgcHJpb3JpdHkgb2YgbGlzdGVuZXIuIFRoZSBoaWdoZXIgdGhlXG5cdCAqIHByaW9yaXR5LCB0aGUgc29vbmVyIGl0IHdpbGwgYmUgZXhlY3V0ZWQuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIGVtaXR0ZWQuXG5cdCAqIEByZXR1cm5zIHtIb29rRW1pdHRlcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG9uY2UoZXZlbnQsIHByaW9yaXR5ID0gMCwgbGlzdGVuZXIpIHtcblx0XHRpZiAoIWV2ZW50IHx8IHR5cGVvZiBldmVudCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGV2ZW50IG5hbWUgdG8gYmUgYSB2YWxpZCBzdHJpbmcuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwcmlvcml0eSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bGlzdGVuZXIgPSBwcmlvcml0eTtcblx0XHRcdHByaW9yaXR5ID0gMDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwcmlvcml0eSAhPT0gJ251bWJlcicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHByaW9yaXR5IHRvIGJlIGEgbnVtYmVyLicpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0bGV0IGV2ZW50cyA9IGV2ZW50LnNwbGl0KC9cXHMvKTtcblxuXHRcdGZvciAobGV0IGV2dCBvZiBldmVudHMpIHtcblx0XHRcdGlmIChldnQpIHtcblx0XHRcdFx0bGV0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50cy5nZXQoZXZ0KTtcblx0XHRcdFx0aWYgKCFsaXN0ZW5lcnMpIHtcblx0XHRcdFx0XHR0aGlzLl9ldmVudHMuc2V0KGV2dCwgbGlzdGVuZXJzID0gW10pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCB3cmFwcGVyID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHRoaXMub2ZmKGV2dCwgd3JhcHBlcik7XG5cdFx0XHRcdFx0bGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0fS5iaW5kKHRoaXMpO1xuXHRcdFx0XHRsaXN0ZW5lcnMucHVzaCh7IGxpc3RlbmVyOiB3cmFwcGVyLCBwcmlvcml0eSB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGFuIGV2ZW50IGxpc3RlbmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQgLSBPbmUgb3IgbW9yZSBzcGFjZS1zZXBhcmF0ZWQgZXZlbnQgbmFtZXMgdG8gcmVtb3ZlXG5cdCAqIHRoZSBsaXN0ZW5lciBmcm9tLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbbGlzdGVuZXJdIC0gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLiBJZiBub3Qgc3BlY2lmaWVkLFxuXHQgKiB0aGVuIGFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgYXJlIHJlbW92ZWQuXG5cdCAqIEByZXR1cm5zIHtIb29rRW1pdHRlcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG9mZihldmVudCwgbGlzdGVuZXIpIHtcblx0XHRpZiAoIWV2ZW50IHx8IHR5cGVvZiBldmVudCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGV2ZW50IG5hbWUgdG8gYmUgYSB2YWxpZCBzdHJpbmcuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKGxpc3RlbmVyICYmIHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0XHR9XG5cblx0XHRsZXQgZXZlbnRzID0gZXZlbnQuc3BsaXQoL1xccy8pO1xuXHRcdGxldCBldnQ7XG5cblx0XHR3aGlsZSAoZXZ0ID0gZXZlbnRzLnNoaWZ0KCkpIHtcblx0XHRcdGlmICghbGlzdGVuZXIpIHtcblx0XHRcdFx0Ly8gcmVtb3ZlIHRoZW0gYWxsXG5cdFx0XHRcdHRoaXMuX2V2ZW50cy5kZWxldGUoZXZ0KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHMuZ2V0KGV2dCk7XG5cdFx0XHRpZiAoIWxpc3RlbmVycykge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcblxuXHRcdFx0aWYgKGxlbiA9PT0gMSAmJiBsaXN0ZW5lcnNbMF0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG5cdFx0XHRcdC8vIHRoZXJlIHdhcyBvbmx5IG9uZSBldmVudCBhbmQgdGhpcyB3YXMgaXQsIHNvXG5cdFx0XHRcdC8vIG51a2UgdGhlIGVudGlyZSBldmVudCBmcm9tIHRoZSBtYXBcblx0XHRcdFx0dGhpcy5fZXZlbnRzLmRlbGV0ZShldnQpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRpZiAobGlzdGVuZXJzW2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuXHRcdFx0XHRcdGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBsaXN0ZW5lcnMgaW50byBhIHByb21pc2UgY2hhaW5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMuY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gY2FsbCBhZnRlclxuXHQgKiBhbGwgbGlzdGVuZXJzIGhhdmUgYmVlbiBmaXJlZC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudHJhbnNmb3JtXSAtIEFuIGZ1bmN0aW9uIHRoYXQgdHJhbnNmb3JtcyBhIHJlc3VsdFxuXHQgKiB3aXRoIHRoZSBvcmlnaW5hbCBwYXlsb2FkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudHlwZV0gLSBUaGUgZXZlbnQgdHlwZS5cblx0ICogQHJldHVybnMge0Z1bmN0aW9ufVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGNvbXBvc2UoeyB0eXBlLCBjYWxsYmFjaywgdHJhbnNmb3JtIH0pIHtcblx0XHRpZiAoY2FsbGJhY2sgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjYWxsYmFjayB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgdHJhbnNmb3JtICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHQvLyBkZWZpbmUgdGhlIGRlZmF1bHQgdHJhbnNmb3JtIGZvciBwYXNzaW5nIHJlc3VsdHMgdG8gdGhlIG5leHRcblx0XHRcdC8vIGxpc3RlbmVyIGluIHRoZSBjaGFpblxuXHRcdFx0dHJhbnNmb3JtID0gKHJlc3VsdCwgcGF5bG9hZCkgPT4gKHtcblx0XHRcdFx0dHlwZTogcGF5bG9hZC50eXBlLFxuXHRcdFx0XHRhcmdzOiByZXN1bHQgfHwgcGF5bG9hZC5hcmdzXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvLyBjcmVhdGUgdGhlIGZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyB0aGUgZXZlbnRzIHNpbmNlIHRoZSBsaXN0IG9mXG5cdFx0Ly8gbGlzdGVuZXJzIG1heSBjaGFuZ2UgYmVmb3JlIHRoZSBob29rIGlzIGNhbGxlZFxuXHRcdGNvbnN0IGdldExpc3RlbmVycyA9ICgpID0+IHtcblx0XHRcdGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50cy5nZXQodHlwZSkgfHwgW107XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkobGlzdGVuZXJzKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lcnMgdG8gYmUgYW4gYXJyYXkuJyk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxpbmtlZExpc3RlbmVycyA9IHRoaXMuX2xpbmtzLm1hcChsaW5rID0+IHtcblx0XHRcdFx0cmV0dXJuIGxpbmsuZW1pdHRlci5ldmVudHMuZ2V0KChsaW5rLnByZWZpeCB8fCAnJykgKyB0eXBlKSB8fCBbXTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gbGlzdGVuZXJzXG5cdFx0XHRcdC5jb25jYXQuYXBwbHkobGlzdGVuZXJzLCBsaW5rZWRMaXN0ZW5lcnMpXG5cdFx0XHRcdC5zb3J0KChhLCBiKSA9PiBiLnByaW9yaXR5IC0gYS5wcmlvcml0eSlcblx0XHRcdFx0Lm1hcChwID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHAubGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBwLmxpc3RlbmVyO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0Ly8gcmV0dXJuIHRoZSB3cmFwcGVkIGZ1bmN0aW9uXG5cdFx0cmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0XHRjb25zdCBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnMoKTtcblx0XHRcdGNvbnN0IGN0eCA9IHRoaXM7XG5cblx0XHRcdGlmIChjYWxsYmFjaykge1xuXHRcdFx0XHRsaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHN0YXJ0IHRoZSBjaGFpbiBhbmQgcmV0dXJuIGl0cyBwcm9taXNlXG5cdFx0XHRyZXR1cm4gZGlzcGF0Y2goe1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRhcmdzOiBhcmdzXG5cdFx0XHR9LCAwKTtcblxuXHRcdFx0ZnVuY3Rpb24gZGlzcGF0Y2gocGF5bG9hZCwgaSkge1xuXHRcdFx0XHRsZXQgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cdFx0XHRcdGlmICghbGlzdGVuZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBheWxvYWQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRsZXQgZmlyZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRsZXQgaW5uZXJSZXN1bHQ7XG5cblx0XHRcdFx0XHQvLyBjb25zdHJ1Y3QgdGhlIGFyZ3Ncblx0XHRcdFx0XHRjb25zdCBhcmdzID0gWyAuLi4oQXJyYXkuaXNBcnJheShwYXlsb2FkLmFyZ3MpID8gcGF5bG9hZC5hcmdzIDogWyBwYXlsb2FkLmFyZ3MgXSksIGZ1bmN0aW9uIG5leHQocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRpZiAoZmlyZWQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRmaXJlZCA9IHRydWU7XG5cblx0XHRcdFx0XHRcdC8vIGlmIHNvbWVib2R5IG1peGVzIHBhcmFkaWdtcyBhbmQgY2FsbHMgbmV4dCgpLnRoZW4oKSxcblx0XHRcdFx0XHRcdC8vIGF0IGxlYXN0IHRoZWlyIGZ1bmN0aW9uIHdpbGwgd2FpdCBmb3IgdGhlIG5leHQgbGlzdGVuZXJcblx0XHRcdFx0XHRcdHJldHVybiBkaXNwYXRjaChyZXN1bHQgfHwgcGF5bG9hZCwgaSArIDEpXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc3VsdCA9PiAoaW5uZXJSZXN1bHQgPSByZXN1bHQgfHwgcGF5bG9hZCkpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdH0gXTtcblxuXHRcdFx0XHRcdC8vIGNhbGwgdGhlIGxpc3RlbmVyXG5cdFx0XHRcdFx0bGV0IHJlc3VsdCA9IGxpc3RlbmVyLmFwcGx5KGN0eCwgYXJncyk7XG5cdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGZpcmVkKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBpZiB3ZSBnb3QgYmFjayBhIHByb21pc2UsIHdlIGhhdmUgdG8gd2FpdFxuXHRcdFx0XHRcdGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0XG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc3VsdCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gdHJhbnNmb3JtKGZpcmVkICYmIGlubmVyUmVzdWx0IHx8IHJlc3VsdCwgcGF5bG9hZCk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZpcmVkID8gcmVzdWx0IDogZGlzcGF0Y2gocmVzdWx0LCBpICsgMSk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBkaXNwYXRjaCh0cmFuc2Zvcm0ocmVzdWx0LCBwYXlsb2FkKSwgaSArIDEpXG5cdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIG9uZSBvciBtb3JlIGV2ZW50cy5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXQuXG5cdCAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIC0gT25lIG9yIG1vcmUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gYmUgZW1pdHRlZFxuXHQgKiB3aXRoIHRoZSBldmVudC5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG5cdFx0aWYgKCFldmVudCB8fCB0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBldmVudCBuYW1lIHRvIGJlIGEgdmFsaWQgc3RyaW5nLicpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmNvbXBvc2Uoe1xuXHRcdFx0dHlwZTogZXZlbnRcblx0XHR9KS5hcHBseSh0aGlzLCBhcmdzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgZnVuY3Rpb24gaG9vay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IC0gVGhlIG5hbWUgb2YgdGhlIGhvb2sncyBldmVudC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtjdHhdIC0gVGhlIGNvbnRleHQgdG8gcnVuIHRoZSBmdW5jdGlvbiBpbi4gVXNlZnVsIGlmXG5cdCAqIGBmbmAgaXMgZ29pbmcgdG8gYmUgb3ZlcndyaXR0ZW4uXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIGJlaW5nIGhvb2tlZCB1cC5cblx0ICogQHJldHVybnMge0Z1bmN0aW9ufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aG9vayhldmVudCwgY3R4LCBmbikge1xuXHRcdGlmICghZXZlbnQgfHwgdHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZXZlbnQgbmFtZSB0byBiZSBhIHZhbGlkIHN0cmluZy4nKTtcblx0XHR9XG5cblx0XHQvLyBzaGlmdCBhcmd1bWVudHMgaWYgbmVjZXNzYXJ5XG5cdFx0aWYgKHR5cGVvZiBjdHggPT09ICdmdW5jdGlvbicgJiYgIWZuKSB7XG5cdFx0XHRmbiA9IGN0eDtcblx0XHRcdGN0eCA9IG51bGw7XG5cdFx0fVxuXG5cdFx0aWYgKGN0eCAmJiB0eXBlb2YgY3R4ICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgY29udGV4dCB0byBiZSBhbiBvYmplY3QuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgaG9va2VkIGZ1bmN0aW9uIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICguLi5hcmdzKSA9PiB7XG5cdFx0XHRjb25zdCBkYXRhID0ge1xuXHRcdFx0XHR0eXBlOiBldmVudCxcblx0XHRcdFx0Zm4sXG5cdFx0XHRcdGFyZ3MsXG5cdFx0XHRcdGN0eFxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgY2hhaW4gPSB0aGlzLmNvbXBvc2Uoe1xuXHRcdFx0XHR0eXBlOiBldmVudCxcblx0XHRcdFx0Y2FsbGJhY2s6IGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0XHRcdFx0dGhpcy5yZXN1bHQgPSBhd2FpdCB0aGlzLmZuLmFwcGx5KHRoaXMuY3R4LCB0aGlzLmFyZ3MpO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0cmFuc2Zvcm06IChyZXN1bHQsIGRhdGEpID0+IHJlc3VsdCB8fCBkYXRhXG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuIGNoYWluLmFwcGx5KGRhdGEsIGRhdGEuYXJncykudGhlbihkYXRhID0+IGRhdGEucmVzdWx0KTtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIExpbmtzIGFsbCBsaXN0ZW5lcnMgZnJvbSBhbm90aGVyIGhvb2sgZW1pdHRlciBpbnRvIHRoaXMgaW5zdGFuY2UuIFdoZW4gYW5cblx0ICogZXZlbnQgaXMgZW1pdHRlZCwgaXQgd2lsbCBub3RpZnkgYWxsIG9mIHRoaXMgaW5zdGFuY2UncyBsaXN0ZW5lcnMsIHRoZW5cblx0ICogbm90aWZ5IGFsbCBsaW5rZWQgaG9vayBlbWl0dGVyJ3MgbGlzdGVuZXJzLiBTYW1lIGFwcGxpZXMgdG8gaG9va2VkXG5cdCAqIGZ1bmN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtIb29rRW1pdHRlcn0gZW1pdHRlciAtIEEgaG9vayBlbWl0dGVyIHRvIGxpbmsgdG8uXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcHJlZml4XSAtIEEgc3RyaW5nIHRvIHByZWZpeCB0byBhbGwgZW1pdHRlZCBldmVudCBuYW1lcy5cblx0ICogQHJldHVybnMge0hvb2tFbWl0dGVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bGluayhlbWl0dGVyLCBwcmVmaXgpIHtcblx0XHRpZiAoIShlbWl0dGVyIGluc3RhbmNlb2YgSG9va0VtaXR0ZXIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhIEhvb2tFbWl0dGVyLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2xpbmtzLnB1c2goeyBlbWl0dGVyLCBwcmVmaXggfSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBVbmxpbmtzIGFsbCBsaXN0ZW5lcnMgZnJvbSBhbm90aGVyIGhvb2sgZW1pdHRlciBmcm9tIHRoaXMgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7SG9va0VtaXR0ZXJ9IGVtaXR0ZXIgLSBBIGhvb2sgZW1pdHRlciB0byB1bmxpbmsuXG5cdCAqIEByZXR1cm5zIHtIb29rRW1pdHRlcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVubGluayhlbWl0dGVyKSB7XG5cdFx0aWYgKCEoZW1pdHRlciBpbnN0YW5jZW9mIEhvb2tFbWl0dGVyKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYSBIb29rRW1pdHRlci4nKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xpbmtzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodGhpcy5fbGlua3NbaV0uZW1pdHRlciA9PT0gZW1pdHRlcikge1xuXHRcdFx0XHR0aGlzLl9saW5rcy5zcGxpY2UoaS0tLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBIb29rRW1pdHRlcjtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwiSG9va0VtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIl9ldmVudHMiLCJNYXAiLCJfbGlua3MiLCJldmVudHMiLCJvbiIsImV2ZW50IiwicHJpb3JpdHkiLCJsaXN0ZW5lciIsIlR5cGVFcnJvciIsInNwbGl0IiwiZXZ0Iiwic2hpZnQiLCJsaXN0ZW5lcnMiLCJnZXQiLCJzZXQiLCJwdXNoIiwib25jZSIsIndyYXBwZXIiLCJvZmYiLCJhcHBseSIsImFyZ3VtZW50cyIsImJpbmQiLCJkZWxldGUiLCJsZW4iLCJsZW5ndGgiLCJpIiwic3BsaWNlIiwiY29tcG9zZSIsInR5cGUiLCJjYWxsYmFjayIsInRyYW5zZm9ybSIsInJlc3VsdCIsInBheWxvYWQiLCJhcmdzIiwiZ2V0TGlzdGVuZXJzIiwiQXJyYXkiLCJpc0FycmF5IiwibGlua2VkTGlzdGVuZXJzIiwibWFwIiwibGluayIsImVtaXR0ZXIiLCJwcmVmaXgiLCJjb25jYXQiLCJzb3J0IiwiYSIsImIiLCJwIiwiY3R4IiwiZGlzcGF0Y2giLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZpcmVkIiwiaW5uZXJSZXN1bHQiLCJuZXh0IiwidGhlbiIsImNhdGNoIiwidW5kZWZpbmVkIiwiZW1pdCIsImhvb2siLCJmbiIsImRhdGEiLCJjaGFpbiIsInVubGluayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBO0FBRUQ7QUFDQTtBQUNBOzs7QUFDTyxNQUFNQyxXQUFOLENBQWtCO0FBQ3hCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsRUFBQUEsV0FBVyxHQUFHO0FBQ2IsU0FBS0MsT0FBTCxHQUFlLElBQUlDLEdBQUosRUFBZjtBQUNBLFNBQUtDLE1BQUwsR0FB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bCBpZ25vcmUgaWYgKi9cbmlmICghRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpIHtcblx0cmVxdWlyZSgnc291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyJyk7XG59XG5cbi8qKlxuICogRW1pdHMgZXZlbnRzIGFuZCBob29rcyB0byBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGxpc3RlbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYW4gSG9va0VtaXR0ZXIgb2JqZWN0LlxuXHQgKlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5fZXZlbnRzID0gbmV3IE1hcCgpO1xuXHRcdHRoaXMuX2xpbmtzID0gW107XG5cdH1cblxuXHQvKipcblx0ICogQW4gaXRlcmF0b3IgZm9yIHJldHVybmluZyBhbGwgZXZlbnRzLlxuXHQgKiBAdHlwZSB7SXRlcmF0b3J9XG5cdCAqL1xuXHRnZXQgZXZlbnRzKCkge1xuXHRcdHJldHVybiB0aGlzLl9ldmVudHM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBldmVudCBsaXN0ZW5lci5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IC0gT25lIG9yIG1vcmUgc3BhY2Utc2VwYXJhdGVkIGV2ZW50IG5hbWVzIHRvIGFkZFxuXHQgKiB0aGUgbGlzdGVuZXIgdG8uXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbcHJpb3JpdHk9MF0gLSBUaGUgcHJpb3JpdHkgb2YgbGlzdGVuZXIuIFRoZSBoaWdoZXIgdGhlXG5cdCAqIHByaW9yaXR5LCB0aGUgc29vbmVyIGl0IHdpbGwgYmUgZXhlY3V0ZWQuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIGVtaXR0ZWQuXG5cdCAqIEByZXR1cm5zIHtIb29rRW1pdHRlcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG9uKGV2ZW50LCBwcmlvcml0eSA9IDAsIGxpc3RlbmVyKSB7XG5cdFx0aWYgKCFldmVudCB8fCB0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBldmVudCBuYW1lIHRvIGJlIGEgdmFsaWQgc3RyaW5nLicpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcHJpb3JpdHkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGxpc3RlbmVyID0gcHJpb3JpdHk7XG5cdFx0XHRwcmlvcml0eSA9IDA7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwcmlvcml0eSAhPT0gJ251bWJlcicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHByaW9yaXR5IHRvIGJlIGEgbnVtYmVyLicpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0bGV0IGV2ZW50cyA9IGV2ZW50LnNwbGl0KC9cXHMvKTtcblx0XHRsZXQgZXZ0O1xuXG5cdFx0d2hpbGUgKGV2dCA9IGV2ZW50cy5zaGlmdCgpKSB7XG5cdFx0XHRpZiAoZXZ0KSB7XG5cdFx0XHRcdGxldCBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHMuZ2V0KGV2dCk7XG5cdFx0XHRcdGlmICghbGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0dGhpcy5fZXZlbnRzLnNldChldnQsIGxpc3RlbmVycyA9IFtdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0ZW5lcnMucHVzaCh7IGxpc3RlbmVyLCBwcmlvcml0eSB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQgLSBPbmUgb3IgbW9yZSBzcGFjZS1zZXBhcmF0ZWQgZXZlbnQgbmFtZXMgdG8gYWRkXG5cdCAqIHRoZSBsaXN0ZW5lciB0by5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtwcmlvcml0eT0wXSAtIFRoZSBwcmlvcml0eSBvZiBsaXN0ZW5lci4gVGhlIGhpZ2hlciB0aGVcblx0ICogcHJpb3JpdHksIHRoZSBzb29uZXIgaXQgd2lsbCBiZSBleGVjdXRlZC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgZW1pdHRlZC5cblx0ICogQHJldHVybnMge0hvb2tFbWl0dGVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0b25jZShldmVudCwgcHJpb3JpdHkgPSAwLCBsaXN0ZW5lcikge1xuXHRcdGlmICghZXZlbnQgfHwgdHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZXZlbnQgbmFtZSB0byBiZSBhIHZhbGlkIHN0cmluZy4nKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHByaW9yaXR5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsaXN0ZW5lciA9IHByaW9yaXR5O1xuXHRcdFx0cHJpb3JpdHkgPSAwO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHByaW9yaXR5ICE9PSAnbnVtYmVyJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgcHJpb3JpdHkgdG8gYmUgYSBudW1iZXIuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0XHR9XG5cblx0XHRsZXQgZXZlbnRzID0gZXZlbnQuc3BsaXQoL1xccy8pO1xuXG5cdFx0Zm9yIChsZXQgZXZ0IG9mIGV2ZW50cykge1xuXHRcdFx0aWYgKGV2dCkge1xuXHRcdFx0XHRsZXQgbGlzdGVuZXJzID0gdGhpcy5fZXZlbnRzLmdldChldnQpO1xuXHRcdFx0XHRpZiAoIWxpc3RlbmVycykge1xuXHRcdFx0XHRcdHRoaXMuX2V2ZW50cy5zZXQoZXZ0LCBsaXN0ZW5lcnMgPSBbXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IHdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dGhpcy5vZmYoZXZ0LCB3cmFwcGVyKTtcblx0XHRcdFx0XHRsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHR9LmJpbmQodGhpcyk7XG5cdFx0XHRcdGxpc3RlbmVycy5wdXNoKHsgbGlzdGVuZXI6IHdyYXBwZXIsIHByaW9yaXR5IH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYW4gZXZlbnQgbGlzdGVuZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBldmVudCAtIE9uZSBvciBtb3JlIHNwYWNlLXNlcGFyYXRlZCBldmVudCBuYW1lcyB0byByZW1vdmVcblx0ICogdGhlIGxpc3RlbmVyIGZyb20uXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtsaXN0ZW5lcl0gLSBUaGUgbGlzdGVuZXIgZnVuY3Rpb24uIElmIG5vdCBzcGVjaWZpZWQsXG5cdCAqIHRoZW4gYWxsIGxpc3RlbmVycyBmb3IgdGhlIHNwZWNpZmllZCBldmVudCBhcmUgcmVtb3ZlZC5cblx0ICogQHJldHVybnMge0hvb2tFbWl0dGVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0b2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuXHRcdGlmICghZXZlbnQgfHwgdHlwZW9mIGV2ZW50ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZXZlbnQgbmFtZSB0byBiZSBhIHZhbGlkIHN0cmluZy4nKTtcblx0XHR9XG5cblx0XHRpZiAobGlzdGVuZXIgJiYgdHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHRcdH1cblxuXHRcdGxldCBldmVudHMgPSBldmVudC5zcGxpdCgvXFxzLyk7XG5cdFx0bGV0IGV2dDtcblxuXHRcdHdoaWxlIChldnQgPSBldmVudHMuc2hpZnQoKSkge1xuXHRcdFx0aWYgKCFsaXN0ZW5lcikge1xuXHRcdFx0XHQvLyByZW1vdmUgdGhlbSBhbGxcblx0XHRcdFx0dGhpcy5fZXZlbnRzLmRlbGV0ZShldnQpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50cy5nZXQoZXZ0KTtcblx0XHRcdGlmICghbGlzdGVuZXJzKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsZW4gPSBsaXN0ZW5lcnMubGVuZ3RoO1xuXG5cdFx0XHRpZiAobGVuID09PSAxICYmIGxpc3RlbmVyc1swXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcblx0XHRcdFx0Ly8gdGhlcmUgd2FzIG9ubHkgb25lIGV2ZW50IGFuZCB0aGlzIHdhcyBpdCwgc29cblx0XHRcdFx0Ly8gbnVrZSB0aGUgZW50aXJlIGV2ZW50IGZyb20gdGhlIG1hcFxuXHRcdFx0XHR0aGlzLl9ldmVudHMuZGVsZXRlKGV2dCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdGlmIChsaXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG5cdFx0XHRcdFx0bGlzdGVuZXJzLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGxpc3RlbmVycyBpbnRvIGEgcHJvbWlzZSBjaGFpblxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5jYWxsYmFja10gLSBBbiBvcHRpb25hbCBmdW5jdGlvbiB0byBjYWxsIGFmdGVyXG5cdCAqIGFsbCBsaXN0ZW5lcnMgaGF2ZSBiZWVuIGZpcmVkLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy50cmFuc2Zvcm1dIC0gQW4gZnVuY3Rpb24gdGhhdCB0cmFuc2Zvcm1zIGEgcmVzdWx0XG5cdCAqIHdpdGggdGhlIG9yaWdpbmFsIHBheWxvYWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50eXBlXSAtIFRoZSBldmVudCB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Y29tcG9zZSh7IHR5cGUsIGNhbGxiYWNrLCB0cmFuc2Zvcm0gfSkge1xuXHRcdGlmIChjYWxsYmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNhbGxiYWNrIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiB0cmFuc2Zvcm0gIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIGRlZmluZSB0aGUgZGVmYXVsdCB0cmFuc2Zvcm0gZm9yIHBhc3NpbmcgcmVzdWx0cyB0byB0aGUgbmV4dFxuXHRcdFx0Ly8gbGlzdGVuZXIgaW4gdGhlIGNoYWluXG5cdFx0XHR0cmFuc2Zvcm0gPSAocmVzdWx0LCBwYXlsb2FkKSA9PiAoe1xuXHRcdFx0XHR0eXBlOiBwYXlsb2FkLnR5cGUsXG5cdFx0XHRcdGFyZ3M6IHJlc3VsdCB8fCBwYXlsb2FkLmFyZ3Ncblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8vIGNyZWF0ZSB0aGUgZnVuY3Rpb24gdGhhdCBmZXRjaGVzIHRoZSBldmVudHMgc2luY2UgdGhlIGxpc3Qgb2Zcblx0XHQvLyBsaXN0ZW5lcnMgbWF5IGNoYW5nZSBiZWZvcmUgdGhlIGhvb2sgaXMgY2FsbGVkXG5cdFx0Y29uc3QgZ2V0TGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgbGlzdGVuZXJzID0gdGhpcy5fZXZlbnRzLmdldCh0eXBlKSB8fCBbXTtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShsaXN0ZW5lcnMpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGxpc3RlbmVycyB0byBiZSBhbiBhcnJheS4nKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbGlua2VkTGlzdGVuZXJzID0gdGhpcy5fbGlua3MubWFwKGxpbmsgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbGluay5lbWl0dGVyLmV2ZW50cy5nZXQoKGxpbmsucHJlZml4IHx8ICcnKSArIHR5cGUpIHx8IFtdO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiBsaXN0ZW5lcnNcblx0XHRcdFx0LmNvbmNhdC5hcHBseShsaXN0ZW5lcnMsIGxpbmtlZExpc3RlbmVycylcblx0XHRcdFx0LnNvcnQoKGEsIGIpID0+IGIucHJpb3JpdHkgLSBhLnByaW9yaXR5KVxuXHRcdFx0XHQubWFwKHAgPT4ge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcC5saXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHAubGlzdGVuZXI7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQvLyByZXR1cm4gdGhlIHdyYXBwZWQgZnVuY3Rpb25cblx0XHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRcdGNvbnN0IGxpc3RlbmVycyA9IGdldExpc3RlbmVycygpO1xuXHRcdFx0Y29uc3QgY3R4ID0gdGhpcztcblxuXHRcdFx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0XHRcdGxpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc3RhcnQgdGhlIGNoYWluIGFuZCByZXR1cm4gaXRzIHByb21pc2Vcblx0XHRcdHJldHVybiBkaXNwYXRjaCh7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGFyZ3M6IGFyZ3Ncblx0XHRcdH0sIDApO1xuXG5cdFx0XHRmdW5jdGlvbiBkaXNwYXRjaChwYXlsb2FkLCBpKSB7XG5cdFx0XHRcdGxldCBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXTtcblx0XHRcdFx0aWYgKCFsaXN0ZW5lcikge1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUocGF5bG9hZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCBmaXJlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGxldCBpbm5lclJlc3VsdDtcblxuXHRcdFx0XHRcdC8vIGNvbnN0cnVjdCB0aGUgYXJnc1xuXHRcdFx0XHRcdGNvbnN0IGFyZ3MgPSBbIC4uLihBcnJheS5pc0FycmF5KHBheWxvYWQuYXJncykgPyBwYXlsb2FkLmFyZ3MgOiBbIHBheWxvYWQuYXJncyBdKSwgZnVuY3Rpb24gbmV4dChyZXN1bHQpIHtcblx0XHRcdFx0XHRcdGlmIChmaXJlZCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGZpcmVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0Ly8gaWYgc29tZWJvZHkgbWl4ZXMgcGFyYWRpZ21zIGFuZCBjYWxscyBuZXh0KCkudGhlbigpLFxuXHRcdFx0XHRcdFx0Ly8gYXQgbGVhc3QgdGhlaXIgZnVuY3Rpb24gd2lsbCB3YWl0IGZvciB0aGUgbmV4dCBsaXN0ZW5lclxuXHRcdFx0XHRcdFx0cmV0dXJuIGRpc3BhdGNoKHJlc3VsdCB8fCBwYXlsb2FkLCBpICsgMSlcblx0XHRcdFx0XHRcdFx0LnRoZW4ocmVzdWx0ID0+IChpbm5lclJlc3VsdCA9IHJlc3VsdCB8fCBwYXlsb2FkKSlcblx0XHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdFx0fSBdO1xuXG5cdFx0XHRcdFx0Ly8gY2FsbCB0aGUgbGlzdGVuZXJcblx0XHRcdFx0XHRsZXQgcmVzdWx0ID0gbGlzdGVuZXIuYXBwbHkoY3R4LCBhcmdzKTtcblx0XHRcdFx0XHRpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgZmlyZWQpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIGlmIHdlIGdvdCBiYWNrIGEgcHJvbWlzZSwgd2UgaGF2ZSB0byB3YWl0XG5cdFx0XHRcdFx0aWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRcblx0XHRcdFx0XHRcdFx0LnRoZW4ocmVzdWx0ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXN1bHQgPSB0cmFuc2Zvcm0oZmlyZWQgJiYgaW5uZXJSZXN1bHQgfHwgcmVzdWx0LCBwYXlsb2FkKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmlyZWQgPyByZXN1bHQgOiBkaXNwYXRjaChyZXN1bHQsIGkgKyAxKTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LnRoZW4ocmVzb2x2ZSlcblx0XHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGRpc3BhdGNoKHRyYW5zZm9ybShyZXN1bHQsIHBheWxvYWQpLCBpICsgMSlcblx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRW1pdHMgb25lIG9yIG1vcmUgZXZlbnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gZW1pdC5cblx0ICogQHBhcmFtIHsuLi4qfSBbYXJnc10gLSBPbmUgb3IgbW9yZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBiZSBlbWl0dGVkXG5cdCAqIHdpdGggdGhlIGV2ZW50LlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcblx0XHRpZiAoIWV2ZW50IHx8IHR5cGVvZiBldmVudCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGV2ZW50IG5hbWUgdG8gYmUgYSB2YWxpZCBzdHJpbmcuJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGF3YWl0IHRoaXMuY29tcG9zZSh7XG5cdFx0XHR0eXBlOiBldmVudFxuXHRcdH0pLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBmdW5jdGlvbiBob29rLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQgLSBUaGUgbmFtZSBvZiB0aGUgaG9vaydzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW2N0eF0gLSBUaGUgY29udGV4dCB0byBydW4gdGhlIGZ1bmN0aW9uIGluLiBVc2VmdWwgaWZcblx0ICogYGZuYCBpcyBnb2luZyB0byBiZSBvdmVyd3JpdHRlbi5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gYmVpbmcgaG9va2VkIHVwLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRob29rKGV2ZW50LCBjdHgsIGZuKSB7XG5cdFx0aWYgKCFldmVudCB8fCB0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBldmVudCBuYW1lIHRvIGJlIGEgdmFsaWQgc3RyaW5nLicpO1xuXHRcdH1cblxuXHRcdC8vIHNoaWZ0IGFyZ3VtZW50cyBpZiBuZWNlc3Nhcnlcblx0XHRpZiAodHlwZW9mIGN0eCA9PT0gJ2Z1bmN0aW9uJyAmJiAhZm4pIHtcblx0XHRcdGZuID0gY3R4O1xuXHRcdFx0Y3R4ID0gbnVsbDtcblx0XHR9XG5cblx0XHRpZiAoY3R4ICYmIHR5cGVvZiBjdHggIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb250ZXh0IHRvIGJlIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBob29rZWQgZnVuY3Rpb24gdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKC4uLmFyZ3MpID0+IHtcblx0XHRcdGNvbnN0IGRhdGEgPSB7XG5cdFx0XHRcdHR5cGU6IGV2ZW50LFxuXHRcdFx0XHRmbixcblx0XHRcdFx0YXJncyxcblx0XHRcdFx0Y3R4XG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBjaGFpbiA9IHRoaXMuY29tcG9zZSh7XG5cdFx0XHRcdHR5cGU6IGV2ZW50LFxuXHRcdFx0XHRjYWxsYmFjazogYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRcdFx0XHR0aGlzLnJlc3VsdCA9IGF3YWl0IHRoaXMuZm4uYXBwbHkodGhpcy5jdHgsIHRoaXMuYXJncyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRyYW5zZm9ybTogKHJlc3VsdCwgZGF0YSkgPT4gcmVzdWx0IHx8IGRhdGFcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gY2hhaW4uYXBwbHkoZGF0YSwgZGF0YS5hcmdzKS50aGVuKGRhdGEgPT4gZGF0YS5yZXN1bHQpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogTGlua3MgYWxsIGxpc3RlbmVycyBmcm9tIGFub3RoZXIgaG9vayBlbWl0dGVyIGludG8gdGhpcyBpbnN0YW5jZS4gV2hlbiBhblxuXHQgKiBldmVudCBpcyBlbWl0dGVkLCBpdCB3aWxsIG5vdGlmeSBhbGwgb2YgdGhpcyBpbnN0YW5jZSdzIGxpc3RlbmVycywgdGhlblxuXHQgKiBub3RpZnkgYWxsIGxpbmtlZCBob29rIGVtaXR0ZXIncyBsaXN0ZW5lcnMuIFNhbWUgYXBwbGllcyB0byBob29rZWRcblx0ICogZnVuY3Rpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0hvb2tFbWl0dGVyfSBlbWl0dGVyIC0gQSBob29rIGVtaXR0ZXIgdG8gbGluayB0by5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwcmVmaXhdIC0gQSBzdHJpbmcgdG8gcHJlZml4IHRvIGFsbCBlbWl0dGVkIGV2ZW50IG5hbWVzLlxuXHQgKiBAcmV0dXJucyB7SG9va0VtaXR0ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsaW5rKGVtaXR0ZXIsIHByZWZpeCkge1xuXHRcdGlmICghKGVtaXR0ZXIgaW5zdGFuY2VvZiBIb29rRW1pdHRlcikpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIGEgSG9va0VtaXR0ZXIuJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fbGlua3MucHVzaCh7IGVtaXR0ZXIsIHByZWZpeCB9KTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVubGlua3MgYWxsIGxpc3RlbmVycyBmcm9tIGFub3RoZXIgaG9vayBlbWl0dGVyIGZyb20gdGhpcyBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHtIb29rRW1pdHRlcn0gZW1pdHRlciAtIEEgaG9vayBlbWl0dGVyIHRvIHVubGluay5cblx0ICogQHJldHVybnMge0hvb2tFbWl0dGVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW5saW5rKGVtaXR0ZXIpIHtcblx0XHRpZiAoIShlbWl0dGVyIGluc3RhbmNlb2YgSG9va0VtaXR0ZXIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhIEhvb2tFbWl0dGVyLicpO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGlua3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmICh0aGlzLl9saW5rc1tpXS5lbWl0dGVyID09PSBlbWl0dGVyKSB7XG5cdFx0XHRcdHRoaXMuX2xpbmtzLnNwbGljZShpLS0sIDEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tFbWl0dGVyO1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9 |
{ | ||
"name": "hook-emitter", | ||
"version": "4.1.0", | ||
"version": "4.1.1", | ||
"description": "Event emitter with support for asynchronous handlers and a sweet function hook mechanism.", | ||
@@ -31,10 +31,11 @@ "main": "./dist/index.js", | ||
"devDependencies": { | ||
"@babel/core": "^7.9.6", | ||
"@babel/plugin-transform-modules-commonjs": "^7.9.6", | ||
"@babel/register": "^7.9.0", | ||
"@babel/core": "^7.12.3", | ||
"@babel/plugin-transform-modules-commonjs": "^7.12.1", | ||
"@babel/register": "^7.12.1", | ||
"ansi-colors": "^4.1.1", | ||
"babel-eslint": "^10.1.0", | ||
"babel-loader": "^8.1.0", | ||
"babel-loader": "^8.2.1", | ||
"babel-plugin-istanbul": "^6.0.0", | ||
"chai": "^4.2.0", | ||
"chai-as-promised": "^7.1.1", | ||
"coveralls": "^3.1.0", | ||
@@ -44,9 +45,9 @@ "esdoc": "^1.1.0", | ||
"esdoc-standard-plugin": "^1.0.0", | ||
"eslint": "^6.8.0", | ||
"eslint-plugin-chai-expect": "^2.1.0", | ||
"eslint-plugin-mocha": "^6.3.0", | ||
"eslint": "^7.13.0", | ||
"eslint-plugin-chai-expect": "^2.2.0", | ||
"eslint-plugin-mocha": "^8.0.0", | ||
"eslint-plugin-promise": "^4.2.1", | ||
"eslint-plugin-security": "^1.4.0", | ||
"fancy-log": "^1.3.3", | ||
"fs-extra": "^9.0.0", | ||
"fs-extra": "^9.0.1", | ||
"gulp": "^4.0.2", | ||
@@ -56,7 +57,7 @@ "gulp-babel": "^8.0.0", | ||
"gulp-eslint": "^6.0.0", | ||
"gulp-load-plugins": "^2.0.3", | ||
"gulp-load-plugins": "^2.0.5", | ||
"gulp-plumber": "^1.2.1", | ||
"gulp-sourcemaps": "^2.6.5", | ||
"mocha": "^7.1.2", | ||
"nyc": "^15.0.1" | ||
"gulp-sourcemaps": "^3.0.0", | ||
"mocha": "^8.2.1", | ||
"nyc": "^15.1.0" | ||
}, | ||
@@ -63,0 +64,0 @@ "homepage": "https://github.com/cb1kenobi/hook-emitter", |
47895
6
451
29