Socket
Socket
Sign inDemoInstall

extrinsic-promises

Package Overview
Dependencies
3
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.0 to 1.3.1

.babelrc

4

dist/src/index.js

@@ -129,3 +129,3 @@ "use strict";

value: function adopt(promise) {
promise.then(this.fulfill, this.reject);
promise.then(this.fulfill, this.reject).then(function () {}, function () {});
return this;

@@ -161,2 +161,2 @@ }

ExtrinsicPromise.default = ExtrinsicPromise;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJidWlsdGluUHJvbWlzZUZhY3RvcnkiLCJ3ZiIsIlByb21pc2UiLCJFeHRyaW5zaWNQcm9taXNlIiwicHJvbWlzZUZhY3RvcnkiLCJmdWxmaWxsZWRXaXRoIiwicmVqZWN0ZWRGb3IiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsImZ1bGZpbGwiLCJ3aXRoVmFsdWUiLCJyZWplY3QiLCJmb3JSZWFzb24iLCJwcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ2YWx1ZSIsInJlYXNvbiIsIm9uRnVsZmlsbCIsIm9uUmVqZWN0Iiwid29ya0Z1bmN0aW9uIiwic2V0SW1tZWRpYXRlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7QUFRQSxJQUFNQSx3QkFBd0IsU0FBeEJBLHFCQUF3QixDQUFDQyxFQUFEO0FBQUEsU0FBUSxJQUFJQyxPQUFKLENBQVlELEVBQVosQ0FBUjtBQUFBLENBQTlCOztBQUVBOzs7Ozs7O0lBTU1FLGdCO0FBQ0osOEJBQXFEO0FBQUE7O0FBQUEsUUFBeENDLGNBQXdDLHVFQUF2QkoscUJBQXVCOztBQUFBOztBQUNuRCxRQUFJSyxzQkFBSjtBQUFBLFFBQW1CQyxvQkFBbkI7QUFDQSxRQUFJQyxZQUFZLEtBQWhCO0FBQ0EsUUFBSUMsV0FBVyxLQUFmO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLFVBQUNDLFNBQUQsRUFBZTtBQUM1QixVQUFJLENBQUNILFNBQUQsSUFBYyxDQUFDQyxRQUFuQixFQUE2QjtBQUMzQkQsb0JBQVksSUFBWjtBQUNBRix3QkFBZ0JLLFNBQWhCO0FBQ0Q7QUFDRDtBQUNELEtBTkQ7QUFPQSxTQUFLQyxNQUFMLEdBQWMsVUFBQ0MsU0FBRCxFQUFlO0FBQzNCLFVBQUksQ0FBQ0wsU0FBRCxJQUFjLENBQUNDLFFBQW5CLEVBQTZCO0FBQzNCQSxtQkFBVyxJQUFYO0FBQ0FGLHNCQUFjTSxTQUFkO0FBQ0Q7QUFDRDtBQUNELEtBTkQ7QUFPQSxRQUFNQyxVQUFVWCxRQUFRWSxPQUFSLENBQWdCVixlQUFlLFVBQUNLLE9BQUQsRUFBVUUsTUFBVixFQUFxQjtBQUNsRSxVQUFJSixTQUFKLEVBQWU7QUFDYkUsZ0JBQVFKLGFBQVI7QUFDRCxPQUZELE1BRU8sSUFBSUcsUUFBSixFQUFjO0FBQ25CRyxlQUFPTCxXQUFQO0FBQ0QsT0FGTSxNQUVBO0FBQ0wsY0FBS0csT0FBTCxHQUFlLFlBQWE7QUFDMUJBO0FBQ0E7QUFDRCxTQUhEO0FBSUEsY0FBS0UsTUFBTCxHQUFjLFlBQWE7QUFDekJBO0FBQ0E7QUFDRCxTQUhEO0FBSUQ7QUFDRixLQWYrQixDQUFoQixFQWdCYkksSUFoQmEsQ0FpQlo7QUFBQSxhQUFVLEVBQUNSLFdBQVcsSUFBWixFQUFrQlMsWUFBbEIsRUFBVjtBQUFBLEtBakJZLEVBa0JaO0FBQUEsYUFBVyxFQUFDVCxXQUFXLEtBQVosRUFBbUJTLE9BQU9DLE1BQTFCLEVBQVg7QUFBQSxLQWxCWSxDQUFoQjtBQW9CQSxTQUFLRixJQUFMLEdBQVksVUFBQ0csU0FBRCxFQUFZQyxRQUFaO0FBQUEsYUFBeUJOLFFBQVFFLElBQVIsQ0FBYTtBQUFBLFlBQUVSLFNBQUYsUUFBRUEsU0FBRjtBQUFBLFlBQWFTLEtBQWIsUUFBYUEsS0FBYjtBQUFBLGVBQ2hELENBQUNULFlBQVlXLFNBQVosR0FBd0JDLFFBQXpCLEVBQW1DSCxLQUFuQyxDQURnRDtBQUFBLE9BQWIsQ0FBekI7QUFBQSxLQUFaO0FBRUQ7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7eUJBU01JLFksRUFBYztBQUFBOztBQUNsQkMsbUJBQWEsWUFBTTtBQUNqQixZQUFJO0FBQ0ZELHVCQUFhLE9BQUtYLE9BQWxCLEVBQTJCLE9BQUtFLE1BQWhDO0FBQ0QsU0FGRCxDQUVFLE9BQU9XLEtBQVAsRUFBYztBQUNkLGlCQUFLWCxNQUFMLENBQVlXLEtBQVo7QUFDRDtBQUNGLE9BTkQ7QUFPQSxhQUFPLElBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7OzswQkFVT1QsTyxFQUFTO0FBQ2RBLGNBQVFFLElBQVIsQ0FBYSxLQUFLTixPQUFsQixFQUEyQixLQUFLRSxNQUFoQztBQUNBLGFBQU8sSUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7MkJBTVE7QUFBQTs7QUFDTixhQUFPO0FBQ0xJLGNBQU07QUFBQSxpQkFBYSxPQUFLQSxJQUFMLHlCQUFiO0FBQUE7QUFERCxPQUFQO0FBR0Q7Ozs7OztBQUdIUSxPQUFPQyxPQUFQLEdBQWlCckIsZ0JBQWpCOztBQUVBO0FBQ0FBLGlCQUFpQnNCLE9BQWpCLEdBQTJCdEIsZ0JBQTNCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEgdGhlbmFibGUgcHJvbWlzZSB0aGF0IGNhbiBiZSBzZXR0bGVkIF9leHRyaW5zaWNhbGx5XyxcbiAqIG1lYW5pbmcgZnJvbSBvdXRzaWRlIG9mIGEgcHJvdmlkZWQgd29yayBmdW5jdGlvbi4gSW4gZmFjdCwgdGhlcmUgaXMgbm9cbiAqIHdvcmsgZnVuY3Rpb247IGluIGFkZGl0aW9uIHRvIGB0aGVuYCwgdGhlIG9iamVjdCBleHBvc2VzIHR3byBtZXRob2RzLFxuICogYGZ1bGZpbGxgIGFuZCBgcmVqZWN0YCwgd2hpY2ggeW91IGNhbiBjYWxsIHRvIHNldHRsZSB0aGUgcHJvbWlzZSwganVzdFxuICogbGlrZSB5b3Ugd291bGQgZnJvbSB3aXRoaW4gYSB3b3JrIGZ1bmN0aW9uLlxuICovXG5cbmNvbnN0IGJ1aWx0aW5Qcm9taXNlRmFjdG9yeSA9ICh3ZikgPT4gbmV3IFByb21pc2Uod2YpXG5cbi8qKlxuICogT3B0aW9uYWwgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3RcbiAqIHRoZSBuZXcgYmFzZSBwcm9taXNlLiBUaGlzIGRvZXMgX25vdF8gZXh0ZW5kIGEgcGFydGljdWxhciBjbGFzcyBvciB0eXBlLFxuICogaXQganVzdCB1c2VzIHRoZSBnaXZlbiBwcm9taXNlIGludGVybmFsbHkuIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGVcbiAqIGdsb2JhbCBgUHJvbWlzZWAgY2xhc3MuXG4gKi9cbmNsYXNzIEV4dHJpbnNpY1Byb21pc2Uge1xuICBjb25zdHJ1Y3RvciAocHJvbWlzZUZhY3RvcnkgPSBidWlsdGluUHJvbWlzZUZhY3RvcnkpIHtcbiAgICBsZXQgZnVsZmlsbGVkV2l0aCwgcmVqZWN0ZWRGb3JcbiAgICBsZXQgZnVsZmlsbGVkID0gZmFsc2VcbiAgICBsZXQgcmVqZWN0ZWQgPSBmYWxzZVxuICAgIHRoaXMuZnVsZmlsbCA9ICh3aXRoVmFsdWUpID0+IHtcbiAgICAgIGlmICghZnVsZmlsbGVkICYmICFyZWplY3RlZCkge1xuICAgICAgICBmdWxmaWxsZWQgPSB0cnVlXG4gICAgICAgIGZ1bGZpbGxlZFdpdGggPSB3aXRoVmFsdWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIHRoaXMucmVqZWN0ID0gKGZvclJlYXNvbikgPT4ge1xuICAgICAgaWYgKCFmdWxmaWxsZWQgJiYgIXJlamVjdGVkKSB7XG4gICAgICAgIHJlamVjdGVkID0gdHJ1ZVxuICAgICAgICByZWplY3RlZEZvciA9IGZvclJlYXNvblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShwcm9taXNlRmFjdG9yeSgoZnVsZmlsbCwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZnVsZmlsbGVkKSB7XG4gICAgICAgIGZ1bGZpbGwoZnVsZmlsbGVkV2l0aClcbiAgICAgIH0gZWxzZSBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmVqZWN0KHJlamVjdGVkRm9yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mdWxmaWxsID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBmdWxmaWxsKC4uLmFyZ3MpXG4gICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlamVjdCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KC4uLmFyZ3MpXG4gICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKVxuICAgICAgLnRoZW4oXG4gICAgICAgIHZhbHVlID0+ICh7ZnVsZmlsbGVkOiB0cnVlLCB2YWx1ZX0pLFxuICAgICAgICByZWFzb24gPT4gKHtmdWxmaWxsZWQ6IGZhbHNlLCB2YWx1ZTogcmVhc29ufSlcbiAgICAgIClcbiAgICB0aGlzLnRoZW4gPSAob25GdWxmaWxsLCBvblJlamVjdCkgPT4gcHJvbWlzZS50aGVuKCh7ZnVsZmlsbGVkLCB2YWx1ZX0pID0+XG4gICAgICAoZnVsZmlsbGVkID8gb25GdWxmaWxsIDogb25SZWplY3QpKHZhbHVlKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbHRlcm5hdGl2ZSBwYXR0ZXJuIHdoZXJlIHlvdSBjYW4gcGFzcyBpbiBhIHdvcmsgZnVuY3Rpb25cbiAgICogYWZ0ZXIgY29uc3RydWN0aW9uLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBvbnRvIHRoZSBldmVudCBzdGFja1xuICAgKiB0byBiZSBpbnZva2VkIHdpdGggdGhlIGBmdWxmaWxsYCBhbmQgYHJlamVjdGAgZnVuY3Rpb25zIHRoYXQgd2lsbFxuICAgKiBzZXR0bGUgdGhpcyBFeHRyaW5zaWNQcm9taXNlLCBqdXN0IGxpa2UgdGhlIG5vcm1hbCB3b3JrIGZ1bmN0aW9uIHBhc3NlZFxuICAgKiB0byBhIGBQcm9taXNlYCBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdGhpc2AgZm9yIGNoYWluYWJpbGl0eS5cbiAgICovXG4gIHdvcmsgKHdvcmtGdW5jdGlvbikge1xuICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB3b3JrRnVuY3Rpb24odGhpcy5mdWxmaWxsLCB0aGlzLnJlamVjdClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMucmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXZlIHRoaXMgZXh0cmluc2ljIHByb21pc2UgYWRvcHQgdGhlIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgdGhlbm5hYmxlLiBJZiB0aGUgZ2l2ZW4gdGhlbm5hYmxlXG4gICAqIGZ1bGZpbGxzLCB0aGlzIGV4dHJpbnNpYyBwcm9taXNlIHdpbGwgZnVsZmlsbCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBJZiB0aGUgZ2l2ZW4gdGhlbm5hYmxlIHJlamVjdHMsXG4gICAqIHRoaXMgZXh0cmluc2ljIHByb21pc2Ugd2lsbCByZWplY3QgZm9yIHRoZSBzYW1lIHJlYXNvbi4gV2hpbGUgdGhlIGdpdmVuIHRoZW5uYWJsZSBpcyB1bnNldHRsZWQsXG4gICAqIHRoaXMgZXh0cmluc2ljIHByb21pc2Ugd2lsbCByZW1haW4gdW5zZXR0bGVkLlxuICAgKlxuICAgKiBJZiB0aGlzIGV4dHJpbnNpYyBwcm9taXNlIGlzIGFscmVhZHkgc2V0dGxlZCwgaXQgd2lsbCBub3QgY2hhbmdlLlxuICAgKlxuICAgKiBSZXR1cm4gYmFjayB0aGlzIHNhbWUgb2JqZWN0IGZvciBjb252ZW5pZW5jZS5cbiAgICovXG4gIGFkb3B0IChwcm9taXNlKSB7XG4gICAgcHJvbWlzZS50aGVuKHRoaXMuZnVsZmlsbCwgdGhpcy5yZWplY3QpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdGhlbm5hYmxlIHdoaWNoIGlzIGJvdW5kIHRvIHRoaXMgZXh0cmluc2ljIHByb21pc2UgdGhyb3VnaFxuICAgKiB0aGUgY2xvc3VyZSwgYnV0IG9ubHkgZXhwb3NlcyBhIGB0aGVuYCBtZXRob2QsIHRoZXJlYnkgaGlkaW5nIGFsbCBvdGhlclxuICAgKiBtZXRob2RzIG9mIHRoZSB0aGlzIGV4dHJuaXNpYyBwcm9taXNlIChpLmUuLCBwcmV2ZW50aW5nIGNvZGUgd2hpY2ggb25seVxuICAgKiBoYXMgdGhlIHJldHVybmVkIG9iamVjdCBmcm9tIHNldHRsaW5nIHlvdXIgcHJvbWlzZSkuXG4gICAqL1xuICBoaWRlICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGhlbjogKC4uLmFyZ3MpID0+IHRoaXMudGhlbiguLi5hcmdzKVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEV4dHJpbnNpY1Byb21pc2VcblxuLy8gTGVnYWN5IGludGVyZmFjZSBmb3IgcmVxdWlyZVxuRXh0cmluc2ljUHJvbWlzZS5kZWZhdWx0ID0gRXh0cmluc2ljUHJvbWlzZVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJidWlsdGluUHJvbWlzZUZhY3RvcnkiLCJ3ZiIsIlByb21pc2UiLCJFeHRyaW5zaWNQcm9taXNlIiwicHJvbWlzZUZhY3RvcnkiLCJmdWxmaWxsZWRXaXRoIiwicmVqZWN0ZWRGb3IiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsImZ1bGZpbGwiLCJ3aXRoVmFsdWUiLCJyZWplY3QiLCJmb3JSZWFzb24iLCJwcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ2YWx1ZSIsInJlYXNvbiIsIm9uRnVsZmlsbCIsIm9uUmVqZWN0Iiwid29ya0Z1bmN0aW9uIiwic2V0SW1tZWRpYXRlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7QUFRQSxJQUFNQSx3QkFBd0IsU0FBeEJBLHFCQUF3QixDQUFDQyxFQUFEO0FBQUEsU0FBUSxJQUFJQyxPQUFKLENBQVlELEVBQVosQ0FBUjtBQUFBLENBQTlCOztBQUVBOzs7Ozs7O0lBTU1FLGdCO0FBQ0osOEJBQXFEO0FBQUE7O0FBQUEsUUFBeENDLGNBQXdDLHVFQUF2QkoscUJBQXVCOztBQUFBOztBQUNuRCxRQUFJSyxzQkFBSjtBQUFBLFFBQW1CQyxvQkFBbkI7QUFDQSxRQUFJQyxZQUFZLEtBQWhCO0FBQ0EsUUFBSUMsV0FBVyxLQUFmO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLFVBQUNDLFNBQUQsRUFBZTtBQUM1QixVQUFJLENBQUNILFNBQUQsSUFBYyxDQUFDQyxRQUFuQixFQUE2QjtBQUMzQkQsb0JBQVksSUFBWjtBQUNBRix3QkFBZ0JLLFNBQWhCO0FBQ0Q7QUFDRCxhQUFPLEtBQVA7QUFDRCxLQU5EO0FBT0EsU0FBS0MsTUFBTCxHQUFjLFVBQUNDLFNBQUQsRUFBZTtBQUMzQixVQUFJLENBQUNMLFNBQUQsSUFBYyxDQUFDQyxRQUFuQixFQUE2QjtBQUMzQkEsbUJBQVcsSUFBWDtBQUNBRixzQkFBY00sU0FBZDtBQUNEO0FBQ0QsYUFBTyxLQUFQO0FBQ0QsS0FORDtBQU9BLFFBQU1DLFVBQVVYLFFBQVFZLE9BQVIsQ0FBZ0JWLGVBQWUsVUFBQ0ssT0FBRCxFQUFVRSxNQUFWLEVBQXFCO0FBQ2xFLFVBQUlKLFNBQUosRUFBZTtBQUNiRSxnQkFBUUosYUFBUjtBQUNELE9BRkQsTUFFTyxJQUFJRyxRQUFKLEVBQWM7QUFDbkJHLGVBQU9MLFdBQVA7QUFDRCxPQUZNLE1BRUE7QUFDTCxjQUFLRyxPQUFMLEdBQWUsWUFBYTtBQUMxQkE7QUFDQSxpQkFBTyxLQUFQO0FBQ0QsU0FIRDtBQUlBLGNBQUtFLE1BQUwsR0FBYyxZQUFhO0FBQ3pCQTtBQUNBLGlCQUFPLEtBQVA7QUFDRCxTQUhEO0FBSUQ7QUFDRixLQWYrQixDQUFoQixFQWdCYkksSUFoQmEsQ0FpQlo7QUFBQSxhQUFVLEVBQUNSLFdBQVcsSUFBWixFQUFrQlMsWUFBbEIsRUFBVjtBQUFBLEtBakJZLEVBa0JaO0FBQUEsYUFBVyxFQUFDVCxXQUFXLEtBQVosRUFBbUJTLE9BQU9DLE1BQTFCLEVBQVg7QUFBQSxLQWxCWSxDQUFoQjtBQW9CQSxTQUFLRixJQUFMLEdBQVksVUFBQ0csU0FBRCxFQUFZQyxRQUFaO0FBQUEsYUFBeUJOLFFBQVFFLElBQVIsQ0FBYTtBQUFBLFlBQUVSLFNBQUYsUUFBRUEsU0FBRjtBQUFBLFlBQWFTLEtBQWIsUUFBYUEsS0FBYjtBQUFBLGVBQ2hELENBQUNULFlBQVlXLFNBQVosR0FBd0JDLFFBQXpCLEVBQW1DSCxLQUFuQyxDQURnRDtBQUFBLE9BQWIsQ0FBekI7QUFBQSxLQUFaO0FBRUQ7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7eUJBU01JLFksRUFBYztBQUFBOztBQUNsQkMsbUJBQWEsWUFBTTtBQUNqQixZQUFJO0FBQ0ZELHVCQUFhLE9BQUtYLE9BQWxCLEVBQTJCLE9BQUtFLE1BQWhDO0FBQ0QsU0FGRCxDQUVFLE9BQU9XLEtBQVAsRUFBYztBQUNkLGlCQUFLWCxNQUFMLENBQVlXLEtBQVo7QUFDRDtBQUNGLE9BTkQ7QUFPQSxhQUFPLElBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7OzswQkFVT1QsTyxFQUFTO0FBQ2RBLGNBQVFFLElBQVIsQ0FBYSxLQUFLTixPQUFsQixFQUEyQixLQUFLRSxNQUFoQyxFQUF3Q0ksSUFBeEMsQ0FBNkMsWUFBTSxDQUFFLENBQXJELEVBQXVELFlBQU0sQ0FBRSxDQUEvRDtBQUNBLGFBQU8sSUFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7MkJBTVE7QUFBQTs7QUFDTixhQUFPO0FBQ0xBLGNBQU07QUFBQSxpQkFBYSxPQUFLQSxJQUFMLHlCQUFiO0FBQUE7QUFERCxPQUFQO0FBR0Q7Ozs7OztBQUdIUSxPQUFPQyxPQUFQLEdBQWlCckIsZ0JBQWpCOztBQUVBO0FBQ0FBLGlCQUFpQnNCLE9BQWpCLEdBQTJCdEIsZ0JBQTNCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEgdGhlbmFibGUgcHJvbWlzZSB0aGF0IGNhbiBiZSBzZXR0bGVkIF9leHRyaW5zaWNhbGx5XyxcbiAqIG1lYW5pbmcgZnJvbSBvdXRzaWRlIG9mIGEgcHJvdmlkZWQgd29yayBmdW5jdGlvbi4gSW4gZmFjdCwgdGhlcmUgaXMgbm9cbiAqIHdvcmsgZnVuY3Rpb247IGluIGFkZGl0aW9uIHRvIGB0aGVuYCwgdGhlIG9iamVjdCBleHBvc2VzIHR3byBtZXRob2RzLFxuICogYGZ1bGZpbGxgIGFuZCBgcmVqZWN0YCwgd2hpY2ggeW91IGNhbiBjYWxsIHRvIHNldHRsZSB0aGUgcHJvbWlzZSwganVzdFxuICogbGlrZSB5b3Ugd291bGQgZnJvbSB3aXRoaW4gYSB3b3JrIGZ1bmN0aW9uLlxuICovXG5cbmNvbnN0IGJ1aWx0aW5Qcm9taXNlRmFjdG9yeSA9ICh3ZikgPT4gbmV3IFByb21pc2Uod2YpXG5cbi8qKlxuICogT3B0aW9uYWwgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3RcbiAqIHRoZSBuZXcgYmFzZSBwcm9taXNlLiBUaGlzIGRvZXMgX25vdF8gZXh0ZW5kIGEgcGFydGljdWxhciBjbGFzcyBvciB0eXBlLFxuICogaXQganVzdCB1c2VzIHRoZSBnaXZlbiBwcm9taXNlIGludGVybmFsbHkuIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGVcbiAqIGdsb2JhbCBgUHJvbWlzZWAgY2xhc3MuXG4gKi9cbmNsYXNzIEV4dHJpbnNpY1Byb21pc2Uge1xuICBjb25zdHJ1Y3RvciAocHJvbWlzZUZhY3RvcnkgPSBidWlsdGluUHJvbWlzZUZhY3RvcnkpIHtcbiAgICBsZXQgZnVsZmlsbGVkV2l0aCwgcmVqZWN0ZWRGb3JcbiAgICBsZXQgZnVsZmlsbGVkID0gZmFsc2VcbiAgICBsZXQgcmVqZWN0ZWQgPSBmYWxzZVxuICAgIHRoaXMuZnVsZmlsbCA9ICh3aXRoVmFsdWUpID0+IHtcbiAgICAgIGlmICghZnVsZmlsbGVkICYmICFyZWplY3RlZCkge1xuICAgICAgICBmdWxmaWxsZWQgPSB0cnVlXG4gICAgICAgIGZ1bGZpbGxlZFdpdGggPSB3aXRoVmFsdWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIHRoaXMucmVqZWN0ID0gKGZvclJlYXNvbikgPT4ge1xuICAgICAgaWYgKCFmdWxmaWxsZWQgJiYgIXJlamVjdGVkKSB7XG4gICAgICAgIHJlamVjdGVkID0gdHJ1ZVxuICAgICAgICByZWplY3RlZEZvciA9IGZvclJlYXNvblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShwcm9taXNlRmFjdG9yeSgoZnVsZmlsbCwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZnVsZmlsbGVkKSB7XG4gICAgICAgIGZ1bGZpbGwoZnVsZmlsbGVkV2l0aClcbiAgICAgIH0gZWxzZSBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmVqZWN0KHJlamVjdGVkRm9yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mdWxmaWxsID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBmdWxmaWxsKC4uLmFyZ3MpXG4gICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlamVjdCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KC4uLmFyZ3MpXG4gICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKVxuICAgICAgLnRoZW4oXG4gICAgICAgIHZhbHVlID0+ICh7ZnVsZmlsbGVkOiB0cnVlLCB2YWx1ZX0pLFxuICAgICAgICByZWFzb24gPT4gKHtmdWxmaWxsZWQ6IGZhbHNlLCB2YWx1ZTogcmVhc29ufSlcbiAgICAgIClcbiAgICB0aGlzLnRoZW4gPSAob25GdWxmaWxsLCBvblJlamVjdCkgPT4gcHJvbWlzZS50aGVuKCh7ZnVsZmlsbGVkLCB2YWx1ZX0pID0+XG4gICAgICAoZnVsZmlsbGVkID8gb25GdWxmaWxsIDogb25SZWplY3QpKHZhbHVlKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbHRlcm5hdGl2ZSBwYXR0ZXJuIHdoZXJlIHlvdSBjYW4gcGFzcyBpbiBhIHdvcmsgZnVuY3Rpb25cbiAgICogYWZ0ZXIgY29uc3RydWN0aW9uLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBvbnRvIHRoZSBldmVudCBzdGFja1xuICAgKiB0byBiZSBpbnZva2VkIHdpdGggdGhlIGBmdWxmaWxsYCBhbmQgYHJlamVjdGAgZnVuY3Rpb25zIHRoYXQgd2lsbFxuICAgKiBzZXR0bGUgdGhpcyBFeHRyaW5zaWNQcm9taXNlLCBqdXN0IGxpa2UgdGhlIG5vcm1hbCB3b3JrIGZ1bmN0aW9uIHBhc3NlZFxuICAgKiB0byBhIGBQcm9taXNlYCBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdGhpc2AgZm9yIGNoYWluYWJpbGl0eS5cbiAgICovXG4gIHdvcmsgKHdvcmtGdW5jdGlvbikge1xuICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB3b3JrRnVuY3Rpb24odGhpcy5mdWxmaWxsLCB0aGlzLnJlamVjdClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMucmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXZlIHRoaXMgZXh0cmluc2ljIHByb21pc2UgYWRvcHQgdGhlIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgdGhlbm5hYmxlLiBJZiB0aGUgZ2l2ZW4gdGhlbm5hYmxlXG4gICAqIGZ1bGZpbGxzLCB0aGlzIGV4dHJpbnNpYyBwcm9taXNlIHdpbGwgZnVsZmlsbCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBJZiB0aGUgZ2l2ZW4gdGhlbm5hYmxlIHJlamVjdHMsXG4gICAqIHRoaXMgZXh0cmluc2ljIHByb21pc2Ugd2lsbCByZWplY3QgZm9yIHRoZSBzYW1lIHJlYXNvbi4gV2hpbGUgdGhlIGdpdmVuIHRoZW5uYWJsZSBpcyB1bnNldHRsZWQsXG4gICAqIHRoaXMgZXh0cmluc2ljIHByb21pc2Ugd2lsbCByZW1haW4gdW5zZXR0bGVkLlxuICAgKlxuICAgKiBJZiB0aGlzIGV4dHJpbnNpYyBwcm9taXNlIGlzIGFscmVhZHkgc2V0dGxlZCwgaXQgd2lsbCBub3QgY2hhbmdlLlxuICAgKlxuICAgKiBSZXR1cm4gYmFjayB0aGlzIHNhbWUgb2JqZWN0IGZvciBjb252ZW5pZW5jZS5cbiAgICovXG4gIGFkb3B0IChwcm9taXNlKSB7XG4gICAgcHJvbWlzZS50aGVuKHRoaXMuZnVsZmlsbCwgdGhpcy5yZWplY3QpLnRoZW4oKCkgPT4ge30sICgpID0+IHt9KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHRoZW5uYWJsZSB3aGljaCBpcyBib3VuZCB0byB0aGlzIGV4dHJpbnNpYyBwcm9taXNlIHRocm91Z2hcbiAgICogdGhlIGNsb3N1cmUsIGJ1dCBvbmx5IGV4cG9zZXMgYSBgdGhlbmAgbWV0aG9kLCB0aGVyZWJ5IGhpZGluZyBhbGwgb3RoZXJcbiAgICogbWV0aG9kcyBvZiB0aGUgdGhpcyBleHRybmlzaWMgcHJvbWlzZSAoaS5lLiwgcHJldmVudGluZyBjb2RlIHdoaWNoIG9ubHlcbiAgICogaGFzIHRoZSByZXR1cm5lZCBvYmplY3QgZnJvbSBzZXR0bGluZyB5b3VyIHByb21pc2UpLlxuICAgKi9cbiAgaGlkZSAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRoZW46ICguLi5hcmdzKSA9PiB0aGlzLnRoZW4oLi4uYXJncylcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFeHRyaW5zaWNQcm9taXNlXG5cbi8vIExlZ2FjeSBpbnRlcmZhY2UgZm9yIHJlcXVpcmVcbkV4dHJpbnNpY1Byb21pc2UuZGVmYXVsdCA9IEV4dHJpbnNpY1Byb21pc2VcbiJdfQ==

