@secrecy/lib 1.0.0-dev.41 → 1.0.0-dev.45

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.
@@ -31,4 +31,4 @@ export function internalFileToFile(internal) {
31
31
  export function gqlFileToExternal(gql, keyPair) {
32
32
  return internalFileToFile(gqlFileToInternal(gql, keyPair));
33
33
  }
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuICByZXR1cm4gZmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsRmlsZVRvRmlsZShpbnRlcm5hbDogSW50ZXJuYWxGaWxlKTogRmlsZU1ldGFkYXRhIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogaW50ZXJuYWwuaWQsXG4gICAgbWQ1OiBpbnRlcm5hbC5tZDUsXG4gICAgbWQ1RW5jcnlwdGVkOiBpbnRlcm5hbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBpbnRlcm5hbC5jcmVhdGVkQXQsXG4gICAgc2l6ZTogaW50ZXJuYWwuc2l6ZSxcbiAgICBzaXplQmVmb3JlOiBpbnRlcm5hbC5zaXplQmVmb3JlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9FeHRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4gaW50ZXJuYWxGaWxlVG9GaWxlKGdxbEZpbGVUb0ludGVybmFsKGdxbCwga2V5UGFpcikpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFULFFBQTJCLGdCQUEzQjtBQUVBLFNBQVNDLGdCQUFULFFBQWlDLHVCQUFqQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsaUJBQXZCO0FBR0EsT0FBTyxTQUFTQyxpQkFBVCxDQUNMQyxHQURLLEVBRUxDLE9BRkssRUFHUztFQUNkLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxNQUFMLElBQWUsQ0FBQ0YsR0FBRyxDQUFDRSxNQUFKLENBQVdDLFFBQVgsQ0FBb0JGLE9BQXhDLEVBQWlEO0lBQy9DLGdCQUFjRCxHQUFHLENBQUNJLEVBQWxCO0VBQ0Q7O0VBRUQsTUFBTUMsSUFBa0IsR0FBRztJQUN6QkQsRUFBRSxFQUFFSixHQUFHLENBQUNJLEVBRGlCO0lBRXpCRSxHQUFHLEVBQUVOLEdBQUcsQ0FBQ00sR0FGZ0I7SUFHekJDLFlBQVksRUFBRVAsR0FBRyxDQUFDTyxZQUhPO0lBSXpCQyxTQUFTLEVBQUUsSUFBSUMsSUFBSixDQUFTVCxHQUFHLENBQUNRLFNBQWIsQ0FKYztJQUt6QkUsSUFBSSxFQUFFQyxNQUFNLENBQUNYLEdBQUcsQ0FBQ1UsSUFBTCxDQUxhO0lBTXpCRSxVQUFVLEVBQUVELE1BQU0sQ0FBQ1gsR0FBRyxDQUFDWSxVQUFMLENBTk87SUFPekJDLEdBQUcsRUFBRWYsTUFBTSxDQUFDZ0IsTUFBUCxDQUNIakIsZ0JBQWdCLENBQ2RDLE1BQU0sQ0FBQ2lCLFFBQVAsQ0FBZ0JmLEdBQUcsQ0FBQ0UsTUFBSixDQUFXVyxHQUEzQixDQURjLEVBRWRiLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxRQUFYLENBQW9CRixPQUFwQixDQUE0QmUsR0FGZCxFQUdkZixPQUFPLENBQUNnQixVQUhNLENBRGI7RUFQb0IsQ0FBM0I7RUFnQkFyQixVQUFVLENBQUNzQixHQUFYLENBQWViLElBQUksQ0FBQ0QsRUFBcEIsRUFBd0JDLElBQXhCO0VBQ0EsT0FBT0EsSUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTYyxrQkFBVCxDQUE0QkMsUUFBNUIsRUFBa0U7RUFDdkUsT0FBTztJQUNMaEIsRUFBRSxFQUFFZ0IsUUFBUSxDQUFDaEIsRUFEUjtJQUVMRSxHQUFHLEVBQUVjLFFBQVEsQ0FBQ2QsR0FGVDtJQUdMQyxZQUFZLEVBQUVhLFFBQVEsQ0FBQ2IsWUFIbEI7SUFJTEMsU0FBUyxFQUFFWSxRQUFRLENBQUNaLFNBSmY7SUFLTEUsSUFBSSxFQUFFVSxRQUFRLENBQUNWLElBTFY7SUFNTEUsVUFBVSxFQUFFUSxRQUFRLENBQUNSO0VBTmhCLENBQVA7QUFRRDtBQUVELE9BQU8sU0FBU1MsaUJBQVQsQ0FDTHJCLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsT0FBT2tCLGtCQUFrQixDQUFDcEIsaUJBQWlCLENBQUNDLEdBQUQsRUFBTUMsT0FBTixDQUFsQixDQUF6QjtBQUNEIn0=
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsOiBJbnRlcm5hbEZpbGUpOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4ge1xuICAgIGlkOiBpbnRlcm5hbC5pZCxcbiAgICBtZDU6IGludGVybmFsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGludGVybmFsLm1kNUVuY3J5cHRlZCxcbiAgICBjcmVhdGVkQXQ6IGludGVybmFsLmNyZWF0ZWRBdCxcbiAgICBzaXplOiBpbnRlcm5hbC5zaXplLFxuICAgIHNpemVCZWZvcmU6IGludGVybmFsLnNpemVCZWZvcmVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdxbEZpbGVUb0V4dGVybmFsKFxuICBncWw6IEdRTEZpbGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IEZpbGVNZXRhZGF0YSB7XG4gIHJldHVybiBpbnRlcm5hbEZpbGVUb0ZpbGUoZ3FsRmlsZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsZ0JBQTNCO0FBRUEsU0FBU0MsZ0JBQVQsUUFBaUMsdUJBQWpDO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixpQkFBdkI7QUFHQSxPQUFPLFNBQVNDLGlCQUFULENBQ0xDLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsSUFBSSxDQUFDRCxHQUFHLENBQUNFLE1BQUwsSUFBZSxDQUFDRixHQUFHLENBQUNFLE1BQUosQ0FBV0MsUUFBWCxDQUFvQkYsT0FBeEMsRUFBaUQ7SUFDL0MsZ0JBQWNELEdBQUcsQ0FBQ0ksRUFBbEI7RUFDRDs7RUFFRCxNQUFNQyxJQUFrQixHQUFHO0lBQ3pCRCxFQUFFLEVBQUVKLEdBQUcsQ0FBQ0ksRUFEaUI7SUFFekJFLEdBQUcsRUFBRU4sR0FBRyxDQUFDTSxHQUZnQjtJQUd6QkMsWUFBWSxFQUFFUCxHQUFHLENBQUNPLFlBSE87SUFJekJDLFNBQVMsRUFBRSxJQUFJQyxJQUFKLENBQVNULEdBQUcsQ0FBQ1EsU0FBYixDQUpjO0lBS3pCRSxJQUFJLEVBQUVDLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDVSxJQUFMLENBTGE7SUFNekJFLFVBQVUsRUFBRUQsTUFBTSxDQUFDWCxHQUFHLENBQUNZLFVBQUwsQ0FOTztJQU96QkMsR0FBRyxFQUFFZixNQUFNLENBQUNnQixNQUFQLENBQ0hqQixnQkFBZ0IsQ0FDZEMsTUFBTSxDQUFDaUIsUUFBUCxDQUFnQmYsR0FBRyxDQUFDRSxNQUFKLENBQVdXLEdBQTNCLENBRGMsRUFFZGIsR0FBRyxDQUFDRSxNQUFKLENBQVdDLFFBQVgsQ0FBb0JGLE9BQXBCLENBQTRCZSxHQUZkLEVBR2RmLE9BQU8sQ0FBQ2dCLFVBSE0sQ0FEYjtFQVBvQixDQUEzQjtFQWdCQXJCLFVBQVUsQ0FBQ3NCLEdBQVgsQ0FBZWIsSUFBSSxDQUFDRCxFQUFwQixFQUF3QkMsSUFBeEI7RUFFQSxPQUFPQSxJQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNjLGtCQUFULENBQTRCQyxRQUE1QixFQUFrRTtFQUN2RSxPQUFPO0lBQ0xoQixFQUFFLEVBQUVnQixRQUFRLENBQUNoQixFQURSO0lBRUxFLEdBQUcsRUFBRWMsUUFBUSxDQUFDZCxHQUZUO0lBR0xDLFlBQVksRUFBRWEsUUFBUSxDQUFDYixZQUhsQjtJQUlMQyxTQUFTLEVBQUVZLFFBQVEsQ0FBQ1osU0FKZjtJQUtMRSxJQUFJLEVBQUVVLFFBQVEsQ0FBQ1YsSUFMVjtJQU1MRSxVQUFVLEVBQUVRLFFBQVEsQ0FBQ1I7RUFOaEIsQ0FBUDtBQVFEO0FBRUQsT0FBTyxTQUFTUyxpQkFBVCxDQUNMckIsR0FESyxFQUVMQyxPQUZLLEVBR1M7RUFDZCxPQUFPa0Isa0JBQWtCLENBQUNwQixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLENBQWxCLENBQXpCO0FBQ0QifQ==
@@ -10,6 +10,8 @@ import { nodesCache } from "../../cache.js";
10
10
  import { decryptSecretstream } from "../../crypto/file.js";
11
11
  import { gqlFileToInternal, internalFileToFile } from "./file.js";
12
12
  export async function gqlNodeToInternal(gql, keyPair) {
13
+ var _gql$parentId, _gql$currentFileId;
14
+
13
15
  if (!gql.access) {
14
16
  throw "Can't access Node " + gql.id;
15
17
  }
@@ -26,13 +28,9 @@ export async function gqlNodeToInternal(gql, keyPair) {
26
28
  updatedAt: new Date(gql.updatedAt),
27
29
  deletedAt: gql.deletedAt ? new Date(gql.deletedAt) : null,
28
30
  users: gql.accesses.map(u => [u.userApp.user, u.rights]),
29
- history: gql.history.map(f => gqlFileToInternal(f, keyPair))
31
+ parentId: (_gql$parentId = gql.parentId) != null ? _gql$parentId : null,
32
+ currentFileId: (_gql$currentFileId = gql.currentFileId) != null ? _gql$currentFileId : null
30
33
  };
31
-
32
- if (gql.current) {
33
- internal.current = gqlFileToInternal(gql.current, keyPair);
34
- }
35
-
36
34
  internal.access = _objectSpread({}, gql.access);
37
35
 
38
36
  if (gql.access.nameKey) {
@@ -61,22 +59,19 @@ export async function gqlNodeToInternal(gql, keyPair) {
61
59
  export async function gqlNodeFullToInternalFull(gql, keyPair) {
62
60
  const f = await gqlNodeToInternal(gql, keyPair);
63
61
  return _objectSpread(_objectSpread({}, f), {}, {
62
+ current: gql.current ? gqlFileToInternal(gql.current, keyPair) : undefined,
64
63
  parent: gql.parent ? await gqlNodeToInternal(gql.parent, keyPair) : null,
65
- children: await Promise.all(gql.children.map(s => gqlNodeToInternal(s, keyPair)))
64
+ children: await Promise.all(gql.children.map(s => gqlNodeToInternal(s, keyPair))),
65
+ history: gql.history.map(f => gqlFileToInternal(f, keyPair))
66
66
  });
67
67
  }
68
68
  export function internalNodeToNode(internal) {
69
69
  var _node$access;
70
70
 
71
71
  const node = _objectSpread(_objectSpread({}, internal), {}, {
72
- access: internal.access ? _objectSpread({}, internal.access) : undefined,
73
- history: internal.history.map(f => internalFileToFile(f))
72
+ access: internal.access ? _objectSpread({}, internal.access) : undefined
74
73
  });
75
74
 
76
- if (internal.current) {
77
- node.current = internalFileToFile(internal.current);
78
- }
79
-
80
75
  for (const b of node.breadcrumb) {
81
76
  // @ts-ignore
82
77
  delete b.pubKey;
@@ -89,7 +84,9 @@ export function internalNodeToNode(internal) {
89
84
  export function internalNodeFullToNodeFull(internal) {
90
85
  return _objectSpread(_objectSpread({}, internalNodeToNode(internal)), {}, {
91
86
  parent: internal.parent ? internalNodeToNode(internal.parent) : null,
92
- children: internal.children.map(internalNodeToNode)
87
+ children: internal.children.map(internalNodeToNode),
88
+ history: internal.history.map(f => internalFileToFile(f)),
89
+ current: internal.current ? internalFileToFile(internal.current) : undefined
93
90
  });
94
91
  }
95
92
  export async function gqlNodeToExternalNodeFull(gql, keyPair) {
@@ -98,4 +95,4 @@ export async function gqlNodeToExternalNodeFull(gql, keyPair) {
98
95
  export async function gqlNodeToExternal(gql, keyPair) {
99
96
  return internalNodeToNode(await gqlNodeToInternal(gql, keyPair));
100
97
  }
101
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94Iiwibm9kZXNDYWNoZSIsImRlY3J5cHRTZWNyZXRzdHJlYW0iLCJncWxGaWxlVG9JbnRlcm5hbCIsImludGVybmFsRmlsZVRvRmlsZSIsImdxbE5vZGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsImlkIiwiaW50ZXJuYWwiLCJ0eXBlIiwibmFtZSIsImlzRmF2b3JpdGUiLCJicmVhZGNydW1iIiwiY3JlYXRlZEJ5IiwidXNlciIsImNyZWF0ZWRBdCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJkZWxldGVkQXQiLCJ1c2VycyIsImFjY2Vzc2VzIiwibWFwIiwidSIsInVzZXJBcHAiLCJyaWdodHMiLCJoaXN0b3J5IiwiZiIsImN1cnJlbnQiLCJuYW1lS2V5Iiwic2hhcmVkQnkiLCJFcnJvciIsImtleSIsImZyb21faGV4IiwicHVibGljS2V5IiwicHJpdmF0ZUtleSIsInRvX3N0cmluZyIsInRvX2hleCIsImIiLCJwdWJLZXkiLCJzZXQiLCJncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsIiwicGFyZW50IiwiY2hpbGRyZW4iLCJQcm9taXNlIiwiYWxsIiwicyIsImludGVybmFsTm9kZVRvTm9kZSIsIm5vZGUiLCJ1bmRlZmluZWQiLCJpbnRlcm5hbE5vZGVGdWxsVG9Ob2RlRnVsbCIsImdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwiLCJncWxOb2RlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9ub2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi8uLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgR1FMTm9kZSxcbiAgSW50ZXJuYWxOb2RlLFxuICBHUUxOb2RlRnVsbCxcbiAgSW50ZXJuYWxOb2RlRnVsbCxcbiAgTm9kZUZ1bGxcbn0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBub2Rlc0NhY2hlIH0gZnJvbSBcIi4uLy4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgeyBkZWNyeXB0U2VjcmV0c3RyZWFtIH0gZnJvbSBcIi4uLy4uL2NyeXB0by9maWxlLmpzXCI7XG5pbXBvcnQgeyBncWxGaWxlVG9JbnRlcm5hbCwgaW50ZXJuYWxGaWxlVG9GaWxlIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvSW50ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxJbnRlcm5hbE5vZGU+IHtcbiAgaWYgKCFncWwuYWNjZXNzKSB7XG4gICAgdGhyb3cgYENhbid0IGFjY2VzcyBOb2RlICR7Z3FsLmlkfWA7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbDogSW50ZXJuYWxOb2RlID0ge1xuICAgIGlkOiBncWwuaWQsXG4gICAgdHlwZTogZ3FsLnR5cGUsXG4gICAgYWNjZXNzOiBncWwuYWNjZXNzLFxuICAgIG5hbWU6IGdxbC5uYW1lLFxuICAgIGlzRmF2b3JpdGU6IGdxbC5pc0Zhdm9yaXRlLFxuICAgIGJyZWFkY3J1bWI6IGdxbC5icmVhZGNydW1iLFxuICAgIGNyZWF0ZWRCeTogZ3FsLmNyZWF0ZWRCeS51c2VyLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoZ3FsLmNyZWF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoZ3FsLnVwZGF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIGRlbGV0ZWRBdDogZ3FsLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKGdxbC5kZWxldGVkQXQgYXMgc3RyaW5nKSA6IG51bGwsXG4gICAgdXNlcnM6IGdxbC5hY2Nlc3Nlcy5tYXAodSA9PiBbdS51c2VyQXBwLnVzZXIsIHUucmlnaHRzXSksXG4gICAgaGlzdG9yeTogZ3FsLmhpc3RvcnkubWFwKGYgPT4gZ3FsRmlsZVRvSW50ZXJuYWwoZiwga2V5UGFpcikpXG4gIH07XG5cbiAgaWYgKGdxbC5jdXJyZW50KSB7XG4gICAgaW50ZXJuYWwuY3VycmVudCA9IGdxbEZpbGVUb0ludGVybmFsKGdxbC5jdXJyZW50LCBrZXlQYWlyKTtcbiAgfVxuXG4gIGludGVybmFsLmFjY2VzcyA9IHsgLi4uZ3FsLmFjY2VzcyB9O1xuXG4gIGlmIChncWwuYWNjZXNzLm5hbWVLZXkpIHtcbiAgICBpZiAoIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGtleVBhaXIgZm9yIGFjY2Vzc2ApO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3MubmFtZUtleSksXG4gICAgICBncWwuY3JlYXRlZEJ5LnVzZXIucHVibGljS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBpbnRlcm5hbC5uYW1lID0gc29kaXVtLnRvX3N0cmluZyhcbiAgICAgIGF3YWl0IGRlY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCBzb2RpdW0uZnJvbV9oZXgoaW50ZXJuYWwubmFtZSkpXG4gICAgKTtcblxuICAgIGludGVybmFsLmFjY2Vzcy5uYW1lS2V5ID0gc29kaXVtLnRvX2hleChrZXkpO1xuICB9XG5cbiAgZm9yIChjb25zdCBiIG9mIGludGVybmFsLmJyZWFkY3J1bWIpIHtcbiAgICBpZiAoIWIubmFtZUtleSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGRlY3J5cHRDcnlwdG9Cb3goXG4gICAgICBzb2RpdW0uZnJvbV9oZXgoYi5uYW1lS2V5KSxcbiAgICAgIGIucHViS2V5LFxuICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBiLm5hbWVLZXkgPSBzb2RpdW0udG9faGV4KGtleSk7XG5cbiAgICBiLm5hbWUgPSBzb2RpdW0udG9fc3RyaW5nKFxuICAgICAgYXdhaXQgZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIHNvZGl1bS5mcm9tX2hleChiLm5hbWUpKVxuICAgICk7XG4gIH1cblxuICBub2Rlc0NhY2hlLnNldChpbnRlcm5hbC5pZCwgaW50ZXJuYWwpO1xuICByZXR1cm4gaW50ZXJuYWw7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsKFxuICBncWw6IEdRTE5vZGVGdWxsLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBQcm9taXNlPEludGVybmFsTm9kZUZ1bGw+IHtcbiAgY29uc3QgZiA9IGF3YWl0IGdxbE5vZGVUb0ludGVybmFsKGdxbCwga2V5UGFpcik7XG4gIHJldHVybiB7XG4gICAgLi4uZixcbiAgICBwYXJlbnQ6IGdxbC5wYXJlbnQgPyBhd2FpdCBncWxOb2RlVG9JbnRlcm5hbChncWwucGFyZW50LCBrZXlQYWlyKSA6IG51bGwsXG4gICAgY2hpbGRyZW46IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZ3FsLmNoaWxkcmVuLm1hcChzID0+IGdxbE5vZGVUb0ludGVybmFsKHMsIGtleVBhaXIpKVxuICAgIClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbDogSW50ZXJuYWxOb2RlKTogTm9kZSB7XG4gIGNvbnN0IG5vZGU6IE5vZGUgPSB7XG4gICAgLi4uaW50ZXJuYWwsXG4gICAgYWNjZXNzOiBpbnRlcm5hbC5hY2Nlc3MgPyB7IC4uLmludGVybmFsLmFjY2VzcyB9IDogdW5kZWZpbmVkLFxuICAgIGhpc3Rvcnk6IGludGVybmFsLmhpc3RvcnkubWFwKGYgPT4gaW50ZXJuYWxGaWxlVG9GaWxlKGYpKVxuICB9O1xuXG4gIGlmIChpbnRlcm5hbC5jdXJyZW50KSB7XG4gICAgbm9kZS5jdXJyZW50ID0gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsLmN1cnJlbnQpO1xuICB9XG5cbiAgZm9yIChjb25zdCBiIG9mIG5vZGUuYnJlYWRjcnVtYikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkZWxldGUgYi5wdWJLZXk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBkZWxldGUgbm9kZS5hY2Nlc3M/Lm5hbWVLZXk7XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxOb2RlRnVsbFRvTm9kZUZ1bGwoXG4gIGludGVybmFsOiBJbnRlcm5hbE5vZGVGdWxsXG4pOiBOb2RlRnVsbCB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxOb2RlVG9Ob2RlKGludGVybmFsKSxcbiAgICBwYXJlbnQ6IGludGVybmFsLnBhcmVudCA/IGludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbC5wYXJlbnQpIDogbnVsbCxcbiAgICBjaGlsZHJlbjogaW50ZXJuYWwuY2hpbGRyZW4ubWFwKGludGVybmFsTm9kZVRvTm9kZSlcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwoXG4gIGdxbDogR1FMTm9kZUZ1bGwsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8Tm9kZUZ1bGw+IHtcbiAgcmV0dXJuIGludGVybmFsTm9kZUZ1bGxUb05vZGVGdWxsKFxuICAgIGF3YWl0IGdxbE5vZGVGdWxsVG9JbnRlcm5hbEZ1bGwoZ3FsLCBrZXlQYWlyKVxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvRXh0ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxOb2RlPiB7XG4gIHJldHVybiBpbnRlcm5hbE5vZGVUb05vZGUoYXdhaXQgZ3Fs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
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb2RpdW0iLCJkZWNyeXB0Q3J5cHRvQm94Iiwibm9kZXNDYWNoZSIsImRlY3J5cHRTZWNyZXRzdHJlYW0iLCJncWxGaWxlVG9JbnRlcm5hbCIsImludGVybmFsRmlsZVRvRmlsZSIsImdxbE5vZGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsImlkIiwiaW50ZXJuYWwiLCJ0eXBlIiwibmFtZSIsImlzRmF2b3JpdGUiLCJicmVhZGNydW1iIiwiY3JlYXRlZEJ5IiwidXNlciIsImNyZWF0ZWRBdCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJkZWxldGVkQXQiLCJ1c2VycyIsImFjY2Vzc2VzIiwibWFwIiwidSIsInVzZXJBcHAiLCJyaWdodHMiLCJwYXJlbnRJZCIsImN1cnJlbnRGaWxlSWQiLCJuYW1lS2V5Iiwic2hhcmVkQnkiLCJFcnJvciIsImtleSIsImZyb21faGV4IiwicHVibGljS2V5IiwicHJpdmF0ZUtleSIsInRvX3N0cmluZyIsInRvX2hleCIsImIiLCJwdWJLZXkiLCJzZXQiLCJncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsIiwiZiIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJwYXJlbnQiLCJjaGlsZHJlbiIsIlByb21pc2UiLCJhbGwiLCJzIiwiaGlzdG9yeSIsImludGVybmFsTm9kZVRvTm9kZSIsIm5vZGUiLCJpbnRlcm5hbE5vZGVGdWxsVG9Ob2RlRnVsbCIsImdxbE5vZGVUb0V4dGVybmFsTm9kZUZ1bGwiLCJncWxOb2RlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9ub2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNvZGl1bSB9IGZyb20gXCIuLi8uLi9zb2RpdW0uanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgR1FMTm9kZSxcbiAgSW50ZXJuYWxOb2RlLFxuICBHUUxOb2RlRnVsbCxcbiAgSW50ZXJuYWxOb2RlRnVsbCxcbiAgTm9kZUZ1bGxcbn0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBub2Rlc0NhY2hlIH0gZnJvbSBcIi4uLy4uL2NhY2hlLmpzXCI7XG5pbXBvcnQgeyBkZWNyeXB0U2VjcmV0c3RyZWFtIH0gZnJvbSBcIi4uLy4uL2NyeXB0by9maWxlLmpzXCI7XG5pbXBvcnQgeyBncWxGaWxlVG9JbnRlcm5hbCwgaW50ZXJuYWxGaWxlVG9GaWxlIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3FsTm9kZVRvSW50ZXJuYWwoXG4gIGdxbDogR1FMTm9kZSxcbiAga2V5UGFpcjogS2V5UGFpclxuKTogUHJvbWlzZTxJbnRlcm5hbE5vZGU+IHtcbiAgaWYgKCFncWwuYWNjZXNzKSB7XG4gICAgdGhyb3cgYENhbid0IGFjY2VzcyBOb2RlICR7Z3FsLmlkfWA7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbDogSW50ZXJuYWxOb2RlID0ge1xuICAgIGlkOiBncWwuaWQsXG4gICAgdHlwZTogZ3FsLnR5cGUsXG4gICAgYWNjZXNzOiBncWwuYWNjZXNzLFxuICAgIG5hbWU6IGdxbC5uYW1lLFxuICAgIGlzRmF2b3JpdGU6IGdxbC5pc0Zhdm9yaXRlLFxuICAgIGJyZWFkY3J1bWI6IGdxbC5icmVhZGNydW1iLFxuICAgIGNyZWF0ZWRCeTogZ3FsLmNyZWF0ZWRCeS51c2VyLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoZ3FsLmNyZWF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoZ3FsLnVwZGF0ZWRBdCBhcyBzdHJpbmcpLFxuICAgIGRlbGV0ZWRBdDogZ3FsLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKGdxbC5kZWxldGVkQXQgYXMgc3RyaW5nKSA6IG51bGwsXG4gICAgdXNlcnM6IGdxbC5hY2Nlc3Nlcy5tYXAodSA9PiBbdS51c2VyQXBwLnVzZXIsIHUucmlnaHRzXSksXG4gICAgcGFyZW50SWQ6IGdxbC5wYXJlbnRJZCA/PyBudWxsLFxuICAgIGN1cnJlbnRGaWxlSWQ6IGdxbC5jdXJyZW50RmlsZUlkID8/IG51bGxcbiAgfTtcblxuICBpbnRlcm5hbC5hY2Nlc3MgPSB7IC4uLmdxbC5hY2Nlc3MgfTtcblxuICBpZiAoZ3FsLmFjY2Vzcy5uYW1lS2V5KSB7XG4gICAgaWYgKCFncWwuYWNjZXNzLnNoYXJlZEJ5LmtleVBhaXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBrZXlQYWlyIGZvciBhY2Nlc3NgKTtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gZGVjcnlwdENyeXB0b0JveChcbiAgICAgIHNvZGl1bS5mcm9tX2hleChncWwuYWNjZXNzLm5hbWVLZXkpLFxuICAgICAgZ3FsLmNyZWF0ZWRCeS51c2VyLnB1YmxpY0tleSxcbiAgICAgIGtleVBhaXIucHJpdmF0ZUtleVxuICAgICk7XG4gICAgaW50ZXJuYWwubmFtZSA9IHNvZGl1bS50b19zdHJpbmcoXG4gICAgICBhd2FpdCBkZWNyeXB0U2VjcmV0c3RyZWFtKGtleSwgc29kaXVtLmZyb21faGV4KGludGVybmFsLm5hbWUpKVxuICAgICk7XG5cbiAgICBpbnRlcm5hbC5hY2Nlc3MubmFtZUtleSA9IHNvZGl1bS50b19oZXgoa2V5KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYiBvZiBpbnRlcm5hbC5icmVhZGNydW1iKSB7XG4gICAgaWYgKCFiLm5hbWVLZXkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBkZWNyeXB0Q3J5cHRvQm94KFxuICAgICAgc29kaXVtLmZyb21faGV4KGIubmFtZUtleSksXG4gICAgICBiLnB1YktleSxcbiAgICAgIGtleVBhaXIucHJpdmF0ZUtleVxuICAgICk7XG5cbiAgICBiLm5hbWVLZXkgPSBzb2RpdW0udG9faGV4KGtleSk7XG5cbiAgICBiLm5hbWUgPSBzb2RpdW0udG9fc3RyaW5nKFxuICAgICAgYXdhaXQgZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIHNvZGl1bS5mcm9tX2hleChiLm5hbWUpKVxuICAgICk7XG4gIH1cblxuICBub2Rlc0NhY2hlLnNldChpbnRlcm5hbC5pZCwgaW50ZXJuYWwpO1xuICByZXR1cm4gaW50ZXJuYWw7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsKFxuICBncWw6IEdRTE5vZGVGdWxsLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBQcm9taXNlPEludGVybmFsTm9kZUZ1bGw+IHtcbiAgY29uc3QgZiA9IGF3YWl0IGdxbE5vZGVUb0ludGVybmFsKGdxbCwga2V5UGFpcik7XG4gIHJldHVybiB7XG4gICAgLi4uZixcbiAgICBjdXJyZW50OiBncWwuY3VycmVudCA/IGdxbEZpbGVUb0ludGVybmFsKGdxbC5jdXJyZW50LCBrZXlQYWlyKSA6IHVuZGVmaW5lZCxcbiAgICBwYXJlbnQ6IGdxbC5wYXJlbnQgPyBhd2FpdCBncWxOb2RlVG9JbnRlcm5hbChncWwucGFyZW50LCBrZXlQYWlyKSA6IG51bGwsXG4gICAgY2hpbGRyZW46IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZ3FsLmNoaWxkcmVuLm1hcChzID0+IGdxbE5vZGVUb0ludGVybmFsKHMsIGtleVBhaXIpKVxuICAgICksXG4gICAgaGlzdG9yeTogZ3FsLmhpc3RvcnkubWFwKGYgPT4gZ3FsRmlsZVRvSW50ZXJuYWwoZiwga2V5UGFpcikpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm5hbE5vZGVUb05vZGUoaW50ZXJuYWw6IEludGVybmFsTm9kZSk6IE5vZGUge1xuICBjb25zdCBub2RlOiBOb2RlID0ge1xuICAgIC4uLmludGVybmFsLFxuICAgIGFjY2VzczogaW50ZXJuYWwuYWNjZXNzID8geyAuLi5pbnRlcm5hbC5hY2Nlc3MgfSA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGZvciAoY29uc3QgYiBvZiBub2RlLmJyZWFkY3J1bWIpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZGVsZXRlIGIucHViS2V5O1xuICB9XG4gIC8vIEB0cy1pZ25vcmVcbiAgZGVsZXRlIG5vZGUuYWNjZXNzPy5uYW1lS2V5O1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsTm9kZUZ1bGxUb05vZGVGdWxsKFxuICBpbnRlcm5hbDogSW50ZXJuYWxOb2RlRnVsbFxuKTogTm9kZUZ1bGwge1xuICByZXR1cm4ge1xuICAgIC4uLmludGVybmFsTm9kZVRvTm9kZShpbnRlcm5hbCksXG4gICAgcGFyZW50OiBpbnRlcm5hbC5wYXJlbnQgPyBpbnRlcm5hbE5vZGVUb05vZGUoaW50ZXJuYWwucGFyZW50KSA6IG51bGwsXG4gICAgY2hpbGRyZW46IGludGVybmFsLmNoaWxkcmVuLm1hcChpbnRlcm5hbE5vZGVUb05vZGUpLFxuICAgIGhpc3Rvcnk6IGludGVybmFsLmhpc3RvcnkubWFwKGYgPT4gaW50ZXJuYWxGaWxlVG9GaWxlKGYpKSxcbiAgICBjdXJyZW50OiBpbnRlcm5hbC5jdXJyZW50ID8gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsLmN1cnJlbnQpIDogdW5kZWZpbmVkXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncWxOb2RlVG9FeHRlcm5hbE5vZGVGdWxsKFxuICBncWw6IEdRTE5vZGVGdWxsLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBQcm9taXNlPE5vZGVGdWxsPiB7XG4gIHJldHVybiBpbnRlcm5hbE5vZGVGdWxsVG9Ob2RlRnVsbChcbiAgICBhd2FpdCBncWxOb2RlRnVsbFRvSW50ZXJuYWxGdWxsKGdxbCwga2V5UGFpcilcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdxbE5vZGVUb0V4dGVybmFsKFxuICBncWw6IEdRTE5vZGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IFByb21pc2U8Tm9kZT4ge1xuICByZXR1cm4gaW50ZXJuYWxOb2RlVG9Ob2RlKGF3YWl0IGdxbE5vZGVUb0ludGVybmFsKGdxbCwga2V5UGFpcikpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxNQUFULFFBQXVCLGlCQUF2QjtBQUVBLFNBQVNDLGdCQUFULFFBQWlDLHVCQUFqQztBQVNBLFNBQVNDLFVBQVQsUUFBMkIsZ0JBQTNCO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0Msc0JBQXBDO0FBQ0EsU0FBU0MsaUJBQVQsRUFBNEJDLGtCQUE1QixRQUFzRCxXQUF0RDtBQUVBLE9BQU8sZUFBZUMsaUJBQWYsQ0FDTEMsR0FESyxFQUVMQyxPQUZLLEVBR2tCO0VBQUE7O0VBQ3ZCLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxNQUFULEVBQWlCO0lBQ2YsNkJBQTJCRixHQUFHLENBQUNHLEVBQS9CO0VBQ0Q7O0VBRUQsTUFBTUMsUUFBc0IsR0FBRztJQUM3QkQsRUFBRSxFQUFFSCxHQUFHLENBQUNHLEVBRHFCO0lBRTdCRSxJQUFJLEVBQUVMLEdBQUcsQ0FBQ0ssSUFGbUI7SUFHN0JILE1BQU0sRUFBRUYsR0FBRyxDQUFDRSxNQUhpQjtJQUk3QkksSUFBSSxFQUFFTixHQUFHLENBQUNNLElBSm1CO0lBSzdCQyxVQUFVLEVBQUVQLEdBQUcsQ0FBQ08sVUFMYTtJQU03QkMsVUFBVSxFQUFFUixHQUFHLENBQUNRLFVBTmE7SUFPN0JDLFNBQVMsRUFBRVQsR0FBRyxDQUFDUyxTQUFKLENBQWNDLElBUEk7SUFRN0JDLFNBQVMsRUFBRSxJQUFJQyxJQUFKLENBQVNaLEdBQUcsQ0FBQ1csU0FBYixDQVJrQjtJQVM3QkUsU0FBUyxFQUFFLElBQUlELElBQUosQ0FBU1osR0FBRyxDQUFDYSxTQUFiLENBVGtCO0lBVTdCQyxTQUFTLEVBQUVkLEdBQUcsQ0FBQ2MsU0FBSixHQUFnQixJQUFJRixJQUFKLENBQVNaLEdBQUcsQ0FBQ2MsU0FBYixD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