@bitgo-beta/utxo-lib
Advanced tools
Comparing version 8.0.3-beta.722 to 8.0.3-beta.723
@@ -10,3 +10,3 @@ "use strict"; | ||
const noble_ecc_1 = require("../noble_ecc"); | ||
const necc = require("@noble/secp256k1"); | ||
const secp256k1_1 = require("@noble/curves/secp256k1"); | ||
const typef = require('typeforce'); | ||
@@ -26,3 +26,3 @@ const OPS = bitcoinjs_lib_1.script.OPS; | ||
try { | ||
return !!necc.Point.fromHex(pubKey); | ||
return !!secp256k1_1.secp256k1.ProjectivePoint.fromHex(pubKey); | ||
} | ||
@@ -351,2 +351,2 @@ catch (e) { | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyREFBMkQ7QUFDM0QsaUVBQWlFOztBQW9DakUsb0JBK1VDO0FBalhELDBDQUF1QztBQUN2QyxpREFBOEU7QUFDOUUsc0NBQXNDO0FBQ3RDLDRDQUFxQztBQUNyQyx5Q0FBeUM7QUFFekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLHNCQUFPLENBQUMsR0FBRyxDQUFDO0FBRXhCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsbUJBQVEsQ0FBQyxPQUFPLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJDLFNBQVMsYUFBYSxDQUFDLE1BQWtCO0lBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsT0FBaUI7SUFDdkMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsU0FBZ0IsSUFBSSxDQUFDLENB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QUM7WUFFRCxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDekUsTUFBTSxJQUFJLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFFRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzRSxNQUFNLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDaEcsTUFBTSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZ1dpdCB2ZXJzaW9uIDEgUDJUUiBvdXRwdXQgdHlwZSBmb3IgVGFwcm9vdCBkZWZpbmVkIGluXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMzQxLm1lZGlhd2lraVxuXG5pbXBvcnQgeyBuZXR3b3JrcyB9IGZyb20gJy4uL25ldHdvcmtzJztcbmltcG9ydCB7IHNjcmlwdCBhcyBic2NyaXB0LCBQYXltZW50LCBQYXltZW50T3B0cywgbGF6eSB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdGFwcm9vdCBmcm9tICcuLi90YXByb290JztcbmltcG9ydCB7IG11c2lnIH0gZnJvbSAnLi4vbm9ibGVfZWNjJztcbmltcG9ydCAqIGFzIG5lY2MgZnJvbSAnQG5vYmxlL3NlY3AyNTZrMSc7XG5cbmNvbnN0IHR5cGVmID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5jb25zdCBPUFMgPSBic2NyaXB0Lk9QUztcblxuY29uc3QgeyBiZWNoMzJtIH0gPSByZXF1aXJlKCdiZWNoMzInKTtcblxuY29uc3QgQklUQ09JTl9ORVRXT1JLID0gbmV0d29ya3MuYml0Y29pbjtcblxuLyoqXG4gKiBBIHNlY3AyNTZrMSB4IGNvb3JkaW5hdGUgd2l0aCB1bmtub3duIGRpc2NyZXRlIGxvZ2FyaXRobSB1c2VkIGZvciBlbGltaW5hdGluZ1xuICoga2V5cGF0aCBzcGVuZHMsIGVxdWFsIHRvIFNIQTI1Nih1bmNvbXByZXNzZWRERVIoU0VDUDI1NksxX0dFTkVSQVRPUl9QT0lOVCkpLlxuICovXG5jb25zdCBIID0gQnVmZmVyLmZyb20oJzUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzAnLCAnaGV4Jyk7XG5jb25zdCBFTVBUWV9CVUZGRVIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5QdWJrZXkocHViS2V5OiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gIGlmIChwdWJLZXkubGVuZ3RoICE9PSAzMykgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIHJldHVybiAhIW5lY2MuUG9pbnQuZnJvbUhleChwdWJLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5QdWJrZXlzKHB1YmtleXM6IEJ1ZmZlcltdKSB7XG4gIHJldHVybiBwdWJrZXlzLmV2ZXJ5KGlzUGxhaW5QdWJrZXkpO1xufVxuXG4vLyBvdXRwdXQ6IE9QXzEge3dpdG5lc3NQcm9ncmFtfVxuZXhwb3J0IGZ1bmN0aW9uIHAydHIoYTogUGF5bWVudCwgb3B0cz86IFBheW1lbnRPcHRzKTogUGF5bWVudCB7XG4gIGlmICghYS5hZGRyZXNzICYmICFhLnB1YmtleSAmJiAhYS5wdWJrZXlzICYmICEoYS5yZWRlZW1zICYmIGEucmVkZWVtcy5sZW5ndGgpICYmICFhLm91dHB1dCAmJiAhYS53aXRuZXNzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGVub3VnaCBkYXRhJyk7XG4gIH1cbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oeyB2YWxpZGF0ZTogdHJ1ZSB9LCBvcHRzIHx8IHt9KTtcblxuICBpZiAoIW9wdHMuZWNjTGliKSB0aHJvdyBuZXcgRXJyb3IoJ0VDQyBMaWJyYXJ5IGlzIHJlcXVpcmVkIGZvciBwMnRyLicpO1xuICBjb25zdCBlY2MgPSBvcHRzLmVjY0xpYjtcblxuICB0eXBlZihcbiAgICB7XG4gICAgICBuZXR3b3JrOiB0eXBlZi5tYXliZSh0eXBlZi5PYmplY3QpLFxuXG4gICAgICBhZGRyZXNzOiB0eXBlZi5tYXliZSh0eXBlZi5TdHJpbmcpLFxuICAgICAgLy8gdGhlIG91dHB1dCBzY3JpcHQgc2hvdWxkIGJlIGEgZml4ZWQgMzQgYnl0ZXMuXG4gICAgICAvLyAxIGJ5dGUgZm9yIE9QXzEgaW5kaWNhdGluZyBzZWd3aXQgdmVyc2lvbiAxLCBvbmUgYnl0ZSBmb3IgMHgyMCB0byBwdXNoXG4gICAgICAvLyB0aGUgbmV4dCAzMiBieXRlcywgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgd2l0bmVzcyBwcm9ncmFtXG4gICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlck4oMzQpKSxcbiAgICAgIC8vIGEgc2luZ2xlIHB1YmtleVxuICAgICAgcHVia2V5OiB0eXBlZi5tYXliZShlY2MuaXNYT25seVBvaW50KSxcbiAgICAgIC8vIHRoZSBwdWIga2V5KHMpIHVzZWQgZm9yIGtleXBhdGggc2lnbmluZy5cbiAgICAgIC8vIGFnZ3JlZ2F0ZWQgd2l0aCBNdVNpZzIqIGlmID4gMVxuICAgICAgcHVia2V5czogdHlwZWYubWF5YmUodHlwZWYuYW55T2YodHlwZWYuYXJyYXlPZihlY2MuaXNYT25seVBvaW50KSwgdHlwZWYuYXJyYXlPZihpc1BsYWluUHVia2V5KSkpLFxuXG4gICAgICByZWRlZW1zOiB0eXBlZi5tYXliZShcbiAgICAgICAgdHlwZWYuYXJyYXlPZih7XG4gICAgICAgICAgbmV0d29yazogdHlwZWYubWF5YmUodHlwZWYuT2JqZWN0KSxcbiAgICAgICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlciksXG4gICAgICAgICAgd2VpZ2h0OiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIGRlcHRoOiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIHdpdG5lc3M6IHR5cGVmLm1heWJlKHR5cGVmLmFycmF5T2YodHlwZWYuQnVmZmVyKSksXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgcmVkZWVtSW5kZXg6IHR5cGVmLm1heWJlKHR5cGVmLk51bWJlciksIC8vIFNlbGVjdHMgdGhlIHJlZGVlbSB0byBzcGVuZFxuXG4gICAgICBzaWduYXR1cmU6IHR5cGVmLm1heWJlKGJzY3JpcHQuaXNDYW5vbmljYWxTY2hub3JyU2lnbmF0dXJlKSxcbiAgICAgIGNvbnRyb2xCbG9jazogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICAgIGFubmV4OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXIpLFxuICAgIH0sXG4gICAgYVxuICApO1xuXG4gIGNvbnN0IF9hZGRyZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLmFkZHJlc3MpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXN1bHQgPSBiZWNoMzJtLmRlY29kZShhLmFkZHJlc3MpO1xuICAgIGNvbnN0IHZlcnNpb24gPSByZXN1bHQud29yZHMuc2hpZnQoKTtcbiAgICBjb25zdCBkYXRhID0gYmVjaDMybS5mcm9tV29yZHMocmVzdWx0LndvcmRzKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmVyc2lvbixcbiAgICAgIHByZWZpeDogcmVzdWx0LnByZWZpeCxcbiAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGRhdGEpLFxuICAgIH07XG4gIH0pO1xuICBjb25zdCBfb3V0cHV0UHVia2V5ID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gd2UgcmVtb3ZlIHRoZSBmaXJzdCB0d28gYnl0ZXMgKE9QXzEgMHgyMCkgZnJvbSB0aGUgb3V0cHV0IHNjcmlwdCB0b1xuICAgIC8vIGV4dHJhY3QgdGhlIDMyIGJ5dGUgdGFwcm9vdCBwdWJrZXkgKGFrYSB3aXRuZXNzIHByb2dyYW0pXG4gICAgcmV0dXJuIGEub3V0cHV0ICYmIGEub3V0cHV0LnNsaWNlKDIpO1xuICB9KTtcblxuICBjb25zdCBuZXR3b3JrID0gYS5uZXR3b3JrIHx8IEJJVENPSU5fTkVUV09SSztcblxuICBjb25zdCBvOiBQYXltZW50ID0geyBuZXR3b3JrIH07XG5cbiAgY29uc3QgX3RhcHJvb3RQYXRocyA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGlmICghYS5yZWRlZW1zKSByZXR1cm47XG4gICAgaWYgKG8udGFwVHJlZSkge1xuICAgICAgcmV0dXJuIHRhcHJvb3QuZ2V0RGVwdGhGaXJzdFRhcHRyZWUoby50YXBUcmVlKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0czogQXJyYXk8QnVmZmVyIHwgdW5kZWZpbmVkPiA9IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0IH0pID0+IG91dHB1dCk7XG4gICAgaWYgKCFvdXRwdXRzLmV2ZXJ5KChvdXRwdXQpID0+IG91dHB1dCkpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5nZXRIdWZmbWFuVGFwdHJlZShcbiAgICAgIG91dHB1dHMgYXMgQnVmZmVyW10sXG4gICAgICBhLnJlZGVlbXMubWFwKCh7IHdlaWdodCB9KSA9PiB3ZWlnaHQpXG4gICAgKTtcbiAgfSk7XG4gIGNvbnN0IF9wYXJzZWRXaXRuZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLndpdG5lc3MpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5wYXJzZVRhcHJvb3RXaXRuZXNzKGEud2l0bmVzcyk7XG4gIH0pO1xuICBjb25zdCBfcGFyc2VkQ29udHJvbEJsb2NrID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gQ2FuJ3QgdXNlIG8uY29udHJvbEJsb2NrLCBiZWNhdXNlIGl0IGNvdWxkIGJlIGNpcmN1bGFyXG4gICAgaWYgKGEuY29udHJvbEJsb2NrKSByZXR1cm4gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2MsIGEuY29udHJvbEJsb2NrKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIHJldHVybiB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjYywgcGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spO1xuICAgIH1cbiAgfSk7XG5cbiAgbGF6eS5wcm9wKG8sICdpbnRlcm5hbFB1YmtleScsICgpID0+IHtcbiAgICBpZiAoYS5wdWJrZXkpIHtcbiAgICAgIC8vIHNpbmdsZSBwdWJrZXlcbiAgICAgIHJldHVybiBhLnB1YmtleTtcbiAgICB9IGVsc2UgaWYgKGEucHVia2V5cyAmJiBhLnB1YmtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gYS5wdWJrZXlzWzBdO1xuICAgIH0gZWxzZSBpZiAoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBtdWx0aXBsZSBwdWJrZXlzXG4gICAgICBpZiAoaXNQbGFpblB1YmtleXMoYS5wdWJrZXlzKSkge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20obXVzaWcuZ2V0WE9ubHlQdWJrZXkobXVzaWcua2V5QWdnKGEucHVia2V5cykpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRhcHJvb3QuYWdncmVnYXRlTXVTaWdQdWJrZXlzKGVjYywgYS5wdWJrZXlzKSk7XG4gICAgfSBlbHNlIGlmIChfcGFyc2VkQ29udHJvbEJsb2NrKCkpIHtcbiAgICAgIHJldHVybiBfcGFyc2VkQ29udHJvbEJsb2NrKCk/LmludGVybmFsUHVia2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBrZXkgcGF0aCBzcGVuZGluZyBjb25kaXRpb24sIHdlIHVzZSBhbiBpbnRlcm5hbCBrZXkgd2l0aCB1bmtub3duIHNlY3JldCBrZXkuXG4gICAgICAvLyBUT0RPOiBJbiBvcmRlciB0byBhdm9pZCBsZWFraW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGtleSBwYXRoIHNwZW5kaW5nIGlzIG5vdCBwb3NzaWJsZSBpdFxuICAgICAgLy8gaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2VcbiAgICAgIC8vIEggKyByRyBhcyBpbnRlcm5hbCBrZXkuIEl0IGlzIHBvc3NpYmxlIHRvIHByb3ZlIHRoYXQgdGhpcyBpbnRlcm5hbCBrZXkgZG9lcyBub3QgaGF2ZSBhXG4gICAgICAvLyBrbm93biBkaXNjcmV0ZSBsb2dhcml0aG0gd2l0aCByZXNwZWN0IHRvIEcgYnkgcmV2ZWFsaW5nIHIgdG8gYSB2ZXJpZmllciB3aG8gY2FuIHRoZW5cbiAgICAgIC8vIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICAgICAgcmV0dXJuIEg7XG4gICAgfVxuICB9KTtcblxuICBsYXp5LnByb3AobywgJ3RhcHRyZWVSb290JywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBsZXQgdGFwdHJlZVJvb3Q7XG4gICAgLy8gUHJlZmVyIHRvIGdldCB0aGUgcm9vdCB2aWEgdGhlIGNvbnRyb2wgYmxvY2sgYmVjYXVzZSBub3QgYWxsIHJlZGVlbXMgbWF5XG4gICAgLy8gYmUgYXZhaWxhYmxlXG4gICAgaWYgKHBhcnNlZENvbnRyb2xCbG9jaykge1xuICAgICAgbGV0IHRhcHNjcmlwdDtcbiAgICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgICB0YXBzY3JpcHQgPSBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdDtcbiAgICAgIH0gZWxzZSBpZiAoby5yZWRlZW0gJiYgby5yZWRlZW0ub3V0cHV0KSB7XG4gICAgICAgIHRhcHNjcmlwdCA9IG8ucmVkZWVtLm91dHB1dDtcbiAgICAgIH1cbiAgICAgIGlmICh0YXBzY3JpcHQpIHRhcHRyZWVSb290ID0gdGFwcm9vdC5nZXRUYXB0cmVlUm9vdChlY2MsIHBhcnNlZENvbnRyb2xCbG9jaywgdGFwc2NyaXB0KTtcbiAgICB9XG4gICAgaWYgKCF0YXB0cmVlUm9vdCAmJiBfdGFwcm9vdFBhdGhzKCkpIHRhcHRyZWVSb290ID0gX3RhcHJvb3RQYXRocygpPy5yb290O1xuXG4gICAgcmV0dXJuIHRhcHRyZWVSb290O1xuICB9KTtcblxuICBjb25zdCBfdGFwcm9vdFB1YmtleSA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGNvbnN0IHRhcHRyZWVSb290ID0gby50YXB0cmVlUm9vdDtcbiAgICAvLyBSZWZ1c2UgdG8gY3JlYXRlIGFuIHVuc3BlbmRhYmxlIGtleVxuICAgIGlmICghYS5wdWJrZXkgJiYgIShhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCkgJiYgIWEucmVkZWVtcyAmJiAhdGFwdHJlZVJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRhcHJvb3QudGFwVHdlYWtQdWJrZXkoZWNjLCBvPy5pbnRlcm5hbFB1YmtleSBhcyBVaW50OEFycmF5LCB0YXB0cmVlUm9vdCk7XG4gIH0pO1xuXG4gIGxhenkucHJvcChvLCAndGFwVHJlZScsICgpID0+IHtcbiAgICBpZiAoIWEucmVkZWVtcykgcmV0dXJuO1xuICAgIGlmIChhLnJlZGVlbXMuZmluZCgoeyBkZXB0aCB9KSA9PiBkZXB0aCA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnRGVwcmVjYXRpb24gV2FybmluZzogV2VpZ2h0LWJhc2VkIHRhcCB0cmVlIGNvbnN0cnVjdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gJyArXG4gICAgICAgICAgJ1BsZWFzZSB1c2UgZGVwdGgtZmlyc3QgY29kaW5nIGFzIHNwZWNpZmllZCBpbiBCSVAtMDM3MS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWEucmVkZWVtcy5ldmVyeSgoeyBvdXRwdXQgfSkgPT4gb3V0cHV0KSkgcmV0dXJuO1xuICAgIHJldHVybiB7XG4gICAgICBsZWF2ZXM6IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0LCBkZXB0aCB9KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2NyaXB0OiBvdXRwdXQsXG4gICAgICAgICAgbGVhZlZlcnNpb246IHRhcHJvb3QuSU5JVElBTF9UQVBTQ1JJUFRfVkVSU0lPTixcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2FkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgcHVia2V5ID0gX291dHB1dFB1YmtleSgpIHx8IChfdGFwcm9vdFB1YmtleSgpICYmIF90YXByb290UHVia2V5KCk/LnhPbmx5UHVia2V5KTtcbiAgICAvLyBvbmx5IGVuY29kZSB0aGUgMzIgYnl0ZSB3aXRuZXNzIHByb2dyYW0gYXMgYmVjaDMybVxuICAgIGNvbnN0IHdvcmRzID0gYmVjaDMybS50b1dvcmRzKHB1YmtleSk7XG4gICAgd29yZHMudW5zaGlmdCgweDAxKTtcbiAgICByZXR1cm4gYmVjaDMybS5lbmNvZGUobmV0d29yay5iZWNoMzIsIHdvcmRzKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnY29udHJvbEJsb2NrJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3MuY29udHJvbEJsb2NrO1xuICAgIH1cbiAgICBjb25zdCB0YXByb290UHVia2V5ID0gX3RhcHJvb3RQdWJrZXkoKTtcbiAgICBjb25zdCB0YXByb290UGF0aHMgPSBfdGFwcm9vdFBhdGhzKCk7XG4gICAgaWYgKCF0YXByb290UGF0aHMgfHwgIXRhcHJvb3RQdWJrZXkgfHwgYS5yZWRlZW1JbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgcmV0dXJuIHRhcHJvb3QuZ2V0Q29udHJvbEJsb2NrKHRhcHJvb3RQdWJrZXkucGFyaXR5LCBvLmludGVybmFsUHVia2V5ISwgdGFwcm9vdFBhdGhzLnBhdGhzW2EucmVkZWVtSW5kZXhdKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnc2lnbmF0dXJlJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3Muc2lnbmF0dXJlO1xuICAgIH1cbiAgfSk7XG4gIGxhenkucHJvcChvLCAnYW5uZXgnLCAoKSA9PiB7XG4gICAgaWYgKCFfcGFyc2VkV2l0bmVzcygpKSByZXR1cm47XG4gICAgcmV0dXJuIF9wYXJzZWRXaXRuZXNzKCkhLmFubmV4O1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdvdXRwdXQnLCAoKSA9PiB7XG4gICAgaWYgKGEuYWRkcmVzcykge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBfYWRkcmVzcygpITtcbiAgICAgIHJldHVybiBic2NyaXB0LmNvbXBpbGUoW09QUy5PUF8xLCBkYXRhXSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG4gICAgaWYgKCF0YXByb290UHVia2V5KSByZXR1cm47XG5cbiAgICAvLyBPUF8xIGluZGljYXRlcyBzZWd3aXQgdmVyc2lvbiAxXG4gICAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbT1BTLk9QXzEsIEJ1ZmZlci5mcm9tKHRhcHJvb3RQdWJrZXkueE9ubHlQdWJrZXkpXSk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3dpdG5lc3MnLCAoKSA9PiB7XG4gICAgaWYgKCFhLnJlZGVlbXMpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkgcmV0dXJuIFthLnNpZ25hdHVyZV07IC8vIEtleXBhdGggc3BlbmRcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCFvLnJlZGVlbSkge1xuICAgICAgcmV0dXJuOyAvLyBObyBjaG9zZW4gcmVkZWVtIHNjcmlwdCwgY2FuJ3QgbWFrZSB3aXRuZXNzXG4gICAgfSBlbHNlIGlmICghby5jb250cm9sQmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVkZWVtV2l0bmVzcztcbiAgICAvLyBzb21lIGNhbGxlcnMgbWF5IHByb3ZpZGUgd2l0bmVzcyBlbGVtZW50cyBpbiB0aGUgaW5wdXQgc2NyaXB0XG4gICAgaWYgKG8ucmVkZWVtLmlucHV0ICYmIG8ucmVkZWVtLmlucHV0Lmxlbmd0aCA+IDAgJiYgby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB0cmFuc2Zvcm0gcmVkZWVtIGlucHV0IHRvIHdpdG5lc3Mgc3RhY2tcbiAgICAgIHJlZGVlbVdpdG5lc3MgPSBic2NyaXB0LnRvU3RhY2soYnNjcmlwdC5kZWNvbXBpbGUoby5yZWRlZW0uaW5wdXQpISk7XG5cbiAgICAgIC8vIGFzc2lnbnMgYSBuZXcgb2JqZWN0IHRvIG8ucmVkZWVtXG4gICAgICBvLnJlZGVlbXMhW2EucmVkZWVtSW5kZXghXSA9IE9iamVjdC5hc3NpZ24oeyB3aXRuZXNzOiByZWRlZW1XaXRuZXNzIH0sIG8ucmVkZWVtKTtcbiAgICAgIG8ucmVkZWVtLmlucHV0ID0gRU1QVFlfQlVGRkVSO1xuICAgIH0gZWxzZSBpZiAoby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwICYmIG8ucmVkZWVtLndpdG5lc3MgJiYgby5yZWRlZW0ud2l0bmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICByZWRlZW1XaXRuZXNzID0gby5yZWRlZW0ud2l0bmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdpdG5lc3MgPSBbLi4ucmVkZWVtV2l0bmVzcywgby5yZWRlZW0ub3V0cHV0LCBvLmNvbnRyb2xCbG9ja107XG5cbiAgICBpZiAoYS5hbm5leCkge1xuICAgICAgd2l0bmVzcy5wdXNoKGEuYW5uZXgpO1xuICAgIH1cblxuICAgIHJldHVybiB3aXRuZXNzO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICduYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IG5hbWVQYXJ0cyA9IFsncDJ0ciddO1xuICAgIHJldHVybiBuYW1lUGFydHMuam9pbignLScpO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdyZWRlZW0nLCAoKSA9PiB7XG4gICAgaWYgKGEucmVkZWVtcykge1xuICAgICAgaWYgKGEucmVkZWVtSW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkV2l0bmVzcyA9IF9wYXJzZWRXaXRuZXNzKCk7XG4gICAgaWYgKHBhcnNlZFdpdG5lc3MgJiYgcGFyc2VkV2l0bmVzcy5zcGVuZFR5cGUgPT09ICdTY3JpcHQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aXRuZXNzOiBwYXJzZWRXaXRuZXNzLnNjcmlwdFNpZyxcbiAgICAgICAgb3V0cHV0OiBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvLyBleHRlbmRlZCB2YWxpZGF0aW9uXG4gIGlmIChvcHRzLnZhbGlkYXRlKSB7XG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG5cbiAgICBpZiAoYS5vdXRwdXQpIHtcbiAgICAgIGlmIChhLm91dHB1dFswXSAhPT0gT1BTLk9QXzEgfHwgYS5vdXRwdXRbMV0gIT09IDB4MjApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0cHV0IGlzIGludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgd2UncmUgcGFzc2VkIGJvdGggYW4gb3V0cHV0IHNjcmlwdCBhbmQgYW4gYWRkcmVzcywgZW5zdXJlIHRoZXkgbWF0Y2hcbiAgICAgIGlmIChhLmFkZHJlc3MgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoX2FkZHJlc3MoKT8uZGF0YSBhcyBCdWZmZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gYWRkcmVzcyAmIG91dHB1dCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBXcmFwcGluZyBgdGFwcm9vdFB1YmtleS54T25seVB1YmtleWAgaW4gQnVmZmVyIGJlY2F1c2Ugb2YgYSBwZWN1bGlhciBpc3N1ZSBpbiB0aGUgZnJvbnRlbmRcbiAgICAgIC8vIHdoZXJlIGEgcG9seWZpbGwgZm9yIEJ1ZmZlciBpcyB1c2VkLiBSZWZlcjogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9CRy02MTQyMFxuICAgICAgaWYgKHRhcHJvb3RQdWJrZXkgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoQnVmZmVyLmZyb20odGFwcm9vdFB1YmtleS54T25seVB1YmtleSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gb3V0cHV0IGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhLmFkZHJlc3MpIHtcbiAgICAgIGlmICh0YXByb290UHVia2V5ICYmICFfYWRkcmVzcygpPy5kYXRhLmVxdWFscyhCdWZmZXIuZnJvbSh0YXByb290UHVia2V5LnhPbmx5UHVia2V5KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWlzbWF0Y2ggYmV0d2VlbiBhZGRyZXNzIGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBpZiAocGFyc2VkQ29udHJvbEJsb2NrKSB7XG4gICAgICBpZiAoIXBhcnNlZENvbnRyb2xCbG9jay5pbnRlcm5hbFB1YmtleS5lcXVhbHMobz8uaW50ZXJuYWxQdWJrZXkgYXMgVWludDhBcnJheSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW50ZXJuYWwgcHVia2V5IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgICBpZiAodGFwcm9vdFB1YmtleSAmJiBwYXJzZWRDb250cm9sQmxvY2sucGFyaXR5ICE9PSB0YXByb290UHVia2V5LnBhcml0eSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJpdHkgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYS5yZWRlZW1zKSB7XG4gICAgICBpZiAoIWEucmVkZWVtcy5sZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VtcHR5IHJlZGVlbXMnKTtcbiAgICAgIGlmIChhLnJlZGVlbUluZGV4ICE9PSB1bmRlZmluZWQgJiYgKGEucmVkZWVtSW5kZXggPCAwIHx8IGEucmVkZWVtSW5kZXggPj0gYS5yZWRlZW1zLmxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCByZWRlZW0gaW5kZXgnKTtcbiAgICAgIH1cbiAgICAgIGEucmVkZWVtcy5mb3JFYWNoKChyZWRlZW0pID0+IHtcbiAgICAgICAgaWYgKHJlZGVlbS5uZXR3b3JrICYmIHJlZGVlbS5uZXR3b3JrICE9PSBuZXR3b3JrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTmV0d29yayBtaXNtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjaG9zZW5SZWRlZW0gPSBhLnJlZGVlbXMgJiYgYS5yZWRlZW1JbmRleCAhPT0gdW5kZWZpbmVkICYmIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcblxuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgaWYgKGEuY29udHJvbEJsb2NrKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuZXhwZWN0ZWQgY29udHJvbCBibG9jayBmb3Iga2V5IHBhdGgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuc2lnbmF0dXJlICYmICFhLnNpZ25hdHVyZS5lcXVhbHMocGFyc2VkV2l0bmVzcy5zaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gd2l0bmVzcyAmIHNpZ25hdHVyZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmV4cGVjdGVkIHNpZ25hdHVyZSB3aXRoIHNjcmlwdCBwYXRoIHdpdG5lc3MnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuY29udHJvbEJsb2NrICYmICFhLmNvbnRyb2xCbG9jay5lcXVhbHMocGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbnRyb2wgYmxvY2sgbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuYW5uZXggJiYgcGFyc2VkV2l0bmVzcy5hbm5leCAmJiAhYS5hbm5leC5lcXVhbHMocGFyc2VkV2l0bmVzcy5hbm5leCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYW5uZXggbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNob3NlblJlZGVlbSAmJiBjaG9zZW5SZWRlZW0ub3V0cHV0ICYmICFjaG9zZW5SZWRlZW0ub3V0cHV0LmVxdWFscyhwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFwc2NyaXB0IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obywgYSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJ0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXltZW50cy9wMnRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyREFBMkQ7QUFDM0QsaUVBQWlFOztBQW9DakUsb0JBK1VDO0FBalhELDBDQUF1QztBQUN2QyxpREFBOEU7QUFDOUUsc0NBQXNDO0FBQ3RDLDRDQUFxQztBQUNyQyx1REFBNEQ7QUFFNUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLHNCQUFPLENBQUMsR0FBRyxDQUFDO0FBRXhCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsbUJBQVEsQ0FBQyxPQUFPLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJDLFNBQVMsYUFBYSxDQUFDLE1BQWtCO0lBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQUMscUJBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWlCO0lBQ3ZDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsZ0NBQWdDO0FBQ2hDLFNBQWdCLElBQUksQ0FBQyxD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QUFDO1lBRUQsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLE1BQU0sSUFBSSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0UsTUFBTSxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hHLE1BQU0sSUFBSSxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWdXaXQgdmVyc2lvbiAxIFAyVFIgb3V0cHV0IHR5cGUgZm9yIFRhcHJvb3QgZGVmaW5lZCBpblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM0MS5tZWRpYXdpa2lcblxuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCwgUGF5bWVudCwgUGF5bWVudE9wdHMsIGxhenkgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHRhcHJvb3QgZnJvbSAnLi4vdGFwcm9vdCc7XG5pbXBvcnQgeyBtdXNpZyB9IGZyb20gJy4uL25vYmxlX2VjYyc7XG5pbXBvcnQgeyBzZWNwMjU2azEgYXMgbmVjYyB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvc2VjcDI1NmsxJztcblxuY29uc3QgdHlwZWYgPSByZXF1aXJlKCd0eXBlZm9yY2UnKTtcbmNvbnN0IE9QUyA9IGJzY3JpcHQuT1BTO1xuXG5jb25zdCB7IGJlY2gzMm0gfSA9IHJlcXVpcmUoJ2JlY2gzMicpO1xuXG5jb25zdCBCSVRDT0lOX05FVFdPUksgPSBuZXR3b3Jrcy5iaXRjb2luO1xuXG4vKipcbiAqIEEgc2VjcDI1NmsxIHggY29vcmRpbmF0ZSB3aXRoIHVua25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHVzZWQgZm9yIGVsaW1pbmF0aW5nXG4gKiBrZXlwYXRoIHNwZW5kcywgZXF1YWwgdG8gU0hBMjU2KHVuY29tcHJlc3NlZERFUihTRUNQMjU2SzFfR0VORVJBVE9SX1BPSU5UKSkuXG4gKi9cbmNvbnN0IEggPSBCdWZmZXIuZnJvbSgnNTA5MjliNzRjMWEwNDk1NGI3OGI0YjYwMzVlOTdhNWUwNzhhNWEwZjI4ZWM5NmQ1NDdiZmVlOWFjZTgwM2FjMCcsICdoZXgnKTtcbmNvbnN0IEVNUFRZX0JVRkZFUiA9IEJ1ZmZlci5hbGxvYygwKTtcblxuZnVuY3Rpb24gaXNQbGFpblB1YmtleShwdWJLZXk6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgaWYgKHB1YktleS5sZW5ndGggIT09IDMzKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhbmVjYy5Qcm9qZWN0aXZlUG9pbnQuZnJvbUhleChwdWJLZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5QdWJrZXlzKHB1YmtleXM6IEJ1ZmZlcltdKSB7XG4gIHJldHVybiBwdWJrZXlzLmV2ZXJ5KGlzUGxhaW5QdWJrZXkpO1xufVxuXG4vLyBvdXRwdXQ6IE9QXzEge3dpdG5lc3NQcm9ncmFtfVxuZXhwb3J0IGZ1bmN0aW9uIHAydHIoYTogUGF5bWVudCwgb3B0cz86IFBheW1lbnRPcHRzKTogUGF5bWVudCB7XG4gIGlmICghYS5hZGRyZXNzICYmICFhLnB1YmtleSAmJiAhYS5wdWJrZXlzICYmICEoYS5yZWRlZW1zICYmIGEucmVkZWVtcy5sZW5ndGgpICYmICFhLm91dHB1dCAmJiAhYS53aXRuZXNzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGVub3VnaCBkYXRhJyk7XG4gIH1cbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oeyB2YWxpZGF0ZTogdHJ1ZSB9LCBvcHRzIHx8IHt9KTtcblxuICBpZiAoIW9wdHMuZWNjTGliKSB0aHJvdyBuZXcgRXJyb3IoJ0VDQyBMaWJyYXJ5IGlzIHJlcXVpcmVkIGZvciBwMnRyLicpO1xuICBjb25zdCBlY2MgPSBvcHRzLmVjY0xpYjtcblxuICB0eXBlZihcbiAgICB7XG4gICAgICBuZXR3b3JrOiB0eXBlZi5tYXliZSh0eXBlZi5PYmplY3QpLFxuXG4gICAgICBhZGRyZXNzOiB0eXBlZi5tYXliZSh0eXBlZi5TdHJpbmcpLFxuICAgICAgLy8gdGhlIG91dHB1dCBzY3JpcHQgc2hvdWxkIGJlIGEgZml4ZWQgMzQgYnl0ZXMuXG4gICAgICAvLyAxIGJ5dGUgZm9yIE9QXzEgaW5kaWNhdGluZyBzZWd3aXQgdmVyc2lvbiAxLCBvbmUgYnl0ZSBmb3IgMHgyMCB0byBwdXNoXG4gICAgICAvLyB0aGUgbmV4dCAzMiBieXRlcywgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgd2l0bmVzcyBwcm9ncmFtXG4gICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlck4oMzQpKSxcbiAgICAgIC8vIGEgc2luZ2xlIHB1YmtleVxuICAgICAgcHVia2V5OiB0eXBlZi5tYXliZShlY2MuaXNYT25seVBvaW50KSxcbiAgICAgIC8vIHRoZSBwdWIga2V5KHMpIHVzZWQgZm9yIGtleXBhdGggc2lnbmluZy5cbiAgICAgIC8vIGFnZ3JlZ2F0ZWQgd2l0aCBNdVNpZzIqIGlmID4gMVxuICAgICAgcHVia2V5czogdHlwZWYubWF5YmUodHlwZWYuYW55T2YodHlwZWYuYXJyYXlPZihlY2MuaXNYT25seVBvaW50KSwgdHlwZWYuYXJyYXlPZihpc1BsYWluUHVia2V5KSkpLFxuXG4gICAgICByZWRlZW1zOiB0eXBlZi5tYXliZShcbiAgICAgICAgdHlwZWYuYXJyYXlPZih7XG4gICAgICAgICAgbmV0d29yazogdHlwZWYubWF5YmUodHlwZWYuT2JqZWN0KSxcbiAgICAgICAgICBvdXRwdXQ6IHR5cGVmLm1heWJlKHR5cGVmLkJ1ZmZlciksXG4gICAgICAgICAgd2VpZ2h0OiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIGRlcHRoOiB0eXBlZi5tYXliZSh0eXBlZi5OdW1iZXIpLFxuICAgICAgICAgIHdpdG5lc3M6IHR5cGVmLm1heWJlKHR5cGVmLmFycmF5T2YodHlwZWYuQnVmZmVyKSksXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgcmVkZWVtSW5kZXg6IHR5cGVmLm1heWJlKHR5cGVmLk51bWJlciksIC8vIFNlbGVjdHMgdGhlIHJlZGVlbSB0byBzcGVuZFxuXG4gICAgICBzaWduYXR1cmU6IHR5cGVmLm1heWJlKGJzY3JpcHQuaXNDYW5vbmljYWxTY2hub3JyU2lnbmF0dXJlKSxcbiAgICAgIGNvbnRyb2xCbG9jazogdHlwZWYubWF5YmUodHlwZWYuQnVmZmVyKSxcbiAgICAgIGFubmV4OiB0eXBlZi5tYXliZSh0eXBlZi5CdWZmZXIpLFxuICAgIH0sXG4gICAgYVxuICApO1xuXG4gIGNvbnN0IF9hZGRyZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLmFkZHJlc3MpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXN1bHQgPSBiZWNoMzJtLmRlY29kZShhLmFkZHJlc3MpO1xuICAgIGNvbnN0IHZlcnNpb24gPSByZXN1bHQud29yZHMuc2hpZnQoKTtcbiAgICBjb25zdCBkYXRhID0gYmVjaDMybS5mcm9tV29yZHMocmVzdWx0LndvcmRzKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmVyc2lvbixcbiAgICAgIHByZWZpeDogcmVzdWx0LnByZWZpeCxcbiAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGRhdGEpLFxuICAgIH07XG4gIH0pO1xuICBjb25zdCBfb3V0cHV0UHVia2V5ID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gd2UgcmVtb3ZlIHRoZSBmaXJzdCB0d28gYnl0ZXMgKE9QXzEgMHgyMCkgZnJvbSB0aGUgb3V0cHV0IHNjcmlwdCB0b1xuICAgIC8vIGV4dHJhY3QgdGhlIDMyIGJ5dGUgdGFwcm9vdCBwdWJrZXkgKGFrYSB3aXRuZXNzIHByb2dyYW0pXG4gICAgcmV0dXJuIGEub3V0cHV0ICYmIGEub3V0cHV0LnNsaWNlKDIpO1xuICB9KTtcblxuICBjb25zdCBuZXR3b3JrID0gYS5uZXR3b3JrIHx8IEJJVENPSU5fTkVUV09SSztcblxuICBjb25zdCBvOiBQYXltZW50ID0geyBuZXR3b3JrIH07XG5cbiAgY29uc3QgX3RhcHJvb3RQYXRocyA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGlmICghYS5yZWRlZW1zKSByZXR1cm47XG4gICAgaWYgKG8udGFwVHJlZSkge1xuICAgICAgcmV0dXJuIHRhcHJvb3QuZ2V0RGVwdGhGaXJzdFRhcHRyZWUoby50YXBUcmVlKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0czogQXJyYXk8QnVmZmVyIHwgdW5kZWZpbmVkPiA9IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0IH0pID0+IG91dHB1dCk7XG4gICAgaWYgKCFvdXRwdXRzLmV2ZXJ5KChvdXRwdXQpID0+IG91dHB1dCkpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5nZXRIdWZmbWFuVGFwdHJlZShcbiAgICAgIG91dHB1dHMgYXMgQnVmZmVyW10sXG4gICAgICBhLnJlZGVlbXMubWFwKCh7IHdlaWdodCB9KSA9PiB3ZWlnaHQpXG4gICAgKTtcbiAgfSk7XG4gIGNvbnN0IF9wYXJzZWRXaXRuZXNzID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgaWYgKCFhLndpdG5lc3MpIHJldHVybjtcbiAgICByZXR1cm4gdGFwcm9vdC5wYXJzZVRhcHJvb3RXaXRuZXNzKGEud2l0bmVzcyk7XG4gIH0pO1xuICBjb25zdCBfcGFyc2VkQ29udHJvbEJsb2NrID0gbGF6eS52YWx1ZSgoKSA9PiB7XG4gICAgLy8gQ2FuJ3QgdXNlIG8uY29udHJvbEJsb2NrLCBiZWNhdXNlIGl0IGNvdWxkIGJlIGNpcmN1bGFyXG4gICAgaWYgKGEuY29udHJvbEJsb2NrKSByZXR1cm4gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2MsIGEuY29udHJvbEJsb2NrKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIHJldHVybiB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjYywgcGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spO1xuICAgIH1cbiAgfSk7XG5cbiAgbGF6eS5wcm9wKG8sICdpbnRlcm5hbFB1YmtleScsICgpID0+IHtcbiAgICBpZiAoYS5wdWJrZXkpIHtcbiAgICAgIC8vIHNpbmdsZSBwdWJrZXlcbiAgICAgIHJldHVybiBhLnB1YmtleTtcbiAgICB9IGVsc2UgaWYgKGEucHVia2V5cyAmJiBhLnB1YmtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gYS5wdWJrZXlzWzBdO1xuICAgIH0gZWxzZSBpZiAoYS5wdWJrZXlzICYmIGEucHVia2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBtdWx0aXBsZSBwdWJrZXlzXG4gICAgICBpZiAoaXNQbGFpblB1YmtleXMoYS5wdWJrZXlzKSkge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20obXVzaWcuZ2V0WE9ubHlQdWJrZXkobXVzaWcua2V5QWdnKGEucHVia2V5cykpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRhcHJvb3QuYWdncmVnYXRlTXVTaWdQdWJrZXlzKGVjYywgYS5wdWJrZXlzKSk7XG4gICAgfSBlbHNlIGlmIChfcGFyc2VkQ29udHJvbEJsb2NrKCkpIHtcbiAgICAgIHJldHVybiBfcGFyc2VkQ29udHJvbEJsb2NrKCk/LmludGVybmFsUHVia2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBrZXkgcGF0aCBzcGVuZGluZyBjb25kaXRpb24sIHdlIHVzZSBhbiBpbnRlcm5hbCBrZXkgd2l0aCB1bmtub3duIHNlY3JldCBrZXkuXG4gICAgICAvLyBUT0RPOiBJbiBvcmRlciB0byBhdm9pZCBsZWFraW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGtleSBwYXRoIHNwZW5kaW5nIGlzIG5vdCBwb3NzaWJsZSBpdFxuICAgICAgLy8gaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2VcbiAgICAgIC8vIEggKyByRyBhcyBpbnRlcm5hbCBrZXkuIEl0IGlzIHBvc3NpYmxlIHRvIHByb3ZlIHRoYXQgdGhpcyBpbnRlcm5hbCBrZXkgZG9lcyBub3QgaGF2ZSBhXG4gICAgICAvLyBrbm93biBkaXNjcmV0ZSBsb2dhcml0aG0gd2l0aCByZXNwZWN0IHRvIEcgYnkgcmV2ZWFsaW5nIHIgdG8gYSB2ZXJpZmllciB3aG8gY2FuIHRoZW5cbiAgICAgIC8vIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICAgICAgcmV0dXJuIEg7XG4gICAgfVxuICB9KTtcblxuICBsYXp5LnByb3AobywgJ3RhcHRyZWVSb290JywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBjb25zdCBwYXJzZWRXaXRuZXNzID0gX3BhcnNlZFdpdG5lc3MoKTtcbiAgICBsZXQgdGFwdHJlZVJvb3Q7XG4gICAgLy8gUHJlZmVyIHRvIGdldCB0aGUgcm9vdCB2aWEgdGhlIGNvbnRyb2wgYmxvY2sgYmVjYXVzZSBub3QgYWxsIHJlZGVlbXMgbWF5XG4gICAgLy8gYmUgYXZhaWxhYmxlXG4gICAgaWYgKHBhcnNlZENvbnRyb2xCbG9jaykge1xuICAgICAgbGV0IHRhcHNjcmlwdDtcbiAgICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgICB0YXBzY3JpcHQgPSBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdDtcbiAgICAgIH0gZWxzZSBpZiAoby5yZWRlZW0gJiYgby5yZWRlZW0ub3V0cHV0KSB7XG4gICAgICAgIHRhcHNjcmlwdCA9IG8ucmVkZWVtLm91dHB1dDtcbiAgICAgIH1cbiAgICAgIGlmICh0YXBzY3JpcHQpIHRhcHRyZWVSb290ID0gdGFwcm9vdC5nZXRUYXB0cmVlUm9vdChlY2MsIHBhcnNlZENvbnRyb2xCbG9jaywgdGFwc2NyaXB0KTtcbiAgICB9XG4gICAgaWYgKCF0YXB0cmVlUm9vdCAmJiBfdGFwcm9vdFBhdGhzKCkpIHRhcHRyZWVSb290ID0gX3RhcHJvb3RQYXRocygpPy5yb290O1xuXG4gICAgcmV0dXJuIHRhcHRyZWVSb290O1xuICB9KTtcblxuICBjb25zdCBfdGFwcm9vdFB1YmtleSA9IGxhenkudmFsdWUoKCkgPT4ge1xuICAgIGNvbnN0IHRhcHRyZWVSb290ID0gby50YXB0cmVlUm9vdDtcbiAgICAvLyBSZWZ1c2UgdG8gY3JlYXRlIGFuIHVuc3BlbmRhYmxlIGtleVxuICAgIGlmICghYS5wdWJrZXkgJiYgIShhLnB1YmtleXMgJiYgYS5wdWJrZXlzLmxlbmd0aCkgJiYgIWEucmVkZWVtcyAmJiAhdGFwdHJlZVJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRhcHJvb3QudGFwVHdlYWtQdWJrZXkoZWNjLCBvPy5pbnRlcm5hbFB1YmtleSBhcyBVaW50OEFycmF5LCB0YXB0cmVlUm9vdCk7XG4gIH0pO1xuXG4gIGxhenkucHJvcChvLCAndGFwVHJlZScsICgpID0+IHtcbiAgICBpZiAoIWEucmVkZWVtcykgcmV0dXJuO1xuICAgIGlmIChhLnJlZGVlbXMuZmluZCgoeyBkZXB0aCB9KSA9PiBkZXB0aCA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnRGVwcmVjYXRpb24gV2FybmluZzogV2VpZ2h0LWJhc2VkIHRhcCB0cmVlIGNvbnN0cnVjdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gJyArXG4gICAgICAgICAgJ1BsZWFzZSB1c2UgZGVwdGgtZmlyc3QgY29kaW5nIGFzIHNwZWNpZmllZCBpbiBCSVAtMDM3MS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWEucmVkZWVtcy5ldmVyeSgoeyBvdXRwdXQgfSkgPT4gb3V0cHV0KSkgcmV0dXJuO1xuICAgIHJldHVybiB7XG4gICAgICBsZWF2ZXM6IGEucmVkZWVtcy5tYXAoKHsgb3V0cHV0LCBkZXB0aCB9KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2NyaXB0OiBvdXRwdXQsXG4gICAgICAgICAgbGVhZlZlcnNpb246IHRhcHJvb3QuSU5JVElBTF9UQVBTQ1JJUFRfVkVSU0lPTixcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ2FkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgcHVia2V5ID0gX291dHB1dFB1YmtleSgpIHx8IChfdGFwcm9vdFB1YmtleSgpICYmIF90YXByb290UHVia2V5KCk/LnhPbmx5UHVia2V5KTtcbiAgICAvLyBvbmx5IGVuY29kZSB0aGUgMzIgYnl0ZSB3aXRuZXNzIHByb2dyYW0gYXMgYmVjaDMybVxuICAgIGNvbnN0IHdvcmRzID0gYmVjaDMybS50b1dvcmRzKHB1YmtleSk7XG4gICAgd29yZHMudW5zaGlmdCgweDAxKTtcbiAgICByZXR1cm4gYmVjaDMybS5lbmNvZGUobmV0d29yay5iZWNoMzIsIHdvcmRzKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnY29udHJvbEJsb2NrJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnU2NyaXB0Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3MuY29udHJvbEJsb2NrO1xuICAgIH1cbiAgICBjb25zdCB0YXByb290UHVia2V5ID0gX3RhcHJvb3RQdWJrZXkoKTtcbiAgICBjb25zdCB0YXByb290UGF0aHMgPSBfdGFwcm9vdFBhdGhzKCk7XG4gICAgaWYgKCF0YXByb290UGF0aHMgfHwgIXRhcHJvb3RQdWJrZXkgfHwgYS5yZWRlZW1JbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgcmV0dXJuIHRhcHJvb3QuZ2V0Q29udHJvbEJsb2NrKHRhcHJvb3RQdWJrZXkucGFyaXR5LCBvLmludGVybmFsUHVia2V5ISwgdGFwcm9vdFBhdGhzLnBhdGhzW2EucmVkZWVtSW5kZXhdKTtcbiAgfSk7XG4gIGxhenkucHJvcChvLCAnc2lnbmF0dXJlJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgcmV0dXJuIHBhcnNlZFdpdG5lc3Muc2lnbmF0dXJlO1xuICAgIH1cbiAgfSk7XG4gIGxhenkucHJvcChvLCAnYW5uZXgnLCAoKSA9PiB7XG4gICAgaWYgKCFfcGFyc2VkV2l0bmVzcygpKSByZXR1cm47XG4gICAgcmV0dXJuIF9wYXJzZWRXaXRuZXNzKCkhLmFubmV4O1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdvdXRwdXQnLCAoKSA9PiB7XG4gICAgaWYgKGEuYWRkcmVzcykge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBfYWRkcmVzcygpITtcbiAgICAgIHJldHVybiBic2NyaXB0LmNvbXBpbGUoW09QUy5PUF8xLCBkYXRhXSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG4gICAgaWYgKCF0YXByb290UHVia2V5KSByZXR1cm47XG5cbiAgICAvLyBPUF8xIGluZGljYXRlcyBzZWd3aXQgdmVyc2lvbiAxXG4gICAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbT1BTLk9QXzEsIEJ1ZmZlci5mcm9tKHRhcHJvb3RQdWJrZXkueE9ubHlQdWJrZXkpXSk7XG4gIH0pO1xuICBsYXp5LnByb3AobywgJ3dpdG5lc3MnLCAoKSA9PiB7XG4gICAgaWYgKCFhLnJlZGVlbXMpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkgcmV0dXJuIFthLnNpZ25hdHVyZV07IC8vIEtleXBhdGggc3BlbmRcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCFvLnJlZGVlbSkge1xuICAgICAgcmV0dXJuOyAvLyBObyBjaG9zZW4gcmVkZWVtIHNjcmlwdCwgY2FuJ3QgbWFrZSB3aXRuZXNzXG4gICAgfSBlbHNlIGlmICghby5jb250cm9sQmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVkZWVtV2l0bmVzcztcbiAgICAvLyBzb21lIGNhbGxlcnMgbWF5IHByb3ZpZGUgd2l0bmVzcyBlbGVtZW50cyBpbiB0aGUgaW5wdXQgc2NyaXB0XG4gICAgaWYgKG8ucmVkZWVtLmlucHV0ICYmIG8ucmVkZWVtLmlucHV0Lmxlbmd0aCA+IDAgJiYgby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB0cmFuc2Zvcm0gcmVkZWVtIGlucHV0IHRvIHdpdG5lc3Mgc3RhY2tcbiAgICAgIHJlZGVlbVdpdG5lc3MgPSBic2NyaXB0LnRvU3RhY2soYnNjcmlwdC5kZWNvbXBpbGUoby5yZWRlZW0uaW5wdXQpISk7XG5cbiAgICAgIC8vIGFzc2lnbnMgYSBuZXcgb2JqZWN0IHRvIG8ucmVkZWVtXG4gICAgICBvLnJlZGVlbXMhW2EucmVkZWVtSW5kZXghXSA9IE9iamVjdC5hc3NpZ24oeyB3aXRuZXNzOiByZWRlZW1XaXRuZXNzIH0sIG8ucmVkZWVtKTtcbiAgICAgIG8ucmVkZWVtLmlucHV0ID0gRU1QVFlfQlVGRkVSO1xuICAgIH0gZWxzZSBpZiAoby5yZWRlZW0ub3V0cHV0ICYmIG8ucmVkZWVtLm91dHB1dC5sZW5ndGggPiAwICYmIG8ucmVkZWVtLndpdG5lc3MgJiYgby5yZWRlZW0ud2l0bmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICByZWRlZW1XaXRuZXNzID0gby5yZWRlZW0ud2l0bmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdpdG5lc3MgPSBbLi4ucmVkZWVtV2l0bmVzcywgby5yZWRlZW0ub3V0cHV0LCBvLmNvbnRyb2xCbG9ja107XG5cbiAgICBpZiAoYS5hbm5leCkge1xuICAgICAgd2l0bmVzcy5wdXNoKGEuYW5uZXgpO1xuICAgIH1cblxuICAgIHJldHVybiB3aXRuZXNzO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICduYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IG5hbWVQYXJ0cyA9IFsncDJ0ciddO1xuICAgIHJldHVybiBuYW1lUGFydHMuam9pbignLScpO1xuICB9KTtcbiAgbGF6eS5wcm9wKG8sICdyZWRlZW0nLCAoKSA9PiB7XG4gICAgaWYgKGEucmVkZWVtcykge1xuICAgICAgaWYgKGEucmVkZWVtSW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkV2l0bmVzcyA9IF9wYXJzZWRXaXRuZXNzKCk7XG4gICAgaWYgKHBhcnNlZFdpdG5lc3MgJiYgcGFyc2VkV2l0bmVzcy5zcGVuZFR5cGUgPT09ICdTY3JpcHQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aXRuZXNzOiBwYXJzZWRXaXRuZXNzLnNjcmlwdFNpZyxcbiAgICAgICAgb3V0cHV0OiBwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvLyBleHRlbmRlZCB2YWxpZGF0aW9uXG4gIGlmIChvcHRzLnZhbGlkYXRlKSB7XG4gICAgY29uc3QgdGFwcm9vdFB1YmtleSA9IF90YXByb290UHVia2V5KCk7XG5cbiAgICBpZiAoYS5vdXRwdXQpIHtcbiAgICAgIGlmIChhLm91dHB1dFswXSAhPT0gT1BTLk9QXzEgfHwgYS5vdXRwdXRbMV0gIT09IDB4MjApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0cHV0IGlzIGludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgd2UncmUgcGFzc2VkIGJvdGggYW4gb3V0cHV0IHNjcmlwdCBhbmQgYW4gYWRkcmVzcywgZW5zdXJlIHRoZXkgbWF0Y2hcbiAgICAgIGlmIChhLmFkZHJlc3MgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoX2FkZHJlc3MoKT8uZGF0YSBhcyBCdWZmZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gYWRkcmVzcyAmIG91dHB1dCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBXcmFwcGluZyBgdGFwcm9vdFB1YmtleS54T25seVB1YmtleWAgaW4gQnVmZmVyIGJlY2F1c2Ugb2YgYSBwZWN1bGlhciBpc3N1ZSBpbiB0aGUgZnJvbnRlbmRcbiAgICAgIC8vIHdoZXJlIGEgcG9seWZpbGwgZm9yIEJ1ZmZlciBpcyB1c2VkLiBSZWZlcjogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9CRy02MTQyMFxuICAgICAgaWYgKHRhcHJvb3RQdWJrZXkgJiYgX291dHB1dFB1YmtleSAmJiAhX291dHB1dFB1YmtleSgpPy5lcXVhbHMoQnVmZmVyLmZyb20odGFwcm9vdFB1YmtleS54T25seVB1YmtleSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gb3V0cHV0IGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhLmFkZHJlc3MpIHtcbiAgICAgIGlmICh0YXByb290UHVia2V5ICYmICFfYWRkcmVzcygpPy5kYXRhLmVxdWFscyhCdWZmZXIuZnJvbSh0YXByb290UHVia2V5LnhPbmx5UHVia2V5KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWlzbWF0Y2ggYmV0d2VlbiBhZGRyZXNzIGFuZCB0YXByb290IHB1YmtleScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IF9wYXJzZWRDb250cm9sQmxvY2soKTtcbiAgICBpZiAocGFyc2VkQ29udHJvbEJsb2NrKSB7XG4gICAgICBpZiAoIXBhcnNlZENvbnRyb2xCbG9jay5pbnRlcm5hbFB1YmtleS5lcXVhbHMobz8uaW50ZXJuYWxQdWJrZXkgYXMgVWludDhBcnJheSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW50ZXJuYWwgcHVia2V5IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgICBpZiAodGFwcm9vdFB1YmtleSAmJiBwYXJzZWRDb250cm9sQmxvY2sucGFyaXR5ICE9PSB0YXByb290UHVia2V5LnBhcml0eSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJpdHkgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYS5yZWRlZW1zKSB7XG4gICAgICBpZiAoIWEucmVkZWVtcy5sZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VtcHR5IHJlZGVlbXMnKTtcbiAgICAgIGlmIChhLnJlZGVlbUluZGV4ICE9PSB1bmRlZmluZWQgJiYgKGEucmVkZWVtSW5kZXggPCAwIHx8IGEucmVkZWVtSW5kZXggPj0gYS5yZWRlZW1zLmxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCByZWRlZW0gaW5kZXgnKTtcbiAgICAgIH1cbiAgICAgIGEucmVkZWVtcy5mb3JFYWNoKChyZWRlZW0pID0+IHtcbiAgICAgICAgaWYgKHJlZGVlbS5uZXR3b3JrICYmIHJlZGVlbS5uZXR3b3JrICE9PSBuZXR3b3JrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTmV0d29yayBtaXNtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjaG9zZW5SZWRlZW0gPSBhLnJlZGVlbXMgJiYgYS5yZWRlZW1JbmRleCAhPT0gdW5kZWZpbmVkICYmIGEucmVkZWVtc1thLnJlZGVlbUluZGV4XTtcblxuICAgIGNvbnN0IHBhcnNlZFdpdG5lc3MgPSBfcGFyc2VkV2l0bmVzcygpO1xuICAgIGlmIChwYXJzZWRXaXRuZXNzICYmIHBhcnNlZFdpdG5lc3Muc3BlbmRUeXBlID09PSAnS2V5Jykge1xuICAgICAgaWYgKGEuY29udHJvbEJsb2NrKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuZXhwZWN0ZWQgY29udHJvbCBibG9jayBmb3Iga2V5IHBhdGgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuc2lnbmF0dXJlICYmICFhLnNpZ25hdHVyZS5lcXVhbHMocGFyc2VkV2l0bmVzcy5zaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pc21hdGNoIGJldHdlZW4gd2l0bmVzcyAmIHNpZ25hdHVyZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFyc2VkV2l0bmVzcyAmJiBwYXJzZWRXaXRuZXNzLnNwZW5kVHlwZSA9PT0gJ1NjcmlwdCcpIHtcbiAgICAgIGlmIChhLnNpZ25hdHVyZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmV4cGVjdGVkIHNpZ25hdHVyZSB3aXRoIHNjcmlwdCBwYXRoIHdpdG5lc3MnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuY29udHJvbEJsb2NrICYmICFhLmNvbnRyb2xCbG9jay5lcXVhbHMocGFyc2VkV2l0bmVzcy5jb250cm9sQmxvY2spKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbnRyb2wgYmxvY2sgbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGEuYW5uZXggJiYgcGFyc2VkV2l0bmVzcy5hbm5leCAmJiAhYS5hbm5leC5lcXVhbHMocGFyc2VkV2l0bmVzcy5hbm5leCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYW5uZXggbWlzbWF0Y2gnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNob3NlblJlZGVlbSAmJiBjaG9zZW5SZWRlZW0ub3V0cHV0ICYmICFjaG9zZW5SZWRlZW0ub3V0cHV0LmVxdWFscyhwYXJzZWRXaXRuZXNzLnRhcHNjcmlwdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFwc2NyaXB0IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obywgYSk7XG59XG4iXX0= |
{ | ||
"name": "@bitgo-beta/utxo-lib", | ||
"version": "8.0.3-beta.722", | ||
"version": "8.0.3-beta.723", | ||
"description": "Client-side Bitcoin JavaScript library", | ||
@@ -49,5 +49,5 @@ "main": "./dist/src/index.js", | ||
"dependencies": { | ||
"@bitgo-beta/blake2b": "3.0.4-beta.958", | ||
"@bitgo-beta/blake2b": "3.0.4-beta.959", | ||
"@brandonblack/musig": "^0.0.1-alpha.0", | ||
"@noble/secp256k1": "1.6.3", | ||
"@noble/curves": "1.8.1", | ||
"bech32": "^2.0.0", | ||
@@ -58,3 +58,2 @@ "bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4", | ||
"bitcoinjs-lib": "npm:@bitgo-forks/bitcoinjs-lib@7.1.0-master.9", | ||
"bn.js": "^5.2.1", | ||
"bs58check": "^2.1.2", | ||
@@ -70,3 +69,3 @@ "cashaddress": "^1.1.0", | ||
"devDependencies": { | ||
"@types/elliptic": "^6.4.18", | ||
"@noble/secp256k1": "1.6.3", | ||
"@types/fs-extra": "^9.0.12", | ||
@@ -76,3 +75,2 @@ "@types/node": "^16.18.46", | ||
"debug": "^3.1.0", | ||
"elliptic": "^6.6.1", | ||
"fs-extra": "^9.1.0" | ||
@@ -91,3 +89,3 @@ }, | ||
"license": "MIT", | ||
"gitHead": "d01e6d8505a6ab66f0b94528a595aee01fde522e" | ||
"gitHead": "e7aabd6106c4969c9deb76a28091698b0339a479" | ||
} |
1667502
16
6
+ Added@noble/curves@1.8.1
+ Added@bitgo-beta/blake2b@3.0.4-beta.959(transitive)
+ Added@bitgo-beta/blake2b-wasm@3.0.4-beta.962(transitive)
+ Added@noble/curves@1.8.1(transitive)
+ Added@noble/hashes@1.7.1(transitive)
- Removed@noble/secp256k1@1.6.3
- Removedbn.js@^5.2.1
- Removed@bitgo-beta/blake2b@3.0.4-beta.958(transitive)
- Removed@bitgo-beta/blake2b-wasm@3.0.4-beta.961(transitive)
- Removed@noble/secp256k1@1.6.3(transitive)
- Removedbn.js@5.2.1(transitive)