@piggly/secrets 0.6.0 → 0.8.0
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 +2 -2
- 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 +2 -2
- 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/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 +24 -24
package/README.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
An ESM/CommonJS library for managing secrets in your application. The main goal of this library is to provide terminal commands (with npx) to **generate secrets for your application from a mnemonic phrase**. To achieve it, a lot of tools are used within micro functions.
|
|
6
6
|
|
|
7
|
+
## 🚨 Breaking changes
|
|
8
|
+
|
|
9
|
+
- Starting with v0.8.0, all deterministic secrets generated with `aes256.generateSecret` are now different from the previous version. You should use the "version: 1" flag to keep compatibility.
|
|
10
|
+
|
|
7
11
|
## Features
|
|
8
12
|
|
|
9
13
|
- Generates a mnemonic phrase on terminal, with `npx pglysecrets mnemonic`;
|
|
@@ -183,6 +187,7 @@ pglysecrets recover:aes256 mySecret 1 -p /path/to/save -x secretIndex -m "mnemon
|
|
|
183
187
|
```
|
|
184
188
|
|
|
185
189
|
## Installation
|
|
190
|
+
|
|
186
191
|
This library is ready for ES module or CommonJs module. You must add it by using Node.Js:
|
|
187
192
|
|
|
188
193
|
```bash
|
|
@@ -22,7 +22,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
22
22
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
23
23
|
*/
|
|
24
24
|
function generateEd25519KeyPairCommand(program) {
|
|
25
|
-
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.
|
|
25
|
+
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) => {
|
|
26
26
|
try {
|
|
27
27
|
const version = parseInt(op.version, 10);
|
|
28
28
|
const key_name = (0, _index2.parseFileName)(n);
|
|
@@ -127,4 +127,4 @@ function recoverEd25519KeyPairCommand(program) {
|
|
|
127
127
|
return process.exit(0);
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbmRleDIiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2VuZXJhdGVFZDI1NTE5S2V5UGFpckNvbW1hbmQiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwiYXJndW1lbnQiLCJvcHRpb24iLCJhY3Rpb24iLCJuIiwib3AiLCJ2ZXJzaW9uIiwicGFyc2VJbnQiLCJrZXlfbmFtZSIsInBhcnNlRmlsZU5hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicGFyc2VBYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImV4aXN0cyIsImdlbmVyYXRlZCIsImdlbmVyYXRlS2V5UGFpciIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsImdyZWVuIiwiZmlsZXMiLCJwayIsInNrIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQiLCJyZW1vdmUiLCJyZWNvdmVyS2V5UGFpciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMva2V5cy9lZDI1NTE5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgZ2VuZXJhdGVLZXlQYWlyLCByZWNvdmVyS2V5UGFpciB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGggfSBmcm9tICdAL3V0aWxzL2luZGV4LmpzJztcbmltcG9ydCB7IHJlbW92ZSB9IGZyb20gJ0AvdXRpbHMvaW5kZXhlcy5qcyc7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tICdAL3V0aWxzL2ZpbGUuanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5LXBhaXIgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHdpbGwgdXNlIHRoZSBlZDI1NTE5IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ2dlbmVyYXRlOmVkMjU1MTknKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXAsIC0tcGF0aCA8cGF0aD4nLFxuXHRcdFx0J1BhdGggdG8gc2F2ZSB0aGUga2V5LiBEZWZhdWx0IGlzIGN1cnJlbnQgZGlyZWN0b3J5LiBJZiByZWxhdGl2ZSwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeS4nLFxuXHRcdClcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBBdmFpbGFibGU6IGN6ZWNoLCBjaGluZXNlX3NpbXBsaWZpZWQsIGNoaW5lc2VfdHJhZGl0aW9uYWwsIGtvcmVhbiwgZnJlbmNoLCBpdGFsaWFuLCBzcGFuaXNoLCBqYXBhbmVzZSwgcG9ydHVndWVzZSwgZW5nbGlzaC4gRGVmYXVsdCBpcyBlbmdsaXNoLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlS2V5UGFpcignZWQyNTUxOScsIGFic3BhdGgsIGtleV9uYW1lLCB7XG5cdFx0XHRcdFx0Zm9ybWF0LFxuXHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0bW5lbW9uaWM6IHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1B1YmxpYyBrZXkgZ2VuZXJhdGVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMucGspO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5zayk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ0tleSBwYWlyIGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdyZWNvdmVyOmVkMjU1MTknKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIG5vdCBjb2xsZWN0ZWQgZnJvbSBpbmRleC4nLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsXG5cdFx0XHQnRm9ybWF0IG9mIHRoZSBrZXk6IHBlbSBvciByYXcuIERlZmF1bHQgaXMgcmF3LicsXG5cdFx0XHQncmF3Jyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHsgbW5lbW9uaWMgfSA9IG9wO1xuXG5cdFx0XHRcdGlmIChtbmVtb25pYyA9PT0gdW5kZWZpbmVkIHx8IG1uZW1vbmljID09PSAnJykge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKCdNbmVtb25pYyBpcyByZXF1aXJlZC4nKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGxldCBmb3JtYXQgPSBvcC5mb3JtYXQ7XG5cblx0XHRcdFx0c3dpdGNoIChmb3JtYXQpIHtcblx0XHRcdFx0XHRjYXNlICdwZW0nOlxuXHRcdFx0XHRcdFx0Zm9ybWF0ID0gJ3BlbSc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdyYXcnOlxuXHRcdFx0XHRcdFx0Zm9ybWF0ID0gJ3Jhdyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYEZvcm1hdCAke2Zvcm1hdH0gbm90IHN1cHBvcnRlZC5gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdrZXlwYWlycycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgcmVjb3ZlcktleVBhaXIoXG5cdFx0XHRcdFx0J2VkMjU1MTknLFxuXHRcdFx0XHRcdG1uZW1vbmljLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Zm9ybWF0LFxuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSByZWNvdmVyZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB6Qzs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0csNkJBQTZCQSxDQUFDQyxPQUFnQixFQUFFO0VBQy9EQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMzQkMsV0FBVyxDQUNYLHFGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUNOLG1CQUFtQixFQUNuQiw0R0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwrQkFBK0IsQ0FBQyxDQUNwRUEsTUFBTSxDQUNOLDJCQUEyQixF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
|
|
130
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbmRleDIiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2VuZXJhdGVFZDI1NTE5S2V5UGFpckNvbW1hbmQiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwiYXJndW1lbnQiLCJvcHRpb24iLCJhY3Rpb24iLCJuIiwib3AiLCJ2ZXJzaW9uIiwicGFyc2VJbnQiLCJrZXlfbmFtZSIsInBhcnNlRmlsZU5hbWUiLCJpbmRleF9uYW1lIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJhYnNwYXRoIiwicGFyc2VBYnNwYXRoIiwicHJvY2VzcyIsImN3ZCIsInBhdGgiLCJmb3JtYXQiLCJFcnJvciIsImV4aXN0cyIsImdlbmVyYXRlZCIsImdlbmVyYXRlS2V5UGFpciIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsImdyZWVuIiwiZmlsZXMiLCJwayIsInNrIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJFZDI1NTE5S2V5UGFpckNvbW1hbmQiLCJyZW1vdmUiLCJyZWNvdmVyS2V5UGFpciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaW4vY29tbWFuZHMva2V5cy9lZDI1NTE5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgZ2VuZXJhdGVLZXlQYWlyLCByZWNvdmVyS2V5UGFpciB9IGZyb20gJ0AvY29yZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBwYXJzZUZpbGVOYW1lLCBwYXJzZUFic3BhdGggfSBmcm9tICdAL3V0aWxzL2luZGV4LmpzJztcbmltcG9ydCB7IHJlbW92ZSB9IGZyb20gJ0AvdXRpbHMvaW5kZXhlcy5qcyc7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tICdAL3V0aWxzL2ZpbGUuanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5LXBhaXIgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHdpbGwgdXNlIHRoZSBlZDI1NTE5IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFZDI1NTE5S2V5UGFpckNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ2dlbmVyYXRlOmVkMjU1MTknKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdHZW5lcmF0ZXMgYSBrZXktcGFpciBiYXNlZCBvbiBhIG1uZW1vbmljIHBocmFzZS4gSXQgd2lsbCB1c2UgdGhlIGVkMjU1MTkgYWxnb3JpdGhtLicsXG5cdFx0KVxuXHRcdC5hcmd1bWVudCgnPG5hbWU+JywgJ05hbWUgb2YgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXAsIC0tcGF0aCA8cGF0aD4nLFxuXHRcdFx0J1BhdGggdG8gc2F2ZSB0aGUga2V5LiBEZWZhdWx0IGlzIGN1cnJlbnQgZGlyZWN0b3J5LiBJZiByZWxhdGl2ZSwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeS4nLFxuXHRcdClcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWYsIC0tZm9ybWF0IDxmb3JtYXQ+Jyxcblx0XHRcdCdGb3JtYXQgb2YgdGhlIGtleTogcGVtIG9yIHJhdy4gRGVmYXVsdCBpcyByYXcuJyxcblx0XHRcdCdyYXcnLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KG9wLnZlcnNpb24sIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChwcm9jZXNzLmN3ZCgpLCBvcC5wYXRoKTtcblx0XHRcdFx0bGV0IGZvcm1hdCA9IG9wLmZvcm1hdDtcblxuXHRcdFx0XHRzd2l0Y2ggKGZvcm1hdCkge1xuXHRcdFx0XHRcdGNhc2UgJ3BlbSc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncGVtJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhdyc6XG5cdFx0XHRcdFx0XHRmb3JtYXQgPSAncmF3Jztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0aHJvdyBFcnJvcihgRm9ybWF0ICR7Zm9ybWF0fSBub3Qgc3VwcG9ydGVkLmApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGV4aXN0cyhhYnNwYXRoKSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRcdGBcIlBhdGggJHthYnNwYXRofSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNyZWF0ZSBpdCBmaXJzdC5cImAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGdlbmVyYXRlZCA9IGF3YWl0IGdlbmVyYXRlS2V5UGFpcignZWQyNTUxOScsIGFic3BhdGgsIGtleV9uYW1lLCB7XG5cdFx0XHRcdFx0Zm9ybWF0LFxuXHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0bW5lbW9uaWM6IHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcC5sYW5ndWFnZSxcblx0XHRcdFx0XHRcdHN0cmVuZ3RoOiBwYXJzZUludChvcC5zdHJlbmd0aCwgMTApLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2VlZDoge1xuXHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJ1B1YmxpYyBrZXkgZ2VuZXJhdGVkIGF0OicpLCBnZW5lcmF0ZWQuZmlsZXMucGspO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignU2VjcmV0IGtleSBnZW5lcmF0ZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5zayk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ0tleSBwYWlyIGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGVcbiAqIHByZXZpb3VzIGtleSBmcm9tIGluZGV4IHdoZW4gaW5kZXggaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHByb2dyYW0gdG8gYWRkIHRoZSBjb21tYW5kIHRvLlxuICogQHJldHVybnMgVGhlIHByb2dyYW0uXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyRWQyNTUxOUtleVBhaXJDb21tYW5kKHByb2dyYW06IENvbW1hbmQpIHtcblx0cHJvZ3JhbVxuXHRcdC5jb21tYW5kKCdyZWNvdmVyOmVkMjU1MTknKVxuXHRcdC5kZXNjcmlwdGlvbihcblx0XHRcdCdSZWNvdmVycyBhIGtleS1wYWlyIGZyb20gYSBtbmVtb25pYyBhbmQgc2F2ZSBpdCB0byBhIGZpbGUuIEl0IHdpbGwgcmVtb3ZlIHRoZSBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC4nLFxuXHRcdClcblx0XHQuYXJndW1lbnQoJzxuYW1lPicsICdOYW1lIG9mIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctcCwgLS1wYXRoIDxwYXRoPicsICdQYXRoIHRvIHNhdmUgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy1tLCAtLW1uZW1vbmljIDxtbmVtb25pYz4nLCAnTW5lbW9uaWMgdG8gcmVjb3ZlciB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXcsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCBmb3Igc2VlZCBnZW5lcmF0aW9uLicpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpdCB3aWxsIG5vdCBjb2xsZWN0ZWQgZnJvbSBpbmRleC4nLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsXG5cdFx0XHQnRm9ybWF0IG9mIHRoZSBrZXk6IHBlbSBvciByYXcuIERlZmF1bHQgaXMgcmF3LicsXG5cdFx0XHQncmF3Jyxcblx0XHQpXG5cdFx0LmFjdGlvbihhc3luYyAobiwgb3ApID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHsgbW5lbW9uaWMgfSA9IG9wO1xuXG5cdFx0XHRcdGlmIChtbmVtb25pYyA9PT0gdW5kZWZpbmVkIHx8IG1uZW1vbmljID09PSAnJykge1xuXHRcdFx0XHRcdHRocm93IEVycm9yKCdNbmVtb25pYyBpcyByZXF1aXJlZC4nKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGtleV9uYW1lID0gcGFyc2VGaWxlTmFtZShuKTtcblx0XHRcdFx0Y29uc3QgaW5kZXhfbmFtZSA9IG9wLmluZGV4ID8gcGFyc2VGaWxlTmFtZShvcC5pbmRleCkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdGNvbnN0IGFic3BhdGggPSBwYXJzZUFic3BhdGgocHJvY2Vzcy5jd2QoKSwgb3AucGF0aCk7XG5cdFx0XHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludChvcC52ZXJzaW9uLCAxMCk7XG5cdFx0XHRcdGxldCBmb3JtYXQgPSBvcC5mb3JtYXQ7XG5cblx0XHRcdFx0c3dpdGNoIChmb3JtYXQpIHtcblx0XHRcdFx0XHRjYXNlICdwZW0nOlxuXHRcdFx0XHRcdFx0Zm9ybWF0ID0gJ3BlbSc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdyYXcnOlxuXHRcdFx0XHRcdFx0Zm9ybWF0ID0gJ3Jhdyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYEZvcm1hdCAke2Zvcm1hdH0gbm90IHN1cHBvcnRlZC5gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpbmRleF9uYW1lKSB7XG5cdFx0XHRcdFx0YXdhaXQgcmVtb3ZlKCdrZXlwYWlycycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgcmVjb3ZlcktleVBhaXIoXG5cdFx0XHRcdFx0J2VkMjU1MTknLFxuXHRcdFx0XHRcdG1uZW1vbmljLFxuXHRcdFx0XHRcdGFic3BhdGgsXG5cdFx0XHRcdFx0a2V5X25hbWUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Zm9ybWF0LFxuXHRcdFx0XHRcdFx0aW5kZXhfbmFtZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignUHVibGljIGtleSByZWNvdmVyZWQgYXQ6JyksIGdlbmVyYXRlZC5maWxlcy5wayk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IHJlY292ZXJlZCBhdDonKSwgZ2VuZXJhdGVkLmZpbGVzLnNrKTtcblxuXHRcdFx0XHRpZiAoZ2VuZXJhdGVkLmZpbGVzLmluZGV4KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0XHRjaGFsay5ncmVlbignS2V5IHBhaXIgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB6Qzs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0csNkJBQTZCQSxDQUFDQyxPQUFnQixFQUFFO0VBQy9EQSxPQUFPLENBQ0xDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMzQkMsV0FBVyxDQUNYLHFGQUNELENBQUMsQ0FDQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUN0Q0MsTUFBTSxDQUNOLG1CQUFtQixFQUNuQiw0R0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwrQkFBK0IsQ0FBQyxDQUNwRUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQixrREFBa0QsRUFDbEQsU0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBQ3ZDLEtBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04seUJBQXlCLEVBQ3pCLHlEQUF5RCxF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
|
|
@@ -18,7 +18,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
18
18
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
19
19
|
*/
|
|
20
20
|
function generateMnemonic(program) {
|
|
21
|
-
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.
|
|
21
|
+
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 => {
|
|
22
22
|
console.log(_chalk.default.yellow('Mnemonic'));
|
|
23
23
|
try {
|
|
24
24
|
const list = (0, _index.splitWords)((0, _index.mnemonic)({
|
|
@@ -36,4 +36,4 @@ function generateMnemonic(program) {
|
|
|
36
36
|
return process.exit(0);
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImdlbmVyYXRlTW5lbW9uaWMiLCJwcm9ncmFtIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiYWN0aW9uIiwib3B0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsInllbGxvdyIsImxpc3QiLCJzcGxpdFdvcmRzIiwibW5lbW9uaWMiLCJsYW5ndWFnZSIsInN0cmVuZ3RoIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwid29yZCIsImdyZWVuIiwiam9pbiIsImVycm9yIiwicmVkIiwibWVzc2FnZSIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Jpbi9jb21tYW5kcy9tbmVtb25pYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB7IHNwbGl0V29yZHMsIG1uZW1vbmljIH0gZnJvbSAnQC91dGlscy9pbmRleC5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtbmVtb25pYy5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVNbmVtb25pYyhwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnbW5lbW9uaWMnKVxuXHRcdC5kZXNjcmlwdGlvbignR2VuZXJhdGVzIGFuZCBzaG93IGEgbW5lbW9uaWMuJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1zLCAtLXN0cmVuZ3RoIDxzdHJlbmd0aD4nLFxuXHRcdFx0J1N0cmVuZ3RoIG9mIG1uZW1vbmljLiBEZWZhdWx0IGlzIDEyOC4nLFxuXHRcdFx0JzEyOCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLWwsIC0tbGFuZ3VhZ2UgPGxhbmd1YWdlPicsXG5cdFx0XHQnTGFuZ3VhZ2Ugb2YgbW5lbW9uaWMuIE9ubHkgZW5nbGlzaCBpcyBhdmFpbGFibGUuJyxcblx0XHRcdCdlbmdsaXNoJyxcblx0XHQpXG5cdFx0LmFjdGlvbihvcHRpb25zID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdygnTW5lbW9uaWMnKSk7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGxpc3QgPSBzcGxpdFdvcmRzKFxuXHRcdFx0XHRcdG1uZW1vbmljKHtcblx0XHRcdFx0XHRcdGxhbmd1YWdlOiBvcHRpb25zLmxhbmd1YWdlLFxuXHRcdFx0XHRcdFx0c3RyZW5ndGg6IG9wdGlvbnMuc3RyZW5ndGhcblx0XHRcdFx0XHRcdFx0PyBwYXJzZUludChvcHRpb25zLnN0cmVuZ3RoLCAxMClcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coKTtcblxuXHRcdFx0XHRsaXN0LmZvckVhY2god29yZCA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYCR7d29yZC5qb2luKCcgJyl9YCkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBd0QsU0FBQUQsdUJBQUFHLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFKeEQ7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLGdCQUFnQkEsQ0FBQ0MsT0FBZ0IsRUFBRTtFQUNsREEsT0FBTyxDQUNMQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQ25CQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsQ0FDN0NDLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBQ3ZDLEtBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04sMkJBQTJCLEVBQzNCLGtEQUFrRCxFQUNsRCxTQUNELENBQUMsQ0FDQUMsTUFBTSxDQUFDQyxPQUFPLElBQUk7SUFDbEJDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxjQUFLLENBQUNDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyQyxJQUFJO01BQ0gsTUFBTUMsSUFBSSxHQUFHLElBQUFDLGlCQUFVLEVBQ3RCLElBQUFDLGVBQVEsRUFBQztRQUNSQyxRQUFRLEVBQUVSLE9BQU8sQ0FBQ1EsUUFBUTtRQUMxQkMsUUFBUSxFQUFFVCxPQUFPLENBQUNTLFFBQVEsR0FDdkJDLFFBQVEsQ0FBQ1YsT0FBTyxDQUFDUyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQzlCRTtNQUNKLENBQUMsQ0FDRixDQUFDO01BRURWLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFYkcsSUFBSSxDQUFDTyxPQUFPLENBQUNDLElBQUksSUFBSTtRQUNwQlosT0FBTyxDQUFDQyxHQUFHLENBQUNDLGNBQUssQ0FBQ1csS0FBSyxDQUFDLEdBQUdELElBQUksQ0FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUM5QyxDQUFDLENBQUM7SUFDSCxDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO01BQ3BCZixPQUFPLENBQUNlLEtBQUssQ0FBQ2IsY0FBSyxDQUFDYyxHQUFHLENBQUNELEtBQUssQ0FBQ0UsT0FBTyxDQUFDLENBQUM7TUFDdkMsT0FBT0MsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCO0lBRUEsT0FBT0QsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -23,7 +23,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
23
23
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
24
24
|
*/
|
|
25
25
|
function generateAES256SecretCommand(program) {
|
|
26
|
-
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.
|
|
26
|
+
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) => {
|
|
27
27
|
try {
|
|
28
28
|
const version = parseInt(op.version, 10);
|
|
29
29
|
const key_name = (0, _index.parseFileName)(n);
|
|
@@ -102,4 +102,4 @@ function recoverAES256SecretCommand(program) {
|
|
|
102
102
|
return process.exit(0);
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbmRleDIiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJwYXJzZUZpbGVOYW1lIiwiaW5kZXhfbmFtZSIsImluZGV4IiwidW5kZWZpbmVkIiwiYWJzcGF0aCIsInBhcnNlQWJzcGF0aCIsInByb2Nlc3MiLCJjd2QiLCJwYXRoIiwiZXhpc3RzIiwiRXJyb3IiLCJnZW5lcmF0ZWQiLCJnZW5lcmF0ZVNlY3JldCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsImdyZWVuIiwiZmlsZXMiLCJmaWxlIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwidiIsInJlbW92ZSIsInJlY292ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgcGFyc2VGaWxlTmFtZSwgcGFyc2VBYnNwYXRoLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWNyZXQgfSBmcm9tICdAL2NvcmUvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2XG4gKiBhbGdvcml0aG0uXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnR2VuZXJhdGVzIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NiBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBBdmFpbGFibGU6IGN6ZWNoLCBjaGluZXNlX3NpbXBsaWZpZWQsIGNoaW5lc2VfdHJhZGl0aW9uYWwsIGtvcmVhbiwgZnJlbmNoLCBpdGFsaWFuLCBzcGFuaXNoLCBqYXBhbmVzZSwgcG9ydHVndWVzZSwgZW5nbGlzaC4gRGVmYXVsdCBpcyBlbmdsaXNoLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChleGlzdHMoYWJzcGF0aCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0XHRgXCJQYXRoICR7YWJzcGF0aH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjcmVhdGUgaXQgZmlyc3QuXCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3AubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0XHRzdHJlbmd0aDogcGFyc2VJbnQob3Auc3RyZW5ndGgsIDEwKSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRcdHBhc3N3b3JkOiBvcC5wYXNzd29yZCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgZ2VuZXJhdGVkIGF0OicpLFxuXHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5maWxlLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBzZWNyZXQgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlXG4gKiBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnUmVjb3ZlcnMgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGUgcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctbSwgLS1tbmVtb25pYyA8bW5lbW9uaWM+JywgJ01uZW1vbmljIHRvIHJlY292ZXIgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLFxuXHRcdFx0J1ZlcnNpb24gb2YgdGhlIGtleS4gU2hvdWxkIGJlIGFuIGludGVnZXIuIERlZmF1bHQgaXMgMS4nLFxuXHRcdFx0JzEnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy14LCAtLWluZGV4IDxpbmRleD4nLFxuXHRcdFx0J0luZGV4IG5hbWUuIFdpbGwgc3RvcmUgdGhlIGtleSBpbiBhIEpTT04gaW5kZXguIElmIG5vdCBwcm92aWRlZCwgaW5kZXggd2lsbCBub3QgYmUgY3JlYXRlZC4nLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCB2LCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KHYsIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChvcC5wYXRoKTtcblxuXHRcdFx0XHRpZiAoaW5kZXhfbmFtZSkge1xuXHRcdFx0XHRcdGF3YWl0IHJlbW92ZSgnc2VjcmV0cycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVTZWNyZXQoXG5cdFx0XHRcdFx0J2FlczI1NicsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0cmVjb3ZlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWNvdmVyZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB6Qzs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRywyQkFBMkJBLENBQUNDLE9BQWdCLEVBQUU7RUFDN0RBLE9BQU8sQ0FDTEMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQzFCQyxXQUFXLENBQ1gseUZBQ0QsQ0FBQyxDQUNBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQ3RDQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsQ0FDcERBLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwrQkFBK0IsQ0FBQyxDQUNwRUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQix1S0FBdUssRUFDdkssU0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBQ3ZDLEtBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04seUJBQXlCLEVBQ3pCLHlEQUF5RCxFQUN6RCxHQUNELENBQUMs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
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hhbGsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbmRleDIiLCJfaW5kZXhlcyIsIl9maWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2VuZXJhdGVBRVMyNTZTZWNyZXRDb21tYW5kIiwicHJvZ3JhbSIsImNvbW1hbmQiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50Iiwib3B0aW9uIiwiYWN0aW9uIiwibiIsIm9wIiwidmVyc2lvbiIsInBhcnNlSW50Iiwia2V5X25hbWUiLCJwYXJzZUZpbGVOYW1lIiwiaW5kZXhfbmFtZSIsImluZGV4IiwidW5kZWZpbmVkIiwiYWJzcGF0aCIsInBhcnNlQWJzcGF0aCIsInByb2Nlc3MiLCJjd2QiLCJwYXRoIiwiZXhpc3RzIiwiRXJyb3IiLCJnZW5lcmF0ZWQiLCJnZW5lcmF0ZVNlY3JldCIsIm1uZW1vbmljIiwibGFuZ3VhZ2UiLCJzdHJlbmd0aCIsInNlZWQiLCJwYXNzd29yZCIsImNvbnNvbGUiLCJsb2ciLCJjaGFsayIsImdyZWVuIiwiZmlsZXMiLCJmaWxlIiwieWVsbG93IiwiZXJyb3IiLCJyZWQiLCJtZXNzYWdlIiwiZXhpdCIsInJlY292ZXJBRVMyNTZTZWNyZXRDb21tYW5kIiwidiIsInJlbW92ZSIsInJlY292ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYmluL2NvbW1hbmRzL3NlY3JldHMvYWVzMjU2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgcGFyc2VGaWxlTmFtZSwgcGFyc2VBYnNwYXRoLCBtbmVtb25pYyB9IGZyb20gJ0AvdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWNyZXQgfSBmcm9tICdAL2NvcmUvaW5kZXguanMnO1xuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnQC91dGlscy9pbmRleGVzLmpzJztcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gJ0AvdXRpbHMvZmlsZS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgYmFzZWQgb24gYSBtbmVtb25pYyBwaHJhc2UuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggYWVzMjU2XG4gKiBhbGdvcml0aG0uXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcHJvZ3JhbSB0byBhZGQgdGhlIGNvbW1hbmQgdG8uXG4gKiBAcmV0dXJucyBUaGUgcHJvZ3JhbS5cbiAqIEBzaW5jZSAxLjAuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQUVTMjU2U2VjcmV0Q29tbWFuZChwcm9ncmFtOiBDb21tYW5kKSB7XG5cdHByb2dyYW1cblx0XHQuY29tbWFuZCgnZ2VuZXJhdGU6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnR2VuZXJhdGVzIGEgc2VjcmV0IGJhc2VkIG9uIGEgbW5lbW9uaWMgcGhyYXNlLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoIGFlczI1NiBhbGdvcml0aG0uJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctdywgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIGZvciBzZWVkIGdlbmVyYXRpb24uJylcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy1sLCAtLWxhbmd1YWdlIDxsYW5ndWFnZT4nLFxuXHRcdFx0J0xhbmd1YWdlIG9mIG1uZW1vbmljLiBPbmx5IGVuZ2xpc2ggaXMgYXZhaWxhYmxlLicsXG5cdFx0XHQnZW5nbGlzaCcsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXMsIC0tc3RyZW5ndGggPHN0cmVuZ3RoPicsXG5cdFx0XHQnU3RyZW5ndGggb2YgbW5lbW9uaWMuIERlZmF1bHQgaXMgMTI4LicsXG5cdFx0XHQnMTI4Jyxcblx0XHQpXG5cdFx0Lm9wdGlvbihcblx0XHRcdCctdiwgLS12ZXJzaW9uIDx2ZXJzaW9uPicsXG5cdFx0XHQnVmVyc2lvbiBvZiB0aGUga2V5LiBTaG91bGQgYmUgYW4gaW50ZWdlci4gRGVmYXVsdCBpcyAxLicsXG5cdFx0XHQnMScsXG5cdFx0KVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXgsIC0taW5kZXggPGluZGV4PicsXG5cdFx0XHQnSW5kZXggbmFtZS4gV2lsbCBzdG9yZSB0aGUga2V5IGluIGEgSlNPTiBpbmRleC4gSWYgbm90IHByb3ZpZGVkLCBpbmRleCB3aWxsIG5vdCBiZSBjcmVhdGVkLicsXG5cdFx0KVxuXHRcdC5hY3Rpb24oYXN5bmMgKG4sIG9wKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQob3AudmVyc2lvbiwgMTApO1xuXHRcdFx0XHRjb25zdCBrZXlfbmFtZSA9IHBhcnNlRmlsZU5hbWUobik7XG5cdFx0XHRcdGNvbnN0IGluZGV4X25hbWUgPSBvcC5pbmRleCA/IHBhcnNlRmlsZU5hbWUob3AuaW5kZXgpIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBhYnNwYXRoID0gcGFyc2VBYnNwYXRoKHByb2Nlc3MuY3dkKCksIG9wLnBhdGgpO1xuXG5cdFx0XHRcdGlmIChleGlzdHMoYWJzcGF0aCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0XHRgXCJQYXRoICR7YWJzcGF0aH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjcmVhdGUgaXQgZmlyc3QuXCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBnZW5lcmF0ZWQgPSBhd2FpdCBnZW5lcmF0ZVNlY3JldChcblx0XHRcdFx0XHQnYWVzMjU2Jyxcblx0XHRcdFx0XHRtbmVtb25pYyh7XG5cdFx0XHRcdFx0XHRsYW5ndWFnZTogb3AubGFuZ3VhZ2UsXG5cdFx0XHRcdFx0XHRzdHJlbmd0aDogcGFyc2VJbnQob3Auc3RyZW5ndGgsIDEwKSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhYnNwYXRoLFxuXHRcdFx0XHRcdGtleV9uYW1lLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluZGV4X25hbWUsXG5cdFx0XHRcdFx0XHRzZWVkOiB7XG5cdFx0XHRcdFx0XHRcdHBhc3N3b3JkOiBvcC5wYXNzd29yZCxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2ZXJzaW9uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgZ2VuZXJhdGVkIGF0OicpLFxuXHRcdFx0XHRcdGdlbmVyYXRlZC5maWxlcy5maWxlLFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmIChnZW5lcmF0ZWQuZmlsZXMuaW5kZXgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRcdGNoYWxrLmdyZWVuKCdTZWNyZXQga2V5IGluZGV4ZWQgYXQ6JyksXG5cdFx0XHRcdFx0XHRnZW5lcmF0ZWQuZmlsZXMuaW5kZXgsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCdNbmVtb25pYzonKSwgZ2VuZXJhdGVkLm1uZW1vbmljLCAnXFxuJyk7XG5cblx0XHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdFx0Y2hhbGsueWVsbG93KFxuXHRcdFx0XHRcdFx0J0tlZXAgdGhlIG1uZW1vbmljIHNhZmUhIEl0IGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlIGtleSBwYWlyLicsXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihjaGFsay5yZWQoZXJyb3IubWVzc2FnZSkpO1xuXHRcdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvY2Vzcy5leGl0KDApO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFJlY292ZXIgYSBzZWNyZXQgZnJvbSBhIG1uZW1vbmljIGFuZCBzYXZlIGl0IHRvIGEgZmlsZS4gSXQgd2lsbCByZW1vdmUgdGhlXG4gKiBwcmV2aW91cyBrZXkgZnJvbSBpbmRleCB3aGVuIGluZGV4IGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSBwcm9ncmFtIHRvIGFkZCB0aGUgY29tbWFuZCB0by5cbiAqIEByZXR1cm5zIFRoZSBwcm9ncmFtLlxuICogQHNpbmNlIDEuMC4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3ZlckFFUzI1NlNlY3JldENvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCkge1xuXHRwcm9ncmFtXG5cdFx0LmNvbW1hbmQoJ3JlY292ZXI6YWVzMjU2Jylcblx0XHQuZGVzY3JpcHRpb24oXG5cdFx0XHQnUmVjb3ZlcnMgYSBrZXktcGFpciBmcm9tIGEgbW5lbW9uaWMgYW5kIHNhdmUgaXQgdG8gYSBmaWxlLiBJdCB3aWxsIHJlbW92ZSB0aGUgcHJldmlvdXMga2V5IGZyb20gaW5kZXggd2hlbiBpbmRleCBpcyBzZXQuJyxcblx0XHQpXG5cdFx0LmFyZ3VtZW50KCc8bmFtZT4nLCAnTmFtZSBvZiB0aGUga2V5LicpXG5cdFx0Lm9wdGlvbignLXAsIC0tcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBzYXZlIHRoZSBrZXkuJylcblx0XHQub3B0aW9uKCctbSwgLS1tbmVtb25pYyA8bW5lbW9uaWM+JywgJ01uZW1vbmljIHRvIHJlY292ZXIgdGhlIGtleS4nKVxuXHRcdC5vcHRpb24oJy13LCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnUGFzc3dvcmQgZm9yIHNlZWQgZ2VuZXJhdGlvbi4nKVxuXHRcdC5vcHRpb24oXG5cdFx0XHQnLXYsIC0tdmVyc2lvbiA8dmVyc2lvbj4nLFxuXHRcdFx0J1ZlcnNpb24gb2YgdGhlIGtleS4gU2hvdWxkIGJlIGFuIGludGVnZXIuIERlZmF1bHQgaXMgMS4nLFxuXHRcdFx0JzEnLFxuXHRcdClcblx0XHQub3B0aW9uKFxuXHRcdFx0Jy14LCAtLWluZGV4IDxpbmRleD4nLFxuXHRcdFx0J0luZGV4IG5hbWUuIFdpbGwgc3RvcmUgdGhlIGtleSBpbiBhIEpTT04gaW5kZXguIElmIG5vdCBwcm92aWRlZCwgaW5kZXggd2lsbCBub3QgYmUgY3JlYXRlZC4nLFxuXHRcdClcblx0XHQuYWN0aW9uKGFzeW5jIChuLCB2LCBvcCkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgeyBtbmVtb25pYyB9ID0gb3A7XG5cblx0XHRcdFx0aWYgKG1uZW1vbmljID09PSB1bmRlZmluZWQgfHwgbW5lbW9uaWMgPT09ICcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRXJyb3IoJ01uZW1vbmljIGlzIHJlcXVpcmVkLicpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KHYsIDEwKTtcblx0XHRcdFx0Y29uc3Qga2V5X25hbWUgPSBwYXJzZUZpbGVOYW1lKG4pO1xuXHRcdFx0XHRjb25zdCBpbmRleF9uYW1lID0gb3AuaW5kZXggPyBwYXJzZUZpbGVOYW1lKG9wLmluZGV4KSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgYWJzcGF0aCA9IHBhcnNlQWJzcGF0aChvcC5wYXRoKTtcblxuXHRcdFx0XHRpZiAoaW5kZXhfbmFtZSkge1xuXHRcdFx0XHRcdGF3YWl0IHJlbW92ZSgnc2VjcmV0cycsIGFic3BhdGgsIGluZGV4X25hbWUsIHZlcnNpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgZ2VuZXJhdGVTZWNyZXQoXG5cdFx0XHRcdFx0J2FlczI1NicsXG5cdFx0XHRcdFx0bW5lbW9uaWMsXG5cdFx0XHRcdFx0YWJzcGF0aCxcblx0XHRcdFx0XHRrZXlfbmFtZSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmRleF9uYW1lLFxuXHRcdFx0XHRcdFx0cmVjb3ZlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdHNlZWQ6IHtcblx0XHRcdFx0XHRcdFx0cGFzc3dvcmQ6IG9wLnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZlcnNpb24sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhcblx0XHRcdFx0XHRjaGFsay5ncmVlbignU2VjcmV0IGtleSByZWNvdmVyZWQgYXQ6JyksXG5cdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmZpbGUsXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKGdlbmVyYXRlZC5maWxlcy5pbmRleCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdFx0Y2hhbGsuZ3JlZW4oJ1NlY3JldCBrZXkgcmVpbmRleGVkIGF0OicpLFxuXHRcdFx0XHRcdFx0Z2VuZXJhdGVkLmZpbGVzLmluZGV4LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFsay5ncmVlbignTW5lbW9uaWM6JyksIGdlbmVyYXRlZC5tbmVtb25pYywgJ1xcbicpO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XHRcdGNoYWxrLnllbGxvdyhcblx0XHRcdFx0XHRcdCdLZWVwIHRoZSBtbmVtb25pYyBzYWZlISBJdCBjYW4gYmUgdXNlZCBhZ2FpbiB0byByZWNvdmVyIHRoZSBrZXkgcGFpci4nLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yLm1lc3NhZ2UpKTtcblx0XHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUF5QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB6Qzs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRywyQkFBMkJBLENBQUNDLE9BQWdCLEVBQUU7RUFDN0RBLE9BQU8sQ0FDTEMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQzFCQyxXQUFXLENBQ1gseUZBQ0QsQ0FBQyxDQUNBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQ3RDQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsQ0FDcERBLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwrQkFBK0IsQ0FBQyxDQUNwRUEsTUFBTSxDQUNOLDJCQUEyQixFQUMzQixrREFBa0QsRUFDbEQsU0FDRCxDQUFDLENBQ0FBLE1BQU0sQ0FDTiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBQ3ZDLEtBQ0QsQ0FBQyxDQUNBQSxNQUFNLENBQ04seUJBQXlCLEVBQ3pCLHlEQUF5RCxFQUN6RCxHQUNELENBQUMsQ0FDQUEsTUFBTSxDQUNOLHFCQUFxQixFQUNyQiw2RkFDRCxDQUFDLENBQ0FDLE1BQU0sQ0FBQyxPQUFPQyxDQUFDLEVBQUVDLEVBQUUsS0FBSztJQUN4QixJQUFJO01BQ0gsTUFBTUMsT0FBTyxHQUFHQyxR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
|
|
@@ -18,6 +18,8 @@ exports.getCipherCTR = getCipherCTR;
|
|
|
18
18
|
exports.getCipherGCM = getCipherGCM;
|
|
19
19
|
var _nodeStream = require("node:stream");
|
|
20
20
|
var _nodeCrypto = _interopRequireDefault(require("node:crypto"));
|
|
21
|
+
var _sha = require("@noble/hashes/sha2.js");
|
|
22
|
+
var _hkdf = require("@noble/hashes/hkdf.js");
|
|
21
23
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
24
|
/**
|
|
23
25
|
* Derive an encryption key from a secret and keys.
|
|
@@ -453,13 +455,26 @@ function decryptCTRStream(secret, keys = [], aad) {
|
|
|
453
455
|
|
|
454
456
|
/**
|
|
455
457
|
* Generate a secret FROM a seed WITH SHA-256.
|
|
458
|
+
* Now it uses HKDF. To keep support to previous version use `version: 1`.
|
|
456
459
|
*
|
|
457
|
-
* @
|
|
460
|
+
* @warning Old secrets (<=0.7.x versions) should use the `version: 1` option.
|
|
461
|
+
* @param seed - The seed to generate the secret from.
|
|
462
|
+
* @param opts - The options to generate the secret.
|
|
463
|
+
* @param opts.length - The length of the secret.
|
|
464
|
+
* @param opts.salt - The salt to use.
|
|
465
|
+
* @param opts.version - The version of the secret. Set to `1` to generate a secret compatible with previous versions (<=0.7.x).
|
|
458
466
|
* @returns The secret.
|
|
459
467
|
* @since 0.1.0
|
|
460
468
|
* @author Caique Araujo <caique@piggly.com.br>
|
|
461
469
|
*/
|
|
462
|
-
function generateSecret(seed) {
|
|
463
|
-
|
|
470
|
+
function generateSecret(seed, opts) {
|
|
471
|
+
const length = opts?.length ?? 32;
|
|
472
|
+
const salt = opts?.salt ?? Buffer.alloc(0);
|
|
473
|
+
const ikm = seed ?? _nodeCrypto.default.randomBytes(32);
|
|
474
|
+
const version = opts?.version ?? 2;
|
|
475
|
+
if (version === 1) {
|
|
476
|
+
return _nodeCrypto.default.createHash('sha256').update(ikm).digest();
|
|
477
|
+
}
|
|
478
|
+
return Buffer.from((0, _hkdf.hkdf)(_sha.sha256, ikm, salt, Buffer.from('aes-256-secret/v1'), length));
|
|
464
479
|
}
|
|
465
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZVN0cmVhbSIsInJlcXVpcmUiLCJfbm9kZUNyeXB0byIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZXJpdmVHQ01FbmNyeXB0aW9uS2V5Iiwic2VjcmV0Iiwia2V5cyIsIkJ1ZmZlciIsImZyb20iLCJjcnlwdG8iLCJoa2RmU3luYyIsImFsbG9jIiwiY29uY2F0IiwiZ2V0Q2lwaGVyR0NNIiwia2V5IiwiaXYiLCJyYW5kb21CeXRlcyIsImNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiZW5jcnlwdEdDTSIsIm1lc3NhZ2UiLCJhYWQiLCJsZW5ndGgiLCJFcnJvciIsInNvbWUiLCJzZXRBQUQiLCJjdCIsInVwZGF0ZSIsImZpbmFsIiwidGFnIiwiZ2V0QXV0aFRhZyIsImRlY3J5cHRHQ00iLCJibG9iIiwic3ViYXJyYXkiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZW5jcnlwdEdDTVN0cmVhbSIsIml2UHVzaGVkIiwidHJhbnNmb3JtIiwiVHJhbnNmb3JtIiwiZmx1c2giLCJjYWxsYmFjayIsInB1c2giLCJjaHVuayIsImVuY29kaW5nIiwiZGVjcnlwdEdDTVN0cmVhbSIsInRhaWwiLCJkYXRhIiwidG90YWwiLCJmZWVkIiwiZGVyaXZlQ1RSRW5jcnlwdGlvbktleSIsImlrbSIsImtfZW5jIiwia19tYWMiLCJnZXRDaXBoZXJDVFIiLCJlbmNyeXB0Q1RSIiwiZW5jcnlwdGVkIiwiY3JlYXRlSG1hYyIsImRpZ2VzdCIsImRlY3J5cHRDVFIiLCJtYWMiLCJ0aW1pbmdTYWZlRXF1YWwiLCJlbmNyeXB0Q1RSU3RyZWFtIiwibGFzdCIsImRlY3J5cHRDVFJTdHJlYW0iLCJtYWNfYnVmZmVyIiwiY2FsYyIsImIiLCJfY2h1bmsiLCJjb21iaW5lZCIsImdlbmVyYXRlU2VjcmV0Iiwic2VlZCIsImNyZWF0ZUhhc2giXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9zZWNyZXRzL2FlczI1Ni50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1DYWxsYmFjaywgVHJhbnNmb3JtIH0gZnJvbSAnbm9kZTpzdHJlYW0nO1xuaW1wb3J0IGNyeXB0byBmcm9tICdub2RlOmNyeXB0byc7XG5cbi8qKlxuICogRGVyaXZlIGFuIGVuY3J5cHRpb24ga2V5IGZyb20gYSBzZWNyZXQgYW5kIGtleXMuXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVyaXZlIHRoZSBrZXkgZnJvbS5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVyaXZlIHRoZSBrZXkgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIGtleS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0OiBCdWZmZXIsIGtleXM6IEJ1ZmZlcltdID0gW10pOiBCdWZmZXIge1xuXHRyZXR1cm4gQnVmZmVyLmZyb20oXG5cdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0J3NoYTI1NicsXG5cdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRCdWZmZXIuY29uY2F0KFtzZWNyZXQsIC4uLmtleXNdKSxcblx0XHRcdEJ1ZmZlci5mcm9tKCdhZXMtMjU2LWdjbS9lbmMvdjEnKSxcblx0XHRcdDMyLFxuXHRcdCksXG5cdCk7XG59XG5cbi8qKlxuICogUHJlcGFyZSBlbmNyeXB0aW9uLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBrZXlzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNlY3JldCBpcyBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHJldHVybnMgVGhlIGNpcGhlciwgSVYsIGFuZCBzZWNyZXQuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKiBAcmV0dXJuc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcGhlckdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcbik6IHsgY2lwaGVyOiBjcnlwdG8uQ2lwaGVyR0NNOyBpdjogQnVmZmVyIH0ge1xuXHRjb25zdCBrZXkgPSBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDEyKTsgLy8gQG5vdGUgOTYtYml0IElWIHJlY29tbWVuZGVkXG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcblxuXHRyZXR1cm4geyBjaXBoZXIsIGl2IH07XG59XG5cbi8qKlxuICogRW5jcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdEdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdG1lc3NhZ2U6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IHsgY2lwaGVyLCBpdiB9ID0gZ2V0Q2lwaGVyR0NNKHNlY3JldCwga2V5cyk7XG5cblx0aWYgKGFhZCkge1xuXHRcdGNpcGhlci5zZXRBQUQoYWFkKTtcblx0fVxuXG5cdGNvbnN0IGN0ID0gQnVmZmVyLmNvbmNhdChbY2lwaGVyLnVwZGF0ZShtZXNzYWdlKSwgY2lwaGVyLmZpbmFsKCldKTtcblx0Y29uc3QgdGFnID0gY2lwaGVyLmdldEF1dGhUYWcoKTtcblxuXHRyZXR1cm4gQnVmZmVyLmNvbmNhdChbaXYsIGN0LCB0YWddKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUdDTS5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBkZWNyeXB0LlxuICogQHBhcmFtIGJsb2IgLSBUaGUgbWVzc2FnZSB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZGVjcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0R0NNKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0YmxvYjogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IEJ1ZmZlciB7XG5cdGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcblx0XHR0aHJvdyBFcnJvcignU2VjcmV0IG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5zb21lKGtleSA9PiBrZXkubGVuZ3RoIDwgMzIpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0tleXMgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGJsb2IubGVuZ3RoIDwgMTIgKyAxNikge1xuXHRcdHRocm93IEVycm9yKCdCbG9iIG11c3QgYmUgYXQgbGVhc3QgMTIrMTYgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IGtleSA9IGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblx0Y29uc3QgaXYgPSBibG9iLnN1YmFycmF5KDAsIDEyKTtcblx0Y29uc3QgdGFnID0gYmxvYi5zdWJhcnJheShibG9iLmxlbmd0aCAtIDE2KTtcblx0Y29uc3QgY3QgPSBibG9iLnN1YmFycmF5KDEyLCBibG9iLmxlbmd0aCAtIDE2KTtcblxuXHRjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgaXYpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRkZWNpcGhlci5zZXRBQUQoYWFkKTtcblx0fVxuXG5cdGRlY2lwaGVyLnNldEF1dGhUYWcodGFnKTtcblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShjdCksIGRlY2lwaGVyLmZpbmFsKCldKTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUdDTS5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0R0NNU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGNpcGhlciwgaXYgfSA9IGdldENpcGhlckdDTShzZWNyZXQsIGtleXMpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRsZXQgaXZQdXNoZWQgPSBmYWxzZTtcblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wdXNoKGNpcGhlci5maW5hbCgpKTtcblx0XHRcdHRoaXMucHVzaChjaXBoZXIuZ2V0QXV0aFRhZygpKTtcblx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oXG5cdFx0XHR0aGlzOiBUcmFuc2Zvcm0sXG5cdFx0XHRjaHVuazogYW55LFxuXHRcdFx0ZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nLFxuXHRcdFx0Y2FsbGJhY2s6IFRyYW5zZm9ybUNhbGxiYWNrLFxuXHRcdCk6IHZvaWQge1xuXHRcdFx0aWYgKCFpdlB1c2hlZCkge1xuXHRcdFx0XHR0aGlzLnB1c2goaXYpO1xuXHRcdFx0XHRpdlB1c2hlZCA9IHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucHVzaChjaXBoZXIudXBkYXRlKGNodW5rKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdEdDTVN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3Qga2V5ID0gZGVyaXZlR0NNRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXG5cdGxldCBpdjogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG5cdGxldCBkZWNpcGhlcjogY3J5cHRvLkRlY2lwaGVyR0NNIHwgbnVsbCA9IG51bGw7XG5cdGxldCB0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHRpZiAoIWRlY2lwaGVyIHx8ICFpdiB8fCB0YWlsLmxlbmd0aCAhPT0gMTYpIHtcblx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignTWFsZm9ybWVkIGNpcGhlcnRleHQgKG1pc3NpbmcgdGFnKS4nKSk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRlY2lwaGVyLnNldEF1dGhUYWcodGFpbCk7XG5cdFx0XHRcdHRoaXMucHVzaChkZWNpcGhlci5maW5hbCgpKTtcblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0bGV0IGRhdGEgPSBjaHVuaztcblxuXHRcdFx0aWYgKCFpdikge1xuXHRcdFx0XHRpZiAodGFpbC5sZW5ndGgpIHtcblx0XHRcdFx0XHRkYXRhID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgY2h1bmtdKTtcblx0XHRcdFx0XHR0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGRhdGEubGVuZ3RoIDwgMTIpIHtcblx0XHRcdFx0XHR0YWlsID0gZGF0YTtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGl2ID0gZGF0YS5zdWJhcnJheSgwLCAxMik7XG5cdFx0XHRcdGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoXG5cdFx0XHRcdFx0J2Flcy0yNTYtZ2NtJyxcblx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0aXYsXG5cdFx0XHRcdCkgYXMgY3J5cHRvLkRlY2lwaGVyR0NNO1xuXG5cdFx0XHRcdGlmIChhYWQpIHtcblx0XHRcdFx0XHRkZWNpcGhlci5zZXRBQUQoYWFkKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRhdGEgPSBkYXRhLnN1YmFycmF5KDEyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdG90YWwgPSBCdWZmZXIuY29uY2F0KFt0YWlsLCBkYXRhXSk7XG5cblx0XHRcdGlmICh0b3RhbC5sZW5ndGggPD0gMTYpIHtcblx0XHRcdFx0dGFpbCA9IHRvdGFsO1xuXHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZmVlZCA9IHRvdGFsLnN1YmFycmF5KDAsIHRvdGFsLmxlbmd0aCAtIDE2KTtcblx0XHRcdHRhaWwgPSB0b3RhbC5zdWJhcnJheSh0b3RhbC5sZW5ndGggLSAxNik7XG5cblx0XHRcdHRoaXMucHVzaChkZWNpcGhlciEudXBkYXRlKGZlZWQpKTtcblx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIHRyYW5zZm9ybTtcbn1cblxuLyoqXG4gKiBEZXJpdmUgYW4gZW5jcnlwdGlvbiBrZXkgZnJvbSBhIHNlY3JldCBhbmQga2V5cy5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0XG4gKiBAcGFyYW0ga2V5c1xuICogQHJldHVybnMgVGhlIGRlcml2ZWQga2V5LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEJ1ZmZlcltdID0gW10sXG4pOiB7IGtfZW5jOiBCdWZmZXI7IGtfbWFjOiBCdWZmZXIgfSB7XG5cdGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcblx0XHR0aHJvdyBFcnJvcignU2VjcmV0IG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5zb21lKGtleSA9PiBrZXkubGVuZ3RoIDwgMzIpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0tleXMgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0Y29uc3QgaWttID0gQnVmZmVyLmNvbmNhdChbc2VjcmV0LCAuLi5rZXlzXSk7XG5cblx0cmV0dXJuIHtcblx0XHRrX2VuYzogQnVmZmVyLmZyb20oXG5cdFx0XHRjcnlwdG8uaGtkZlN5bmMoXG5cdFx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRcdGlrbSxcblx0XHRcdFx0QnVmZmVyLmZyb20oJ2Flcy0yNTYtY3RyL2VuYy92MScpLFxuXHRcdFx0XHQzMixcblx0XHRcdCksXG5cdFx0KSxcblx0XHRrX21hYzogQnVmZmVyLmZyb20oXG5cdFx0XHRjcnlwdG8uaGtkZlN5bmMoXG5cdFx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRcdGlrbSxcblx0XHRcdFx0QnVmZmVyLmZyb20oJ2htYWMtc2hhMjU2L21hYy92MScpLFxuXHRcdFx0XHQzMixcblx0XHRcdCksXG5cdFx0KSxcblx0fTtcbn1cblxuLyoqXG4gKiBQcmVwYXJlIGVuY3J5cHRpb24uXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGtleXNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgc2VjcmV0IGlzIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHRocm93cyB7RXJyb3J9IElmIGFueSBvZiB0aGUga2V5cyBhcmUgbGVzcyB0aGFuIDMyIGJ5dGVzIGxvbmcuXG4gKiBAcmV0dXJucyBUaGUgY2lwaGVyLCBJViwgYW5kIHNlY3JldC5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqIEByZXR1cm5zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lwaGVyQ1RSKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuKTogeyBjaXBoZXI6IGNyeXB0by5DaXBoZXJpdjsgaXY6IEJ1ZmZlcjsga19lbmM6IEJ1ZmZlcjsga19tYWM6IEJ1ZmZlciB9IHtcblx0Y29uc3QgeyBrX2VuYywga19tYWMgfSA9IGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblxuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXG5cdHJldHVybiB7IGNpcGhlciwgaXYsIGtfZW5jLCBrX21hYyB9O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRDVFIoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRtZXNzYWdlOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0Y29uc3QgeyBjaXBoZXIsIGl2LCBrX21hYyB9ID0gZ2V0Q2lwaGVyQ1RSKHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGVuY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUobWVzc2FnZSksIGNpcGhlci5maW5hbCgpXSk7XG5cblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW1xuXHRcdGl2LFxuXHRcdGVuY3J5cHRlZCxcblx0XHRjcnlwdG9cblx0XHRcdC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYylcblx0XHRcdC51cGRhdGUoaXYpXG5cdFx0XHQudXBkYXRlKGFhZCA/PyBCdWZmZXIuYWxsb2MoMCkpXG5cdFx0XHQudXBkYXRlKGVuY3J5cHRlZClcblx0XHRcdC5kaWdlc3QoKSxcblx0XSk7XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1DVFIuXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGJsb2IgLSBUaGUgbWVzc2FnZSB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdENUUihcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGJsb2I6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cblx0Y29uc3QgaXYgPSBibG9iLnN1YmFycmF5KDAsIDE2KTtcblx0Y29uc3QgdGFnID0gYmxvYi5zdWJhcnJheShibG9iLmxlbmd0aCAtIDMyKTtcblx0Y29uc3QgZW5jcnlwdGVkID0gYmxvYi5zdWJhcnJheSgxNiwgYmxvYi5sZW5ndGggLSAzMik7XG5cdGNvbnN0IG1hYyA9IGNyeXB0b1xuXHRcdC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYylcblx0XHQudXBkYXRlKGl2KVxuXHRcdC51cGRhdGUoYWFkID8/IEJ1ZmZlci5hbGxvYygwKSlcblx0XHQudXBkYXRlKGVuY3J5cHRlZClcblx0XHQuZGlnZXN0KCk7XG5cblx0aWYgKG1hYy5sZW5ndGggIT09IHRhZy5sZW5ndGggfHwgIWNyeXB0by50aW1pbmdTYWZlRXF1YWwobWFjLCB0YWcpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0ludmFsaWQgTUFDJyk7XG5cdH1cblxuXHRjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkKSwgZGVjaXBoZXIuZmluYWwoKV0pO1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRDVFJTdHJlYW0oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IFRyYW5zZm9ybSB7XG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KTtcblx0Y29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdGNvbnN0IG1hYyA9IGNyeXB0by5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYyk7XG5cblx0bGV0IGl2UHVzaGVkID0gZmFsc2U7XG5cblx0bWFjLnVwZGF0ZShpdik7XG5cblx0aWYgKGFhZCkge1xuXHRcdG1hYy51cGRhdGUoYWFkKTtcblx0fVxuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBsYXN0ID0gY2lwaGVyLmZpbmFsKCk7XG5cblx0XHRcdFx0aWYgKGxhc3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGxhc3QpO1xuXHRcdFx0XHRcdG1hYy51cGRhdGUobGFzdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnB1c2gobWFjLmRpZ2VzdCgpKTsgLy8gdGFnKDMyKVxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHRyYW5zZm9ybShcblx0XHRcdHRoaXM6IFRyYW5zZm9ybSxcblx0XHRcdGNodW5rOiBhbnksXG5cdFx0XHRlbmNvZGluZzogQnVmZmVyRW5jb2RpbmcsXG5cdFx0XHRjYWxsYmFjazogVHJhbnNmb3JtQ2FsbGJhY2ssXG5cdFx0KTogdm9pZCB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWl2UHVzaGVkKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGl2KTtcblx0XHRcdFx0XHRpdlB1c2hlZCA9IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjdCA9IGNpcGhlci51cGRhdGUoY2h1bmspO1xuXG5cdFx0XHRcdGlmIChjdC5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLnB1c2goY3QpO1xuXHRcdFx0XHRcdG1hYy51cGRhdGUoY3QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIHRyYW5zZm9ybTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZGVjcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q1RSU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG8uY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpO1xuXG5cdGxldCBpdjogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG5cdGxldCBkZWNpcGhlcjogY3J5cHRvLkRlY2lwaGVyaXYgfCBudWxsID0gbnVsbDtcblxuXHRsZXQgdGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblx0Y29uc3QgbWFjX2J1ZmZlcjogQnVmZmVyW10gPSBbXTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0bWFjLnVwZGF0ZShhYWQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG5cdFx0Zmx1c2goY2FsbGJhY2spIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghaXYgfHwgIWRlY2lwaGVyIHx8IHRhaWwubGVuZ3RoICE9PSAzMikge1xuXHRcdFx0XHRcdHJldHVybiBjYWxsYmFjayhcblx0XHRcdFx0XHRcdG5ldyBFcnJvcignTWFsZm9ybWVkIGNpcGhlcnRleHQ6IG1pc3NpbmcgSVYgb3IgdGFnLicpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjYWxjID0gbWFjLmRpZ2VzdCgpO1xuXG5cdFx0XHRcdGlmIChjYWxjLmxlbmd0aCAhPT0gdGFpbC5sZW5ndGggfHwgIWNyeXB0by50aW1pbmdTYWZlRXF1YWwoY2FsYywgdGFpbCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdJbnZhbGlkIE1BQycpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG1hY19idWZmZXIucHVzaChkZWNpcGhlci5maW5hbCgpKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IGIgb2YgbWFjX2J1ZmZlcikge1xuXHRcdFx0XHRcdHRoaXMucHVzaChiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKF9jaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsZXQgY2h1bmsgPSBfY2h1bms7XG5cblx0XHRcdFx0aWYgKCFpdikge1xuXHRcdFx0XHRcdGNvbnN0IGNvbWJpbmVkID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgY2h1bmtdKTtcblx0XHRcdFx0XHRpZiAoY29tYmluZWQubGVuZ3RoIDwgMTYpIHtcblx0XHRcdFx0XHRcdHRhaWwgPSBjb21iaW5lZDtcblx0XHRcdFx0XHRcdHJldHVybiBjYWxsYmFjaygpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGl2ID0gY29tYmluZWQuc3ViYXJyYXkoMCwgMTYpO1xuXHRcdFx0XHRcdGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtY3RyJywga19lbmMsIGl2KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGl2KTtcblxuXHRcdFx0XHRcdGNodW5rID0gY29tYmluZWQuc3ViYXJyYXkoMTYpO1xuXHRcdFx0XHRcdHRhaWwgPSBCdWZmZXIuYWxsb2MoMCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB0b3RhbCA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cblx0XHRcdFx0aWYgKHRvdGFsLmxlbmd0aCA8PSAzMikge1xuXHRcdFx0XHRcdHRhaWwgPSB0b3RhbDtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGZlZWQgPSB0b3RhbC5zdWJhcnJheSgwLCB0b3RhbC5sZW5ndGggLSAzMik7XG5cdFx0XHRcdHRhaWwgPSB0b3RhbC5zdWJhcnJheSh0b3RhbC5sZW5ndGggLSAzMik7XG5cblx0XHRcdFx0bWFjLnVwZGF0ZShmZWVkKTtcblx0XHRcdFx0bWFjX2J1ZmZlci5wdXNoKGRlY2lwaGVyIS51cGRhdGUoZmVlZCkpO1xuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgRlJPTSBhIHNlZWQgV0lUSCBTSEEtMjU2LlxuICpcbiAqIEBwYXJhbSBzZWVkXG4gKiBAcmV0dXJucyBUaGUgc2VjcmV0LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXQoc2VlZD86IEJ1ZmZlcik6IEJ1ZmZlciB7XG5cdHJldHVybiBjcnlwdG9cblx0XHQuY3JlYXRlSGFzaCgnc2hhMjU2Jylcblx0XHQudXBkYXRlKHNlZWQgPz8gY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKSlcblx0XHQuZGlnZXN0KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFpQyxTQUFBRSx1QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxzQkFBc0JBLENBQUNDLE1BQWMsRUFBRUMsSUFBYyxHQUFHLEVBQUUsRUFBVTtFQUNuRixPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FDakJDLG1CQUFNLENBQUNDLFFBQVEsQ0FDZCxRQUFRLEVBQ1JILE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNmSixNQUFNLENBQUNLLE1BQU0sQ0FBQyxDQUFDUCxNQUFNLEVBQUUsR0FBR0MsSUFBSSxDQUFDLENBQUMsRUFDaENDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQ2pDLEVBQ0QsQ0FDRCxDQUFDO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxZQUFZQSxDQUMzQlIsTUFBYyxFQUNkQyxJQUFtQixHQUFHLEVBQUUsRUFDbUI7RUFDM0MsTUFBTVEsR0FBRyxHQUFHVixzQkFBc0IsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUM7RUFDaEQsTUFBTVMsRUFBRSxHQUFHTixtQkFBTSxDQUFDTyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNuQyxNQUFNQyxNQUFNLEdBQUdSLG1CQUFNLENBQUNTLGNBQWMsQ0FBQyxhQUFhLEVBQUVKLEdBQUcs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
|
|
480
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZVN0cmVhbSIsInJlcXVpcmUiLCJfbm9kZUNyeXB0byIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc2hhIiwiX2hrZGYiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZXJpdmVHQ01FbmNyeXB0aW9uS2V5Iiwic2VjcmV0Iiwia2V5cyIsIkJ1ZmZlciIsImZyb20iLCJjcnlwdG8iLCJoa2RmU3luYyIsImFsbG9jIiwiY29uY2F0IiwiZ2V0Q2lwaGVyR0NNIiwia2V5IiwiaXYiLCJyYW5kb21CeXRlcyIsImNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiZW5jcnlwdEdDTSIsIm1lc3NhZ2UiLCJhYWQiLCJsZW5ndGgiLCJFcnJvciIsInNvbWUiLCJzZXRBQUQiLCJjdCIsInVwZGF0ZSIsImZpbmFsIiwidGFnIiwiZ2V0QXV0aFRhZyIsImRlY3J5cHRHQ00iLCJibG9iIiwic3ViYXJyYXkiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZW5jcnlwdEdDTVN0cmVhbSIsIml2UHVzaGVkIiwidHJhbnNmb3JtIiwiVHJhbnNmb3JtIiwiZmx1c2giLCJjYWxsYmFjayIsInB1c2giLCJjaHVuayIsImVuY29kaW5nIiwiZGVjcnlwdEdDTVN0cmVhbSIsInRhaWwiLCJkYXRhIiwidG90YWwiLCJmZWVkIiwiZGVyaXZlQ1RSRW5jcnlwdGlvbktleSIsImlrbSIsImtfZW5jIiwia19tYWMiLCJnZXRDaXBoZXJDVFIiLCJlbmNyeXB0Q1RSIiwiZW5jcnlwdGVkIiwiY3JlYXRlSG1hYyIsImRpZ2VzdCIsImRlY3J5cHRDVFIiLCJtYWMiLCJ0aW1pbmdTYWZlRXF1YWwiLCJlbmNyeXB0Q1RSU3RyZWFtIiwibGFzdCIsImRlY3J5cHRDVFJTdHJlYW0iLCJtYWNfYnVmZmVyIiwiY2FsYyIsImIiLCJfY2h1bmsiLCJjb21iaW5lZCIsImdlbmVyYXRlU2VjcmV0Iiwic2VlZCIsIm9wdHMiLCJzYWx0IiwidmVyc2lvbiIsImNyZWF0ZUhhc2giLCJoa2RmIiwic2hhMjU2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvc2VjcmV0cy9hZXMyNTYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtQ2FsbGJhY2ssIFRyYW5zZm9ybSB9IGZyb20gJ25vZGU6c3RyZWFtJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tICdAbm9ibGUvaGFzaGVzL3NoYTIuanMnO1xuaW1wb3J0IHsgaGtkZiB9IGZyb20gJ0Bub2JsZS9oYXNoZXMvaGtkZi5qcyc7XG5cbi8qKlxuICogRGVyaXZlIGFuIGVuY3J5cHRpb24ga2V5IGZyb20gYSBzZWNyZXQgYW5kIGtleXMuXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVyaXZlIHRoZSBrZXkgZnJvbS5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVyaXZlIHRoZSBrZXkgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIGtleS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0OiBCdWZmZXIsIGtleXM6IEJ1ZmZlcltdID0gW10pOiBCdWZmZXIge1xuXHRyZXR1cm4gQnVmZmVyLmZyb20oXG5cdFx0Y3J5cHRvLmhrZGZTeW5jKFxuXHRcdFx0J3NoYTI1NicsXG5cdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRCdWZmZXIuY29uY2F0KFtzZWNyZXQsIC4uLmtleXNdKSxcblx0XHRcdEJ1ZmZlci5mcm9tKCdhZXMtMjU2LWdjbS9lbmMvdjEnKSxcblx0XHRcdDMyLFxuXHRcdCksXG5cdCk7XG59XG5cbi8qKlxuICogUHJlcGFyZSBlbmNyeXB0aW9uLlxuICpcbiAqIEBwYXJhbSBzZWNyZXRcbiAqIEBwYXJhbSBrZXlzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNlY3JldCBpcyBsZXNzIHRoYW4gMzIgYnl0ZXMgbG9uZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHJldHVybnMgVGhlIGNpcGhlciwgSVYsIGFuZCBzZWNyZXQuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKiBAcmV0dXJuc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcGhlckdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcbik6IHsgY2lwaGVyOiBjcnlwdG8uQ2lwaGVyR0NNOyBpdjogQnVmZmVyIH0ge1xuXHRjb25zdCBrZXkgPSBkZXJpdmVHQ01FbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDEyKTsgLy8gQG5vdGUgOTYtYml0IElWIHJlY29tbWVuZGVkXG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcblxuXHRyZXR1cm4geyBjaXBoZXIsIGl2IH07XG59XG5cbi8qKlxuICogRW5jcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZW5jcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdEdDTShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdG1lc3NhZ2U6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IHsgY2lwaGVyLCBpdiB9ID0gZ2V0Q2lwaGVyR0NNKHNlY3JldCwga2V5cyk7XG5cblx0aWYgKGFhZCkge1xuXHRcdGNpcGhlci5zZXRBQUQoYWFkKTtcblx0fVxuXG5cdGNvbnN0IGN0ID0gQnVmZmVyLmNvbmNhdChbY2lwaGVyLnVwZGF0ZShtZXNzYWdlKSwgY2lwaGVyLmZpbmFsKCldKTtcblx0Y29uc3QgdGFnID0gY2lwaGVyLmdldEF1dGhUYWcoKTtcblxuXHRyZXR1cm4gQnVmZmVyLmNvbmNhdChbaXYsIGN0LCB0YWddKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUdDTS5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBkZWNyeXB0LlxuICogQHBhcmFtIGJsb2IgLSBUaGUgbWVzc2FnZSB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZGVjcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0R0NNKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0YmxvYjogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IEJ1ZmZlciB7XG5cdGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcblx0XHR0aHJvdyBFcnJvcignU2VjcmV0IG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5zb21lKGtleSA9PiBrZXkubGVuZ3RoIDwgMzIpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0tleXMgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0aWYgKGJsb2IubGVuZ3RoIDwgMTIgKyAxNikge1xuXHRcdHRocm93IEVycm9yKCdCbG9iIG11c3QgYmUgYXQgbGVhc3QgMTIrMTYgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IGtleSA9IGRlcml2ZUdDTUVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblx0Y29uc3QgaXYgPSBibG9iLnN1YmFycmF5KDAsIDEyKTtcblx0Y29uc3QgdGFnID0gYmxvYi5zdWJhcnJheShibG9iLmxlbmd0aCAtIDE2KTtcblx0Y29uc3QgY3QgPSBibG9iLnN1YmFycmF5KDEyLCBibG9iLmxlbmd0aCAtIDE2KTtcblxuXHRjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgaXYpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRkZWNpcGhlci5zZXRBQUQoYWFkKTtcblx0fVxuXG5cdGRlY2lwaGVyLnNldEF1dGhUYWcodGFnKTtcblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShjdCksIGRlY2lwaGVyLmZpbmFsKCldKTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUdDTS5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBlbmNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBlbmNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0R0NNU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGNpcGhlciwgaXYgfSA9IGdldENpcGhlckdDTShzZWNyZXQsIGtleXMpO1xuXG5cdGlmIChhYWQpIHtcblx0XHRjaXBoZXIuc2V0QUFEKGFhZCk7XG5cdH1cblxuXHRsZXQgaXZQdXNoZWQgPSBmYWxzZTtcblxuXHRjb25zdCB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKHtcblx0XHRmbHVzaChjYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wdXNoKGNpcGhlci5maW5hbCgpKTtcblx0XHRcdHRoaXMucHVzaChjaXBoZXIuZ2V0QXV0aFRhZygpKTtcblx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oXG5cdFx0XHR0aGlzOiBUcmFuc2Zvcm0sXG5cdFx0XHRjaHVuazogYW55LFxuXHRcdFx0ZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nLFxuXHRcdFx0Y2FsbGJhY2s6IFRyYW5zZm9ybUNhbGxiYWNrLFxuXHRcdCk6IHZvaWQge1xuXHRcdFx0aWYgKCFpdlB1c2hlZCkge1xuXHRcdFx0XHR0aGlzLnB1c2goaXYpO1xuXHRcdFx0XHRpdlB1c2hlZCA9IHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucHVzaChjaXBoZXIudXBkYXRlKGNodW5rKSk7XG5cdFx0XHRjYWxsYmFjaygpO1xuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1HQ00uXG4gKlxuICogQHBhcmFtIHNlY3JldCAtIFRoZSBzZWNyZXQgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGtleXMgdG8gZGVjcnlwdC5cbiAqIEBwYXJhbSBhYWQgLSBUaGUgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdEdDTVN0cmVhbShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogVHJhbnNmb3JtIHtcblx0Y29uc3Qga2V5ID0gZGVyaXZlR0NNRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXG5cdGxldCBpdjogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG5cdGxldCBkZWNpcGhlcjogY3J5cHRvLkRlY2lwaGVyR0NNIHwgbnVsbCA9IG51bGw7XG5cdGxldCB0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHRpZiAoIWRlY2lwaGVyIHx8ICFpdiB8fCB0YWlsLmxlbmd0aCAhPT0gMTYpIHtcblx0XHRcdFx0cmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignTWFsZm9ybWVkIGNpcGhlcnRleHQgKG1pc3NpbmcgdGFnKS4nKSk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRlY2lwaGVyLnNldEF1dGhUYWcodGFpbCk7XG5cdFx0XHRcdHRoaXMucHVzaChkZWNpcGhlci5maW5hbCgpKTtcblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0cmFuc2Zvcm0oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0bGV0IGRhdGEgPSBjaHVuaztcblxuXHRcdFx0aWYgKCFpdikge1xuXHRcdFx0XHRpZiAodGFpbC5sZW5ndGgpIHtcblx0XHRcdFx0XHRkYXRhID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgY2h1bmtdKTtcblx0XHRcdFx0XHR0YWlsID0gQnVmZmVyLmFsbG9jKDApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGRhdGEubGVuZ3RoIDwgMTIpIHtcblx0XHRcdFx0XHR0YWlsID0gZGF0YTtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGl2ID0gZGF0YS5zdWJhcnJheSgwLCAxMik7XG5cdFx0XHRcdGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoXG5cdFx0XHRcdFx0J2Flcy0yNTYtZ2NtJyxcblx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0aXYsXG5cdFx0XHRcdCkgYXMgY3J5cHRvLkRlY2lwaGVyR0NNO1xuXG5cdFx0XHRcdGlmIChhYWQpIHtcblx0XHRcdFx0XHRkZWNpcGhlci5zZXRBQUQoYWFkKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRhdGEgPSBkYXRhLnN1YmFycmF5KDEyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdG90YWwgPSBCdWZmZXIuY29uY2F0KFt0YWlsLCBkYXRhXSk7XG5cblx0XHRcdGlmICh0b3RhbC5sZW5ndGggPD0gMTYpIHtcblx0XHRcdFx0dGFpbCA9IHRvdGFsO1xuXHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZmVlZCA9IHRvdGFsLnN1YmFycmF5KDAsIHRvdGFsLmxlbmd0aCAtIDE2KTtcblx0XHRcdHRhaWwgPSB0b3RhbC5zdWJhcnJheSh0b3RhbC5sZW5ndGggLSAxNik7XG5cblx0XHRcdHRoaXMucHVzaChkZWNpcGhlciEudXBkYXRlKGZlZWQpKTtcblx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIHRyYW5zZm9ybTtcbn1cblxuLyoqXG4gKiBEZXJpdmUgYW4gZW5jcnlwdGlvbiBrZXkgZnJvbSBhIHNlY3JldCBhbmQga2V5cy5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0XG4gKiBAcGFyYW0ga2V5c1xuICogQHJldHVybnMgVGhlIGRlcml2ZWQga2V5LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGtleXM6IEJ1ZmZlcltdID0gW10sXG4pOiB7IGtfZW5jOiBCdWZmZXI7IGtfbWFjOiBCdWZmZXIgfSB7XG5cdGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcblx0XHR0aHJvdyBFcnJvcignU2VjcmV0IG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5zb21lKGtleSA9PiBrZXkubGVuZ3RoIDwgMzIpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0tleXMgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcyBsb25nLicpO1xuXHR9XG5cblx0Y29uc3QgaWttID0gQnVmZmVyLmNvbmNhdChbc2VjcmV0LCAuLi5rZXlzXSk7XG5cblx0cmV0dXJuIHtcblx0XHRrX2VuYzogQnVmZmVyLmZyb20oXG5cdFx0XHRjcnlwdG8uaGtkZlN5bmMoXG5cdFx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRcdGlrbSxcblx0XHRcdFx0QnVmZmVyLmZyb20oJ2Flcy0yNTYtY3RyL2VuYy92MScpLFxuXHRcdFx0XHQzMixcblx0XHRcdCksXG5cdFx0KSxcblx0XHRrX21hYzogQnVmZmVyLmZyb20oXG5cdFx0XHRjcnlwdG8uaGtkZlN5bmMoXG5cdFx0XHRcdCdzaGEyNTYnLFxuXHRcdFx0XHRCdWZmZXIuYWxsb2MoMCksXG5cdFx0XHRcdGlrbSxcblx0XHRcdFx0QnVmZmVyLmZyb20oJ2htYWMtc2hhMjU2L21hYy92MScpLFxuXHRcdFx0XHQzMixcblx0XHRcdCksXG5cdFx0KSxcblx0fTtcbn1cblxuLyoqXG4gKiBQcmVwYXJlIGVuY3J5cHRpb24uXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGtleXNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgc2VjcmV0IGlzIGxlc3MgdGhhbiAzMiBieXRlcyBsb25nLlxuICogQHRocm93cyB7RXJyb3J9IElmIGFueSBvZiB0aGUga2V5cyBhcmUgbGVzcyB0aGFuIDMyIGJ5dGVzIGxvbmcuXG4gKiBAcmV0dXJucyBUaGUgY2lwaGVyLCBJViwgYW5kIHNlY3JldC5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqIEByZXR1cm5zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lwaGVyQ1RSKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuKTogeyBjaXBoZXI6IGNyeXB0by5DaXBoZXJpdjsgaXY6IEJ1ZmZlcjsga19lbmM6IEJ1ZmZlcjsga19tYWM6IEJ1ZmZlciB9IHtcblx0Y29uc3QgeyBrX2VuYywga19tYWMgfSA9IGRlcml2ZUNUUkVuY3J5cHRpb25LZXkoc2VjcmV0LCBrZXlzKTtcblxuXHRjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG5cdGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jdHInLCBrX2VuYywgaXYpO1xuXG5cdHJldHVybiB7IGNpcGhlciwgaXYsIGtfZW5jLCBrX21hYyB9O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRDVFIoXG5cdHNlY3JldDogQnVmZmVyLFxuXHRtZXNzYWdlOiBCdWZmZXIsXG5cdGtleXM6IEFycmF5PEJ1ZmZlcj4gPSBbXSxcblx0YWFkPzogQnVmZmVyLFxuKTogQnVmZmVyIHtcblx0Y29uc3QgeyBjaXBoZXIsIGl2LCBrX21hYyB9ID0gZ2V0Q2lwaGVyQ1RSKHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGVuY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUobWVzc2FnZSksIGNpcGhlci5maW5hbCgpXSk7XG5cblx0cmV0dXJuIEJ1ZmZlci5jb25jYXQoW1xuXHRcdGl2LFxuXHRcdGVuY3J5cHRlZCxcblx0XHRjcnlwdG9cblx0XHRcdC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYylcblx0XHRcdC51cGRhdGUoaXYpXG5cdFx0XHQudXBkYXRlKGFhZCA/PyBCdWZmZXIuYWxsb2MoMCkpXG5cdFx0XHQudXBkYXRlKGVuY3J5cHRlZClcblx0XHRcdC5kaWdlc3QoKSxcblx0XSk7XG59XG5cbi8qKlxuICogRGVjcnlwdCBhIG1lc3NhZ2UgdXNpbmcgQUVTLTI1Ni1DVFIuXG4gKlxuICogQHBhcmFtIHNlY3JldFxuICogQHBhcmFtIGJsb2IgLSBUaGUgbWVzc2FnZSB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBtZXNzYWdlLlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdENUUihcblx0c2VjcmV0OiBCdWZmZXIsXG5cdGJsb2I6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBCdWZmZXIge1xuXHRpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ1NlY3JldCBtdXN0IGJlIGF0IGxlYXN0IDMyIGJ5dGVzIGxvbmcuJyk7XG5cdH1cblxuXHRpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMuc29tZShrZXkgPT4ga2V5Lmxlbmd0aCA8IDMyKSkge1xuXHRcdHRocm93IEVycm9yKCdLZXlzIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMgbG9uZy4nKTtcblx0fVxuXG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cblx0Y29uc3QgaXYgPSBibG9iLnN1YmFycmF5KDAsIDE2KTtcblx0Y29uc3QgdGFnID0gYmxvYi5zdWJhcnJheShibG9iLmxlbmd0aCAtIDMyKTtcblx0Y29uc3QgZW5jcnlwdGVkID0gYmxvYi5zdWJhcnJheSgxNiwgYmxvYi5sZW5ndGggLSAzMik7XG5cdGNvbnN0IG1hYyA9IGNyeXB0b1xuXHRcdC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYylcblx0XHQudXBkYXRlKGl2KVxuXHRcdC51cGRhdGUoYWFkID8/IEJ1ZmZlci5hbGxvYygwKSlcblx0XHQudXBkYXRlKGVuY3J5cHRlZClcblx0XHQuZGlnZXN0KCk7XG5cblx0aWYgKG1hYy5sZW5ndGggIT09IHRhZy5sZW5ndGggfHwgIWNyeXB0by50aW1pbmdTYWZlRXF1YWwobWFjLCB0YWcpKSB7XG5cdFx0dGhyb3cgRXJyb3IoJ0ludmFsaWQgTUFDJyk7XG5cdH1cblxuXHRjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdHJldHVybiBCdWZmZXIuY29uY2F0KFtkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkKSwgZGVjaXBoZXIuZmluYWwoKV0pO1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBtZXNzYWdlIHVzaW5nIEFFUy0yNTYtQ1RSLlxuICpcbiAqIEBwYXJhbSBzZWNyZXQgLSBUaGUgc2VjcmV0IHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBrZXlzIHRvIGVuY3J5cHQuXG4gKiBAcGFyYW0gYWFkIC0gVGhlIGFkZGl0aW9uYWwgYXV0aGVudGljYXRpb24gZGF0YS5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZS5cbiAqIEBzaW5jZSAwLjEuMFxuICogQGF1dGhvciBDYWlxdWUgQXJhdWpvIDxjYWlxdWVAcGlnZ2x5LmNvbS5icj5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRDVFJTdHJlYW0oXG5cdHNlY3JldDogQnVmZmVyLFxuXHRrZXlzOiBBcnJheTxCdWZmZXI+ID0gW10sXG5cdGFhZD86IEJ1ZmZlcixcbik6IFRyYW5zZm9ybSB7XG5cdGNvbnN0IHsga19lbmMsIGtfbWFjIH0gPSBkZXJpdmVDVFJFbmNyeXB0aW9uS2V5KHNlY3JldCwga2V5cyk7XG5cdGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KTtcblx0Y29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KCdhZXMtMjU2LWN0cicsIGtfZW5jLCBpdik7XG5cdGNvbnN0IG1hYyA9IGNyeXB0by5jcmVhdGVIbWFjKCdzaGEyNTYnLCBrX21hYyk7XG5cblx0bGV0IGl2UHVzaGVkID0gZmFsc2U7XG5cblx0bWFjLnVwZGF0ZShpdik7XG5cblx0aWYgKGFhZCkge1xuXHRcdG1hYy51cGRhdGUoYWFkKTtcblx0fVxuXG5cdGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuXHRcdGZsdXNoKGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBsYXN0ID0gY2lwaGVyLmZpbmFsKCk7XG5cblx0XHRcdFx0aWYgKGxhc3QubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGxhc3QpO1xuXHRcdFx0XHRcdG1hYy51cGRhdGUobGFzdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnB1c2gobWFjLmRpZ2VzdCgpKTsgLy8gdGFnKDMyKVxuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjYWxsYmFjayhlIGFzIEVycm9yKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHRyYW5zZm9ybShcblx0XHRcdHRoaXM6IFRyYW5zZm9ybSxcblx0XHRcdGNodW5rOiBhbnksXG5cdFx0XHRlbmNvZGluZzogQnVmZmVyRW5jb2RpbmcsXG5cdFx0XHRjYWxsYmFjazogVHJhbnNmb3JtQ2FsbGJhY2ssXG5cdFx0KTogdm9pZCB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWl2UHVzaGVkKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKGl2KTtcblx0XHRcdFx0XHRpdlB1c2hlZCA9IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjdCA9IGNpcGhlci51cGRhdGUoY2h1bmspO1xuXG5cdFx0XHRcdGlmIChjdC5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLnB1c2goY3QpO1xuXHRcdFx0XHRcdG1hYy51cGRhdGUoY3QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Y2FsbGJhY2soZSBhcyBFcnJvcik7XG5cdFx0XHR9XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIHRyYW5zZm9ybTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgbWVzc2FnZSB1c2luZyBBRVMtMjU2LUNUUi5cbiAqXG4gKiBAcGFyYW0gc2VjcmV0IC0gVGhlIHNlY3JldCB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleXMgLSBUaGUga2V5cyB0byBkZWNyeXB0LlxuICogQHBhcmFtIGFhZCAtIFRoZSBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZGVjcnlwdGVkIG1lc3NhZ2UuXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBhdXRob3IgQ2FpcXVlIEFyYXVqbyA8Y2FpcXVlQHBpZ2dseS5jb20uYnI+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q1RSU3RyZWFtKFxuXHRzZWNyZXQ6IEJ1ZmZlcixcblx0a2V5czogQXJyYXk8QnVmZmVyPiA9IFtdLFxuXHRhYWQ/OiBCdWZmZXIsXG4pOiBUcmFuc2Zvcm0ge1xuXHRjb25zdCB7IGtfZW5jLCBrX21hYyB9ID0gZGVyaXZlQ1RSRW5jcnlwdGlvbktleShzZWNyZXQsIGtleXMpO1xuXHRjb25zdCBtYWMgPSBjcnlwdG8uY3JlYXRlSG1hYygnc2hhMjU2Jywga19tYWMpO1xuXG5cdGxldCBpdjogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG5cdGxldCBkZWNpcGhlcjogY3J5cHRvLkRlY2lwaGVyaXYgfCBudWxsID0gbnVsbDtcblxuXHRsZXQgdGFpbCA9IEJ1ZmZlci5hbGxvYygwKTtcblx0Y29uc3QgbWFjX2J1ZmZlcjogQnVmZmVyW10gPSBbXTtcblxuXHRpZiAoYWFkKSB7XG5cdFx0bWFjLnVwZGF0ZShhYWQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybSh7XG5cdFx0Zmx1c2goY2FsbGJhY2spIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICghaXYgfHwgIWRlY2lwaGVyIHx8IHRhaWwubGVuZ3RoICE9PSAzMikge1xuXHRcdFx0XHRcdHJldHVybiBjYWxsYmFjayhcblx0XHRcdFx0XHRcdG5ldyBFcnJvcignTWFsZm9ybWVkIGNpcGhlcnRleHQ6IG1pc3NpbmcgSVYgb3IgdGFnLicpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjYWxjID0gbWFjLmRpZ2VzdCgpO1xuXG5cdFx0XHRcdGlmIChjYWxjLmxlbmd0aCAhPT0gdGFpbC5sZW5ndGggfHwgIWNyeXB0by50aW1pbmdTYWZlRXF1YWwoY2FsYywgdGFpbCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdJbnZhbGlkIE1BQycpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG1hY19idWZmZXIucHVzaChkZWNpcGhlci5maW5hbCgpKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IGIgb2YgbWFjX2J1ZmZlcikge1xuXHRcdFx0XHRcdHRoaXMucHVzaChiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dHJhbnNmb3JtKF9jaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsZXQgY2h1bmsgPSBfY2h1bms7XG5cblx0XHRcdFx0aWYgKCFpdikge1xuXHRcdFx0XHRcdGNvbnN0IGNvbWJpbmVkID0gQnVmZmVyLmNvbmNhdChbdGFpbCwgY2h1bmtdKTtcblx0XHRcdFx0XHRpZiAoY29tYmluZWQubGVuZ3RoIDwgMTYpIHtcblx0XHRcdFx0XHRcdHRhaWwgPSBjb21iaW5lZDtcblx0XHRcdFx0XHRcdHJldHVybiBjYWxsYmFjaygpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGl2ID0gY29tYmluZWQuc3ViYXJyYXkoMCwgMTYpO1xuXHRcdFx0XHRcdGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtY3RyJywga19lbmMsIGl2KTtcblx0XHRcdFx0XHRtYWMudXBkYXRlKGl2KTtcblxuXHRcdFx0XHRcdGNodW5rID0gY29tYmluZWQuc3ViYXJyYXkoMTYpO1xuXHRcdFx0XHRcdHRhaWwgPSBCdWZmZXIuYWxsb2MoMCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB0b3RhbCA9IEJ1ZmZlci5jb25jYXQoW3RhaWwsIGNodW5rXSk7XG5cblx0XHRcdFx0aWYgKHRvdGFsLmxlbmd0aCA8PSAzMikge1xuXHRcdFx0XHRcdHRhaWwgPSB0b3RhbDtcblx0XHRcdFx0XHRyZXR1cm4gY2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGZlZWQgPSB0b3RhbC5zdWJhcnJheSgwLCB0b3RhbC5sZW5ndGggLSAzMik7XG5cdFx0XHRcdHRhaWwgPSB0b3RhbC5zdWJhcnJheSh0b3RhbC5sZW5ndGggLSAzMik7XG5cblx0XHRcdFx0bWFjLnVwZGF0ZShmZWVkKTtcblx0XHRcdFx0bWFjX2J1ZmZlci5wdXNoKGRlY2lwaGVyIS51cGRhdGUoZmVlZCkpO1xuXG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGNhbGxiYWNrKGUgYXMgRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH0pO1xuXG5cdHJldHVybiB0cmFuc2Zvcm07XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWNyZXQgRlJPTSBhIHNlZWQgV0lUSCBTSEEtMjU2LlxuICogTm93IGl0IHVzZXMgSEtERi4gVG8ga2VlcCBzdXBwb3J0IHRvIHByZXZpb3VzIHZlcnNpb24gdXNlIGB2ZXJzaW9uOiAxYC5cbiAqXG4gKiBAd2FybmluZyBPbGQgc2VjcmV0cyAoPD0wLjcueCB2ZXJzaW9ucykgc2hvdWxkIHVzZSB0aGUgYHZlcnNpb246IDFgIG9wdGlvbi5cbiAqIEBwYXJhbSBzZWVkIC0gVGhlIHNlZWQgdG8gZ2VuZXJhdGUgdGhlIHNlY3JldCBmcm9tLlxuICogQHBhcmFtIG9wdHMgLSBUaGUgb3B0aW9ucyB0byBnZW5lcmF0ZSB0aGUgc2VjcmV0LlxuICogQHBhcmFtIG9wdHMubGVuZ3RoIC0gVGhlIGxlbmd0aCBvZiB0aGUgc2VjcmV0LlxuICogQHBhcmFtIG9wdHMuc2FsdCAtIFRoZSBzYWx0IHRvIHVzZS5cbiAqIEBwYXJhbSBvcHRzLnZlcnNpb24gLSBUaGUgdmVyc2lvbiBvZiB0aGUgc2VjcmV0LiBTZXQgdG8gYDFgIHRvIGdlbmVyYXRlIGEgc2VjcmV0IGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyAoPD0wLjcueCkuXG4gKiBAcmV0dXJucyBUaGUgc2VjcmV0LlxuICogQHNpbmNlIDAuMS4wXG4gKiBAYXV0aG9yIENhaXF1ZSBBcmF1am8gPGNhaXF1ZUBwaWdnbHkuY29tLmJyPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXQoXG5cdHNlZWQ/OiBCdWZmZXIsXG5cdG9wdHM/OiBQYXJ0aWFsPHsgbGVuZ3RoOiBudW1iZXI7IHNhbHQ6IEJ1ZmZlcjsgdmVyc2lvbjogMSB8IDIgfT4sXG4pOiBCdWZmZXIge1xuXHRjb25zdCBsZW5ndGggPSBvcHRzPy5sZW5ndGggPz8gMzI7XG5cdGNvbnN0IHNhbHQgPSBvcHRzPy5zYWx0ID8/IEJ1ZmZlci5hbGxvYygwKTtcblx0Y29uc3QgaWttID0gc2VlZCA/PyBjcnlwdG8ucmFuZG9tQnl0ZXMoMzIpO1xuXHRjb25zdCB2ZXJzaW9uID0gb3B0cz8udmVyc2lvbiA/PyAyO1xuXG5cdGlmICh2ZXJzaW9uID09PSAxKSB7XG5cdFx0cmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaWttKS5kaWdlc3QoKTtcblx0fVxuXG5cdHJldHVybiBCdWZmZXIuZnJvbShcblx0XHRoa2RmKHNoYTI1NiwgaWttLCBzYWx0LCBCdWZmZXIuZnJvbSgnYWVzLTI1Ni1zZWNyZXQvdjEnKSwgbGVuZ3RoKSxcblx0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQTZDLFNBQUFFLHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLHNCQUFzQkEsQ0FBQ0MsTUFBYyxFQUFFQyxJQUFjLEdBQUcsRUFBRSxFQUFVO0VBQ25GLE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxDQUNqQkMsbUJBQU0sQ0FBQ0MsUUFBUSxDQUNkLFFBQVEsRUFDUkgsTUFBTSxDQUFDSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2ZKLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLENBQUNQLE1BQU0sRUFBRSxHQUFHQyxJQUFJLENBQUMsQ0FBQyxFQUNoQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFDakMsRUFDRCxDQUNELENBQUM7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNLLFlBQVlBLENBQzNCUixNQUFjLEVBQ2RDLElBQW1CLEdBQUcsRUFBRSxFQUNtQjtFQUMzQyxNQUFNUSxHQUFHLEdBQUdWLHNCQUFzQixDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQztFQUNoRCxNQUFN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
|
package/dist/cjs/types/index.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEF2YWlsYWJsZUhhc2hpbmdBbGdvcml0aG0gPVxuXHR8ICdzaGEzLTI1Nidcblx0fCAnc2hhMy01MTInXG5cdHwgJ2JsYWtlMmInXG5cdHwgJ3NoYTI1Nidcblx0fCAnc2hhNTEyJztcblxuZXhwb3J0IHR5cGUgQXZhaWxhYmxlS0RGID0gJ3Bia2RmMicgfCAnYmNyeXB0JyB8ICdzY3J5cHQnO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVLZXlQYWlyQWxnb3JpdGhtID0gJ2VkMjU1MTknO1xuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVNbmVtb25pY0xhbmd1YWdlID0gJ2VuZ2xpc2gnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtERldpdGhCY3J5cHRPcHRpb25zID0gUGFydGlhbDx7XG5cdHNhbHRfbGVuZ3RoOiBudW1iZXI7XG59PjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVLREZXaXRoUEJLREYyT3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRpdGVyYXRpb25zOiBudW1iZXI7XG5cdGtleV9sZW5ndGg6IG51bWJlcjtcblx0c2FsdF9sZW5ndGg6IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUtERldpdGhTY3J5cHRPcHRpb25zID0gUGFydGlhbDx7XG5cdGJsb2NrX3NpemU6IG51bWJlcjtcblx0Y29zdDogbnVtYmVyO1xuXHRrZXlfbGVuZ3RoOiBudW1iZXI7XG5cdHBhcmFsbGVsaXphdGlvbjogbnVtYmVyO1xuXHRzYWx0X2xlbmd0aDogbnVtYmVyO1xufT47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlS2V5UGFpck9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0Zm9ybWF0OiAncGVtJyB8ICdyYXcnO1xuXHRpbmRleF9uYW1lPzogc3RyaW5nO1xuXHRtbmVtb25pYzogR2VuZXJhdGVNbmVtb25pY09wdGlvbnM7XG5cdHNlZWQ6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucztcblx0dmVyc2lvbj86IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZU1uZW1vbmljT3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRsYW5ndWFnZTogQXZhaWxhYmxlTW5lbW9uaWNMYW5ndWFnZTtcblx0c3RyZW5ndGg6IG51bWJlcjtcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZU1uZW1vbmljU2VlZE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0cGFzc3dvcmQ6IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZVNlY3JldE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0aW5kZXhfbmFtZT86IHN0cmluZztcblx0cmVjb3Zlcj86IGJvb2xlYW47XG5cdHNlZWQ6IEdlbmVyYXRlTW5lbW9uaWNTZWVkT3B0aW9ucztcblx0dmVyc2lvbjogbnVtYmVyO1xufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtleU1hbmFnZXJTZXJ2aWNlPEtleVR5cGUgPSBCdWZmZXI+IHtcblx0Z2V0IGN1cnJlbnRfdmVyc2lvbigpOiBudW1iZXI7XG5cdGdldCh2ZXJzaW9uPzogbnVtYmVyKTogS2V5VHlwZTtcblx0bG9hZChpbmRleF9uYW1lPzogc3RyaW5nKTogUHJvbWlzZTx0cnVlPjtcblx0Z2V0IG5hbWUoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBWZXJzaW9uZWRLZXkgPSB7IGZpbGU6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgVmVyc2lvbmVkS2V5UGFpciA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRwazogc3RyaW5nO1xuXHRzazogc3RyaW5nO1xuXHR2ZXJzaW9uOiBudW1iZXI7XG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
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
|