@@ -51,3 +51,3 @@ 'use strict';

it('should be requirable as an unamed import', function () {
var ImportedClass = require('../..');
var ImportedClass = require('../../src');
var inst = new ImportedClass();

@@ -60,3 +60,3 @@ (0, _chai.expect)(ImportedClass).to.be.an.instanceof(Function);

it('should be requirable as "default" on the module (legacy interface)', function () {
var ImportedClass = require('../..').default;
var ImportedClass = require('../../src').default;
var inst = new ImportedClass();

@@ -582,2 +582,2 @@ (0, _chai.expect)(ImportedClass).to.be.an.instanceof(Function);

}(SynchronousPromise);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qvc3JjL2luZGV4LnNwZWMuanMiXSwibmFtZXMiOlsidXNlIiwiZGVzY3JpYmUiLCJpdCIsIkltcG9ydGVkQ2xhc3MiLCJyZXF1aXJlIiwiaW5zdCIsInRvIiwiYmUiLCJhbiIsImluc3RhbmNlb2YiLCJGdW5jdGlvbiIsIm5hbWUiLCJlcXVhbCIsImhhdmUiLCJwcm9wZXJ0eSIsIndoaWNoIiwiaGFzIiwiZXF1YWxzIiwiZGVmYXVsdCIsInRlc3RGdWxmaWxsIiwicHJvbWlzZVVuZGVyVGVzdCIsImZ1bGZpbGwiLCJldmVudHVhbGx5IiwicmVqZWN0IiwiRXJyb3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJ0aGVuIiwidGVzdFJlYXNvbiIsInJlamVjdGVkV2l0aCIsIlN5bmNocm9ub3VzUHJvbWlzZSIsIndmIiwiaGlkZGVuIiwiaGlkZSIsImFkb3B0ZWRQcm9taXNlIiwiYWRvcHQiLCJhbm90aGVyRnVsZmlsbCIsImZ1bGZpbGxWYWx1ZSIsIndvcmtTcHkiLCJzcHkiLCJ3b3JrIiwiYmVlbiIsImNhbGxlZE9uY2UiLCJMYXRlclByb21pc2UiLCJ3b3JrZnVuY3Rpb24iLCJzdGF0ZSIsIm9uRnVsZmlsbCIsIm9uUmVqZWN0Iiwid2l0aFZhbHVlIiwiZnVsZmlsbGVkV2l0aCIsImZvckVhY2giLCJoYW5kbGUiLCJoIiwiYmVjYXVzZSIsIl9jYWxsV29ya0Z1bmN0aW9uIiwiZXJyb3IiLCJ2YWx1ZSIsImhhbmRsZXIiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBOzs7O0FBR0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztzQ0FWQTtBQUNBLG9DLENBQXNDOztBQUV0Qzs7O0FBR0E7OztBQU1BLGVBQUtBLEdBQUw7QUFDQSxlQUFLQSxHQUFMOztBQUVBQyxTQUFTLG9CQUFULEVBQStCLFlBQU07QUFDbkNDLEtBQUcsMENBQUgsRUFBK0MsWUFBTTtBQUNuRCxRQUFNQyxnQkFBZ0JD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ICovXG4vKiBlc2xpbnQgbm8tdW51c2VkLWV4cHJlc3Npb25zOjAgKi8gIC8vIGZvciBleHBlY3QgbWFnaWMuXG5cbi8vIE1vZHVsZSB1bmRlciB0ZXN0XG5pbXBvcnQgRXh0cmluc2ljUHJvbWlzZSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnXG5cbi8vIFN1cHBvcnRcbmltcG9ydCBjaGFpLCB7ZXhwZWN0fSBmcm9tICdjaGFpJ1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnXG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nXG5pbXBvcnQgc2lub25DaGFpIGZyb20gJ3Npbm9uLWNoYWknXG5cbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKVxuY2hhaS51c2Uoc2lub25DaGFpKVxuXG5kZXNjcmliZSgnZXh0cmluc2ljLXByb21pc2VzJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJlIHJlcXVpcmFibGUgYXMgYW4gdW5hbWVkIGltcG9ydCcsICgpID0+IHtcbiAgICBjb25zdCBJbXBvcnRlZENsYXNzID0gcmVxdWlyZSgnLi4vLi4nKVxuICAgIGNvbnN0IGluc3QgPSBuZXcgSW1wb3J0ZWRDbGFzcygpXG4gICAgZXhwZWN0KEltcG9ydGVkQ2xhc3MpLnRvLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pXG4gICAgZXhwZWN0KEltcG9ydGVkQ2xhc3MubmFtZSkudG8uYmUuZXF1YWwoJ0V4dHJpbnNpY1Byb21pc2UnKVxuICAgIGV4cGVjdChpbnN0KS50by5oYXZlLnByb3BlcnR5KCdjb25zdHJ1Y3RvcicpLndoaWNoLmhhcy5wcm9wZXJ0eSgnbmFtZScpLndoaWNoLmVxdWFscygnRXh0cmluc2ljUHJvbWlzZScpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBiZSByZXF1aXJhYmxlIGFzIFwiZGVmYXVsdFwiIG9uIHRoZSBtb2R1bGUgKGxlZ2FjeSBpbnRlcmZhY2UpJywgKCkgPT4ge1xuICAgIGNvbnN0IEltcG9ydGVkQ2xhc3MgPSByZXF1aXJlKCcuLi8uLicpLmRlZmF1bHRcbiAgICBjb25zdCBpbnN0ID0gbmV3IEltcG9ydGVkQ2xhc3MoKVxuICAgIGV4cGVjdChJbXBvcnRlZENsYXNzKS50by5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKVxuICAgIGV4cGVjdChJbXBvcnRlZENsYXNzLm5hbWUpLnRvLmJlLmVxdWFsKCdFeHRyaW5zaWNQcm9taXNlJylcbiAgICBleHBlY3QoaW5zdCkudG8uaGF2ZS5wcm9wZXJ0eSgnY29uc3RydWN0b3InKS53aGljaC5oYXMucHJvcGVydHkoJ25hbWUnKS53aGljaC5lcXVhbHMoJ0V4dHJpbnNpY1Byb21pc2UnKVxuICB9KVxuXG4gIGl0KCdTaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gLmZ1bGZpbGwoKSBtZXRob2QgaXMgY2FsbGVkJywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuXG4gICAgLy8gd2hlblxuICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcblxuICAgIC8vIHRoZW5cbiAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBoYXZlIGZ1bGZpbGwgYXMgYSBib3VuZCBtZXRob2QnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG4gICAgY29uc3QgZnVsZmlsbCA9IHByb21pc2VVbmRlclRlc3QuZnVsZmlsbFxuXG4gICAgLy8gd2hlblxuICAgIGZ1bGZpbGwodGVzdEZ1bGZpbGwpXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgZnVsZmlsbCBldmVuIGlmIC5yZWplY3QoKSBpcyBjYWxsZWQgYWZ0ZXIgLmZ1bGZpbGwoKScsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QobmV3IEVycm9yKCd0ZXN0LWVycm9yJykpXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBpbml0aWFsIHZhbHVlIGlmIC5mdWxmaWxsKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzJywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuXG4gICAgLy8gd2hlblxuICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcbiAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwoJ3NvbWUgb3RoZXIgdmFsdWUnKVxuXG4gICAgLy8gdGhlblxuICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgfSlcblxuICBpdCgnU2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIC5mdWxmaWxsKCkgbWV0aG9kIGlzIGNhbGxlZCBsYXRlciBAc2xvdycsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMTApXG4gICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gLnJlamVjdCgpIG1ldGhvZCBpcyBjYWxsZWQnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuXG4gICAgLy8gdGhlblxuICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBoYXZlIHJlamVjdCBhcyBhIGJvdW5kIG1ldGhvZCcsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ1Rlc3QgUmVhc29uJylcbiAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgIGNvbnN0IHJlamVjdCA9IHByb21pc2VVbmRlclRlc3QucmVqZWN0XG5cbiAgICAvLyB3aGVuXG4gICAgcmVqZWN0KHRlc3RSZWFzb24pXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgfSlcblxuICBpdCgnc2hvdWxkIHJlamVjdCBldmVuIGlmIC5mdWxmaWxsKCkgaXMgY2FsbGVkIGFmdGVyIC5yZWplY3QoKScsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ1Rlc3QgUmVhc29uJylcbiAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuXG4gICAgLy8gd2hlblxuICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKCdzb21lIHZhbHVlJylcblxuICAgIC8vIHRoZW5cbiAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggdGhlIGluaXRpYWwgcmVhc29uIGlmIC5yZWplY3QoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KG5ldyBFcnJvcignU29tZSBvdGhlciByZWFzb24nKSlcblxuICAgIC8vIHRoZW5cbiAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiAucmVqZWN0IG1ldGhvZCBpcyBjYWxsZWQgbGF0ZXIgQHNsb3cnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgMTApXG4gICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pKVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIGEgUHJvbWlzZSBjYWxscyB0aGUgd29yayBmdW5jdGlvbiBzeW5jaHJvbm91c2x5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gLmZ1bGZpbGwgbWV0aG9kIGlzIGNhbGxlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IG5ldyBTeW5jaHJvbm91c1Byb21pc2Uod2YpKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIC5yZWplY3QgbWV0aG9kIGlzIGNhbGxlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IFN5bmNocm9ub3VzUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgndGhlIGhpZGUoKSBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSB0aGVubmFibGUgdGhhdCBmdWxmaWxscyB3aGVuIHRoZSBwcm9taXNlIGZ1bGZpbGxzJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgaGlkZGVuID0gcHJvbWlzZVVuZGVyVGVzdC5oaWRlKClcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KGhpZGRlbikudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSB0aGVubmFibGUgdGhhdCByZWplY3RzIHdoZW4gdGhlIHByb21pc2UgcmVqZWN0cycsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgaGlkZGVuID0gcHJvbWlzZVVuZGVyVGVzdC5oaWRlKClcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChoaWRkZW4pLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ2Fkb3B0KCkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBzYW1lIHZhbHVlIHdoZW4gdGhlIGFkb3B0ZWQgcHJvbWlzZSBmdWxmaWxscycsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IGFkb3B0ZWRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHRlc3RGdWxmaWxsKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmFkb3B0KGFkb3B0ZWRQcm9taXNlKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmVtYWluIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlIGlmIGl0IHdhcyBhbHJlYWR5IGZ1bGZpbGxlZCB3aGVuIHRoZSBhZG9wdGVkIHByb21pc2UgaXMgYWRvcHRlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgICAgY29uc3QgYW5vdGhlckZ1bGZpbGwgPSAnYW5vdGhlci12YWx1ZSdcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG4gICAgICBjb25zdCBhZG9wdGVkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhbm90aGVyRnVsZmlsbClcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5hZG9wdChhZG9wdGVkUHJvbWlzZSlcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJlbWFpbiBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZSBpZiBpdCB3YXMgZnVsZmlsbGVkIGFmdGVyIGEgcHJvbWlzZSBpcyBhZG9wdGVkIGJ1dCBiZWZvcmUgaXQgZnVsZmlsbHMnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IGFub3RoZXJGdWxmaWxsID0gJ2Fub3RoZXItdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgYWRvcHRlZFByb21pc2UgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuYWRvcHQoYWRvcHRlZFByb21pc2UpXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG4gICAgICBhZG9wdGVkUHJvbWlzZS5mdWxmaWxsKGFub3RoZXJGdWxmaWxsKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggdGhlIHNhbWUgcmVhc29uIHdoZW4gdGhlIGFkb3B0ZWQgcHJvbWlzZSByZWplY3RzJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ1Rlc3QgUmVhc29uJylcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG4gICAgICBjb25zdCBhZG9wdGVkUHJvbWlzZSA9IFByb21pc2UucmVqZWN0KHRlc3RSZWFzb24pXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuYWRvcHQoYWRvcHRlZFByb21pc2UpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnd29yaygpIG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNhbGwgdGhlIHByb3ZpZGVkIHdvcmsgZnVuY3Rpb24gYW5kIGZ1bGZpbGxlZCB3aGVuIHRoZSBmaXJzdCBhcmcgaXMgaW52b2tlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgZnVsZmlsbFZhbHVlID0gJ2Z1bGZpbGxlZC13aXRoLXRoaXMnXG4gICAgICBjb25zdCB3b3JrU3B5ID0gc2lub24uc3B5KChmdWxmaWxsKSA9PiB7XG4gICAgICAgIGZ1bGZpbGwoZnVsZmlsbFZhbHVlKVxuICAgICAgfSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC53b3JrKHdvcmtTcHkpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbChmdWxmaWxsVmFsdWUpXG4gICAgICAgIC50aGVuKCgpID0+IGV4cGVjdCh3b3JrU3B5KS50by5oYXZlLmJlZW4uY2FsbGVkT25jZSlcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIHRoZSBwcm92aWRlZCB3b3JrIGZ1bmN0aW9uIGFuZCByZWplY3Qgd2hlbiB0aGUgc2Vjb25kIGFyZyBpcyBpbnZva2VkJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCd0ZXN0LWVycm9yJylcbiAgICAgIGNvbnN0IHdvcmtTcHkgPSBzaW5vbi5zcHkoKGZ1bGZpbGwsIHJlamVjdCkgPT4ge1xuICAgICAgICByZWplY3QodGVzdFJlYXNvbilcbiAgICAgIH0pXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3Qud29yayh3b3JrU3B5KVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgICAgICAudGhlbigoKSA9PiBleHBlY3Qod29ya1NweSkudG8uaGF2ZS5iZWVuLmNhbGxlZE9uY2UpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgY2FsbCB0aGUgcHJvdmlkZWQgd29yayBmdW5jdGlvbiBhbmQgcmVqZWN0IGlmIGl0IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdC1lcnJvcicpXG4gICAgICBjb25zdCB3b3JrU3B5ID0gc2lub24uc3B5KCgpID0+IHtcbiAgICAgICAgdGhyb3cgdGVzdFJlYXNvblxuICAgICAgfSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC53b3JrKHdvcmtTcHkpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgICAgIC50aGVuKCgpID0+IGV4cGVjdCh3b3JrU3B5KS50by5oYXZlLmJlZW4uY2FsbGVkT25jZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd3aGVuIHByb21pc2UgY29uc3RydWN0b3IgY2FsbHMgd29ya2Z1bmN0aW9uIG11Y2ggbGF0ZXIgQHNsb3cnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiAuZnVsZmlsbCBtZXRob2QgaXMgY2FsbGVkIGltbWVkaWF0ZWx5JywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IExhdGVyUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiAucmVqZWN0KCkgaXMgY2FsbGVkIGFmdGVyIC5mdWxmaWxsKCknLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSh3ZiA9PiBuZXcgTGF0ZXJQcm9taXNlKHdmKSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QobmV3IEVycm9yKCd0ZXN0LWVycm9yJykpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCBmdWxmaWxsIHdpdGggdGhlIGluaXRpYWwgdmFsdWUgaWYgLmZ1bGZpbGwoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSh3ZiA9PiBuZXcgTGF0ZXJQcm9taXNlKHdmKSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKCdzb21lIG90aGVyIHZhbHVlJylcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gLnJlamVjdCBtZXRob2QgaXMgY2FsbGVkIGltbWVkaWF0ZWx5JywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ1Rlc3QgUmVhc29uJylcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSh3ZiA9PiBuZXcgTGF0ZXJQcm9taXNlKHdmKSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgZXZlbiBpZiAucmVqZWN0KCkgaXMgY2FsbGVkIGFmdGVyIC5mdWxmaWxsKCknLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IG5ldyBMYXRlclByb21pc2Uod2YpKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKCdzb21lIHZhbHVlJylcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCB0aGUgaW5pdGlhbCByZWFzb24gaWYgLnJlamVjdCgpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IExhdGVyUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdChuZXcgRXJyb3IoJ1NvbWUgb3RoZXIgcmVhc29uJykpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiBhIGN1c3RvbSBwcm9taXNlIGNvbnN0cnVjdG9yIGlzIHByb3ZpZGVkIHRoYXQgc3dhcHMgZnVsZmlsbCBhbmQgcmVqZWN0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gdGhlIC5mdWxmaWxsKCkgbWV0aG9kIGlzIGNhbGxlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uod2YpXG4gICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGVzdC1lcnJvcicpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKCkgPT4gJ2Z1bGZpbGxlZCdcbiAgICAgICAgICApXG4gICAgICB9KVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwoKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCgndGVzdC1lcnJvcicpXG4gICAgfSlcbiAgfSlcbn0pXG5cbmNsYXNzIFN5bmNocm9ub3VzUHJvbWlzZSB7XG4gIGNvbnN0cnVjdG9yICh3b3JrZnVuY3Rpb24pIHtcbiAgICB0aGlzLnN0YXRlID0gJ3BlbmRpbmcnXG4gICAgdGhpcy5vbkZ1bGZpbGwgPSBbXVxuICAgIHRoaXMub25SZWplY3QgPSBbXVxuXG4gICAgY29uc3QgZnVsZmlsbCA9ICh3aXRoVmFsdWUpID0+IHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnZnVsZmlsbGVkJ1xuICAgICAgdGhpcy5mdWxmaWxsZWRXaXRoID0gd2l0aFZhbHVlXG4gICAgICB0aGlzLm9uRnVsZmlsbC5mb3JFYWNoKGggPT4gdGhpcy5oYW5kbGUoaCwgd2l0aFZhbHVlKSlcbiAgICB9XG5cbiAgICBjb25zdCByZWplY3QgPSAoYmVjYXVzZSkgPT4ge1xuICAgICAgdGhpcy5zdGF0ZSA9ICdyZWplY3RlZCdcbiAgICAgIHRoaXMucmVqZWN0ZWRXaXRoID0gYmVjYXVzZVxuICAgICAgdGhpcy5vblJlamVjdC5mb3JFYWNoKGggPT4gdGhpcy5oYW5kbGUoaCwgYmVjYXVzZSkpXG4gICAgfVxuXG4gICAgdGhpcy5fY2FsbFdvcmtGdW5jdGlvbih3b3JrZnVuY3Rpb24sIGZ1bGZpbGwsIHJlamVjdClcbiAgfVxuXG4gIF9jYWxsV29ya0Z1bmN0aW9uICh3b3JrZnVuY3Rpb24sIGZ1bGZpbGwsIHJlamVjdCkge1xuICAgIHRyeSB7XG4gICAgICB3b3JrZnVuY3Rpb24oZnVsZmlsbCwgcmVqZWN0KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlICh7aGFuZGxlciwgZnVsZmlsbCwgcmVqZWN0fSwgdmFsdWUpIHtcbiAgICB0cnkge1xuICAgICAgZnVsZmlsbChoYW5kbGVyKHZhbHVlKSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIHRoZW4gKG9uRnVsZmlsbCwgb25SZWplY3QpIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICByZXR1cm4gbmV3IFN5bmNocm9ub3VzUHJvbWlzZSgoZnVsZmlsbCwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMub25GdWxmaWxsLnB1c2goe2hhbmRsZXI6IG9uRnVsZmlsbCwgZnVsZmlsbCwgcmVqZWN0fSlcbiAgICAgICAgdGhpcy5vblJlamVjdC5wdXNoKHtoYW5kbGVyOiBvblJlamVjdCwgZnVsZmlsbCwgcmVqZWN0fSlcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSAnZnVsZmlsbGVkJykge1xuICAgICAgcmV0dXJuIG5ldyBTeW5jaHJvbm91c1Byb21pc2UoKGZ1bGZpbGwsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZSh7aGFuZGxlcjogb25GdWxmaWxsLCBmdWxmaWxsLCByZWplY3R9LCB0aGlzLmZ1bGZpbGxlZFdpdGgpXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgcmV0dXJuIG5ldyBTeW5jaHJvbm91c1Byb21pc2UoKGZ1bGZpbGwsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZSh7aGFuZGxlcjogb25SZWplY3QsIGZ1bGZpbGwsIHJlamVjdH0sIHRoaXMucmVqZWN0ZWRXaXRoKVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTGF0ZXJQcm9taXNlIGV4dGVuZHMgU3luY2hyb25vdXNQcm9taXNlIHtcbiAgX2NhbGxXb3JrRnVuY3Rpb24gKHdvcmtmdW5jdGlvbiwgZnVsZmlsbCwgcmVqZWN0KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB3b3JrZnVuY3Rpb24oZnVsZmlsbCwgcmVqZWN0KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0sIDEwKVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qvc3JjL2luZGV4LnNwZWMuanMiXSwibmFtZXMiOlsiY2hhaSIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwic2lub25DaGFpIiwiZGVzY3JpYmUiLCJpdCIsIkltcG9ydGVkQ2xhc3MiLCJyZXF1aXJlIiwiaW5zdCIsInRvIiwiYmUiLCJhbiIsImluc3RhbmNlb2YiLCJGdW5jdGlvbiIsIm5hbWUiLCJlcXVhbCIsImhhdmUiLCJwcm9wZXJ0eSIsIndoaWNoIiwiaGFzIiwiZXF1YWxzIiwiZGVmYXVsdCIsInRlc3RGdWxmaWxsIiwicHJvbWlzZVVuZGVyVGVzdCIsIkV4dHJpbnNpY1Byb21pc2UiLCJmdWxmaWxsIiwiZXZlbnR1YWxseSIsInJlamVjdCIsIkVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwidGhlbiIsInRlc3RSZWFzb24iLCJyZWplY3RlZFdpdGgiLCJTeW5jaHJvbm91c1Byb21pc2UiLCJ3ZiIsImhpZGRlbiIsImhpZGUiLCJhZG9wdGVkUHJvbWlzZSIsImFkb3B0IiwiYW5vdGhlckZ1bGZpbGwiLCJmdWxmaWxsVmFsdWUiLCJ3b3JrU3B5Iiwic2lub24iLCJzcHkiLCJ3b3JrIiwiYmVlbiIsImNhbGxlZE9uY2UiLCJMYXRlclByb21pc2UiLCJ3b3JrZnVuY3Rpb24iLCJzdGF0ZSIsIm9uRnVsZmlsbCIsIm9uUmVqZWN0Iiwid2l0aFZhbHVlIiwiZnVsZmlsbGVkV2l0aCIsImZvckVhY2giLCJoYW5kbGUiLCJoIiwiYmVjYXVzZSIsIl9jYWxsV29ya0Z1bmN0aW9uIiwiZXJyb3IiLCJ2YWx1ZSIsImhhbmRsZXIiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBOzs7O0FBR0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztzQ0FWQTtBQUNBLG9DLENBQXNDOztBQUV0Qzs7O0FBR0E7OztBQU1BQSxlQUFLQyxHQUFMLENBQVNDLHdCQUFUO0FBQ0FGLGVBQUtDLEdBQUws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QUNqRCxpQkFBSzhCLE1BQUwsQ0FBWSxFQUFDTSxTQUFTVixRQUFWLEVBQW9CNUIsZ0JBQXBCLEVBQTZCRSxjQUE3QixFQUFaLEVBQWtELE9BQUtPLFlBQXZEO0FBQ0QsU0FGTSxDQUFQO0FBR0Q7QUFDRjs7Ozs7O0lBR0dlLFk7Ozs7Ozs7Ozs7O3NDQUNlQyxZLEVBQWN6QixPLEVBQVNFLE0sRUFBUTtBQUNoREksaUJBQVcsWUFBTTtBQUNmLFlBQUk7QUFDRm1CLHVCQUFhekIsT0FBYixFQUFzQkUsTUFBdEI7QUFDRCxTQUZELENBRUUsT0FBT2tDLEtBQVAsRUFBYztBQUNkbEMsaUJBQU9rQyxLQUFQO0FBQ0Q7QUFDRixPQU5ELEVBTUcsRUFOSDtBQU9EOzs7O0VBVHdCMUIsa0IiLCJmaWxlIjoiaW5kZXguc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgbW9jaGEgKi9cbi8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6MCAqLyAgLy8gZm9yIGV4cGVjdCBtYWdpYy5cblxuLy8gTW9kdWxlIHVuZGVyIHRlc3RcbmltcG9ydCBFeHRyaW5zaWNQcm9taXNlIGZyb20gJy4uLy4uL3NyYy9pbmRleCdcblxuLy8gU3VwcG9ydFxuaW1wb3J0IGNoYWksIHtleHBlY3R9IGZyb20gJ2NoYWknXG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCdcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbidcbmltcG9ydCBzaW5vbkNoYWkgZnJvbSAnc2lub24tY2hhaSdcblxuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpXG5jaGFpLnVzZShzaW5vbkNoYWkpXG5cbmRlc2NyaWJlKCdleHRyaW5zaWMtcHJvbWlzZXMnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgYmUgcmVxdWlyYWJsZSBhcyBhbiB1bmFtZWQgaW1wb3J0JywgKCkgPT4ge1xuICAgIGNvbnN0IEltcG9ydGVkQ2xhc3MgPSByZXF1aXJlKCcuLi8uLi9zcmMnKVxuICAgIGNvbnN0IGluc3QgPSBuZXcgSW1wb3J0ZWRDbGFzcygpXG4gICAgZXhwZWN0KEltcG9ydGVkQ2xhc3MpLnRvLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pXG4gICAgZXhwZWN0KEltcG9ydGVkQ2xhc3MubmFtZSkudG8uYmUuZXF1YWwoJ0V4dHJpbnNpY1Byb21pc2UnKVxuICAgIGV4cGVjdChpbnN0KS50by5oYXZlLnByb3BlcnR5KCdjb25zdHJ1Y3RvcicpLndoaWNoLmhhcy5wcm9wZXJ0eSgnbmFtZScpLndoaWNoLmVxdWFscygnRXh0cmluc2ljUHJvbWlzZScpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBiZSByZXF1aXJhYmxlIGFzIFwiZGVmYXVsdFwiIG9uIHRoZSBtb2R1bGUgKGxlZ2FjeSBpbnRlcmZhY2UpJywgKCkgPT4ge1xuICAgIGNvbnN0IEltcG9ydGVkQ2xhc3MgPSByZXF1aXJlKCcuLi8uLi9zcmMnKS5kZWZhdWx0XG4gICAgY29uc3QgaW5zdCA9IG5ldyBJbXBvcnRlZENsYXNzKClcbiAgICBleHBlY3QoSW1wb3J0ZWRDbGFzcykudG8uYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbilcbiAgICBleHBlY3QoSW1wb3J0ZWRDbGFzcy5uYW1lKS50by5iZS5lcXVhbCgnRXh0cmluc2ljUHJvbWlzZScpXG4gICAgZXhwZWN0KGluc3QpLnRvLmhhdmUucHJvcGVydHkoJ2NvbnN0cnVjdG9yJykud2hpY2guaGFzLnByb3BlcnR5KCduYW1lJykud2hpY2guZXF1YWxzKCdFeHRyaW5zaWNQcm9taXNlJylcbiAgfSlcblxuICBpdCgnU2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIC5mdWxmaWxsKCkgbWV0aG9kIGlzIGNhbGxlZCcsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgaGF2ZSBmdWxmaWxsIGFzIGEgYm91bmQgbWV0aG9kJywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgIGNvbnN0IGZ1bGZpbGwgPSBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGxcblxuICAgIC8vIHdoZW5cbiAgICBmdWxmaWxsKHRlc3RGdWxmaWxsKVxuXG4gICAgLy8gdGhlblxuICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgfSlcblxuICBpdCgnc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiAucmVqZWN0KCkgaXMgY2FsbGVkIGFmdGVyIC5mdWxmaWxsKCknLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAvLyB3aGVuXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KG5ldyBFcnJvcigndGVzdC1lcnJvcicpKVxuXG4gICAgLy8gdGhlblxuICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgfSlcblxuICBpdCgnc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZSBpZiAuZnVsZmlsbCgpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycsICgpID0+IHtcbiAgICAvLyBnaXZlblxuICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKCdzb21lIG90aGVyIHZhbHVlJylcblxuICAgIC8vIHRoZW5cbiAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gIH0pXG5cbiAgaXQoJ1Nob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiAuZnVsZmlsbCgpIG1ldGhvZCBpcyBjYWxsZWQgbGF0ZXIgQHNsb3cnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAvLyB3aGVuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDEwKVxuICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbCkpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIC5yZWplY3QoKSBtZXRob2QgaXMgY2FsbGVkJywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAvLyB3aGVuXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcblxuICAgIC8vIHRoZW5cbiAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgaGF2ZSByZWplY3QgYXMgYSBib3VuZCBtZXRob2QnLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICBjb25zdCByZWplY3QgPSBwcm9taXNlVW5kZXJUZXN0LnJlamVjdFxuXG4gICAgLy8gd2hlblxuICAgIHJlamVjdCh0ZXN0UmVhc29uKVxuXG4gICAgLy8gdGhlblxuICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgZXZlbiBpZiAuZnVsZmlsbCgpIGlzIGNhbGxlZCBhZnRlciAucmVqZWN0KCknLCAoKSA9PiB7XG4gICAgLy8gZ2l2ZW5cbiAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcblxuICAgIC8vIHdoZW5cbiAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCgnc29tZSB2YWx1ZScpXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgfSlcblxuICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBpbml0aWFsIHJlYXNvbiBpZiAucmVqZWN0KCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzJywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAvLyB3aGVuXG4gICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcbiAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdChuZXcgRXJyb3IoJ1NvbWUgb3RoZXIgcmVhc29uJykpXG5cbiAgICAvLyB0aGVuXG4gICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgfSlcblxuICBpdCgnc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gLnJlamVjdCBtZXRob2QgaXMgY2FsbGVkIGxhdGVyIEBzbG93JywgKCkgPT4ge1xuICAgIC8vIGdpdmVuXG4gICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG5cbiAgICAvLyB3aGVuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDEwKVxuICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKSlcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiBhIFByb21pc2UgY2FsbHMgdGhlIHdvcmsgZnVuY3Rpb24gc3luY2hyb25vdXNseScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZ1bGZpbGwgcHJvbWlzZSB3aGVuIC5mdWxmaWxsIG1ldGhvZCBpcyBjYWxsZWQnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSh3ZiA9PiBuZXcgU3luY2hyb25vdXNQcm9taXNlKHdmKSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiAucmVqZWN0IG1ldGhvZCBpcyBjYWxsZWQnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IG5ldyBTeW5jaHJvbm91c1Byb21pc2Uod2YpKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3RoZSBoaWRlKCkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdGhlbm5hYmxlIHRoYXQgZnVsZmlsbHMgd2hlbiB0aGUgcHJvbWlzZSBmdWxmaWxscycsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IGhpZGRlbiA9IHByb21pc2VVbmRlclRlc3QuaGlkZSgpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChoaWRkZW4pLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdGhlbm5hYmxlIHRoYXQgcmVqZWN0cyB3aGVuIHRoZSBwcm9taXNlIHJlamVjdHMnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IGhpZGRlbiA9IHByb21pc2VVbmRlclRlc3QuaGlkZSgpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QoaGlkZGVuKS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdhZG9wdCgpIG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgc2FtZSB2YWx1ZSB3aGVuIHRoZSBhZG9wdGVkIHByb21pc2UgZnVsZmlsbHMnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSgpXG4gICAgICBjb25zdCBhZG9wdGVkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0ZXN0RnVsZmlsbClcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5hZG9wdChhZG9wdGVkUHJvbWlzZSlcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJlbWFpbiBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZSBpZiBpdCB3YXMgYWxyZWFkeSBmdWxmaWxsZWQgd2hlbiB0aGUgYWRvcHRlZCBwcm9taXNlIGlzIGFkb3B0ZWQnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdEZ1bGZpbGwgPSAndGVzdC12YWx1ZSdcbiAgICAgIGNvbnN0IGFub3RoZXJGdWxmaWxsID0gJ2Fub3RoZXItdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgYWRvcHRlZFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoYW5vdGhlckZ1bGZpbGwpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcbiAgICAgIHByb21pc2VVbmRlclRlc3QuYWRvcHQoYWRvcHRlZFByb21pc2UpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZW1haW4gZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUgaWYgaXQgd2FzIGZ1bGZpbGxlZCBhZnRlciBhIHByb21pc2UgaXMgYWRvcHRlZCBidXQgYmVmb3JlIGl0IGZ1bGZpbGxzJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgICBjb25zdCBhbm90aGVyRnVsZmlsbCA9ICdhbm90aGVyLXZhbHVlJ1xuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IGFkb3B0ZWRQcm9taXNlID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmFkb3B0KGFkb3B0ZWRQcm9taXNlKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKHRlc3RGdWxmaWxsKVxuICAgICAgYWRvcHRlZFByb21pc2UuZnVsZmlsbChhbm90aGVyRnVsZmlsbClcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5ldmVudHVhbGx5LmVxdWFsKHRlc3RGdWxmaWxsKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBzYW1lIHJlYXNvbiB3aGVuIHRoZSBhZG9wdGVkIHByb21pc2UgcmVqZWN0cycsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgYWRvcHRlZFByb21pc2UgPSBQcm9taXNlLnJlamVjdCh0ZXN0UmVhc29uKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmFkb3B0KGFkb3B0ZWRQcm9taXNlKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3dvcmsoKSBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHRoZSBwcm92aWRlZCB3b3JrIGZ1bmN0aW9uIGFuZCBmdWxmaWxsZWQgd2hlbiB0aGUgZmlyc3QgYXJnIGlzIGludm9rZWQnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IGZ1bGZpbGxWYWx1ZSA9ICdmdWxmaWxsZWQtd2l0aC10aGlzJ1xuICAgICAgY29uc3Qgd29ya1NweSA9IHNpbm9uLnNweSgoZnVsZmlsbCkgPT4ge1xuICAgICAgICBmdWxmaWxsKGZ1bGZpbGxWYWx1ZSlcbiAgICAgIH0pXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3Qud29yayh3b3JrU3B5KVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwoZnVsZmlsbFZhbHVlKVxuICAgICAgICAudGhlbigoKSA9PiBleHBlY3Qod29ya1NweSkudG8uaGF2ZS5iZWVuLmNhbGxlZE9uY2UpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgY2FsbCB0aGUgcHJvdmlkZWQgd29yayBmdW5jdGlvbiBhbmQgcmVqZWN0IHdoZW4gdGhlIHNlY29uZCBhcmcgaXMgaW52b2tlZCcsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2UoKVxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdC1lcnJvcicpXG4gICAgICBjb25zdCB3b3JrU3B5ID0gc2lub24uc3B5KChmdWxmaWxsLCByZWplY3QpID0+IHtcbiAgICAgICAgcmVqZWN0KHRlc3RSZWFzb24pXG4gICAgICB9KVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0Lndvcmsod29ya1NweSlcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgodGVzdFJlYXNvbilcbiAgICAgICAgLnRoZW4oKCkgPT4gZXhwZWN0KHdvcmtTcHkpLnRvLmhhdmUuYmVlbi5jYWxsZWRPbmNlKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGNhbGwgdGhlIHByb3ZpZGVkIHdvcmsgZnVuY3Rpb24gYW5kIHJlamVjdCBpZiBpdCB0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKClcbiAgICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QtZXJyb3InKVxuICAgICAgY29uc3Qgd29ya1NweSA9IHNpbm9uLnNweSgoKSA9PiB7XG4gICAgICAgIHRocm93IHRlc3RSZWFzb25cbiAgICAgIH0pXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3Qud29yayh3b3JrU3B5KVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgICAgICAudGhlbigoKSA9PiBleHBlY3Qod29ya1NweSkudG8uaGF2ZS5iZWVuLmNhbGxlZE9uY2UpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnd2hlbiBwcm9taXNlIGNvbnN0cnVjdG9yIGNhbGxzIHdvcmtmdW5jdGlvbiBtdWNoIGxhdGVyIEBzbG93JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gLmZ1bGZpbGwgbWV0aG9kIGlzIGNhbGxlZCBpbW1lZGlhdGVseScsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0RnVsZmlsbCA9ICd0ZXN0LXZhbHVlJ1xuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IG5ldyBMYXRlclByb21pc2Uod2YpKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LmZ1bGZpbGwodGVzdEZ1bGZpbGwpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCBmdWxmaWxsIGV2ZW4gaWYgLnJlamVjdCgpIGlzIGNhbGxlZCBhZnRlciAuZnVsZmlsbCgpJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IExhdGVyUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcbiAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KG5ldyBFcnJvcigndGVzdC1lcnJvcicpKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmV2ZW50dWFsbHkuZXF1YWwodGVzdEZ1bGZpbGwpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgZnVsZmlsbCB3aXRoIHRoZSBpbml0aWFsIHZhbHVlIGlmIC5mdWxmaWxsKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RGdWxmaWxsID0gJ3Rlc3QtdmFsdWUnXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IExhdGVyUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCh0ZXN0RnVsZmlsbClcbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCgnc29tZSBvdGhlciB2YWx1ZScpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uZXZlbnR1YWxseS5lcXVhbCh0ZXN0RnVsZmlsbClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIC5yZWplY3QgbWV0aG9kIGlzIGNhbGxlZCBpbW1lZGlhdGVseScsICgpID0+IHtcbiAgICAgIC8vIGdpdmVuXG4gICAgICBjb25zdCB0ZXN0UmVhc29uID0gbmV3IEVycm9yKCdUZXN0IFJlYXNvbicpXG4gICAgICBjb25zdCBwcm9taXNlVW5kZXJUZXN0ID0gbmV3IEV4dHJpbnNpY1Byb21pc2Uod2YgPT4gbmV3IExhdGVyUHJvbWlzZSh3ZikpXG5cbiAgICAgIC8vIHdoZW5cbiAgICAgIHByb21pc2VVbmRlclRlc3QucmVqZWN0KHRlc3RSZWFzb24pXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGV2ZW4gaWYgLnJlamVjdCgpIGlzIGNhbGxlZCBhZnRlciAuZnVsZmlsbCgpJywgKCkgPT4ge1xuICAgICAgLy8gZ2l2ZW5cbiAgICAgIGNvbnN0IHRlc3RSZWFzb24gPSBuZXcgRXJyb3IoJ1Rlc3QgUmVhc29uJylcbiAgICAgIGNvbnN0IHByb21pc2VVbmRlclRlc3QgPSBuZXcgRXh0cmluc2ljUHJvbWlzZSh3ZiA9PiBuZXcgTGF0ZXJQcm9taXNlKHdmKSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QodGVzdFJlYXNvbilcbiAgICAgIHByb21pc2VVbmRlclRlc3QuZnVsZmlsbCgnc29tZSB2YWx1ZScpXG5cbiAgICAgIC8vIHRoZW5cbiAgICAgIHJldHVybiBleHBlY3QocHJvbWlzZVVuZGVyVGVzdCkudG8uYmUucmVqZWN0ZWRXaXRoKHRlc3RSZWFzb24pXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggdGhlIGluaXRpYWwgcmVhc29uIGlmIC5yZWplY3QoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgdGVzdFJlYXNvbiA9IG5ldyBFcnJvcignVGVzdCBSZWFzb24nKVxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IG5ldyBMYXRlclByb21pc2Uod2YpKVxuXG4gICAgICAvLyB3aGVuXG4gICAgICBwcm9taXNlVW5kZXJUZXN0LnJlamVjdCh0ZXN0UmVhc29uKVxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5yZWplY3QobmV3IEVycm9yKCdTb21lIG90aGVyIHJlYXNvbicpKVxuXG4gICAgICAvLyB0aGVuXG4gICAgICByZXR1cm4gZXhwZWN0KHByb21pc2VVbmRlclRlc3QpLnRvLmJlLnJlamVjdGVkV2l0aCh0ZXN0UmVhc29uKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3doZW4gYSBjdXN0b20gcHJvbWlzZSBjb25zdHJ1Y3RvciBpcyBwcm92aWRlZCB0aGF0IHN3YXBzIGZ1bGZpbGwgYW5kIHJlamVjdCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZSAuZnVsZmlsbCgpIG1ldGhvZCBpcyBjYWxsZWQnLCAoKSA9PiB7XG4gICAgICAvLyBnaXZlblxuICAgICAgY29uc3QgcHJvbWlzZVVuZGVyVGVzdCA9IG5ldyBFeHRyaW5zaWNQcm9taXNlKHdmID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHdmKVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rlc3QtZXJyb3InKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+ICdmdWxmaWxsZWQnXG4gICAgICAgICAgKVxuICAgICAgfSlcblxuICAgICAgLy8gd2hlblxuICAgICAgcHJvbWlzZVVuZGVyVGVzdC5mdWxmaWxsKClcblxuICAgICAgLy8gdGhlblxuICAgICAgcmV0dXJuIGV4cGVjdChwcm9taXNlVW5kZXJUZXN0KS50by5iZS5yZWplY3RlZFdpdGgoJ3Rlc3QtZXJyb3InKVxuICAgIH0pXG4gIH0pXG59KVxuXG5jbGFzcyBTeW5jaHJvbm91c1Byb21pc2Uge1xuICBjb25zdHJ1Y3RvciAod29ya2Z1bmN0aW9uKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdwZW5kaW5nJ1xuICAgIHRoaXMub25GdWxmaWxsID0gW11cbiAgICB0aGlzLm9uUmVqZWN0ID0gW11cblxuICAgIGNvbnN0IGZ1bGZpbGwgPSAod2l0aFZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Z1bGZpbGxlZCdcbiAgICAgIHRoaXMuZnVsZmlsbGVkV2l0aCA9IHdpdGhWYWx1ZVxuICAgICAgdGhpcy5vbkZ1bGZpbGwuZm9yRWFjaChoID0+IHRoaXMuaGFuZGxlKGgsIHdpdGhWYWx1ZSkpXG4gICAgfVxuXG4gICAgY29uc3QgcmVqZWN0ID0gKGJlY2F1c2UpID0+IHtcbiAgICAgIHRoaXMuc3RhdGUgPSAncmVqZWN0ZWQnXG4gICAgICB0aGlzLnJlamVjdGVkV2l0aCA9IGJlY2F1c2VcbiAgICAgIHRoaXMub25SZWplY3QuZm9yRWFjaChoID0+IHRoaXMuaGFuZGxlKGgsIGJlY2F1c2UpKVxuICAgIH1cblxuICAgIHRoaXMuX2NhbGxXb3JrRnVuY3Rpb24od29ya2Z1bmN0aW9uLCBmdWxmaWxsLCByZWplY3QpXG4gIH1cblxuICBfY2FsbFdvcmtGdW5jdGlvbiAod29ya2Z1bmN0aW9uLCBmdWxmaWxsLCByZWplY3QpIHtcbiAgICB0cnkge1xuICAgICAgd29ya2Z1bmN0aW9uKGZ1bGZpbGwsIHJlamVjdClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZSAoe2hhbmRsZXIsIGZ1bGZpbGwsIHJlamVjdH0sIHZhbHVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZ1bGZpbGwoaGFuZGxlcih2YWx1ZSkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cblxuICB0aGVuIChvbkZ1bGZpbGwsIG9uUmVqZWN0KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdwZW5kaW5nJykge1xuICAgICAgcmV0dXJuIG5ldyBTeW5jaHJvbm91c1Byb21pc2UoKGZ1bGZpbGwsIHJlamVjdCkgPT4ge1xuICAgICAgICB0aGlzLm9uRnVsZmlsbC5wdXNoKHtoYW5kbGVyOiBvbkZ1bGZpbGwsIGZ1bGZpbGwsIHJlamVjdH0pXG4gICAgICAgIHRoaXMub25SZWplY3QucHVzaCh7aGFuZGxlcjogb25SZWplY3QsIGZ1bGZpbGwsIHJlamVjdH0pXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgIHJldHVybiBuZXcgU3luY2hyb25vdXNQcm9taXNlKChmdWxmaWxsLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGUoe2hhbmRsZXI6IG9uRnVsZmlsbCwgZnVsZmlsbCwgcmVqZWN0fSwgdGhpcy5mdWxmaWxsZWRXaXRoKVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT09ICdyZWplY3RlZCcpIHtcbiAgICAgIHJldHVybiBuZXcgU3luY2hyb25vdXNQcm9taXNlKChmdWxmaWxsLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGUoe2hhbmRsZXI6IG9uUmVqZWN0LCBmdWxmaWxsLCByZWplY3R9LCB0aGlzLnJlamVjdGVkV2l0aClcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIExhdGVyUHJvbWlzZSBleHRlbmRzIFN5bmNocm9ub3VzUHJvbWlzZSB7XG4gIF9jYWxsV29ya0Z1bmN0aW9uICh3b3JrZnVuY3Rpb24sIGZ1bGZpbGwsIHJlamVjdCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgd29ya2Z1bmN0aW9uKGZ1bGZpbGwsIHJlamVjdClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9LCAxMClcbiAgfVxufVxuIl19
{
"name": "extrinsic-promises",
"version": "1.3.0",
"version": "1.3.1",
"description": "A convenient promises anti-pattern: promises you can settle from outside the promise.",

@@ -52,14 +52,5 @@ "keywords": [

"engines": {
"node": ">5.0.0 <9"
"node": ">5.0.0 <11"
},
"license": "MIT",
"babel": {
"presets": [
"env"
],
"plugins": [
"transform-object-assign",
"transform-object-rest-spread"
]
},
"nyc": {

@@ -97,6 +88,6 @@ "reporter": [

"lfsr": "0.0.3",
"mocha": "3.5.3",
"mocha": "5.2.0",
"npm-package-json-lint": "2.11.0",
"npm-run-all": "4.1.1",
"nyc": "11.2.1",
"nyc": "13.1.0",
"ramda": "0.25.0",

@@ -110,7 +101,10 @@ "remark-cli": "4.0.0",

"standard": "10.0.3",
"stryker": "0.12.0",
"stryker-api": "0.10.0",
"stryker-html-reporter": "0.10.0",
"stryker-mocha-framework": "0.6.0",
"stryker-mocha-runner": "0.9.0",
"stryker": "0.29.5",
"stryker-api": "0.21.2",
"stryker-babel-transpiler": "0.7.4",
"stryker-baseline-reporter": "1.0.3",
"stryker-html-reporter": "0.16.4",
"stryker-javascript-mutator": "0.11.0",
"stryker-mocha-framework": "0.12.3",
"stryker-mocha-runner": "0.14.3",
"travis-lint": "1.0.0",

@@ -117,0 +111,0 @@ "yaml-lint": "1.0.0"

module.exports = function (config) {
config.set({
files: [
{
pattern: 'dist/src/**/*.js',
mutated: true,
included: false
},
'dist/test/**/*.js'
],
mutator: 'javascript',
packageManager: 'npm',
reporters: ['html', 'baseline', 'clear-text', 'progress', 'dashboard'],
testRunner: 'mocha',
mutator: 'es5',
transpilers: [],
reporter: ['html', 'clear-text', 'progress'],
transpilers: ['babel'],
testFramework: 'mocha',
coverageAnalysis: 'perTest'
coverageAnalysis: 'off',
mutate: ['src/**/*.js'],
babelrcFile: '.babelrc'
})
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc