@piggly/secrets 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/cjs/bin/commands/keys/ed25519.js +2 -2
- package/dist/cjs/bin/commands/mnemonic.js +2 -2
- package/dist/cjs/bin/commands/secrets/aes256.js +87 -2
- package/dist/cjs/bin/index.js +3 -3
- package/dist/cjs/core/secrets/aes256.js +19 -4
- package/dist/cjs/types/index.js +1 -1
- package/dist/cjs/utils/index.js +12 -11
- package/dist/esm/bin/commands/keys/ed25519.js +2 -2
- package/dist/esm/bin/commands/mnemonic.js +2 -2
- package/dist/esm/bin/commands/secrets/aes256.js +86 -4
- package/dist/esm/bin/index.js +3 -3
- package/dist/esm/core/secrets/aes256.js +19 -4
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/utils/index.js +12 -11
- package/dist/types/bin/commands/secrets/aes256.d.cts +10 -0
- package/dist/types/bin/commands/secrets/aes256.d.mts +10 -0
- package/dist/types/bin/commands/secrets/aes256.d.ts +10 -0
- package/dist/types/core/secrets/aes256.d.cts +12 -2
- package/dist/types/core/secrets/aes256.d.mts +12 -2
- package/dist/types/core/secrets/aes256.d.ts +12 -2
- package/dist/types/types/index.d.cts +1 -2
- package/dist/types/types/index.d.mts +1 -2
- package/dist/types/types/index.d.ts +1 -2
- package/package.json +3 -3
package/dist/cjs/utils/index.js
CHANGED
|
@@ -16,7 +16,8 @@ exports.stringToBuffer = stringToBuffer;
|
|
|
16
16
|
exports.supportsMnemonicLanguage = supportsMnemonicLanguage;
|
|
17
17
|
var _nodeCrypto = _interopRequireDefault(require("node:crypto"));
|
|
18
18
|
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
19
|
-
var _bip = require("bip39");
|
|
19
|
+
var _bip = require("@scure/bip39");
|
|
20
|
+
var _english = require("@scure/bip39/wordlists/english.js");
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
22
|
/**
|
|
22
23
|
* Convert a buffer to a hex string.
|
|
@@ -77,14 +78,13 @@ function hash(algorithm, message) {
|
|
|
77
78
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
78
79
|
*/
|
|
79
80
|
function mnemonic(options = {}) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
wordslist = _bip.wordlists[options.language];
|
|
81
|
+
if (options.language && options.language !== 'english') {
|
|
82
|
+
throw Error(`Language ${options.language} not supported. Only english is available.`);
|
|
83
|
+
}
|
|
84
|
+
if (options.strength && (options.strength < 128 || options.strength > 256)) {
|
|
85
|
+
throw Error('Strength must be between 128 and 256.');
|
|
86
86
|
}
|
|
87
|
-
return (0, _bip.generateMnemonic)(
|
|
87
|
+
return (0, _bip.generateMnemonic)(_english.wordlist, options.strength);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/**
|
|
@@ -129,7 +129,8 @@ function parseFileName(file) {
|
|
|
129
129
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
130
130
|
*/
|
|
131
131
|
async function seed(mnemonic, options = {}) {
|
|
132
|
-
|
|
132
|
+
const seedBytes = await (0, _bip.mnemonicToSeed)(mnemonic, options.password);
|
|
133
|
+
return Buffer.from(seedBytes);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
/**
|
|
@@ -172,6 +173,6 @@ function stringToBuffer(message) {
|
|
|
172
173
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
173
174
|
*/
|
|
174
175
|
function supportsMnemonicLanguage(language) {
|
|
175
|
-
return
|
|
176
|
+
return language === 'english';
|
|
176
177
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUNyeXB0byIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGVQYXRoIiwiX2JpcCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImJ1ZmZlclRvSGV4IiwiYnVmZmVyIiwidG9TdHJpbmciLCJidWZmZXJUb1N0cmluZyIsImN1dEJ1ZmZlciIsImxlbmd0aCIsInN1YmFycmF5IiwiaGFzaCIsImFsZ29yaXRobSIsIm1lc3NhZ2UiLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwibW5lbW9uaWMiLCJvcHRpb25zIiwid29yZHNsaXN0IiwibGFuZ3VhZ2UiLCJzdXBwb3J0c01uZW1vbmljTGFuZ3VhZ2UiLCJFcnJvciIsIndvcmRsaXN0cyIsImdlbmVyYXRlTW5lbW9uaWMiLCJzdHJlbmd0aCIsInJuZyIsInBhcnNlQWJzcGF0aCIsInJvb3QiLCJhYnNwYXRoIiwic3RhcnRzV2l0aCIsInBhdGgiLCJqb2luIiwicGFyc2VGaWxlTmFtZSIsImZpbGUiLCJfZmlsZW5hbWUiLCJzcGxpdCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJzZWVkIiwibW5lbW9uaWNUb1NlZWQiLCJwYXNzd29yZCIsInNwbGl0V29yZHMiLCJpbnB1dCIsImNodW5rU2l6ZSIsIndvcmRzIiwicmVzdWx0IiwiaSIsImNodW5rIiwic2xpY2UiLCJwdXNoIiwic3RyaW5nVG9CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiT2JqZWN0Iiwia2V5cyIsImluY2x1ZGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYywgbW5lbW9uaWNUb1NlZWQsIHdvcmRsaXN0cyB9IGZyb20gJ2JpcDM5JztcblxuaW1wb3J0IHtcblx0R2VuZXJhdGVNbmVtb25pY1NlZWRPcHRpb25zLFxuXHRHZW5lcmF0ZU1uZW1vbmljT3B0aW9ucyxcbn0gZnJvbSAnQC90eXBlcy9pbmRleC5qcyc7XG5cbi8qKlxuICogQ29udmVydCBhIGJ1ZmZlciB0byBhIGhleCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBoZXggc3RyaW5nLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9IZXgoYnVmZmVyOiBCdWZmZXIpIHtcblx0cmV0dXJuIGJ1ZmZlci50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGJ1ZmZlciB0byBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHN0cmluZy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvU3RyaW5nKGJ1ZmZlcjogQnVmZmVyKSB7XG5cdHJldHVybiBidWZmZXIudG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBDdXQgYSBidWZmZXIgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoLlxuICpcbiAqIEBwYXJhbSBidWZmZXIgLSBUaGUgYnVmZmVyIHRvIGN1dC5cbiAqIEBwYXJhbSBsZW5ndGggLSBUaGUgbGVuZ3RoIHRvIGN1dCB0aGUgYnVmZmVyIHRvLlxuICogQHJldHVybnMgVGhlIGN1dCBidWZmZXIuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXRCdWZmZXIoYnVmZmVyOiBCdWZmZXIsIGxlbmd0aDogbnVtYmVyKTogQnVmZmVyIHtcblx0cmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgaGFzaCBmcm9tIGEgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gYWxnb3JpdGhtIC0gVGhlIGFsZ29yaXRobSB0byB1c2UuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGhhc2guXG4gKiBAcmV0dXJucyBUaGUgaGFzaC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2goYWxnb3JpdGhtOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IEJ1ZmZlciB7XG5cdHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChhbGdvcml0aG0pLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG1uZW1vbmljLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIG1uZW1vbmljLlxuICogQHJldHVybnMgVGhlIG1uZW1vbmljLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW5lbW9uaWMob3B0aW9uczogR2VuZXJhdGVNbmVtb25pY09wdGlvbnMgPSB7fSk6IHN0cmluZyB7XG5cdGxldCB3b3Jkc2xpc3Q6IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cblx0aWYgKG9wdGlvbnMubGFuZ3VhZ2UpIHtcblx0XHRpZiAoc3VwcG9ydHNNbmVtb25pY0xhbmd1YWdlKG9wdGlvbnMubGFuZ3VhZ2UpID09PSBmYWxzZSkge1xuXHRcdFx0dGhyb3cgRXJyb3IoYExhbmd1YWdlICR7b3B0aW9ucy5sYW5ndWFnZX0gbm90IHN1cHBvcnRlZC5gKTtcblx0XHR9XG5cblx0XHR3b3Jkc2xpc3QgPSB3b3JkbGlzdHNbb3B0aW9ucy5sYW5ndWFnZV07XG5cdH1cblxuXHRyZXR1cm4gZ2VuZXJhdGVNbmVtb25pYyhvcHRpb25zLnN0cmVuZ3RoLCBvcHRpb25zLnJuZywgd29yZHNsaXN0KTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgcm9vdCBwYXRoLlxuICogQHBhcmFtIGFic3BhdGggLSBUaGUgcGF0aCB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQWJzcGF0aChyb290OiBzdHJpbmcsIGFic3BhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAoYWJzcGF0aCkge1xuXHRcdGlmIChhYnNwYXRoLnN0YXJ0c1dpdGgoJy8nKSA9PT0gZmFsc2UpIHtcblx0XHRcdHJldHVybiBwYXRoLmpvaW4ocm9vdCwgYWJzcGF0aCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFic3BhdGg7XG5cdH1cblxuXHRyZXR1cm4gcm9vdDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGZpbGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIG5hbWUgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGZpbGUgbmFtZS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRmlsZU5hbWUoZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgW19maWxlbmFtZV0gPSBmaWxlLnNwbGl0KCcuJyk7XG5cblx0cmV0dXJuIF9maWxlbmFtZVxuXHRcdC50cmltKClcblx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdC5yZXBsYWNlKC9bXFxXXFxzXS9naSwgJ18nKVxuXHRcdC5yZXBsYWNlKC9fKy9nLCAnXycpXG5cdFx0LnJlcGxhY2UoL15fKy8sICcnKVxuXHRcdC5yZXBsYWNlKC9fKyQvLCAnJyk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWVkIGZyb20gYSBtbmVtb25pYy5cbiAqXG4gKiBAcGFyYW0gbW5lbW9uaWMgLSBUaGUgbW5lbW9uaWMgdG8gZ2VuZXJhdGUgdGhlIHNlZWQgZnJvbS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIHNlZWQuXG4gKiBAcmV0dXJucyBUaGUgc2VlZC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlZWQoXG5cdG1uZW1vbmljOiBzdHJpbmcsXG5cdG9wdGlvbnM6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxCdWZmZXI+IHtcblx0cmV0dXJuIG1uZW1vbmljVG9TZWVkKG1uZW1vbmljLCBvcHRpb25zLnBhc3N3b3JkKTtcbn1cblxuLyoqXG4gKiBTcGxpdCBhIHN0cmluZyBpbnRvIGNodW5rcyBvZiB3b3Jkcy5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgLSBUaGUgc3RyaW5nIHRvIHNwbGl0LlxuICogQHBhcmFtIGNodW5rU2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBjaHVua3MuXG4gKiBAcmV0dXJucyBUaGUgY2h1bmtzLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRXb3JkcyhpbnB1dDogc3RyaW5nLCBjaHVua1NpemUgPSA2KTogQXJyYXk8QXJyYXk8c3RyaW5nPj4ge1xuXHRjb25zdCB3b3JkcyA9IGlucHV0LnNwbGl0KCcgJyk7XG5cdGNvbnN0IHJlc3VsdDogc3RyaW5nW11bXSA9IFtdO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyBpICs9IGNodW5rU2l6ZSkge1xuXHRcdGNvbnN0IGNodW5rID0gd29yZHMuc2xpY2UoaSwgaSArIGNodW5rU2l6ZSk7XG5cdFx0cmVzdWx0LnB1c2goY2h1bmspO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgYnVmZmVyLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGJ1ZmZlci5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvQnVmZmVyKG1lc3NhZ2U6IHN0cmluZykge1xuXHRyZXR1cm4gQnVmZmVyLmZyb20obWVzc2FnZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBtbmVtb25pYyBsYW5ndWFnZSBpcyBzdXBwb3J0ZWQuXG4gKlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgbGFuZ3VhZ2UgaXMgc3VwcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0c01uZW1vbmljTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMod29yZGxpc3RzKS5pbmNsdWRlcyhsYW5ndWFnZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFB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
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUNyeXB0byIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGVQYXRoIiwiX2JpcCIsIl9lbmdsaXNoIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiYnVmZmVyVG9IZXgiLCJidWZmZXIiLCJ0b1N0cmluZyIsImJ1ZmZlclRvU3RyaW5nIiwiY3V0QnVmZmVyIiwibGVuZ3RoIiwic3ViYXJyYXkiLCJoYXNoIiwiYWxnb3JpdGhtIiwibWVzc2FnZSIsImNyeXB0byIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJtbmVtb25pYyIsIm9wdGlvbnMiLCJsYW5ndWFnZSIsIkVycm9yIiwic3RyZW5ndGgiLCJnZW5lcmF0ZU1uZW1vbmljIiwid29yZGxpc3QiLCJwYXJzZUFic3BhdGgiLCJyb290IiwiYWJzcGF0aCIsInN0YXJ0c1dpdGgiLCJwYXRoIiwiam9pbiIsInBhcnNlRmlsZU5hbWUiLCJmaWxlIiwiX2ZpbGVuYW1lIiwic3BsaXQiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwic2VlZCIsInNlZWRCeXRlcyIsIm1uZW1vbmljVG9TZWVkIiwicGFzc3dvcmQiLCJCdWZmZXIiLCJmcm9tIiwic3BsaXRXb3JkcyIsImlucHV0IiwiY2h1bmtTaXplIiwid29yZHMiLCJyZXN1bHQiLCJpIiwiY2h1bmsiLCJzbGljZSIsInB1c2giLCJzdHJpbmdUb0J1ZmZlciIsInN1cHBvcnRzTW5lbW9uaWNMYW5ndWFnZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGdlbmVyYXRlTW5lbW9uaWMsIG1uZW1vbmljVG9TZWVkIH0gZnJvbSAnQHNjdXJlL2JpcDM5JztcbmltcG9ydCB7IHdvcmRsaXN0IH0gZnJvbSAnQHNjdXJlL2JpcDM5L3dvcmRsaXN0cy9lbmdsaXNoLmpzJztcblxuaW1wb3J0IHtcblx0R2VuZXJhdGVNbmVtb25pY1NlZWRPcHRpb25zLFxuXHRHZW5lcmF0ZU1uZW1vbmljT3B0aW9ucyxcbn0gZnJvbSAnQC90eXBlcy9pbmRleC5qcyc7XG5cbi8qKlxuICogQ29udmVydCBhIGJ1ZmZlciB0byBhIGhleCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBoZXggc3RyaW5nLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9IZXgoYnVmZmVyOiBCdWZmZXIpIHtcblx0cmV0dXJuIGJ1ZmZlci50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGJ1ZmZlciB0byBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gYnVmZmVyIC0gVGhlIGJ1ZmZlciB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHN0cmluZy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvU3RyaW5nKGJ1ZmZlcjogQnVmZmVyKSB7XG5cdHJldHVybiBidWZmZXIudG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBDdXQgYSBidWZmZXIgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoLlxuICpcbiAqIEBwYXJhbSBidWZmZXIgLSBUaGUgYnVmZmVyIHRvIGN1dC5cbiAqIEBwYXJhbSBsZW5ndGggLSBUaGUgbGVuZ3RoIHRvIGN1dCB0aGUgYnVmZmVyIHRvLlxuICogQHJldHVybnMgVGhlIGN1dCBidWZmZXIuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXRCdWZmZXIoYnVmZmVyOiBCdWZmZXIsIGxlbmd0aDogbnVtYmVyKTogQnVmZmVyIHtcblx0cmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgaGFzaCBmcm9tIGEgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gYWxnb3JpdGhtIC0gVGhlIGFsZ29yaXRobSB0byB1c2UuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGhhc2guXG4gKiBAcmV0dXJucyBUaGUgaGFzaC5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2goYWxnb3JpdGhtOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IEJ1ZmZlciB7XG5cdHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChhbGdvcml0aG0pLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG1uZW1vbmljLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIG1uZW1vbmljLlxuICogQHJldHVybnMgVGhlIG1uZW1vbmljLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW5lbW9uaWMob3B0aW9uczogR2VuZXJhdGVNbmVtb25pY09wdGlvbnMgPSB7fSk6IHN0cmluZyB7XG5cdGlmIChvcHRpb25zLmxhbmd1YWdlICYmIG9wdGlvbnMubGFuZ3VhZ2UgIT09ICdlbmdsaXNoJykge1xuXHRcdHRocm93IEVycm9yKFxuXHRcdFx0YExhbmd1YWdlICR7b3B0aW9ucy5sYW5ndWFnZX0gbm90IHN1cHBvcnRlZC4gT25seSBlbmdsaXNoIGlzIGF2YWlsYWJsZS5gLFxuXHRcdCk7XG5cdH1cblxuXHRpZiAob3B0aW9ucy5zdHJlbmd0aCAmJiAob3B0aW9ucy5zdHJlbmd0aCA8IDEyOCB8fCBvcHRpb25zLnN0cmVuZ3RoID4gMjU2KSkge1xuXHRcdHRocm93IEVycm9yKCdTdHJlbmd0aCBtdXN0IGJlIGJldHdlZW4gMTI4IGFuZCAyNTYuJyk7XG5cdH1cblxuXHRyZXR1cm4gZ2VuZXJhdGVNbmVtb25pYyh3b3JkbGlzdCwgb3B0aW9ucy5zdHJlbmd0aCk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBwYXRoLlxuICpcbiAqIEBwYXJhbSByb290IC0gVGhlIHJvb3QgcGF0aC5cbiAqIEBwYXJhbSBhYnNwYXRoIC0gVGhlIHBhdGggdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHBhdGguXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFic3BhdGgocm9vdDogc3RyaW5nLCBhYnNwYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKGFic3BhdGgpIHtcblx0XHRpZiAoYWJzcGF0aC5zdGFydHNXaXRoKCcvJykgPT09IGZhbHNlKSB7XG5cdFx0XHRyZXR1cm4gcGF0aC5qb2luKHJvb3QsIGFic3BhdGgpO1xuXHRcdH1cblxuXHRcdHJldHVybiBhYnNwYXRoO1xuXHR9XG5cblx0cmV0dXJuIHJvb3Q7XG59XG5cbi8qKlxuICogUGFyc2UgYSBmaWxlIG5hbWUuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSBuYW1lIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBmaWxlIG5hbWUuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZpbGVOYW1lKGZpbGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IFtfZmlsZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpO1xuXG5cdHJldHVybiBfZmlsZW5hbWVcblx0XHQudHJpbSgpXG5cdFx0LnRvTG93ZXJDYXNlKClcblx0XHQucmVwbGFjZSgvW1xcV1xcc10vZ2ksICdfJylcblx0XHQucmVwbGFjZSgvXysvZywgJ18nKVxuXHRcdC5yZXBsYWNlKC9eXysvLCAnJylcblx0XHQucmVwbGFjZSgvXyskLywgJycpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VlZCBmcm9tIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIG1uZW1vbmljIC0gVGhlIG1uZW1vbmljIHRvIGdlbmVyYXRlIHRoZSBzZWVkIGZyb20uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGdlbmVyYXRlIHRoZSBzZWVkLlxuICogQHJldHVybnMgVGhlIHNlZWQuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWVkKFxuXHRtbmVtb25pYzogc3RyaW5nLFxuXHRvcHRpb25zOiBHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8QnVmZmVyPiB7XG5cdGNvbnN0IHNlZWRCeXRlcyA9IGF3YWl0IG1uZW1vbmljVG9TZWVkKG1uZW1vbmljLCBvcHRpb25zLnBhc3N3b3JkKTtcblx0cmV0dXJuIEJ1ZmZlci5mcm9tKHNlZWRCeXRlcyk7XG59XG5cbi8qKlxuICogU3BsaXQgYSBzdHJpbmcgaW50byBjaHVua3Mgb2Ygd29yZHMuXG4gKlxuICogQHBhcmFtIGlucHV0IC0gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSBjaHVua1NpemUgLSBUaGUgc2l6ZSBvZiB0aGUgY2h1bmtzLlxuICogQHJldHVybnMgVGhlIGNodW5rcy5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0V29yZHMoaW5wdXQ6IHN0cmluZywgY2h1bmtTaXplID0gNik6IEFycmF5PEFycmF5PHN0cmluZz4+IHtcblx0Y29uc3Qgd29yZHMgPSBpbnB1dC5zcGxpdCgnICcpO1xuXHRjb25zdCByZXN1bHQ6IHN0cmluZ1tdW10gPSBbXTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSArPSBjaHVua1NpemUpIHtcblx0XHRjb25zdCBjaHVuayA9IHdvcmRzLnNsaWNlKGksIGkgKyBjaHVua1NpemUpO1xuXHRcdHJlc3VsdC5wdXNoKGNodW5rKTtcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHN0cmluZyB0byBhIGJ1ZmZlci5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBidWZmZXIuXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0J1ZmZlcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0cmV0dXJuIEJ1ZmZlci5mcm9tKG1lc3NhZ2UpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgbW5lbW9uaWMgbGFuZ3VhZ2UgaXMgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSBsYW5ndWFnZSAtIFRoZSBsYW5ndWFnZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGxhbmd1YWdlIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9ydHNNbmVtb25pY0xhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGxhbmd1YWdlID09PSAnZW5nbGlzaCc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxJQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFBNkQsU0FBQUQsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFPN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLFdBQVdBLENBQUNDLE1BQWMsRUFBRTtFQUMzQyxPQUFPQSxNQUFNLENBQUNDLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFDOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGNBQWNBLENBQUNGLE1BQWMsRUFBRTtFQUM5QyxPQUFPQSxNQUFNLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLFNBQVNBLENBQUNILE1BQWMsRUFBRUksTUFBYyxFQUFVO0VBQ2pFLE9BQU9KLE1BQU0sQ0FBQ0ssUUFBUSxDQUFDLENBQUMsRUFBRUQsTUFBTSxDQUFDO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLElBQUlBLENBQUNDLFNBQWlCLEVBQUVDLE9BQWUsRUFBVTtFQUNoRSxPQUFPQyxtQkFBTSxDQUFDQyxVQUFVLENBQUNILFNBQVMsQ0FBQyxDQUFDSSxNQUFNLENBQUNILE9BQU8sQ0FBQyxDQUFDSSxNQUFNLENBQUMsQ0FBQztBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsUUFBUUEsQ0FBQ0MsT0FBZ0MsR0FBRyxDQUFDLENBQUMsRUFBVTtFQUN2RSxJQUFJQSxPQUFPLENBQUNDLFFBQVEsSUFBSUQsT0FBTyxDQUFDQyxRQUFRLEtBQUssU0FBUyxFQUFFO0lBQ3ZELE1BQU1DLEtBQUssQ0FDVixZQUFZRixPQUFPLENBQUNDLFFBQVEsNENBQzdCLENBQUM7RUFDRjtFQUVBLElBQUlELE9BQU8sQ0FBQ0csUUFBUSxLQUFLSCxPQUFPLENBQUNHLFFBQVEsR0FBRyxHQUFHLElBQUlILE9BQU8sQ0FBQ0csUUFBUSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQzNFLE1BQU1ELEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQztFQUNyRDtFQUVBLE9BQU8sSUFBQUUscUJBQWdCLEVBQUNDLGlCQUFRLEVBQUVMLE9BQU8sQ0FBQ0csUUFBUSxDQUFDO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLFlBQVlBLENBQUNDLElBQVksRUFBRUMsT0FBZ0IsRUFBVTtFQUNwRSxJQUFJQSxPQUFPLEVBQUU7SUFDWixJQUFJQSxPQUFPLENBQUNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7TUFDdEMsT0FBT0MsaUJBQUksQ0FBQ0MsSUFBSSxDQUFDSixJQUFJLEVBQUVDLE9BQU8sQ0FBQztJQUNoQztJQUVBLE9BQU9BLE9BQU87RUFDZjtFQUVBLE9BQU9ELElBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0ssYUFBYUEsQ0FBQ0MsSUFBWSxFQUFVO0VBQ25ELE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUVuQyxPQUFPRCxTQUFTLENBQ2RFLElBQUksQ0FBQyxDQUFDLENBQ05DLFdBQVcsQ0FBQyxDQUFDLENBQ2JDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQ3hCQSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUNuQkEsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDbEJBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLGVBQWVDLElBQUlBLENBQ3pCcEIsUUFBZ0IsRUFDaEJDLE9BQW9DLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZCO0VBQ2xCLE1BQU1vQixTQUFTLEdBQUcsTUFBTSxJQUFBQyxtQkFBYyxFQUFDdEIsUUFBUSxFQUFFQyxPQUFPLENBQUNzQixRQUFRLENBQUM7RUFDbEUsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLENBQUNKLFNBQVMsQ0FBQztBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxVQUFVQSxDQUFDQyxLQUFhLEVBQUVDLFNBQVMsR0FBRyxDQUFDLEVBQXdCO0VBQzlFLE1BQU1DLEtBQUssR0FBR0YsS0FBSyxDQUFDWCxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQzlCLE1BQU1jLE1BQWtCLEdBQUcsRUFBRTtFQUU3QixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsS0FBSyxDQUFDdEMsTUFBTSxFQUFFd0MsQ0FBQyxJQUFJSCxTQUFTLEVBQUU7SUFDakQsTUFBTUksS0FBSyxHQUFHSCxLQUFLLENBQUNJLEtBQUssQ0FBQ0YsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILFNBQVMsQ0FBQztJQUMzQ0UsTUFBTSxDQUFDSSxJQUFJLENBQUNGLEtBQUssQ0FBQztFQUNuQjtFQUVBLE9BQU9GLE1BQU07QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0ssY0FBY0EsQ0FBQ3hDLE9BQWUsRUFBRTtFQUMvQyxPQUFPNkIsTUFBTSxDQUFDQyxJQUFJLENBQUM5QixPQUFPLENBQUM7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVN5Qyx3QkFBd0JBLENBQUNsQyxRQUFnQixFQUFXO0VBQ25FLE9BQU9BLFFBQVEsS0FBSyxTQUFTO0FBQzlCIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -15,7 +15,7 @@ import { exists } from "../../../utils/file.js";
|
|
|
15
15
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
16
16
|
*/
|
|
17
17
|
export function generateEd25519KeyPairCommand(program) {
|
|
18
|
-
program.command('generate:ed25519').description('Generates a key-pair based on a mnemonic phrase. It will use the ed25519 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key. Default is current directory. If relative, it will be relative to current directory.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic.
|
|
18
|
+
program.command('generate:ed25519').description('Generates a key-pair based on a mnemonic phrase. It will use the ed25519 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key. Default is current directory. If relative, it will be relative to current directory.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').option('-f, --format <format>', 'Format of the key: pem or raw. Default is raw.', 'raw').action(async (n, op) => {
|
|
19
19
|
try {
|
|
20
20
|
const version = parseInt(op.version, 10);
|
|
21
21
|
const key_name = parseFileName(n);
|
|
@@ -120,4 +120,4 @@ export function recoverEd25519KeyPairCommand(program) {
|
|
|
120
120
|
return process.exit(0);
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImdlbmVyYXRlS2V5UGFpciIsInJlY292ZXJLZXlQYWlyIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsInJlbW92ZSIsImV4aXN0cyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImdlbmVyYXRlZCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJncmVlbiIsImZpbGVzIiwicGsiLCJzayIsInllbGxvdyIsImVycm9yIiwicmVkIiwibWVzc2FnZSIsImV4aXQiLCJyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUtleVBhaXIsIHJlY292ZXJLZXlQYWlyIH0gZnJvbSAnQC9jb3JlL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlRmlsZU5hbWUsIHBhcnNlQWJzcGF0aCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J0dlbmVyYXRlcyBhIGtleS1wYWlyIGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCB3aWxsIHVzZSB0aGUgZWQyNTUxOSBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcCwgLS1wYXRoIDxwYXRoPicsXG5cdFx0XHQnUGF0aCB0byBzYXZlIHRoZSBrZXkuIERlZmF1bHQgaXMgY3VycmVudCBkaXJlY3RvcnkuIElmIHJlbGF0aXZlLCBpdCB3aWxsIGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIEF2YWlsYWJsZTogY3plY2gsIGNoaW5lc2Vfc2ltcGxpZmllZCwgY2hpbmVzZV90cmFkaXRpb25hbCwga29yZWFuLCBmcmVuY2gsIGl0YWxpYW4sIHNwYW5pc2gsIGphcGFuZXNlLCBwb3J0dWd1ZXNlLCBlbmdsaXNoLiBEZWZhdWx0IGlzIGVuZ2xpc2guJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLFxuXHRcdFx0J0Zvcm1hdCBvZiB0aGUga2V5OiBwZW0gb3IgcmF3LiBEZWZhdWx0IGlzIHJhdy4nLFxuXHRcdFx0J3JhdycsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXHRcdFx0XHRsZXQgZm9ybWF0ID0gb3AuZm9ybWF0O1xuXG5cdFx0XHRcdHN3aXRjaCAoZm9ybWF0KSB7XG5cdFx0XHRcdFx0Y2FzZSAncGVtJzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdwZW0nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmF3Jzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdyYXcnO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHRocm93IEVycm9yKGBGb3JtYXQgJHtmb3JtYXR9IG5vdCBzdXBwb3J0ZWQuYCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZXhpc3RzKGFic3BhdGgpID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdFx0YFwiUGF0aCAke2Fic3BhdGh9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LlwiYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVLZXlQYWlyKCdlZDI1NTE5JywgYWJzcGF0aCwga2V5X25hbWUsIHtcblx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRtbmVtb25pYzoge1xuXHRcdFx0XHRcdFx0bGFuZ3VhZ2U6IG9wLmxhbmd1YWdlLFxuXHRcdFx0XHRcdFx0c3RyZW5ndGg6IHBhcnNlSW50KG9wLnN0cmVuZ3RoLCAxMCksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGdlbmVyYXRlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZVxuICogcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J1JlY292ZXJzIGEga2V5LXBhaXIgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1wLCAtLXBhdGggPHBhdGg+JywgJ1BhdGggdG8gc2F2ZSB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLW0sIC0tbW5lbW9uaWMgPG1uZW1vbmljPicsICdNbmVtb25pYyB0byByZWNvdmVyIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgbm90IGNvbGxlY3RlZCBmcm9tIGluZGV4LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGluZGV4X25hbWUpIHtcblx0XHRcdFx0XHRhd2FpdCByZW1vdmUoJ2tleXBhaXJzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCByZWNvdmVyS2V5UGFpcihcblx0XHRcdFx0XHQnZWQyNTUxOScsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdQdWJsaWMga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnBrKTtcblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVjb3ZlcmVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMuc2spO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdLZXkgcGFpciByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxlQUFlLEVBQUVDLGNBQWM7QUFDeEMsU0FBU0MsYUFBYSxFQUFFQyxZQUFZO0FBQ3BDLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLDZCQUE2QkEsQ0FBQ0MsT0FBZ0IsRUFBRTtFQUMvREEsT0FBTyxDQUNMQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDM0JDLFdBQVcsQ0FDWCxxRkFDRCxDQUFDLENBQ0FDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FDdENDLE1BQU0sQ0FDTixtQkFBbUIsRUFDbkIsNEdBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUtBQXVLLEVBQ3ZLLFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sdUJBQXVCLEVBQ3ZCLGdEQUFnRCxFQUNoRCxLQUNELENBQUMsQ0FDQUMsTUFB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SyxLQUFLO1VBQ1RBLE1BQU0sR0FBRyxLQUFLO1VBQ2Q7UUFDRDtVQUNDLE1BQU1DLEtBQUssQ0FBQyxVQUFVRCxNQUFNLGlCQUFpQixDQUFDO01BQ2hEO01BRUEsSUFBSVAsVUFBVSxFQUFFO1FBQ2YsTUFBTWQsTUFBTSxDQUFDLFVBQVUsRUFBRWlCLE9BQU8sRUFBRUgsVUFBVSxFQUFFSCxPQUFPLENBQUM7TUFDdkQ7TUFFQSxNQUFNWSxTQUFTLEdBQUcsTUFBTTFCLGNBQWMsQ0FDckMsU0FBUyxFQUNUMkIsUUFBUSxFQUNSUCxPQUFPLEVBQ1BKLFFBQVEsRUFDUjtRQUNDUSxNQUFNO1FBQ05QLFVBQVU7UUFDVmEsSUFBSSxFQUFFO1VBQ0xDLFFBQVEsRUFBRWxCLEVBQUUsQ0FBQ2tCO1FBQ2QsQ0FBQztRQUNEakI7TUFDRCxDQUNELENBQUM7TUFFRGtCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEVBQUVSLFNBQVMsQ0FBQ1MsS0FBSyxDQUFDQyxFQUFFLENBQUM7TUFDeEVKLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEVBQUVSLFNBQVMsQ0FBQ1MsS0FBSyxDQUFDRSxFQUFFLENBQUM7TUFFeEUsSUFBSVgsU0FBUyxDQUFDUyxLQUFLLENBQUNqQixLQUFLLEVBQUU7UUFDMUJjLE9BQU8sQ0FBQ0MsR0FBRyxDQUNWbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDLHdCQUF3QixDQUFDLEVBQ3JDUixTQUFTLENBQUNTLEtBQUssQ0FBQ2pCLEtBQ2pCLENBQUM7TUFDRjtNQUVBYyxPQUFPLENBQUNDLEdBQUcsQ0FBQ25DLEtBQUssQ0FBQ29DLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRVIsU0FBUyxDQUFDQyxRQUFRLEVBQUUsSUFBSSxDQUFDO01BRS9ESyxPQUFPLENBQUNDLEdBQUcsQ0FDVm5DLEtBQUssQ0FBQ3dDLE1BQU0sQ0FDWCx1RUFDRCxDQUNELENBQUM7SUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO01BQ3BCUCxPQUFPLENBQUNPLEtBQUssQ0FBQ3pDLEtBQUssQ0FBQzBDLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPcEIsT0FBTyxDQUFDcUIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QjtJQUVBLE9BQU9yQixPQUFPLENBQUNxQixJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKIiwiaWdub3JlTGlzdCI6W119
|
|
123
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImdlbmVyYXRlS2V5UGFpciIsInJlY292ZXJLZXlQYWlyIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsInJlbW92ZSIsImV4aXN0cyIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImdlbmVyYXRlZCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJncmVlbiIsImZpbGVzIiwicGsiLCJzayIsInllbGxvdyIsImVycm9yIiwicmVkIiwibWVzc2FnZSIsImV4aXQiLCJyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZUtleVBhaXIsIHJlY292ZXJLZXlQYWlyIH0gZnJvbSAnQC9jb3JlL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlRmlsZU5hbWUsIHBhcnNlQWJzcGF0aCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J0dlbmVyYXRlcyBhIGtleS1wYWlyIGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCB3aWxsIHVzZSB0aGUgZWQyNTUxOSBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcCwgLS1wYXRoIDxwYXRoPicsXG5cdFx0XHQnUGF0aCB0byBzYXZlIHRoZSBrZXkuIERlZmF1bHQgaXMgY3VycmVudCBkaXJlY3RvcnkuIElmIHJlbGF0aXZlLCBpdCB3aWxsIGJlIHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLFxuXHRcdFx0J0Zvcm1hdCBvZiB0aGUga2V5OiBwZW0gb3IgcmF3LiBEZWZhdWx0IGlzIHJhdy4nLFxuXHRcdFx0J3JhdycsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXHRcdFx0XHRsZXQgZm9ybWF0ID0gb3AuZm9ybWF0O1xuXG5cdFx0XHRcdHN3aXRjaCAoZm9ybWF0KSB7XG5cdFx0XHRcdFx0Y2FzZSAncGVtJzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdwZW0nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmF3Jzpcblx0XHRcdFx0XHRcdGZvcm1hdCA9ICdyYXcnO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHRocm93IEVycm9yKGBGb3JtYXQgJHtmb3JtYXR9IG5vdCBzdXBwb3J0ZWQuYCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZXhpc3RzKGFic3BhdGgpID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdFx0YFwiUGF0aCAke2Fic3BhdGh9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LlwiYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVLZXlQYWlyKCdlZDI1NTE5JywgYWJzcGF0aCwga2V5X25hbWUsIHtcblx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRtbmVtb25pYzoge1xuXHRcdFx0XHRcdFx0bGFuZ3VhZ2U6IG9wLmxhbmd1YWdlLFxuXHRcdFx0XHRcdFx0c3RyZW5ndGg6IHBhcnNlSW50KG9wLnN0cmVuZ3RoLCAxMCksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGdlbmVyYXRlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZVxuICogcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6ZWQyNTUxOScpXG5cdFx0LmRlc2NyaXB0aW9uKFxuXHRcdFx0J1JlY292ZXJzIGEga2V5LXBhaXIgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1wLCAtLXBhdGggPHBhdGg+JywgJ1BhdGggdG8gc2F2ZSB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLW0sIC0tbW5lbW9uaWMgPG1uZW1vbmljPicsICdNbmVtb25pYyB0byByZWNvdmVyIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgbm90IGNvbGxlY3RlZCBmcm9tIGluZGV4LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGluZGV4X25hbWUpIHtcblx0XHRcdFx0XHRhd2FpdCByZW1vdmUoJ2tleXBhaXJzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCByZWNvdmVyS2V5UGFpcihcblx0XHRcdFx0XHQnZWQyNTUxOScsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JtYXQsXG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdQdWJsaWMga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnBrKTtcblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVjb3ZlcmVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMuc2spO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdLZXkgcGFpciByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxlQUFlLEVBQUVDLGNBQWM7QUFDeEMsU0FBU0MsYUFBYSxFQUFFQyxZQUFZO0FBQ3BDLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLDZCQUE2QkEsQ0FBQ0MsT0FBZ0IsRUFBRTtFQUMvREEsT0FBTyxDQUNMQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDM0JDLFdBQVcsQ0FDWCxxRkFDRCxDQUFDLENBQ0FDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FDdENDLE1BQU0sQ0FDTixtQkFBbUIsRUFDbkIsNEdBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0Isa0RBQWtELEVBQ2xELFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sdUJBQXVCLEVBQ3ZCLGdEQUFnRCxFQUNoRCxLQUNELENBQUMsQ0FDQUMsTUFBTSxDQUFDLE9BQU9DLENBQUMsRUFBRUMsRUFBRSxLQUFLO0lBQ3hCLElBQUk7TUFDSCxNQUFNQyxPQUFPLEdBQUdDLFFBQVEsQ0FBQ0YsRUFBRSxDQUFDQyxPQUFPLEVBQUUsRUFBRSxDQUFDO01BQ3hDLE1B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
|
|
@@ -12,7 +12,7 @@ import { splitWords, mnemonic } from "../../utils/index.js";
|
|
|
12
12
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
13
13
|
*/
|
|
14
14
|
export function generateMnemonic(program) {
|
|
15
|
-
program.command('mnemonic').description('Generates and show a mnemonic.').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-l, --language <language>', 'Language of mnemonic.
|
|
15
|
+
program.command('mnemonic').description('Generates and show a mnemonic.').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').action(options => {
|
|
16
16
|
console.log(chalk.yellow('Mnemonic'));
|
|
17
17
|
try {
|
|
18
18
|
const list = splitWords(mnemonic({
|
|
@@ -30,4 +30,4 @@ export function generateMnemonic(program) {
|
|
|
30
30
|
return process.exit(0);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInNwbGl0V29yZHMiLCJtbmVtb25pYyIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIiwib3B0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJ5ZWxsb3ciLCJsaXN0IiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsIndvcmQiLCJncmVlbiIsImpvaW4iLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvbW5lbW9uaWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBzcGxpdFdvcmRzLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTW5lbW9uaWMocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ21uZW1vbmljJylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhbmQgc2hvdyBhIG1uZW1vbmljLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInNwbGl0V29yZHMiLCJtbmVtb25pYyIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIiwib3B0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJ5ZWxsb3ciLCJsaXN0IiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsIndvcmQiLCJncmVlbiIsImpvaW4iLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvbW5lbW9uaWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBzcGxpdFdvcmRzLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgbW5lbW9uaWMuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTW5lbW9uaWMocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ21uZW1vbmljJylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhbmQgc2hvdyBhIG1uZW1vbmljLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5hY3Rpb24ob3B0aW9ucyA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ01uZW1vbmljJykpO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBsaXN0ID0gc3BsaXRXb3Jkcyhcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3B0aW9ucy5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBvcHRpb25zLnN0cmVuZ3RoXG5cdFx0XHRcdFx0XHRcdD8gcGFyc2VJbnQob3B0aW9ucy5zdHJlbmd0aCwgMTApXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKCk7XG5cblx0XHRcdFx0bGlzdC5mb3JFYWNoKHdvcmQgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAke3dvcmQuam9pbignICcpfWApKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFFekIsU0FBU0MsVUFBVSxFQUFFQyxRQUFROztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQyxnQkFBZ0JBLENBQUNDLE9BQWdCLEVBQUU7RUFDbERBLE9BQU8sQ0FDTEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUNuQkMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLENBQzdDQyxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQixrREFBa0QsRUFDbEQsU0FDRCxDQUFDLENBQ0FDLE1BQU0sQ0FBQ0MsT0FBTyxJQUFJO0lBQ2xCQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ1gsS0FBSyxDQUFDWSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFckMsSUFBSTtNQUNILE1BQU1DLElBQUksR0FBR1osVUFBVSxDQUN0QkMsUUFBUSxDQUFDO1FBQ1JZLFFBQVEsRUFBRUwsT0FBTyxDQUFDSyxRQUFRO1FBQzFCQyxRQUFRLEVBQUVOLE9BQU8sQ0FBQ00sUUFBUSxHQUN2QkMsUUFBUSxDQUFDUCxPQUFPLENBQUNNLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FDOUJFO01BQ0osQ0FBQyxDQUNGLENBQUM7TUFFRFAsT0FBTyxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUViRSxJQUFJLENBQUNLLE9BQU8sQ0FBQ0MsSUFBSSxJQUFJO1FBQ3BCVCxPQUFPLENBQUNDLEdBQUcsQ0FBQ1gsS0FBSyxDQUFDb0IsS0FBSyxDQUFDLEdBQUdELElBQUksQ0FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUM5QyxDQUFDLENBQUM7SUFDSCxDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO01BQ3BCWixPQUFPLENBQUNZLEtBQUssQ0FBQ3RCLEtBQUssQ0FBQ3VCLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPQyxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkI7SUFFQSxPQUFPRCxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
-
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
3
4
|
import chalk from 'chalk';
|
|
4
|
-
import { parseFileName, parseAbspath, mnemonic } from "../../../utils/index.js";
|
|
5
|
+
import { parseFileName, parseAbspath, mnemonic, seed } from "../../../utils/index.js";
|
|
5
6
|
import { generateSecret } from "../../../core/index.js";
|
|
7
|
+
import * as aes from "../../../core/secrets/aes256.js";
|
|
6
8
|
import { remove } from "../../../utils/indexes.js";
|
|
7
9
|
import { exists } from "../../../utils/file.js";
|
|
8
10
|
|
|
@@ -16,7 +18,7 @@ import { exists } from "../../../utils/file.js";
|
|
|
16
18
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
17
19
|
*/
|
|
18
20
|
export function generateAES256SecretCommand(program) {
|
|
19
|
-
program.command('generate:aes256').description('Generates a secret based on a mnemonic phrase. It should be used with aes256 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic.
|
|
21
|
+
program.command('generate:aes256').description('Generates a secret based on a mnemonic phrase. It should be used with aes256 algorithm.').argument('<name>', 'Name of the key.').option('-p, --path <path>', 'Path to save the key.').option('-w, --password <password>', 'Password for seed generation.').option('-l, --language <language>', 'Language of mnemonic. Only english is available.', 'english').option('-s, --strength <strength>', 'Strength of mnemonic. Default is 128.', '128').option('-v, --version <version>', 'Version of the key. Should be an integer. Default is 1.', '1').option('-x, --index <index>', 'Index name. Will store the key in a JSON index. If not provided, index will not be created.').action(async (n, op) => {
|
|
20
22
|
try {
|
|
21
23
|
const version = parseInt(op.version, 10);
|
|
22
24
|
const key_name = parseFileName(n);
|
|
@@ -95,4 +97,84 @@ export function recoverAES256SecretCommand(program) {
|
|
|
95
97
|
return process.exit(0);
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsInBhcnNlRmlsZU5hbWUiLCJwYXJzZUFic3BhdGgiLCJtbmVtb25pYyIsImdlbmVyYXRlU2VjcmV0IiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJFcnJvciIsImdlbmVyYXRlZCIsImxhbmd1YWdlIiwic3RyZW5ndGgiLCJzZWVkIiwicGFzc3dvcmQiLCJjb25zb2xlIiwibG9nIiwiZ3JlZW4iLCJmaWxlcyIsImZpbGUiLCJ5ZWxsb3ciLCJlcnJvciIsInJlZCIsIm1lc3NhZ2UiLCJleGl0IiwicmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQiLCJ2IiwicmVjb3ZlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGgsIG1uZW1vbmljIH0gZnJvbSAnQC91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVNlY3JldCB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIEF2YWlsYWJsZTogY3plY2gsIGNoaW5lc2Vfc2ltcGxpZmllZCwgY2hpbmVzZV90cmFkaXRpb25hbCwga29yZWFuLCBmcmVuY2gsIGl0YWxpYW4sIHNwYW5pc2gsIGphcGFuZXNlLCBwb3J0dWd1ZXNlLCBlbmdsaXNoLiBEZWZhdWx0IGlzIGVuZ2xpc2guJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUV6QixTQUFTQyxhQUFhLEVBQUVDLFlBQVksRUFBRUMsUUFBUTtBQUM5QyxTQUFTQyxjQUFjO0FBQ3ZCLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsMkJBQTJCQSxDQUFDQyxPQUFnQixFQUFFO0VBQzdEQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUMxQkMsV0FBVyxDQUNYLHlGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQ3BEQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUtBQXVLLEVBQ3ZLLFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTixxQkFBcUIsRUFDckIsNkZBQ0QsQ0FBQyxDQUNBQyxNQUFNLENBQUMsT0FBT0MsQ0FBQyxFQUFFQyxFQUFFLEtBQUs7SUFDeEIsSUFBSTtNQUNILE1BQU1DLE9BQU8sR0FBR0MsUUFBUSxDQUFDRixFQUFFLENBQUNDLE9BQU8sRUFBRSxFQUFFLENBQUM7TUFDeEMsTUFBTUUsUUFBUSxHQUFHakIsYUFBYSxDQUFDYSxDQUFDLENBQUM7TUFDakMsTUFBTUssVUFBVSxHQUFHSixFQUFFLENB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
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Generate a secret based on a mnemonic phrase. It should be used with aes256
|
|
103
|
+
* algorithm.
|
|
104
|
+
*
|
|
105
|
+
* @param program - The program to add the command to.
|
|
106
|
+
* @returns The program.
|
|
107
|
+
* @since 1.0.0
|
|
108
|
+
* @author Caique Araujo <caique@piggly.com.br>
|
|
109
|
+
*/
|
|
110
|
+
export function generateMnemonicSecretCommand(program) {
|
|
111
|
+
program.command('generate:secret').description('Generates a secret based on a mnemonic phrase.').option('-p, --abspath [path]', 'Absolute path to save the secret. If not provided, it will be displayed in the terminal.').option('-f, --filename [filename]', 'File name to save the secret. If not provided, it will be saved in the "encryption.key" file.', 'encryption.key').option('-s, --salt [salt]', 'Salt to use for the secret. If not provided, it will be generated randomly.').option('-l, --length [length]', 'Length of the secret. Default is 32.', v => {
|
|
112
|
+
if (v === undefined) {
|
|
113
|
+
return 32;
|
|
114
|
+
}
|
|
115
|
+
if (Number.isSafeInteger(parseInt(v, 10)) === false) {
|
|
116
|
+
return -1;
|
|
117
|
+
}
|
|
118
|
+
return Number(v);
|
|
119
|
+
}).option('-m, --mnemonic [mnemonic]', 'Use a specific mnemonic seed to generate the root key. If not provided, a new mnemonic will be generated.', undefined).option('-w, --words [words]', 'Tells the size of works of the mnemonic to be generated. It must be one of the following values: 12 or 24. Default is 12 words.', v => {
|
|
120
|
+
if (v === undefined) {
|
|
121
|
+
return 12;
|
|
122
|
+
}
|
|
123
|
+
if (Number.isSafeInteger(parseInt(v, 10)) === false) {
|
|
124
|
+
return -1;
|
|
125
|
+
}
|
|
126
|
+
const words = Number(v);
|
|
127
|
+
if ([12, 24].includes(words)) {
|
|
128
|
+
return words;
|
|
129
|
+
}
|
|
130
|
+
return -1;
|
|
131
|
+
}).action(async op => {
|
|
132
|
+
try {
|
|
133
|
+
const wds = op.words ?? 12;
|
|
134
|
+
if (wds === -1) {
|
|
135
|
+
console.error(chalk.red('The provided words size seems to be incompatible. It must be one of the following values: 12 or 24.'));
|
|
136
|
+
return process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const mnm = op.mnemonic ? op.mnemonic : mnemonic({
|
|
139
|
+
language: 'english',
|
|
140
|
+
strength: wds === 12 ? 128 : 256
|
|
141
|
+
});
|
|
142
|
+
if (mnm.split(' ').length !== wds) {
|
|
143
|
+
console.error(chalk.red('The provided mnemonic seems to be incompatible. Are you sure it is correct?'));
|
|
144
|
+
return process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
const key = aes.generateSecret(await seed(mnm), {
|
|
147
|
+
length: op.length === -1 ? undefined : Number(op?.length ?? 32),
|
|
148
|
+
salt: op.salt ? Buffer.from(op.salt) : undefined
|
|
149
|
+
});
|
|
150
|
+
console.log(chalk.yellow('Mnemonic:'), mnm);
|
|
151
|
+
if (op.abspath === undefined) {
|
|
152
|
+
console.log(chalk.green('Secret key:'), key.toString('base64'));
|
|
153
|
+
return process.exit(0);
|
|
154
|
+
}
|
|
155
|
+
const abspath = parseAbspath(process.cwd(), op.path);
|
|
156
|
+
if (exists(abspath) === false) {
|
|
157
|
+
throw Error(`Path "${abspath}" does not exist. Please create it first.`);
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
await fs.writeFile(path.join(abspath, op.filename ?? 'encryption.key'), key.toString('base64'), {
|
|
161
|
+
flag: 'wx',
|
|
162
|
+
mode: 0o600
|
|
163
|
+
});
|
|
164
|
+
console.log(chalk.green(`Root key saved successfully in "${abspath}"`));
|
|
165
|
+
return process.exit(0);
|
|
166
|
+
} catch (err) {
|
|
167
|
+
if (err.code === 'EEXIST') {
|
|
168
|
+
console.warn(chalk.yellow(`The root key already exists in "${abspath}".`));
|
|
169
|
+
return process.exit(0);
|
|
170
|
+
}
|
|
171
|
+
console.error(chalk.red(`Failed to save the root key to "${abspath}": ${err.message}`));
|
|
172
|
+
return process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
} catch (error) {
|
|
175
|
+
console.error(chalk.red(error.message));
|
|
176
|
+
return process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9taXNlcyIsImZzIiwicGF0aCIsImNoYWxrIiwicGFyc2VGaWxlTmFtZSIsInBhcnNlQWJzcGF0aCIsIm1uZW1vbmljIiwic2VlZCIsImdlbmVyYXRlU2VjcmV0IiwiYWVzIiwicmVtb3ZlIiwiZXhpc3RzIiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsIkVycm9yIiwiZ2VuZXJhdGVkIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInBhc3N3b3JkIiwiY29uc29sZSIsImxvZyIsImdyZWVuIiwiZmlsZXMiLCJmaWxlIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwidiIsInJlY292ZXIiLCJnZW5lcmF0ZU1uZW1vbmljU2VjcmV0Q29tbWFuZCIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJ3b3JkcyIsImluY2x1ZGVzIiwid2RzIiwibW5tIiwic3BsaXQiLCJsZW5ndGgiLCJrZXkiLCJzYWx0IiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwid3JpdGVGaWxlIiwiam9pbiIsImZpbGVuYW1lIiwiZmxhZyIsIm1vZGUiLCJlcnIiLCJjb2RlIiwid2FybiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgcGFyc2VGaWxlTmFtZSwgcGFyc2VBYnNwYXRoLCBtbmVtb25pYywgc2VlZCB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWNyZXQgfSBmcm9tICdAL2NvcmUvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgYWVzIGZyb20gJ0AvY29yZS9zZWNyZXRzL2FlczI1Ni5qcyc7XG5pbXBvcnQgeyByZW1vdmUgfSBmcm9tICdAL3V0aWxzL2luZGV4ZXMuanMnO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSAnQC91dGlscy9maWxlLmpzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhZXMyNTZcbiAqIGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdnZW5lcmF0ZTphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2IGFsZ29yaXRobS4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctcywgLS1zdHJlbmd0aCA8c3RyZW5ndGg+Jyxcblx0XHRcdCdTdHJlbmd0aCBvZiBtbmVtb25pYy4gRGVmYXVsdCBpcyAxMjguJyxcblx0XHRcdCcxMjgnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy12LCAtLXZlcnNpb24gPHZlcnNpb24+Jyxcblx0XHRcdCdWZXJzaW9uIG9mIHRoZSBrZXkuIFNob3VsZCBiZSBhbiBpbnRlZ2VyLiBEZWZhdWx0IGlzIDEuJyxcblx0XHRcdCcxJyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCcteCwgLS1pbmRleCA8aW5kZXg+Jyxcblx0XHRcdCdJbmRleCBuYW1lLiBXaWxsIHN0b3JlIHRoZSBrZXkgaW4gYSBKU09OIGluZGV4LiBJZiBub3QgcHJvdmlkZWQsIGluZGV4IHdpbGwgbm90IGJlIGNyZWF0ZWQuJyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlU2VjcmV0KFxuXHRcdFx0XHRcdCdhZXMyNTYnLFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgaW5kZXhlZCBhdDonKSxcblx0XHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5pbmRleCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ01uZW1vbmljOicpLCBnZW5lcmF0ZWQubW5lbW9uaWMsICdcXG4nKTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay55ZWxsb3coXG5cdFx0XHRcdFx0XHQnS2VlcCB0aGUgbW5lbW9uaWMgc2FmZSEgSXQgY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUga2V5IHBhaXIuJyxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5tZXNzYWdlKSk7XG5cdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMCk7XG5cdFx0fSk7XG59XG5cbi8qKlxuICogUmVjb3ZlciBhIHNlY3JldCBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgncmVjb3ZlcjphZXMyNTYnKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIHYsIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB7IG1uZW1vbmljIH0gPSBvcDtcblxuXHRcdFx0XHRpZiAobW5lbW9uaWMgPT09IHVuZGVmaW5lZCB8fCBtbmVtb25pYyA9PT0gJycpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcignTW5lbW9uaWMgaXMgcmVxdWlyZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQodiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdzZWNyZXRzJywgYWJzcGF0aCwgaW5kZXhfbmFtZSwgdmVyc2lvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRyZWNvdmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0XHRwYXNzd29yZDogb3AucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSxcblx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuZmlsZSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIGFnYWluIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NlxuICogYWxnb3JpdGhtLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU1uZW1vbmljU2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6c2VjcmV0Jylcblx0XHQuZGVzY3JpcHRpb24oJ0dlbmVyYXRlcyBhIHNlY3JldCBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXAsIC0tYWJzcGF0aCBbcGF0aF0nLFxuXHRcdFx0J0Fic29sdXRlIHBhdGggdG8gc2F2ZSB0aGUgc2VjcmV0LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSB0ZXJtaW5hbC4nLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1mLCAtLWZpbGVuYW1lIFtmaWxlbmFtZV0nLFxuXHRcdFx0J0ZpbGUgbmFtZSB0byBzYXZlIHRoZSBzZWNyZXQuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBzYXZlZCBpbiB0aGUgXCJlbmNyeXB0aW9uLmtleVwiIGZpbGUuJyxcblx0XHRcdCdlbmNyeXB0aW9uLmtleScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc2FsdCBbc2FsdF0nLFxuXHRcdFx0J1NhbHQgdG8gdXNlIGZvciB0aGUgc2VjcmV0LiBJZiBub3QgcHJvdmlkZWQsIGl0IHdpbGwgYmUgZ2VuZXJhdGVkIHJhbmRvbWx5LicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGVuZ3RoIFtsZW5ndGhdJyxcblx0XHRcdCdMZW5ndGggb2YgdGhlIHNlY3JldC4gRGVmYXVsdCBpcyAzMi4nLFxuXHRcdFx0KHY6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0XHRcdGlmICh2ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMzI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQodiwgMTApKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHYpO1xuXHRcdFx0fSxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctbSwgLS1tbmVtb25pYyBbbW5lbW9uaWNdJyxcblx0XHRcdCdVc2UgYSBzcGVjaWZpYyBtbmVtb25pYyBzZWVkIHRvIGdlbmVyYXRlIHRoZSByb290IGtleS4gSWYgbm90IHByb3ZpZGVkLCBhIG5ldyBtbmVtb25pYyB3aWxsIGJlIGdlbmVyYXRlZC4nLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy13LCAtLXdvcmRzIFt3b3Jkc10nLFxuXHRcdFx0J1RlbGxzIHRoZSBzaXplIG9mIHdvcmtzIG9mIHRoZSBtbmVtb25pYyB0byBiZSBnZW5lcmF0ZWQuIEl0IG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAxMiBvciAyNC4gRGVmYXVsdCBpcyAxMiB3b3Jkcy4nLFxuXHRcdFx0KHY6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdFx0XHRcdGlmICh2ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMTI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQodiwgMTApKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB3b3JkcyA9IE51bWJlcih2KTtcblxuXHRcdFx0XHRpZiAoWzEyLCAyNF0uaW5jbHVkZXMod29yZHMpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHdvcmRzO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fSxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyBvcCA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB3ZHMgPSBvcC53b3JkcyA/PyAxMjtcblxuXHRcdFx0XHRpZiAod2RzID09PSAtMSkge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdCdUaGUgcHJvdmlkZWQgd29yZHMgc2l6ZSBzZWVtcyB0byBiZSBpbmNvbXBhdGlibGUuIEl0IG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAxMiBvciAyNC4nLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG1ubSA9IG9wLm1uZW1vbmljXG5cdFx0XHRcdFx0PyBvcC5tbmVtb25pY1xuXHRcdFx0XHRcdDogbW5lbW9uaWMoe1xuXHRcdFx0XHRcdFx0XHRsYW5ndWFnZTogJ2VuZ2xpc2gnLFxuXHRcdFx0XHRcdFx0XHRzdHJlbmd0aDogd2RzID09PSAxMiA/IDEyOCA6IDI1Nixcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChtbm0uc3BsaXQoJyAnKS5sZW5ndGggIT09IHdkcykge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdCdUaGUgcHJvdmlkZWQgbW5lbW9uaWMgc2VlbXMgdG8gYmUgaW5jb21wYXRpYmxlLiBBcmUgeW91IHN1cmUgaXQgaXMgY29ycmVjdD8nLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGtleSA9IGFlcy5nZW5lcmF0ZVNlY3JldChhd2FpdCBzZWVkKG1ubSksIHtcblx0XHRcdFx0XHRsZW5ndGg6IG9wLmxlbmd0aCA9PT0gLTEgPyB1bmRlZmluZWQgOiBOdW1iZXIob3A/Lmxlbmd0aCA/PyAzMiksXG5cdFx0XHRcdFx0c2FsdDogb3Auc2FsdCA/IEJ1ZmZlci5mcm9tKG9wLnNhbHQpIDogdW5kZWZpbmVkLFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coJ01uZW1vbmljOicpLCBtbm0pO1xuXG5cdFx0XHRcdGlmIChvcC5hYnNwYXRoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignU2VjcmV0IGtleTonKSwga2V5LnRvU3RyaW5nKCdiYXNlNjQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBQYXRoIFwiJHthYnNwYXRofVwiIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY3JlYXRlIGl0IGZpcnN0LmAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0YXdhaXQgZnMud3JpdGVGaWxlKFxuXHRcdFx0XHRcdFx0cGF0aC5qb2luKGFic3BhdGgsIG9wLmZpbGVuYW1lID8/ICdlbmNyeXB0aW9uLmtleScpLFxuXHRcdFx0XHRcdFx0a2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcblx0XHRcdFx0XHRcdHsgZmxhZzogJ3d4JywgbW9kZTogMG82MDAgfSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbihgUm9vdCBrZXkgc2F2ZWQgc3VjY2Vzc2Z1bGx5IGluIFwiJHthYnNwYXRofVwiYCksXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdFx0XHR9IGNhdGNoIChlcnI6IGFueSkge1xuXHRcdFx0XHRcdGlmIChlcnIuY29kZSA9PT0gJ0VFWElTVCcpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFx0XHRcdFx0Y2hhbGsueWVsbG93KGBUaGUgcm9vdCBrZXkgYWxyZWFkeSBleGlzdHMgaW4gXCIke2Fic3BhdGh9XCIuYCksXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0XHRjaGFsay5yZWQoXG5cdFx0XHRcdFx0XHRcdGBGYWlsZWQgdG8gc2F2ZSB0aGUgcm9vdCBrZXkgdG8gXCIke2Fic3BhdGh9XCI6ICR7ZXJyLm1lc3NhZ2V9YCxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLFFBQVEsSUFBSUMsRUFBRSxRQUFRLFNBQVM7QUFDeEMsT0FBT0MsSUFBSSxNQUFNLFdBQVc7QUFHNUIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFFekIsU0FBU0MsYUFBYSxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsSUFBSTtBQUNwRCxTQUFTQyxjQUFjO0FBQ3ZCLE9BQU8sS0FBS0MsR0FBRztBQUNmLFNBQVNDLE1BQU07QUFDZixTQUFTQyxNQUFNOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsMkJBQTJCQSxDQUFDQyxPQUFnQixFQUFFO0VBQzdEQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUMxQkMsV0FBVyxDQUNYLHlGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQ3BEQSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FDcEVBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0Isa0RBQWtELEVBQ2xELFNBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLHVDQUF1QyxFQUN2QyxLQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHlCQUF5QixFQUN6Qix5REFBeUQsRUFDekQsR0FDRCxDQUFDLENB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QU8sR0FBR3RCLFlBQVksQ0FBQ3VCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRVQsRUFBRSxDQUFDbEIsSUFBSSxDQUFDO01BRXBELElBQUlTLE1BQU0sQ0FBQ2dCLE9BQU8sQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUM5QixNQUFNRyxLQUFLLENBQ1YsU0FBU0gsT0FBTywyQ0FDakIsQ0FBQztNQUNGO01BRUEsSUFBSTtRQUNILE1BQU0xQixFQUFFLENBQUM2RCxTQUFTLENBQ2pCNUQsSUFBSSxDQUFDNkQsSUFBSSxDQUFDcEMsT0FBTyxFQUFFUCxFQUFFLENBQUM0QyxRQUFRLElBQUksZ0JBQWdCLENBQUMsRUFDbkRQLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUN0QjtVQUFFSSxJQUFJLEVBQUUsSUFBSTtVQUFFQyxJQUFJLEVBQUU7UUFBTSxDQUMzQixDQUFDO1FBRUQvQixPQUFPLENBQUNDLEdBQUcsQ0FDVmpDLEtBQUssQ0FBQ2tDLEtBQUssQ0FBQyxtQ0FBbUNWLE9BQU8sR0FBRyxDQUMxRCxDQUFDO1FBQ0QsT0FBT0MsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQztNQUN2QixDQUFDLENBQUMsT0FBT3VCLEdBQVEsRUFBRTtRQUNsQixJQUFJQSxHQUFHLENBQUNDLElBQUksS0FBSyxRQUFRLEVBQUU7VUFDMUJqQyxPQUFPLENBQUNrQyxJQUFJLENBQ1hsRSxLQUFLLENBQUNxQyxNQUFNLENBQUMsbUNBQW1DYixPQUFPLElBQUksQ0FDNUQsQ0FBQztVQUVELE9BQU9DLE9BQU8sQ0FBQ2dCLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkI7UUFFQVQsT0FBTyxDQUFDTSxLQUFLLENBQ1p0QyxLQUFLLENBQUN1QyxHQUFHLENBQ1IsbUNBQW1DZixPQUFPLE1BQU13QyxHQUFHLENBQUN4QixPQUFPLEVBQzVELENBQ0QsQ0FBQztRQUVELE9BQU9mLE9BQU8sQ0FBQ2dCLElBQUksQ0FBQyxDQUFDLENBQUM7TUFDdkI7SUFDRCxDQUFDLENBQUMsT0FBT0gsS0FBVSxFQUFFO01BQ3BCTixPQUFPLENBQUNNLEtBQUssQ0FBQ3RDLEtBQUssQ0FBQ3VDLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPZixPQUFPLENBQUNnQixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0VBQ0QsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/dist/esm/bin/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
+
import { generateMnemonicSecretCommand, generateAES256SecretCommand, recoverAES256SecretCommand } from "./commands/secrets/aes256.js";
|
|
3
4
|
import { generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand } from "./commands/keys/ed25519.js";
|
|
4
|
-
import { generateAES256SecretCommand, recoverAES256SecretCommand } from "./commands/secrets/aes256.js";
|
|
5
5
|
import { generateMnemonic } from "./commands/mnemonic.js";
|
|
6
6
|
const program = new Command();
|
|
7
|
-
const commands = [generateMnemonic, generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand, generateAES256SecretCommand, recoverAES256SecretCommand];
|
|
7
|
+
const commands = [generateMnemonic, generateEd25519KeyPairCommand, recoverEd25519KeyPairCommand, generateAES256SecretCommand, recoverAES256SecretCommand, generateMnemonicSecretCommand];
|
|
8
8
|
commands.forEach(c => c(program));
|
|
9
9
|
program.parse();
|
|
10
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb21tYW5kIiwiZ2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQiLCJnZW5lcmF0ZUFFUzI1NlNlY3JldENvbW1hbmQiLCJyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCIsImdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kIiwicmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZHMiLCJmb3JFYWNoIiwiYyIsInBhcnNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcblxuaW1wb3J0IHtcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5cdGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0cmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQsXG59IGZyb20gJ0AvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LmpzJztcbmltcG9ydCB7XG5cdGdlbmVyYXRlRWQyNTUxOUtleVBhaXJDb21tYW5kLFxuXHRyZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kLFxufSBmcm9tICdAL2Jpbi9jb21tYW5kcy9rZXlzL2VkMjU1MTkuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNbmVtb25pYyB9IGZyb20gJ0AvYmluL2NvbW1hbmRzL21uZW1vbmljLmpzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbmNvbnN0IGNvbW1hbmRzID0gW1xuXHRnZW5lcmF0ZU1uZW1vbmljLFxuXHRnZW5lcmF0ZUVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0cmVjb3ZlckVkMjU1MTlLZXlQYWlyQ29tbWFuZCxcblx0Z2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kLFxuXHRyZWNvdmVyQUVTMjU2U2VjcmV0Q29tbWFuZCxcblx0Z2VuZXJhdGVNbmVtb25pY1NlY3JldENvbW1hbmQsXG5dO1xuXG5jb21tYW5kcy5mb3JFYWNoKGMgPT4gYyhwcm9ncmFtKSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSxPQUFPLFFBQVEsV0FBVztBQUVuQyxTQUNDQyw2QkFBNkIsRUFDN0JDLDJCQUEyQixFQUMzQkMsMEJBQTBCO0FBRTNCLFNBQ0NDLDZCQUE2QixFQUM3QkMsNEJBQTRCO0FBRTdCLFNBQVNDLGdCQUFnQjtBQUV6QixNQUFNQyxPQUFPLEdBQUcsSUFBSVAsT0FBTyxDQUFDLENBQUM7QUFFN0IsTUFBTVEsUUFBUSxHQUFHLENBQ2hCRixnQkFBZ0IsRUFDaEJGLDZCQUE2QixFQUM3QkMsNEJBQTRCLEVBQzVCSCwyQkFBMkIsRUFDM0JDLDBCQUEwQixFQUMxQkYsNkJBQTZCLENBQzdCO0FBRURPLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0gsT0FBTyxDQUFDLENBQUM7QUFFakNBLE9BQU8sQ0FBQ0ksS0FBSyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|