@bitgo/sdk-core 38.18.0 → 38.19.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.
Files changed (52) hide show
  1. package/dist/src/account-lib/baseCoin/enum.d.ts +2 -1
  2. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/enum.js +4 -1
  4. package/dist/src/bitgo/coinFactory.d.ts +7 -0
  5. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  6. package/dist/src/bitgo/coinFactory.js +10 -1
  7. package/dist/src/bitgo/keychain/keychains.d.ts +4 -0
  8. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  9. package/dist/src/bitgo/keychain/keychains.js +9 -5
  10. package/dist/src/bitgo/safe/iSafe.d.ts +2 -2
  11. package/dist/src/bitgo/safe/iSafe.js +1 -1
  12. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  13. package/dist/src/bitgo/safe/safe.js +5 -10
  14. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -0
  15. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  16. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  17. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +6 -2
  18. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  19. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -14
  20. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +0 -19
  21. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -1
  22. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +4 -64
  23. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +2 -2
  24. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -1
  25. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +5 -4
  26. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +16 -2
  27. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  28. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +34 -6
  29. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +3 -1
  30. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -1
  31. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +1 -1
  32. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +0 -8
  33. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -1
  34. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +4 -23
  35. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +3 -0
  36. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  37. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  38. package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
  39. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/tss/index.js +2 -1
  41. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
  42. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  43. package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
  44. package/dist/test/unit/bitgo/safe/safe.js +15 -2
  45. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +76 -1
  46. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +4 -3
  47. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +66 -1
  48. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
  49. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  50. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +4 -4
@@ -85,7 +85,8 @@ export declare enum TransactionType {
85
85
  WrapERC7984 = 80,
86
86
  UnwrapERC7984 = 81,
87
87
  FinalizeUnwrapERC7984 = 82,
88
- ConfidentialTransfer = 83
88
+ ConfidentialTransfer = 83,
89
+ TransferPreapprovalCancel = 84
89
90
  }
90
91
  /**
91
92
  * Generic list of encoding formats. Can be used as arguments for methods inputs.
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/enum.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IAEJ,UAAU,IAAA;IAEV,WAAW,IAAA;IAEX,oBAAoB,IAAA;IAEpB,qBAAqB,IAAA;IAErB,oCAAoC,IAAA;IAEpC,WAAW,IAAA;IAEX,UAAU,IAAA;IAEV,aAAa,IAAA;IAEb,aAAa,IAAA;IAEb,WAAW,KAAA;IAEX,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,YAAY,KAAA;IAEZ,iBAAiB,KAAA;IAEjB,KAAK,KAAA;IAEL,YAAY,KAAA;IAGZ,YAAY,KAAA;IAGZ,YAAY,KAAA;IAEZ,MAAM,KAAA;IACN,MAAM,KAAA;IAEN,wBAAwB,KAAA;IAExB,UAAU,KAAA;IAEV,aAAa,KAAA;IAEb,cAAc,KAAA;IAEd,gBAAgB,KAAA;IAEhB,mBAAmB,KAAA;IAEnB,eAAe,KAAA;IAEf,QAAQ,KAAA;IACR,iBAAiB,KAAA;IACjB,0BAA0B,KAAA;IAC1B,0BAA0B,KAAA;IAE1B,2BAA2B,KAAA;IAC3B,uBAAuB,KAAA;IAEvB,SAAS,KAAA;IAET,SAAS,KAAA;IAET,OAAO,KAAA;IAEP,gBAAgB,KAAA;IAEhB,kBAAkB,KAAA;IAClB,cAAc,KAAA;IAEd,WAAW,KAAA;IAEX,YAAY,KAAA;IAEZ,kBAAkB,KAAA;IAElB,cAAc,KAAA;IAEd,mBAAmB,KAAA;IAEnB,cAAc,KAAA;IAEd,sBAAsB,KAAA;IAEtB,wBAAwB,KAAA;IAExB,sBAAsB,KAAA;IAEtB,kBAAkB,KAAA;IAElB,2BAA2B,KAAA;IAE3B,iBAAiB,KAAA;IAEjB,gBAAgB,KAAA;IAEhB,aAAa,KAAA;IAIb,0BAA0B,KAAA;IAG1B,MAAM,KAAA;IACN,IAAI,KAAA;IACJ,QAAQ,KAAA;IACR,wBAAwB,KAAA;IACxB,aAAa,KAAA;IAEb,aAAa,KAAA;IAGb,WAAW,KAAA;IAEX,YAAY,KAAA;IAGZ,OAAO,KAAA;IAGP,aAAa,KAAA;IAGb,iBAAiB,KAAA;IAGjB,SAAS,KAAA;IAGT,gBAAgB,KAAA;IAChB,mBAAmB,KAAA;IACnB,uBAAuB,KAAA;IACvB,0BAA0B,KAAA;IAG1B,aAAa,KAAA;IAEb,gBAAgB,KAAA;IAEhB,OAAO,KAAA;IAEP,oBAAoB,KAAA;IAEpB,WAAW,KAAA;IAGX,0BAA0B,KAAA;IAE1B,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,qBAAqB,KAAA;IAErB,oBAAoB,KAAA;CACrB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAID,oBAAY,gBAAgB;IAE1B,SAAS,KAAK;IAEd,QAAQ,IAAI;CACb;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,oBAAY,qBAAqB;IAC/B,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT"}
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/enum.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IAEJ,UAAU,IAAA;IAEV,WAAW,IAAA;IAEX,oBAAoB,IAAA;IAEpB,qBAAqB,IAAA;IAErB,oCAAoC,IAAA;IAEpC,WAAW,IAAA;IAEX,UAAU,IAAA;IAEV,aAAa,IAAA;IAEb,aAAa,IAAA;IAEb,WAAW,KAAA;IAEX,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,YAAY,KAAA;IAEZ,iBAAiB,KAAA;IAEjB,KAAK,KAAA;IAEL,YAAY,KAAA;IAGZ,YAAY,KAAA;IAGZ,YAAY,KAAA;IAEZ,MAAM,KAAA;IACN,MAAM,KAAA;IAEN,wBAAwB,KAAA;IAExB,UAAU,KAAA;IAEV,aAAa,KAAA;IAEb,cAAc,KAAA;IAEd,gBAAgB,KAAA;IAEhB,mBAAmB,KAAA;IAEnB,eAAe,KAAA;IAEf,QAAQ,KAAA;IACR,iBAAiB,KAAA;IACjB,0BAA0B,KAAA;IAC1B,0BAA0B,KAAA;IAE1B,2BAA2B,KAAA;IAC3B,uBAAuB,KAAA;IAEvB,SAAS,KAAA;IAET,SAAS,KAAA;IAET,OAAO,KAAA;IAEP,gBAAgB,KAAA;IAEhB,kBAAkB,KAAA;IAClB,cAAc,KAAA;IAEd,WAAW,KAAA;IAEX,YAAY,KAAA;IAEZ,kBAAkB,KAAA;IAElB,cAAc,KAAA;IAEd,mBAAmB,KAAA;IAEnB,cAAc,KAAA;IAEd,sBAAsB,KAAA;IAEtB,wBAAwB,KAAA;IAExB,sBAAsB,KAAA;IAEtB,kBAAkB,KAAA;IAElB,2BAA2B,KAAA;IAE3B,iBAAiB,KAAA;IAEjB,gBAAgB,KAAA;IAEhB,aAAa,KAAA;IAIb,0BAA0B,KAAA;IAG1B,MAAM,KAAA;IACN,IAAI,KAAA;IACJ,QAAQ,KAAA;IACR,wBAAwB,KAAA;IACxB,aAAa,KAAA;IAEb,aAAa,KAAA;IAGb,WAAW,KAAA;IAEX,YAAY,KAAA;IAGZ,OAAO,KAAA;IAGP,aAAa,KAAA;IAGb,iBAAiB,KAAA;IAGjB,SAAS,KAAA;IAGT,gBAAgB,KAAA;IAChB,mBAAmB,KAAA;IACnB,uBAAuB,KAAA;IACvB,0BAA0B,KAAA;IAG1B,aAAa,KAAA;IAEb,gBAAgB,KAAA;IAEhB,OAAO,KAAA;IAEP,oBAAoB,KAAA;IAEpB,WAAW,KAAA;IAGX,0BAA0B,KAAA;IAE1B,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,qBAAqB,KAAA;IAErB,oBAAoB,KAAA;IAGpB,yBAAyB,KAAA;CAC1B;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAID,oBAAY,gBAAgB;IAE1B,SAAS,KAAK;IAEd,QAAQ,IAAI;CACb;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,oBAAY,qBAAqB;IAC/B,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT"}
@@ -165,6 +165,9 @@ var TransactionType;
165
165
  TransactionType[TransactionType["FinalizeUnwrapERC7984"] = 82] = "FinalizeUnwrapERC7984";
166
166
  // Solana Token-2022 confidential transfer (deposits, transfers, conversions)
167
167
  TransactionType[TransactionType["ConfidentialTransfer"] = 83] = "ConfidentialTransfer";
168
+ // canton: revert an active 1-step TransferPreapproval back to 2-step approval
169
+ // (exercises TransferPreapproval_Cancel on Splice.AmuletRules:TransferPreapproval)
170
+ TransactionType[TransactionType["TransferPreapprovalCancel"] = 84] = "TransferPreapprovalCancel";
168
171
  })(TransactionType || (exports.TransactionType = TransactionType = {}));
169
172
  /**
170
173
  * Generic list of encoding formats. Can be used as arguments for methods inputs.
@@ -194,4 +197,4 @@ var StakingOperationTypes;
194
197
  StakingOperationTypes[StakingOperationTypes["UNLOCK"] = 4] = "UNLOCK";
195
198
  StakingOperationTypes[StakingOperationTypes["WITHDRAW"] = 5] = "WITHDRAW";
196
199
  })(StakingOperationTypes || (exports.StakingOperationTypes = StakingOperationTypes = {}));
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9iYXNlQ29pbi9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQXdLWDtBQXhLRCxXQUFZLGVBQWU7SUFDekIscURBQUksQ0FBQTtJQUNKLCtCQUErQjtJQUMvQixpRUFBVSxDQUFBO0lBQ1YsZ0NBQWdDO0lBQ2hDLG1FQUFXLENBQUE7SUFDWCxvRUFBb0U7SUFDcEUscUZBQW9CLENBQUE7SUFDcEIscUVBQXFFO0lBQ3JFLHVGQUFxQixDQUFBO0lBQ3JCLDBDQUEwQztJQUMxQyxxSEFBb0MsQ0FBQTtJQUNwQyw0REFBNEQ7SUFDNUQsbUVBQVcsQ0FBQTtJQUNYLHdFQUF3RTtJQUN4RSxpRUFBVSxDQUFBO0lBQ1Ysb0NBQW9DO0lBQ3BDLHVFQUFhLENBQUE7SUFDYiw4RUFBOEU7SUFDOUUsdUVBQWEsQ0FBQTtJQUNiLE9BQU87SUFDUCxvRUFBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLG9FQUFXLENBQUE7SUFDWCxTQUFTO0lBQ1Qsd0VBQWEsQ0FBQTtJQUNiLFdBQVc7SUFDWCw0RUFBZSxDQUFBO0lBQ2YsU0FBUztJQUNULHdFQUFhLENBQUE7SUFDYixXQUFXO0lBQ1gsNEVBQWUsQ0FBQTtJQUNmLDhCQUE4QjtJQUM5QixzRUFBWSxDQUFBO0lBQ1osYUFBYTtJQUNiLGdGQUFpQixDQUFBO0lBQ2pCLG1FQUFtRTtJQUNuRSx3REFBSyxDQUFBO0lBQ0wsNEJBQTRCO0lBQzVCLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0IsY0FBYztJQUNkLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0IsY0FBYztJQUNkLHNFQUFZLENBQUE7SUFDWix5Q0FBeUM7SUFDekMsMERBQU0sQ0FBQTtJQUNOLDBEQUFNLENBQUE7SUFDTiwyQ0FBMkM7SUFDM0MsOEZBQXdCLENBQUE7SUFDeEIsY0FBYztJQUNkLGtF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eURBQXlEO0FBQ3pELHVEQUF1RDtBQUN2RCxJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsbURBQW1EO0lBQ25ELGtFQUFjLENBQUE7SUFDZCx3Q0FBd0M7SUFDeEMsK0RBQVksQ0FBQTtBQUNkLENBQUMsRUFMVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUszQjtBQUlELElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQixpRUFBSSxDQUFBO0lBQ0osaUVBQUksQ0FBQTtJQUNKLHFFQUFNLENBQUE7SUFDTix5RUFBUSxDQUFBO0lBQ1IscUVBQU0sQ0FBQTtJQUNOLHlFQUFRLENBQUE7QUFDVixDQUFDLEVBUFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFPaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVybmFsIG1ldGFkYXRhLiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uLlxuICovXG5leHBvcnQgZW51bSBUcmFuc2FjdGlvblR5cGUge1xuICBTZW5kLFxuICAvLyBTZW5kIEVSQzcyMSBjb21wbGlhbnQgdG9rZW5zXG4gIFNlbmRFUkM3MjEsXG4gIC8vIFNlbmQgRVJDMTE1NSBjb21wbGlhbnQgdG9rZW5zXG4gIFNlbmRFUkMxMTU1LFxuICAvLyBJbml0aWFsaXplIGEgd2FsbGV0IG9uLWNoYWluIChlLmcuIE11bHRpLXNpZyBjb250cmFjdCBkZXBsb3ltZW50KVxuICBXYWxsZXRJbml0aWFsaXphdGlvbixcbiAgLy8gSW5pdGlhbGl6ZSBhbiBhZGRyZXNzIG9uLWNoYWluKGUuZy4gRm9yd2FyZGVyIGNvbnRyYWN0IGRlcGxveW1lbnQpXG4gIEFkZHJlc3NJbml0aWFsaXphdGlvbixcbiAgLy8gSW5pdGlhbGl6ZWQgYW4gYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gIEFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbixcbiAgLy8gRmx1c2ggdG9rZW5zIGZyb20gYSBmb3J3YXJkZXIgYWRkcmVzcyB0byBpdHMgYmFzZSBhZGRyZXNzXG4gIEZsdXNoVG9rZW5zLFxuICAvLyBGbHVzaCBuYXRpdmUgY29pbnMgKGVnLiBFVEgpIGZyb20gYSBmb3J3YXJkZXIgYWRkcmVzcyB0byBiYXNlIGFkZHJlc3NcbiAgRmx1c2hDb2lucyxcbiAgLy8gU2VuZCBhIHJhdyBzaW5nbGUtc2lnIHRyYW5zYWN0aW9uXG4gIFNpbmdsZVNpZ1NlbmQsXG4gIC8vIFVwZGF0ZSBhbiBhY2NvdW50IG9uLWNoYWluIChlLmcuIFB1YmxpYyBrZXkgcmV2ZWxhdGlvbiBvcGVyYXRpb24gZm9yIFRlem9zKVxuICBBY2NvdW50VXBkYXRlLFxuICAvLyBMb2NrXG4gIFN0YWtpbmdMb2NrLFxuICAvLyBWb3RlXG4gIFN0YWtpbmdWb3RlLFxuICAvLyBVbnZvdGVcbiAgU3Rha2luZ1Vudm90ZSxcbiAgLy8gQWN0aXZhdGVcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICAvLyBVbmxvY2tcbiAgU3Rha2luZ1VubG9jayxcbiAgLy8gV2l0aGRyYXdcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICAvLyBIYW5kbGUgc21hcnQgY29udHJhY3QgY2FsbHNcbiAgQ29udHJhY3RDYWxsLFxuICAvLyBEZWFjdGl2YXRlXG4gIFN0YWtpbmdEZWFjdGl2YXRlLFxuICAvLyBCYXRjaCBvZiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgYnJvYWRjYXN0IGFzIGEgc2luZ2xlIHRyYW5zYWN0aW9uXG4gIEJhdGNoLFxuICAvLyBDbGFpbSB0aGUgc3Rha2luZyByZXdhcmRzXG4gIFN0YWtpbmdDbGFpbSxcbiAgLy8gQWRkIGRlbGVnYXRvciB0byBwLWNoYWluXG4gIC8vIEBkZXByZWNhdGVkXG4gIEFkZERlbGVnYXRvcixcbiAgLy8gQWRkIHZhbGlkYXRvciB0byBwLWNoYWluXG4gIC8vIEBkZXByZWNhdGVkXG4gIEFkZFZhbGlkYXRvcixcbiAgLy8gQ3Jvc3MgY2hhaW4gdHJhbnNmZXIgYXQgQXZheCBhbmQgZmxhcmVcbiAgRXhwb3J0LFxuICBJbXBvcnQsXG4gIC8vIENyb3NzIGNoYWluIFJlY292ZXJ5IGZvciBldm0gbGlrZSBjaGFpbnNcbiAgUmVjb3ZlcnlXYWxsZXREZXBsb3ltZW50LFxuICAvLyBBZGQgc3Rha2luZ1xuICBTdGFraW5nQWRkLFxuICAvLyBTdGFraW5nIHBsZWRnZSAoZS5nLiBBREEpXG4gIFN0YWtpbmdQbGVkZ2UsXG4gIC8vIERlbGVnYXRpbmcgdm90ZSAoZS5nLiBBREEpXG4gIFZvdGVEZWxlZ2F0aW9uLFxuICAvLyBTdGFraW5nIEF1dGhvcml6ZSAoZS5nLiBTT0wpXG4gIFN0YWtpbmdBdXRob3JpemUsXG4gIC8vIFN0YWtpbmcgQXV0aG9yaXplIGZyb20gcmF3IG1lc3NhZ2UgKGUuZy4gU09MKVxuICBTdGFraW5nQXV0aG9yaXplUmF3LFxuICAvLyBEZWxlZ2F0ZVxuICBTdGFraW5nRGVsZWdhdGUsXG4gIC8vIEN1c3RvbSB0cmFuc2FjdGlvbiAoZS5nLiBTVUkpXG4gIEN1c3RvbVR4LFxuICBTdGFraW5nUmVkZWxlZ2F0ZSxcbiAgQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3IsXG4gIEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yLFxuICAvLyBDbG9zaW5nIGFuIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCAoZS5nLiBTT0wpXG4gIENsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXcsXG4gIC8vIFNlbmQgVG9rZW5zIChlLmcgWFJQTCB0b2tlbnMpXG4gIFNlbmRUb2tlbixcbiAgLy8gU2V0dXAgYSB0cnVzdGxpbmUgd2l0aCBpc3N1ZXIgb2YgYSB0b2tlbiAoZWcuIFhSUEwgdG9rZW5zKVxuICBUcnVzdExpbmUsXG4gIC8vIFNlbmQgTm9uIEZ1bmdpYmxlIFRva2VuIChlLmcuIEFQVCBORlRzKVxuICBTZW5kTkZULFxuICAvLyBEZWxlZ2F0ZSByZXNvdXJjZSAoZS5nLiBUUlgpXG4gIERlbGVnYXRlUmVzb3VyY2UsXG4gIC8vIFVuLWRlbGVnYXRlIHJlc291cmNlIChlLmcuIFRSWClcbiAgVW5EZWxlZ2F0ZVJlc291cmNlLFxuICBTdG9yYWdlRGVwb3NpdCxcbiAgLy8gRmx1c2ggRVJDNzIxIE5GVHMgZnJvbSBhIGZvcndhcmRlciBhZGRyZXNzIHRvIGJhc2UgYWRkcmVzc1xuICBGbHVzaEVSQzcyMSxcbiAgLy8gRmx1c2ggRVJDMTE1NSB0b2tlbnMgZnJvbSBhIGZvcndhcmRlciBhZGRyZXNzIHRvIGJhc2UgYWRkcmVzc1xuICBGbHVzaEVSQzExNTUsXG4gIC8vIFNldCB1cCAxLXN0ZXAgcHJlLWFwcHJvdmFsIGZvciBjYW50b25cbiAgT25lU3RlcFByZUFwcHJvdmFsLFxuICAvLyBjYW50b24gdHJhbnNmZXIgYWNjZXB0LCAyLXN0ZXBcbiAgVHJhbnNmZXJBY2NlcHQsXG4gIC8vIGNhbnRvbiB0cmFuc2ZlciBhY2tub3dsZWRnZW1lbnRcbiAgVHJhbnNmZXJBY2tub3dsZWRnZSxcbiAgLy8gY2FudG9uIHRyYW5zZmVyIHJlamVjdCwgMi1zdGVwXG4gIFRyYW5zZmVyUmVqZWN0LFxuICAvLyBjYW50b24gdHJhbnNmZXIgb2ZmZXIgd2l0aGRyYXduLCAyLXN0ZXBcbiAgVHJhbnNmZXJPZmZlcldpdGhkcmF3bixcbiAgLy8gY2FudG9uIGNvc2lnbiBkZWxlZ2F0aW9uIHByb3Bvc2FsXG4gIENvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbCxcbiAgLy8gY2FudG9uIGNvc2lnbiBkZWxlZ2F0aW9uIGFjY2VwdFxuICBDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0LFxuICAvLyBjYW50b24gYWxsb2NhdGlvbiBhbGxvY2F0ZVxuICBBbGxvY2F0aW9uQWxsb2NhdGUsXG4gIC8vIGNhbnRvbiBhbGxvY2F0aW9uIGFsbG9jYXRlIHdpdGhkcmF3blxuICBBbGxvY2F0aW9uQWxsb2NhdGVXaXRoZHJhd24sXG4gIC8vIGNhbnRvbiBhbGxvY2F0aW9uIHJlcXVlc3QgKGludGVybmFsL2R1bW15IHR4UmVxdWVzdCBzdXJmYWNpbmcgRHZQIHRyYWRlIGRldGFpbHMgdG8gdGhlIGFsbG9jYXRpbmcgcGFydHkpXG4gIEFsbG9jYXRpb25SZXF1ZXN0LFxuICAvLyBjYW50b24gYWxsb2NhdGlvbiByZWplY3RcbiAgQWxsb2NhdGlvblJlamVjdCxcbiAgLy8gY2FudG9uIGdlbmVyaWMgREFNTCBjb21tYW5kXG4gIENhbnRvbkNvbW1hbmQsXG4gIC8vIGNhbnRvbiBlbmQgaW52ZXN0b3Igb25ib2FyZGluZyBvZmZlciAoaW50ZXJuYWwvZHVtbXkgdHhSZXF1ZXN0IHJlY29yZGluZyBhbiBvbi1jaGFpblxuICAvLyBFbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlciBjb250cmFjdCBvbiB0aGUgZW5kIGludmVzdG9yJ3Mgd2FsbGV0IHNvIHRoZXkgY2FuIGFjY2VwdCBvciByZWplY3QuXG4gIC8vIE5ldmVyIHNpZ25lZCBvciBzdWJtaXR0ZWQg4oCUIGJ1aWx0IGxvY2FsbHkgd2l0aG91dCBhbiBJTVMgY2FsbC4pXG4gIEVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyLFxuXG4gIC8vIHRyeFxuICBGUkVFWkUsXG4gIFZPVEUsXG4gIFVORlJFRVpFLFxuICBXSVRIRFJBV19FWFBJUkVfVU5GUkVFWkUsXG4gIENMQUlNX1JFV0FSRFMsXG4gIC8vIENyZWF0ZSBhbiBhY2NvdW50IG9uLWNoYWluIChlLmcuIFRSWCBBY2NvdW50Q3JlYXRlQ29udHJhY3QpXG4gIEFjY291bnRDcmVhdGUsXG5cbiAgLy8gY3NwciBhbmQgc3R4XG4gIHN0YWtpbmdMb2NrLFxuICAvLyBzdHhcbiAgJ3NlbGYtc3RhY2snLFxuXG4gIC8vIGJ0YyxcbiAgc3Rha2luZyxcblxuICAvLyBjc3ByXG4gIHN0YWtpbmdVbmxvY2ssXG5cbiAgLy8gcG9seXhcbiAgUmVqZWN0SW5zdHJ1Y3Rpb24sXG5cbiAgLy8gZmxycFxuICBJbXBvcnRUb0MsXG5cbiAgLy8gdG9uIHdoYWxlc1xuICBUb25XaGFsZXNEZXBvc2l0LFxuICBUb25XaGFsZXNXaXRoZHJhd2FsLFxuICBUb25XaGFsZXNWZXN0aW5nRGVwb3NpdCxcbiAgVG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3YWwsXG5cbiAgLy8geHJwIOKAlCBkZWxldGUgYW4gYWNjb3VudCBhbmQgcmVjb3ZlciB0aGUgZnVsbCBiYWxhbmNlIGluY2x1ZGluZyByZXNlcnZlXG4gIEFjY291bnREZWxldGUsXG4gIC8vIHhycCDigJQgb3B0LWluIHRvIHJlY2VpdmUgYSBNdWx0aS1QdXJwb3NlIFRva2VuIChNUFRva2VuQXV0aG9yaXplKVxuICBNUFRva2VuQXV0aG9yaXplLFxuICAvLyB4cnAg4oCUIHNlbmQgYSBNdWx0aS1QdXJwb3NlIFRva2VuIHZpYSBQYXltZW50IHdpdGggTVBUIEFtb3VudCBvYmplY3RcbiAgU2VuZE1QVCxcbiAgLy8gRGVsZWdhdGUgZGVjcnlwdGlvbiBhY2Nlc3MgZm9yIFphbWEgRVJDLTc5ODQgY29uZmlkZW50aWFsIHRva2VucyB2aWEgQUNMIGNvbnRyYWN0XG4gIERlY3J5cHRpb25EZWxlZ2F0aW9uLFxuICAvLyBTZW5kIEVSQy03OTg0IGNvbmZpZGVudGlhbCB0b2tlbnMgdmlhIGVuY3J5cHRlZCB0cmFuc2ZlclxuICBTZW5kRVJDNzk4NCxcbiAgLy8gRmx1c2ggRVJDLTc5ODQgY29uZmlkZW50aWFsIHRva2VucyBmcm9tIGEgZm9yd2FyZGVyIGFkZHJlc3MgdG8gdGhlIHBhcmVudCB3YWxsZXRcbiAgLy8gdmlhIGZvcndhcmRlci5jYWxsRnJvbVBhcmVudCh0b2tlbkFkZHIsIDAsIGNvbmZpZGVudGlhbFRyYW5zZmVyKHBhcmVudEFkZHIsIGhhbmRsZSkpXG4gIEZsdXNoRVJDNzk4NEZvcndhcmRlclRva2VuLFxuICAvLyBXcmFwIChzaGllbGQpIGFuIHVuZGVybHlpbmcgRVJDLTIwIGludG8gYW4gRVJDLTc5ODQgY29uZmlkZW50aWFsIHRva2VuIHZpYSB3cmFwKHRvLCBhbW91bnQpXG4gIFdyYXBFUkM3OTg0LFxuICAvLyBVbndyYXAgKHVuc2hpZWxkKSBhbiBFUkMtNzk4NCBjb25maWRlbnRpYWwgdG9rZW4gdmlhIHVud3JhcChmcm9tLCB0bywgZW5jcnlwdGVkQW1vdW50LCBpbnB1dFByb29mKVxuICBVbndyYXBFUkM3OTg0LFxuICAvLyBGaW5hbGl6ZSB1bndyYXAgKHVuc2hpZWxkIHBoYXNlLTIpIHZpYSBmaW5hbGl6ZVVud3JhcChyZXF1ZXN0SWQsIGNsZWFydGV4dEFtb3VudCwgZGVjcnlwdGlvblByb29mKVxuICBGaW5hbGl6ZVVud3JhcEVSQzc5ODQsXG4gIC8vIFNvbGFuYSBUb2tlbi0yMDIyIGNvbmZpZGVudGlhbCB0cmFuc2ZlciAoZGVwb3NpdHMsIHRyYW5zZmVycywgY29udmVyc2lvbnMpXG4gIENvbmZpZGVudGlhbFRyYW5zZmVyLFxufVxuXG4vKipcbiAqIEdlbmVyaWMgbGlzdCBvZiBlbmNvZGluZyBmb3JtYXRzLiBDYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgZm9yIG1ldGhvZHMgaW5wdXRzLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRm9ybWF0IHtcbiAgaGV4ID0gJ2hleCcsXG4gIGJhc2U1OCA9ICdiYXNlNTgnLFxuICBtYWlubmV0ID0gJ21haW5uZXQnLFxuICB0ZXN0bmV0ID0gJ3Rlc3RuZXQnLFxufVxuXG4vLyBUT0RPKCk6IGNyZWF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBhZGRyZXNzIGZvcm1hdHMgZW51bXNcbi8vIGxpc3Qgb2Ygc3M1OCBmb3JtYXQgZW5jb2RpbmcgdHlwZXMgZm9yIERvdCBlY29zeXN0ZW1cbmV4cG9ydCBlbnVtIERvdEFkZHJlc3NGb3JtYXQge1xuICAvLyBmb3JtYXQgZm9yIHdlc3RlbmQgKGdlbmVyaWMgc3Vic3RyYXRlKSBhZGRyZXNzZXNcbiAgc3Vic3RyYXRlID0gNDIsXG4gIC8vIGZvcm1hdCBmb3IgcG9sa2Fkb3QgbWFpbm5ldCBhZGRyZXNzZXNcbiAgcG9sa2Fkb3QgPSAwLFxufVxuXG5leHBvcnQgdHlwZSBEb3RBc3NldFR5cGVzID0gJ2RvdCcgfCAndGRvdCc7XG5cbmV4cG9ydCBlbnVtIFN0YWtpbmdPcGVyYXRpb25UeXBlcyB7XG4gIExPQ0ssXG4gIFZPVEUsXG4gIFVOVk9URSxcbiAgQUNUSVZBVEUsXG4gIFVOTE9DSyxcbiAgV0lUSERSQVcsXG59XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9iYXNlQ29pbi9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQTJLWDtBQTNLRCxXQUFZLGVBQWU7SUFDekIscURBQUksQ0FBQTtJQUNKLCtCQUErQjtJQUMvQixpRUFBVSxDQUFBO0lBQ1YsZ0NBQWdDO0lBQ2hDLG1FQUFXLENBQUE7SUFDWCxvRUFBb0U7SUFDcEUscUZBQW9CLENBQUE7SUFDcEIscUVBQXFFO0lBQ3JFLHVGQUFxQixDQUFBO0lBQ3JCLDBDQUEwQztJQUMxQyxxSEFBb0MsQ0FBQTtJQUNwQyw0REFBNEQ7SUFDNUQsbUVBQVcsQ0FBQTtJQUNYLHdFQUF3RTtJQUN4RSxpRUFBVSxDQUFBO0lBQ1Ysb0NBQW9DO0lBQ3BDLHVFQUFhLENBQUE7SUFDYiw4RUFBOEU7SUFDOUUsdUVBQWEsQ0FBQTtJQUNiLE9BQU87SUFDUCxvRUFBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLG9FQUFXLENBQUE7SUFDWCxTQUFTO0lBQ1Qsd0VBQWEsQ0FBQTtJQUNiLFdBQVc7SUFDWCw0RUFBZSxDQUFBO0lBQ2YsU0FBUztJQUNULHdFQUFhLENBQUE7SUFDYixXQUFXO0lBQ1gsNEVBQWUsQ0FBQTtJQUNmLDhCQUE4QjtJQUM5QixzRUFBWSxDQUFBO0lBQ1osYUFBYTtJQUNiLGdGQUFpQixDQUFBO0lBQ2pCLG1FQUFtRTtJQUNuRSx3REFBSyxDQUFBO0lBQ0wsNEJBQTRCO0lBQzVCLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0IsY0FBYztJQUNkLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0IsY0FBYztJQUNkLHNFQUFZLENBQUE7SUFDWix5Q0FBeUM7SUFDekMsMERBQU0sQ0FBQTtJQUNOLDBEQUFNLENBQUE7SUFDTiwyQ0FBMkM7SUFDM0MsOEZBQXdCLENBQUE7SUFDeEIsY0FBYztJQUNkLGtF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O0FBQ3JCLENBQUMsRUFMVyxhQUFhLDZCQUFiLGFBQWEsUUFLeEI7QUFFRCx5REFBeUQ7QUFDekQsdURBQXVEO0FBQ3ZELElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQixtREFBbUQ7SUFDbkQsa0VBQWMsQ0FBQTtJQUNkLHdDQUF3QztJQUN4QywrREFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUxXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBSzNCO0FBSUQsSUFBWSxxQkFPWDtBQVBELFdBQVkscUJBQXFCO0lBQy9CLGlFQUFJLENBQUE7SUFDSixpRUFBSSxDQUFBO0lBQ0oscUVBQU0sQ0FBQTtJQUNOLHlFQUFRLENBQUE7SUFDUixxRUFBTSxDQUFBO0lBQ04seUVBQVEsQ0FBQTtBQUNWLENBQUMsRUFQVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU9oQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZXJuYWwgbWV0YWRhdGEuIERlZmluZXMgdGhlIHR5cGUgb2YgdHJhbnNhY3Rpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFRyYW5zYWN0aW9uVHlwZSB7XG4gIFNlbmQsXG4gIC8vIFNlbmQgRVJDNzIxIGNvbXBsaWFudCB0b2tlbnNcbiAgU2VuZEVSQzcyMSxcbiAgLy8gU2VuZCBFUkMxMTU1IGNvbXBsaWFudCB0b2tlbnNcbiAgU2VuZEVSQzExNTUsXG4gIC8vIEluaXRpYWxpemUgYSB3YWxsZXQgb24tY2hhaW4gKGUuZy4gTXVsdGktc2lnIGNvbnRyYWN0IGRlcGxveW1lbnQpXG4gIFdhbGxldEluaXRpYWxpemF0aW9uLFxuICAvLyBJbml0aWFsaXplIGFuIGFkZHJlc3Mgb24tY2hhaW4oZS5nLiBGb3J3YXJkZXIgY29udHJhY3QgZGVwbG95bWVudClcbiAgQWRkcmVzc0luaXRpYWxpemF0aW9uLFxuICAvLyBJbml0aWFsaXplZCBhbiBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRcbiAgQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uLFxuICAvLyBGbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlciBhZGRyZXNzIHRvIGl0cyBiYXNlIGFkZHJlc3NcbiAgRmx1c2hUb2tlbnMsXG4gIC8vIEZsdXNoIG5hdGl2ZSBjb2lucyAoZWcuIEVUSCkgZnJvbSBhIGZvcndhcmRlciBhZGRyZXNzIHRvIGJhc2UgYWRkcmVzc1xuICBGbHVzaENvaW5zLFxuICAvLyBTZW5kIGEgcmF3IHNpbmdsZS1zaWcgdHJhbnNhY3Rpb25cbiAgU2luZ2xlU2lnU2VuZCxcbiAgLy8gVXBkYXRlIGFuIGFjY291bnQgb24tY2hhaW4gKGUuZy4gUHVibGljIGtleSByZXZlbGF0aW9uIG9wZXJhdGlvbiBmb3IgVGV6b3MpXG4gIEFjY291bnRVcGRhdGUsXG4gIC8vIExvY2tcbiAgU3Rha2luZ0xvY2ssXG4gIC8vIFZvdGVcbiAgU3Rha2luZ1ZvdGUsXG4gIC8vIFVudm90ZVxuICBTdGFraW5nVW52b3RlLFxuICAvLyBBY3RpdmF0ZVxuICBTdGFraW5nQWN0aXZhdGUsXG4gIC8vIFVubG9ja1xuICBTdGFraW5nVW5sb2NrLFxuICAvLyBXaXRoZHJhd1xuICBTdGFraW5nV2l0aGRyYXcsXG4gIC8vIEhhbmRsZSBzbWFydCBjb250cmFjdCBjYWxsc1xuICBDb250cmFjdENhbGwsXG4gIC8vIERlYWN0aXZhdGVcbiAgU3Rha2luZ0RlYWN0aXZhdGUsXG4gIC8vIEJhdGNoIG9mIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBicm9hZGNhc3QgYXMgYSBzaW5nbGUgdHJhbnNhY3Rpb25cbiAgQmF0Y2gsXG4gIC8vIENsYWltIHRoZSBzdGFraW5nIHJld2FyZHNcbiAgU3Rha2luZ0NsYWltLFxuICAvLyBBZGQgZGVsZWdhdG9yIHRvIHAtY2hhaW5cbiAgLy8gQGRlcHJlY2F0ZWRcbiAgQWRkRGVsZWdhdG9yLFxuICAvLyBBZGQgdmFsaWRhdG9yIHRvIHAtY2hhaW5cbiAgLy8gQGRlcHJlY2F0ZWRcbiAgQWRkVmFsaWRhdG9yLFxuICAvLyBDcm9zcyBjaGFpbiB0cmFuc2ZlciBhdCBBdmF4IGFuZCBmbGFyZVxuICBFeHBvcnQsXG4gIEltcG9ydCxcbiAgLy8gQ3Jvc3MgY2hhaW4gUmVjb3ZlcnkgZm9yIGV2bSBsaWtlIGNoYWluc1xuICBSZWNvdmVyeVdhbGxldERlcGxveW1lbnQsXG4gIC8vIEFkZCBzdGFraW5nXG4gIFN0YWtpbmdBZGQsXG4gIC8vIFN0YWtpbmcgcGxlZGdlIChlLmcuIEFEQSlcbiAgU3Rha2luZ1BsZWRnZSxcbiAgLy8gRGVsZWdhdGluZyB2b3RlIChlLmcuIEFEQSlcbiAgVm90ZURlbGVnYXRpb24sXG4gIC8vIFN0YWtpbmcgQXV0aG9yaXplIChlLmcuIFNPTClcbiAgU3Rha2luZ0F1dGhvcml6ZSxcbiAgLy8gU3Rha2luZyBBdXRob3JpemUgZnJvbSByYXcgbWVzc2FnZSAoZS5nLiBTT0wpXG4gIFN0YWtpbmdBdXRob3JpemVSYXcsXG4gIC8vIERlbGVnYXRlXG4gIFN0YWtpbmdEZWxlZ2F0ZSxcbiAgLy8gQ3VzdG9tIHRyYW5zYWN0aW9uIChlLmcuIFNVSSlcbiAgQ3VzdG9tVHgsXG4gIFN0YWtpbmdSZWRlbGVnYXRlLFxuICBBZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvcixcbiAgQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IsXG4gIC8vIENsb3NpbmcgYW4gYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50IChlLmcuIFNPTClcbiAgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICBTaW5nbGVOb21pbmF0b3JXaXRoZHJhdyxcbiAgLy8gU2VuZCBUb2tlbnMgKGUuZyBYUlBMIHRva2VucylcbiAgU2VuZFRva2VuLFxuICAvLyBTZXR1cCBhIHRydXN0bGluZSB3aXRoIGlzc3VlciBvZiBhIHRva2VuIChlZy4gWFJQTCB0b2tlbnMpXG4gIFRydXN0TGluZSxcbiAgLy8gU2VuZCBOb24gRnVuZ2libGUgVG9rZW4gKGUuZy4gQVBUIE5GVHMpXG4gIFNlbmRORlQsXG4gIC8vIERlbGVnYXRlIHJlc291cmNlIChlLmcuIFRSWClcbiAgRGVsZWdhdGVSZXNvdXJjZSxcbiAgLy8gVW4tZGVsZWdhdGUgcmVzb3VyY2UgKGUuZy4gVFJYKVxuICBVbkRlbGVnYXRlUmVzb3VyY2UsXG4gIFN0b3JhZ2VEZXBvc2l0LFxuICAvLyBGbHVzaCBFUkM3MjEgTkZUcyBmcm9tIGEgZm9yd2FyZGVyIGFkZHJlc3MgdG8gYmFzZSBhZGRyZXNzXG4gIEZsdXNoRVJDNzIxLFxuICAvLyBGbHVzaCBFUkMxMTU1IHRva2VucyBmcm9tIGEgZm9yd2FyZGVyIGFkZHJlc3MgdG8gYmFzZSBhZGRyZXNzXG4gIEZsdXNoRVJDMTE1NSxcbiAgLy8gU2V0IHVwIDEtc3RlcCBwcmUtYXBwcm92YWwgZm9yIGNhbnRvblxuICBPbmVTdGVwUHJlQXBwcm92YWwsXG4gIC8vIGNhbnRvbiB0cmFuc2ZlciBhY2NlcHQsIDItc3RlcFxuICBUcmFuc2ZlckFjY2VwdCxcbiAgLy8gY2FudG9uIHRyYW5zZmVyIGFja25vd2xlZGdlbWVudFxuICBUcmFuc2ZlckFja25vd2xlZGdlLFxuICAvLyBjYW50b24gdHJhbnNmZXIgcmVqZWN0LCAyLXN0ZXBcbiAgVHJhbnNmZXJSZWplY3QsXG4gIC8vIGNhbnRvbiB0cmFuc2ZlciBvZmZlciB3aXRoZHJhd24sIDItc3RlcFxuICBUcmFuc2Zlck9mZmVyV2l0aGRyYXduLFxuICAvLyBjYW50b24gY29zaWduIGRlbGVnYXRpb24gcHJvcG9zYWxcbiAgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsLFxuICAvLyBjYW50b24gY29zaWduIGRlbGVnYXRpb24gYWNjZXB0XG4gIENvc2lnbkRlbGVnYXRpb25BY2NlcHQsXG4gIC8vIGNhbnRvbiBhbGxvY2F0aW9uIGFsbG9jYXRlXG4gIEFsbG9jYXRpb25BbGxvY2F0ZSxcbiAgLy8gY2FudG9uIGFsbG9jYXRpb24gYWxsb2NhdGUgd2l0aGRyYXduXG4gIEFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bixcbiAgLy8gY2FudG9uIGFsbG9jYXRpb24gcmVxdWVzdCAoaW50ZXJuYWwvZHVtbXkgdHhSZXF1ZXN0IHN1cmZhY2luZyBEdlAgdHJhZGUgZGV0YWlscyB0byB0aGUgYWxsb2NhdGluZyBwYXJ0eSlcbiAgQWxsb2NhdGlvblJlcXVlc3QsXG4gIC8vIGNhbnRvbiBhbGxvY2F0aW9uIHJlamVjdFxuICBBbGxvY2F0aW9uUmVqZWN0LFxuICAvLyBjYW50b24gZ2VuZXJpYyBEQU1MIGNvbW1hbmRcbiAgQ2FudG9uQ29tbWFuZCxcbiAgLy8gY2FudG9uIGVuZCBpbnZlc3RvciBvbmJvYXJkaW5nIG9mZmVyIChpbnRlcm5hbC9kdW1teSB0eFJlcXVlc3QgcmVjb3JkaW5nIGFuIG9uLWNoYWluXG4gIC8vIEVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyIGNvbnRyYWN0IG9uIHRoZSBlbmQgaW52ZXN0b3IncyB3YWxsZXQgc28gdGhleSBjYW4gYWNjZXB0IG9yIHJlamVjdC5cbiAgLy8gTmV2ZXIgc2lnbmVkIG9yIHN1Ym1pdHRlZCDigJQgYnVpbHQgbG9jYWxseSB3aXRob3V0IGFuIElNUyBjYWxsLilcbiAgRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXIsXG5cbiAgLy8gdHJ4XG4gIEZSRUVaRSxcbiAgVk9URSxcbiAgVU5GUkVFWkUsXG4gIFdJVEhEUkFXX0VYUElSRV9VTkZSRUVaRSxcbiAgQ0xBSU1fUkVXQVJEUyxcbiAgLy8gQ3JlYXRlIGFuIGFjY291bnQgb24tY2hhaW4gKGUuZy4gVFJYIEFjY291bnRDcmVhdGVDb250cmFjdClcbiAgQWNjb3VudENyZWF0ZSxcblxuICAvLyBjc3ByIGFuZCBzdHhcbiAgc3Rha2luZ0xvY2ssXG4gIC8vIHN0eFxuICAnc2VsZi1zdGFjaycsXG5cbiAgLy8gYnRjLFxuICBzdGFraW5nLFxuXG4gIC8vIGNzcHJcbiAgc3Rha2luZ1VubG9jayxcblxuICAvLyBwb2x5eFxuICBSZWplY3RJbnN0cnVjdGlvbixcblxuICAvLyBmbHJwXG4gIEltcG9ydFRvQyxcblxuICAvLyB0b24gd2hhbGVzXG4gIFRvbldoYWxlc0RlcG9zaXQsXG4gIFRvbldoYWxlc1dpdGhkcmF3YWwsXG4gIFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0LFxuICBUb25XaGFsZXNWZXN0aW5nV2l0aGRyYXdhbCxcblxuICAvLyB4cnAg4oCUIGRlbGV0ZSBhbiBhY2NvdW50IGFuZCByZWNvdmVyIHRoZSBmdWxsIGJhbGFuY2UgaW5jbHVkaW5nIHJlc2VydmVcbiAgQWNjb3VudERlbGV0ZSxcbiAgLy8geHJwIOKAlCBvcHQtaW4gdG8gcmVjZWl2ZSBhIE11bHRpLVB1cnBvc2UgVG9rZW4gKE1QVG9rZW5BdXRob3JpemUpXG4gIE1QVG9rZW5BdXRob3JpemUsXG4gIC8vIHhycCDigJQgc2VuZCBhIE11bHRpLVB1cnBvc2UgVG9rZW4gdmlhIFBheW1lbnQgd2l0aCBNUFQgQW1vdW50IG9iamVjdFxuICBTZW5kTVBULFxuICAvLyBEZWxlZ2F0ZSBkZWNyeXB0aW9uIGFjY2VzcyBmb3IgWmFtYSBFUkMtNzk4NCBjb25maWRlbnRpYWwgdG9rZW5zIHZpYSBBQ0wgY29udHJhY3RcbiAgRGVjcnlwdGlvbkRlbGVnYXRpb24sXG4gIC8vIFNlbmQgRVJDLTc5ODQgY29uZmlkZW50aWFsIHRva2VucyB2aWEgZW5jcnlwdGVkIHRyYW5zZmVyXG4gIFNlbmRFUkM3OTg0LFxuICAvLyBGbHVzaCBFUkMtNzk4NCBjb25maWRlbnRpYWwgdG9rZW5zIGZyb20gYSBmb3J3YXJkZXIgYWRkcmVzcyB0byB0aGUgcGFyZW50IHdhbGxldFxuICAvLyB2aWEgZm9yd2FyZGVyLmNhbGxGcm9tUGFyZW50KHRva2VuQWRkciwgMCwgY29uZmlkZW50aWFsVHJhbnNmZXIocGFyZW50QWRkciwgaGFuZGxlKSlcbiAgRmx1c2hFUkM3OTg0Rm9yd2FyZGVyVG9rZW4sXG4gIC8vIFdyYXAgKHNoaWVsZCkgYW4gdW5kZXJseWluZyBFUkMtMjAgaW50byBhbiBFUkMtNzk4NCBjb25maWRlbnRpYWwgdG9rZW4gdmlhIHdyYXAodG8sIGFtb3VudClcbiAgV3JhcEVSQzc5ODQsXG4gIC8vIFVud3JhcCAodW5zaGllbGQpIGFuIEVSQy03OTg0IGNvbmZpZGVudGlhbCB0b2tlbiB2aWEgdW53cmFwKGZyb20sIHRvLCBlbmNyeXB0ZWRBbW91bnQsIGlucHV0UHJvb2YpXG4gIFVud3JhcEVSQzc5ODQsXG4gIC8vIEZpbmFsaXplIHVud3JhcCAodW5zaGllbGQgcGhhc2UtMikgdmlhIGZpbmFsaXplVW53cmFwKHJlcXVlc3RJZCwgY2xlYXJ0ZXh0QW1vdW50LCBkZWNyeXB0aW9uUHJvb2YpXG4gIEZpbmFsaXplVW53cmFwRVJDNzk4NCxcbiAgLy8gU29sYW5hIFRva2VuLTIwMjIgY29uZmlkZW50aWFsIHRyYW5zZmVyIChkZXBvc2l0cywgdHJhbnNmZXJzLCBjb252ZXJzaW9ucylcbiAgQ29uZmlkZW50aWFsVHJhbnNmZXIsXG4gIC8vIGNhbnRvbjogcmV2ZXJ0IGFuIGFjdGl2ZSAxLXN0ZXAgVHJhbnNmZXJQcmVhcHByb3ZhbCBiYWNrIHRvIDItc3RlcCBhcHByb3ZhbFxuICAvLyAoZXhlcmNpc2VzIFRyYW5zZmVyUHJlYXBwcm92YWxfQ2FuY2VsIG9uIFNwbGljZS5BbXVsZXRSdWxlczpUcmFuc2ZlclByZWFwcHJvdmFsKVxuICBUcmFuc2ZlclByZWFwcHJvdmFsQ2FuY2VsLFxufVxuXG4vKipcbiAqIEdlbmVyaWMgbGlzdCBvZiBlbmNvZGluZyBmb3JtYXRzLiBDYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgZm9yIG1ldGhvZHMgaW5wdXRzLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRm9ybWF0IHtcbiAgaGV4ID0gJ2hleCcsXG4gIGJhc2U1OCA9ICdiYXNlNTgnLFxuICBtYWlubmV0ID0gJ21haW5uZXQnLFxuICB0ZXN0bmV0ID0gJ3Rlc3RuZXQnLFxufVxuXG4vLyBUT0RPKCk6IGNyZWF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBhZGRyZXNzIGZvcm1hdHMgZW51bXNcbi8vIGxpc3Qgb2Ygc3M1OCBmb3JtYXQgZW5jb2RpbmcgdHlwZXMgZm9yIERvdCBlY29zeXN0ZW1cbmV4cG9ydCBlbnVtIERvdEFkZHJlc3NGb3JtYXQge1xuICAvLyBmb3JtYXQgZm9yIHdlc3RlbmQgKGdlbmVyaWMgc3Vic3RyYXRlKSBhZGRyZXNzZXNcbiAgc3Vic3RyYXRlID0gNDIsXG4gIC8vIGZvcm1hdCBmb3IgcG9sa2Fkb3QgbWFpbm5ldCBhZGRyZXNzZXNcbiAgcG9sa2Fkb3QgPSAwLFxufVxuXG5leHBvcnQgdHlwZSBEb3RBc3NldFR5cGVzID0gJ2RvdCcgfCAndGRvdCc7XG5cbmV4cG9ydCBlbnVtIFN0YWtpbmdPcGVyYXRpb25UeXBlcyB7XG4gIExPQ0ssXG4gIFZPVEUsXG4gIFVOVk9URSxcbiAgQUNUSVZBVEUsXG4gIFVOTE9DSyxcbiAgV0lUSERSQVcsXG59XG4iXX0=
@@ -24,6 +24,13 @@ export declare class CoinFactory {
24
24
  * @throws Error
25
25
  */
26
26
  register(name: string, coin: CoinConstructor): void;
27
+ /**
28
+ * Checks if a constructor is registered for the given coin or token name,
29
+ * regardless of whether the name is present in the coin map.
30
+ * @param name Name of coin or token
31
+ * @returns {boolean}
32
+ */
33
+ hasCoinConstructor(name: string): boolean;
27
34
  /**
28
35
  * Checks if the coin is present in both coin map and constructor map
29
36
  * @param name Name of coin
@@ -1 +1 @@
1
- {"version":3,"file":"coinFactory.d.ts","sourceRoot":"","sources":["../../../src/bitgo/coinFactory.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAS,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAuB,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC;AAEtG,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,OAAe;IAKpC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAI1D;;;;OAIG;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACI,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,eAAe,GAAG,IAAI;IAapG;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;CAmB7D;AAED,eAAO,MAAM,iBAAiB,EAAE,WAA+B,CAAC"}
1
+ {"version":3,"file":"coinFactory.d.ts","sourceRoot":"","sources":["../../../src/bitgo/coinFactory.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAS,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAuB,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC;AAEtG,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,OAAe;IAKpC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAI1D;;;;;OAKG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;OAIG;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACI,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,eAAe,GAAG,IAAI;IAapG;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;CAmB7D;AAED,eAAO,MAAM,iBAAiB,EAAE,WAA+B,CAAC"}
@@ -29,6 +29,15 @@ class CoinFactory {
29
29
  register(name, coin) {
30
30
  this.coinConstructors.set(name, coin);
31
31
  }
32
+ /**
33
+ * Checks if a constructor is registered for the given coin or token name,
34
+ * regardless of whether the name is present in the coin map.
35
+ * @param name Name of coin or token
36
+ * @returns {boolean}
37
+ */
38
+ hasCoinConstructor(name) {
39
+ return this.getCoinConstructor(name) !== undefined;
40
+ }
32
41
  /**
33
42
  * Checks if the coin is present in both coin map and constructor map
34
43
  * @param name Name of coin
@@ -76,4 +85,4 @@ class CoinFactory {
76
85
  }
77
86
  exports.CoinFactory = CoinFactory;
78
87
  exports.GlobalCoinFactory = new CoinFactory();
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbkZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vY29pbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCw0Q0FBa0c7QUFHbEcscUNBQWdEO0FBU2hELE1BQWEsV0FBVztJQUl0QixZQUFZLFVBQW1CLGVBQUs7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQixDQUFDLElBQVk7UUFDckMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUsSUFBcUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFFSSxPQUFPLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFdBQXNDLEVBQUUsZUFBZ0M7UUFDM0YsSUFDRSxDQUFDLENBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDM0QsRUFDRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsS0FBZ0IsRUFBRSxJQUFZO1FBQy9DLElBQUksV0FBVyxDQUFDO1FBRWhCLElBQUksQ0FBQztZQUNILFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSw2QkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFuRkQsa0NBbUZDO0FBRVksUUFBQSxpQkFBaUIsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IGNvaW5zLCBDb2luTWFwLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5Ob3REZWZpbmVkRXJyb3IgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJy4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRDb2luRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCB0eXBlIENvaW5Db25zdHJ1Y3RvciA9IChiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pID0+IEJhc2VDb2luO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkQ29pbkNvbnN0cnVjdG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2luQ29uc3RydWN0b3I6IENvaW5Db25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvaW5GYWN0b3J5IHtcbiAgcHJpdmF0ZSBjb2luQ29uc3RydWN0b3JzOiBNYXA8c3RyaW5nLCBDb2luQ29uc3RydWN0b3I+O1xuICBwcml2YXRlIGNvaW5NYXA6IENvaW5NYXA7XG5cbiAgY29uc3RydWN0b3IoY29pbk1hcDogQ29pbk1hcCA9IGNvaW5zKSB7XG4gICAgdGhpcy5jb2luQ29uc3RydWN0b3JzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuY29pbk1hcCA9IGNvaW5NYXA7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiBjb2luIG9yIGFkZHJlc3NcbiAgICogQHJldHVybnMgeyhPYmplY3R8dW5kZWZpbmVkKX1cbiAgICovXG4gIHByaXZhdGUgZ2V0Q29pbkNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZyk6IENvaW5Db25zdHJ1Y3RvciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY29pbkNvbnN0cnVjdG9ycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvaW5Db25zdHJ1Y3RvcnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvaW5Db25zdHJ1Y3RvcnMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY29pbiBvciBhZGRyZXNzXG4gICAqIEBwYXJhbSBjb2luIENvaW4gcGx1Z2luJ3MgY29uc3RydWN0b3JcbiAgICogQHRocm93cyBFcnJvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKG5hbWU6IHN0cmluZywgY29pbjogQ29pbkNvbnN0cnVjdG9yKTogdm9pZCB7XG4gICAgdGhpcy5jb2luQ29uc3RydWN0b3JzLnNldChuYW1lLCBjb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvaW4gaXMgcHJlc2VudCBpbiBib3RoIGNvaW4gbWFwIGFuZCBjb25zdHJ1Y3RvciBtYXBcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiBjb2luXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cblxuICBwdWJsaWMgaGFzQ29pbihuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2luTWFwLmhhcyhuYW1lKSAmJiB0aGlzLmdldENvaW5Db25zdHJ1Y3RvcihuYW1lKSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHRva2VuIGluIHRoZSBjb2luIG1hcCBhbmQgdGhlIGNvbnN0cnVjdG9yIG1hcC5cbiAgICogQHBhcmFtIHN0YXRpY3NDb2luIFRoZSBzdGF0aWMgY29pbiBkZWZpbml0aW9uIGZyb20gQml0R28gU3RhdGljc1xuICAgKiBAcGFyYW0gY29pbkNvbnN0cnVjdG9yIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIGNvaW4gcGx1Z2luXG4gICAqIEB0aHJvd3MgRXJyb3JcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclRva2VuKHN0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+LCBjb2luQ29uc3RydWN0b3I6IENvaW5Db25zdHJ1Y3Rvcik6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIHRoaXMuY29pbk1hcC5oYXMoc3RhdGljc0NvaW4ubmFtZSkgfHxcbiAgICAgICAgdGhpcy5jb2luTWFwLmhhcyhzdGF0aWNzQ29pbi5pZCkgfHxcbiAgICAgICAgKHN0YXRpY3NDb2luLmFsaWFzICYmIHRoaXMuY29pbk1hcC5oYXMoc3RhdGljc0NvaW4uYWxpYXMpKVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5jb2luTWFwLmFkZENvaW4oc3RhdGljc0NvaW4pO1xuICAgIH1cbiAgICB0aGlzLnJlZ2lzdGVyKHN0YXRpY3NDb2luLm5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGJpdGdvIEluc3RhbmNlIG9mIEJpdEdvXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY29pbiBvciBhZGRyZXNzXG4gICAqIEB0aHJvd3MgQ29pbk5vdERlZmluZWRFcnJvclxuICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkQ29pbkVycm9yXG4gICAqL1xuICBwdWJsaWMgZ2V0SW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgbmFtZTogc3RyaW5nKTogQmFzZUNvaW4ge1xuICAgIGxldCBzdGF0aWNzQ29pbjtcblxuICAgIHRyeSB7XG4gICAgICBzdGF0aWNzQ29pbiA9IHRoaXMuY29pbk1hcC5nZXQobmFtZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIENvaW5Ob3REZWZpbmVkRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLmdldENvaW5Db25zdHJ1Y3RvcihuYW1lKTtcblxuICAgIGlmIChjb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQ29pbkVycm9yKG5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBHbG9iYWxDb2luRmFjdG9yeTogQ29pbkZhY3RvcnkgPSBuZXcgQ29pbkZhY3RvcnkoKTtcbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbkZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vY29pbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCw0Q0FBa0c7QUFHbEcscUNBQWdEO0FBU2hELE1BQWEsV0FBVztJQUl0QixZQUFZLFVBQW1CLGVBQUs7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQixDQUFDLElBQVk7UUFDckMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUsSUFBcUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksa0JBQWtCLENBQUMsSUFBWTtRQUNwQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFFSSxPQUFPLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFdBQXNDLEVBQUUsZUFBZ0M7UUFDM0YsSUFDRSxDQUFDLENBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDM0QsRUFDRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsS0FBZ0IsRUFBRSxJQUFZO1FBQy9DLElBQUksV0FBVyxDQUFDO1FBRWhCLElBQUksQ0FBQztZQUNILFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSw2QkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUE3RkQsa0NBNkZDO0FBRVksUUFBQSxpQkFBaUIsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IGNvaW5zLCBDb2luTWFwLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5Ob3REZWZpbmVkRXJyb3IgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJy4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRDb2luRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCB0eXBlIENvaW5Db25zdHJ1Y3RvciA9IChiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pID0+IEJhc2VDb2luO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkQ29pbkNvbnN0cnVjdG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2luQ29uc3RydWN0b3I6IENvaW5Db25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvaW5GYWN0b3J5IHtcbiAgcHJpdmF0ZSBjb2luQ29uc3RydWN0b3JzOiBNYXA8c3RyaW5nLCBDb2luQ29uc3RydWN0b3I+O1xuICBwcml2YXRlIGNvaW5NYXA6IENvaW5NYXA7XG5cbiAgY29uc3RydWN0b3IoY29pbk1hcDogQ29pbk1hcCA9IGNvaW5zKSB7XG4gICAgdGhpcy5jb2luQ29uc3RydWN0b3JzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuY29pbk1hcCA9IGNvaW5NYXA7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiBjb2luIG9yIGFkZHJlc3NcbiAgICogQHJldHVybnMgeyhPYmplY3R8dW5kZWZpbmVkKX1cbiAgICovXG4gIHByaXZhdGUgZ2V0Q29pbkNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZyk6IENvaW5Db25zdHJ1Y3RvciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY29pbkNvbnN0cnVjdG9ycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvaW5Db25zdHJ1Y3RvcnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvaW5Db25zdHJ1Y3RvcnMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY29pbiBvciBhZGRyZXNzXG4gICAqIEBwYXJhbSBjb2luIENvaW4gcGx1Z2luJ3MgY29uc3RydWN0b3JcbiAgICogQHRocm93cyBFcnJvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKG5hbWU6IHN0cmluZywgY29pbjogQ29pbkNvbnN0cnVjdG9yKTogdm9pZCB7XG4gICAgdGhpcy5jb2luQ29uc3RydWN0b3JzLnNldChuYW1lLCBjb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjb25zdHJ1Y3RvciBpcyByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gY29pbiBvciB0b2tlbiBuYW1lLFxuICAgKiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgY29pbiBtYXAuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY29pbiBvciB0b2tlblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBoYXNDb2luQ29uc3RydWN0b3IobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29pbkNvbnN0cnVjdG9yKG5hbWUpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb2luIGlzIHByZXNlbnQgaW4gYm90aCBjb2luIG1hcCBhbmQgY29uc3RydWN0b3IgbWFwXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY29pblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG5cbiAgcHVibGljIGhhc0NvaW4obmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29pbk1hcC5oYXMobmFtZSkgJiYgdGhpcy5nZXRDb2luQ29uc3RydWN0b3IobmFtZSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0b2tlbiBpbiB0aGUgY29pbiBtYXAgYW5kIHRoZSBjb25zdHJ1Y3RvciBtYXAuXG4gICAqIEBwYXJhbSBzdGF0aWNzQ29pbiBUaGUgc3RhdGljIGNvaW4gZGVmaW5pdGlvbiBmcm9tIEJpdEdvIFN0YXRpY3NcbiAgICogQHBhcmFtIGNvaW5Db25zdHJ1Y3RvciBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBjb2luIHBsdWdpblxuICAgKiBAdGhyb3dzIEVycm9yXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJUb2tlbihzdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPiwgY29pbkNvbnN0cnVjdG9yOiBDb2luQ29uc3RydWN0b3IpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICB0aGlzLmNvaW5NYXAuaGFzKHN0YXRpY3NDb2luLm5hbWUpIHx8XG4gICAgICAgIHRoaXMuY29pbk1hcC5oYXMoc3RhdGljc0NvaW4uaWQpIHx8XG4gICAgICAgIChzdGF0aWNzQ29pbi5hbGlhcyAmJiB0aGlzLmNvaW5NYXAuaGFzKHN0YXRpY3NDb2luLmFsaWFzKSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuY29pbk1hcC5hZGRDb2luKHN0YXRpY3NDb2luKTtcbiAgICB9XG4gICAgdGhpcy5yZWdpc3RlcihzdGF0aWNzQ29pbi5uYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBiaXRnbyBJbnN0YW5jZSBvZiBCaXRHb1xuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIGNvaW4gb3IgYWRkcmVzc1xuICAgKiBAdGhyb3dzIENvaW5Ob3REZWZpbmVkRXJyb3JcbiAgICogQHRocm93cyBVbnN1cHBvcnRlZENvaW5FcnJvclxuICAgKi9cbiAgcHVibGljIGdldEluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIG5hbWU6IHN0cmluZyk6IEJhc2VDb2luIHtcbiAgICBsZXQgc3RhdGljc0NvaW47XG5cbiAgICB0cnkge1xuICAgICAgc3RhdGljc0NvaW4gPSB0aGlzLmNvaW5NYXAuZ2V0KG5hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBDb2luTm90RGVmaW5lZEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcy5nZXRDb2luQ29uc3RydWN0b3IobmFtZSk7XG5cbiAgICBpZiAoY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3RvcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZENvaW5FcnJvcihuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgR2xvYmFsQ29pbkZhY3Rvcnk6IENvaW5GYWN0b3J5ID0gbmV3IENvaW5GYWN0b3J5KCk7XG4iXX0=
@@ -33,6 +33,10 @@ export declare class Keychains implements IKeychains {
33
33
  * This should be called when a user changes their login password, and are expecting
34
34
  * that their wallet passwords are changed to match the new login password.
35
35
  *
36
+ * Keychains that cannot be decrypted with `oldPassword` are silently skipped
37
+ * (absent from the result): wrong password, a different passphrase, or
38
+ * corrupt input. An empty result is not an error.
39
+ *
36
40
  * @param params
37
41
  * @param params.oldPassword - The old password used for encrypting the key
38
42
  * @param params.newPassword - The new password to be used for encrypting the key
@@ -1 +1 @@
1
- {"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/keychains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC,OAAO,EACL,kBAAkB,EAElB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,mCAAmC,EACpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAkC,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAElE,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAEzB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAKjD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcxD;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB1E;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD9E;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAgB3D;;;;;;;;;;;;OAYG;IACG,4BAA4B,CAAC,MAAM,GAAE,mCAAwC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BvG;;;;;;;;OAQG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9E;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO;IAOpE;;;OAGG;IACG,GAAG,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8D7D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkCvE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWnF;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD9D,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgDxE;;;;;;;OAOG;IACG,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0GjH;;;;OAIG;IACG,kBAAkB,CACtB,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC;IA0BpB;;;;;;;OAOG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmCtE;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAGnD"}
1
+ {"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/keychains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC,OAAO,EACL,kBAAkB,EAElB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,mCAAmC,EACpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAkC,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAElE,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAEzB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAKjD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcxD;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB1E;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD9E;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAgB3D;;;;;;;;;;;;OAYG;IACG,4BAA4B,CAAC,MAAM,GAAE,mCAAwC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BvG;;;;;;;;OAQG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9E;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO;IAOpE;;;OAGG;IACG,GAAG,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8D7D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkCvE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWnF;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD9D,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgDxE;;;;;;;OAOG;IACG,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0GjH;;;;OAIG;IACG,kBAAkB,CACtB,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC;IA0BpB;;;;;;;OAOG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmCtE;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAGnD"}
@@ -100,6 +100,10 @@ class Keychains {
100
100
  * This should be called when a user changes their login password, and are expecting
101
101
  * that their wallet passwords are changed to match the new login password.
102
102
  *
103
+ * Keychains that cannot be decrypted with `oldPassword` are silently skipped
104
+ * (absent from the result): wrong password, a different passphrase, or
105
+ * corrupt input. An empty result is not an error.
106
+ *
103
107
  * @param params
104
108
  * @param params.oldPassword - The old password used for encrypting the key
105
109
  * @param params.newPassword - The new password to be used for encrypting the key
@@ -140,9 +144,9 @@ class Keychains {
140
144
  }
141
145
  }
142
146
  catch (e) {
143
- // if the password was incorrect, silence the error, throw otherwise.
144
- // updateSingleKeychainPassword wraps a wrong-password (or corrupt input) failure as
145
- // 'failed to update keychain password: ...', so treat that as a skip-able error.
147
+ // A decrypt failure is usually not a wrong password — the keychain may be
148
+ // encrypted under a different passphrase. updateSingleKeychainPassword wraps
149
+ // such failures as 'failed to update keychain password: ...'; rethrow the rest.
146
150
  if (!e.message.includes('private key is incorrect') &&
147
151
  !e.message.includes('failed to update keychain password')) {
148
152
  throw e;
@@ -216,7 +220,7 @@ class Keychains {
216
220
  return _.assign({}, params.keychain, { encryptedPrv: newEncryptedPrv });
217
221
  }
218
222
  catch (e) {
219
- // catching an error here means that the password was incorrect or, less likely, the input to decrypt is corrupted
223
+ // decryption failed: wrong password, different passphrase, or corrupt input
220
224
  const errorDetail = e instanceof Error ? e.message : String(e);
221
225
  throw new Error(`failed to update keychain password: ${errorDetail}`);
222
226
  }
@@ -629,4 +633,4 @@ class Keychains {
629
633
  }
630
634
  }
631
635
  exports.Keychains = Keychains;
632
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvREFBNEI7QUFDNUIsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2QyxzQ0FBNEQ7QUFDNUQsd0RBSzhCO0FBQzlCLG9DQUF1RztBQW1CdkcsaURBQXVGO0FBR3ZGLE1BQWEsU0FBUztJQUlwQixZQUFZLEtBQWdCLEVBQUUsUUFBbUI7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQTBCO1FBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxD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LEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2IsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNO2dCQUNiLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDekIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjthQUM1QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSzthQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNDLElBQUksQ0FBQztZQUNKLFlBQVk7WUFDWixHQUFHO1lBQ0gsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1NBQ3BCLENBQUM7YUFDRCxNQUFNLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQWtCO1FBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRjtBQS9vQkQsOEJBK29CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRzc1NldHRpbmdzIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCwgS2V5UGFpciB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBTYWZlTXBjQ2VyZW1vbnlVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7XG4gIGRlY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXksXG4gIGVuY29kZURlcml2YWJsZUVkMjU1MTlQdWIsXG4gIGdlbmVyYXRlRWQyNTUxOUNoYWluQ29kZSxcbiAgaXNWYWxpZEVkMjU1MTlTdHJLZXlQdWJsaWNLZXksXG59IGZyb20gJ0BiaXRnby9zZGstbGliLXNhZmVzJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSwgRUNEU0FVdGlscywgRUREU0FVdGlscywgZ2VuZXJhdGVSYW5kb21QYXNzd29yZCwgUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIEFkZEtleWNoYWluT3B0aW9ucyxcbiAgQXBpS2V5U2hhcmUsXG4gIENoYW5nZWRLZXljaGFpbnMsXG4gIENyZWF0ZUJhY2t1cE9wdGlvbnMsXG4gIENyZWF0ZUJpdEdvT3B0aW9ucyxcbiAgQ3JlYXRlTXBjT3B0aW9ucyxcbiAgR2V0S2V5Y2hhaW5PcHRpb25zLFxuICBHZXRLZXlzRm9yU2lnbmluZ09wdGlvbnMsXG4gIElLZXljaGFpbnMsXG4gIEtleWNoYWluLFxuICBMaXN0S2V5Y2hhaW5PcHRpb25zLFxuICBMaXN0S2V5Y2hhaW5zUmVzdWx0LFxuICBSZWNyZWF0ZU1wY09wdGlvbnMsXG4gIFJvdGF0ZUtleWNoYWluT3B0aW9ucyxcbiAgVXBkYXRlUGFzc3dvcmRPcHRpb25zLFxuICBVcGRhdGVTaW5nbGVLZXljaGFpblBhc3N3b3JkT3B0aW9ucyxcbn0gZnJvbSAnLi9pS2V5Y2hhaW5zJztcbmltcG9ydCB7IEJpdEdvS2V5RnJvbU92Y1NoYXJlcywgQml0R29Ub092Y0pTT04sIE92Y1RvQml0R29KU09OIH0gZnJvbSAnLi9vdmNKc29uQ29kZWMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblZlcnNpb24sIElFbmNyeXB0aW9uU2Vzc2lvbiB9IGZyb20gJy4uLy4uL2FwaSc7XG5cbmV4cG9ydCBjbGFzcyBLZXljaGFpbnMgaW1wbGVtZW50cyBJS2V5Y2hhaW5zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VDb2luOiBJQmFzZUNvaW47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbikge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEga2V5Y2hhaW4gYnkgSURcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zLmlkXG4gICAqIEBwYXJhbSBwYXJhbXMueHB1YiAob3B0aW9uYWwpXG4gICAqIEBwYXJhbSBwYXJhbXMuZXRoQWRkcmVzcyAob3B0aW9uYWwpXG4gICAqIEBwYXJhbSBwYXJhbXMucmVxSWQgKG9wdGlvbmFsKVxuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogR2V0S2V5Y2hhaW5PcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3hwdWInLCAnZXRoQWRkcmVzcyddKTtcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHBhcmFtcy5pZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaWQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuaWQ7XG4gICAgaWYgKHBhcmFtcy5yZXFJZCkge1xuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHBhcmFtcy5yZXFJZCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJhc2VDb2luLnVybCgnL2tleS8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGlkKSkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGxpc3QgdGhlIHVzZXJzIGtleWNoYWluc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMubGltaXQgLSBNYXggbnVtYmVyIG9mIHJlc3VsdHMgaW4gYSBzaW5nbGUgY2FsbC5cbiAgICogQHBhcmFtIHBhcmFtcy5wcmV2SWQgLSBDb250aW51ZSBpdGVyYXRpbmcgKHByb3ZpZGVkIGJ5IG5leHRCYXRjaFByZXZJZCBpbiB0aGUgcHJldmlvdXMgbGlzdClcbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBhc3luYyBsaXN0KHBhcmFtczogTGlzdEtleWNoYWluT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxMaXN0S2V5Y2hhaW5zUmVzdWx0PiB7XG4gICAgY29uc3QgcXVlcnlPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmFtcy5saW1pdCkpIHtcbiAgICAgIGlmICghXy5pc051bWJlcihwYXJhbXMubGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBsaW1pdCBhcmd1bWVudCwgZXhwZWN0aW5nIG51bWJlcicpO1xuICAgICAgfVxuICAgICAgcXVlcnlPYmplY3QubGltaXQgPSBwYXJhbXMubGltaXQ7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXMucHJldklkKSkge1xuICAgICAgaWYgKCFfLmlzU3RyaW5nKHBhcmFtcy5wcmV2SWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwcmV2SWQgYXJndW1lbnQsIGV4cGVjdGluZyBzdHJpbmcnKTtcbiAgICAgIH1cbiAgICAgIHF1ZXJ5T2JqZWN0LnByZXZJZCA9IHBhcmFtcy5wcmV2SWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZ2V0KHRoaXMuYmFzZUNvaW4udXJsKCcva2V5JykpLnF1ZXJ5KHF1ZXJ5T2JqZWN0KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGRlY3J5cHRpb24gcGFzc3dvcmQgZm9yIGFsbCBwb3NzaWJsZSBrZXljaGFpbnMgYXNzb2NpYXRlZCB3aXRoIGEgdXNlci5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyB0aHJvdWdoIGFsbCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlciwgZGVjcnlwdHNcbiAgICogdGhlbSB3aXRoIHRoZSBvbGQgcGFzc3dvcmQgYW5kIHJlLWVuY3J5cHRzIHRoZW0gd2l0aCB0aGUgbmV3IHBhc3N3b3JkLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBsb2dpbiBwYXNzd29yZCwgYW5kIGFyZSBleHBlY3RpbmdcbiAgICogdGhhdCB0aGVpciB3YWxsZXQgcGFzc3dvcmRzIGFyZSBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBuZXcgbG9naW4gcGFzc3dvcmQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5vbGRQYXNzd29yZCAtIFRoZSBvbGQgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUga2V5XG4gICAqIEBwYXJhbSBwYXJhbXMubmV3UGFzc3dvcmQgLSBUaGUgbmV3IHBhc3N3b3JkIHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhlIGtleVxuICAgKiBAcmV0dXJucyBjaGFuZ2VkS2V5cyBPYmplY3QgLSBlLmcuOlxuICAgKiAge1xuICAgKiAgICB4cHViMTogZW5jcnlwdGVkUHJ2LFxuICAgKiAgICAuLi5cbiAgICogIH1cbiAgICovXG4gIGFzeW5jIHVwZGF0ZVBhc3N3b3JkKHBhcmFtczogVXBkYXRlUGFzc3dvcmRPcHRpb25zKTogUHJvbWlzZTxDaGFuZ2VkS2V5Y2hhaW5zPiB7XG4gICAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydvbGRQYXNzd29yZCcsICduZXdQYXNzd29yZCddLCBbXSk7XG4gICAgY29uc3QgY2hhbmdlZEtleXM6IENoYW5nZWRLZXljaGFpbnMgPSB7fTtcbiAgICBsZXQgcHJldklkO1xuICAgIGxldCBrZXlzTGVmdCA9IHRydWU7XG4gICAgd2hpbGUgKGtleXNMZWZ0KSB7XG4gICAgICBjb25zdCByZXN1bHQ6IExpc3RLZXljaGFpbnNSZXN1bHQgPSBhd2FpdCB0aGlzLmxpc3QoeyBsaW1pdDogNTAwLCBwcmV2SWQgfSk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiByZXN1bHQua2V5cykge1xuICAgICAgICBjb25zdCBvbGRFbmNyeXB0ZWRQcnYgPSBrZXkuZW5jcnlwdGVkUHJ2O1xuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChvbGRFbmNyeXB0ZWRQcnYpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkS2V5Y2hhaW4gPSBhd2FpdCB0aGlzLnVwZGF0ZVNpbmdsZUtleWNoYWluUGFzc3dvcmQoe1xuICAgICAgICAgICAga2V5Y2hhaW46IGtleSxcbiAgICAgICAgICAgIG9sZFBhc3N3b3JkOiBwYXJhbXMub2xkUGFzc3dvcmQsXG4gICAgICAgICAgICBuZXdQYXNzd29yZDogcGFyYW1zLm5ld1Bhc3N3b3JkLFxuICAgICAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgICAgIGVuY3J5cHRpb25TZXNzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblNlc3Npb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHVwZGF0ZWRLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICAgICAgICAgIC8vIEJvdGggVFNTIGFuZCBtdWx0aS11c2VyLW9mYyBrZXlzIGhhdmUgbXVsdGlwbGUgcHVibGljIGtleXMgaW4gdGhlaXIga2V5IGRvY3VtZW50IGFuZCB0aHVzIG5lZWQgdG8gdXNlIG9iamVjdElEXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VkS2V5SWRlbnRpZmllciA9XG4gICAgICAgICAgICAgIHVwZGF0ZWRLZXljaGFpbi50eXBlID09PSAndHNzJyB8fCBLZXljaGFpbnMuaXNNdWx0aVVzZXJLZXkodXBkYXRlZEtleWNoYWluKVxuICAgICAgICAgICAgICAgID8gdXBkYXRlZEtleWNoYWluLmlkXG4gICAgICAgICAgICAgICAgOiB1cGRhdGVkS2V5Y2hhaW4ucHViO1xuICAgICAgICAgICAgaWYgKGNoYW5nZWRLZXlJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgIGNoYW5nZWRLZXlzW2NoYW5nZWRLZXlJZGVudGlmaWVyXSA9IHVwZGF0ZWRLZXljaGFpbi5lbmNyeXB0ZWRQcnY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaWYgdGhlIHBhc3N3b3JkIHdhcyBpbmNvcnJlY3QsIHNpbGVuY2UgdGhlIGVycm9yLCB0aHJvdyBvdGhlcndpc2UuXG4gICAgICAgICAgLy8gdXBkYXRlU2luZ2xlS2V5Y2hhaW5QYXNzd29yZCB3cmFwcyBhIHdyb25nLXBhc3N3b3JkIChvciBjb3JydXB0IGlucHV0KSBmYWlsdXJlIGFzXG4gICAgICAgICAgLy8gJ2ZhaWxlZCB0byB1cGRhdGUga2V5Y2hhaW4gcGFzc3dvcmQ6IC4uLicsIHNvIHRyZWF0IHRoYXQgYXMgYSBza2lwLWFibGUgZXJyb3IuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWUubWVzc2FnZS5pbmNsdWRlcygncHJpdmF0ZSBrZXkgaXMgaW5jb3JyZWN0JykgJiZcbiAgICAgICAgICAgICFlLm1lc3NhZ2UuaW5jbHVkZXMoJ2ZhaWxlZCB0byB1cGRhdGUga2V5Y2hhaW4gcGFzc3dvcmQnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQubmV4dEJhdGNoUHJldklkKSB7XG4gICAgICAgIHByZXZJZCA9IHJlc3VsdC5uZXh0QmF0Y2hQcmV2SWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzTGVmdCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZEtleXM7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBlbmNyeXB0aW9uIHZlcnNpb24gb2YgYSBjaXBoZXJ0ZXh0IGJ5IGluc3BlY3RpbmcgaXRzIFwidlwiIGZpZWxkLlxuICAgKiAgIC0gdjEgKFNKQ0wgLyBQQktERjItU0hBMjU2ICsgQUVTLTI1Ni1DQ00pOiBcInZcIiBhYnNlbnQgb3IgZXhwbGljaXRseSAxXG4gICAqICAgLSB2MiAoQXJnb24yaWQgKyBBRVMtMjU2LUdDTSk6IFwidlwiID09PSAyXG4gICAqIFRocm93cyBvbiB1bnJlY29nbml6ZWQgdmFsdWVzIHNvIGNhbGxlcnMgY2Fubm90IHNpbGVudGx5IG1pcy1oYW5kbGUgdW5rbm93biBlbnZlbG9wZXMuXG4gICAqL1xuICBnZXRFbmNyeXB0aW9uVmVyc2lvbihjaXBoZXJ0ZXh0OiBzdHJpbmcpOiBFbmNyeXB0aW9uVmVyc2lvbiB7XG4gICAgbGV0IGVudmVsb3BlOiB7IHY/OiB1bmtub3duIH07XG4gICAgdHJ5IHtcbiAgICAgIGVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBjaXBoZXJ0ZXh0IGVudmVsb3BlOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAoZW52ZWxvcGUudiA9PT0gMikge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIGlmIChlbnZlbG9wZS52ID09PSB1bmRlZmluZWQgfHwgZW52ZWxvcGUudiA9PT0gMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gdmVyc2lvbjogJHtTdHJpbmcoZW52ZWxvcGUudil9YCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwYXNzd29yZCB1c2VkIHRvIGRlY3J5cHQgYSBzaW5nbGUga2V5Y2hhaW4uIERlZmF1bHRzIHRvIHByZXNlcnZpbmcgdGhlXG4gICAqIHNvdXJjZSBlbnZlbG9wZSB2ZXJzaW9uICh2MSBzdGF5cyB2MSwgdjIgc3RheXMgdjIpLCBzbyB0aGlzIGlzIGEgbm8tb3Agd2l0aCByZXNwZWN0IHRvXG4gICAqIGVuY3J5cHRpb24gdmVyc2lvbiB1bmxlc3MgdGhlIGNhbGxlciBvcHRzIGluLiBQYXNzIGBlbmNyeXB0aW9uVmVyc2lvbjogMmAgdG8gZXhwbGljaXRseVxuICAgKiB1cGdyYWRlIGEgdjEgKFNKQ0wpIGtleWNoYWluIHRvIHYyIChBcmdvbjJpZCArIEFFUy0yNTYtR0NNKSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZCBjaGFuZ2VcbiAgICogKGUuZy4gb25jZSBhIGNhbGxlciBpcyByZWFkeSwgYWZ0ZXIgdGhlIFNlcHQgMTUgYnJlYWtpbmctY2hhbmdlIHdpbmRvdyBjbG9zZXMpLlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW4gLSBUaGUga2V5Y2hhaW4gd2hvc2UgcGFzc3dvcmQgc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHBhcmFtcy5vbGRQYXNzd29yZCAtIFRoZSBvbGQgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUga2V5XG4gICAqIEBwYXJhbSBwYXJhbXMubmV3UGFzc3dvcmQgLSBUaGUgbmV3IHBhc3N3b3JkIHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhlIGtleVxuICAgKiBAcGFyYW0gcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uIC0gT3B0aW9uYWwgZW52ZWxvcGUgdmVyc2lvbiB0byBlbWl0OyBkZWZhdWx0cyB0byB0aGUgc291cmNlIGVudmVsb3BlJ3MgdmVyc2lvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXljaGFpbj59XG4gICAqL1xuICBhc3luYyB1cGRhdGVTaW5nbGVLZXljaGFpblBhc3N3b3JkKHBhcmFtczogVXBkYXRlU2luZ2xlS2V5Y2hhaW5QYXNzd29yZE9wdGlvbnMgPSB7fSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBpZiAoIV8uaXNTdHJpbmcocGFyYW1zLm9sZFBhc3N3b3JkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvbGQgcGFzc3dvcmQgdG8gYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcocGFyYW1zLm5ld1Bhc3N3b3JkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBuZXcgcGFzc3dvcmQgdG8gYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNPYmplY3QocGFyYW1zLmtleWNoYWluKSB8fCAhXy5pc1N0cmluZyhwYXJhbXMua2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBrZXljaGFpbiB0byBiZSBhbiBvYmplY3Qgd2l0aCBhbiBlbmNyeXB0ZWRQcnYgcHJvcGVydHknKTtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRFbmNyeXB0ZWRQcnYgPSBwYXJhbXMua2V5Y2hhaW4uZW5jcnlwdGVkUHJ2O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoeyBpbnB1dDogb2xkRW5jcnlwdGVkUHJ2LCBwYXNzd29yZDogcGFyYW1zLm9sZFBhc3N3b3JkIH0pO1xuICAgICAgY29uc3QgbmV3RW5jcnlwdGVkUHJ2ID0gcGFyYW1zLmVuY3J5cHRpb25TZXNzaW9uXG4gICAgICAgID8gYXdhaXQgcGFyYW1zLmVuY3J5cHRpb25TZXNzaW9uLmVuY3J5cHQoZGVjcnlwdGVkUHJ2KVxuICAgICAgICA6IGF3YWl0IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgICAgICBpbnB1dDogZGVjcnlwdGVkUHJ2LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy5uZXdQYXNzd29yZCxcbiAgICAgICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24gPz8gdGhpcy5nZXRFbmNyeXB0aW9uVmVyc2lvbihvbGRFbmNyeXB0ZWRQcnYpLFxuICAgICAgICAgIH0pO1xuICAgICAgcmV0dXJuIF8uYXNzaWduKHt9LCBwYXJhbXMua2V5Y2hhaW4sIHsgZW5jcnlwdGVkUHJ2OiBuZXdFbmNyeXB0ZWRQcnYgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gY2F0Y2hpbmcgYW4gZXJyb3IgaGVyZSBtZWFucyB0aGF0IHRoZSBwYXNzd29yZCB3YXMgaW5jb3JyZWN0IG9yLCBsZXNzIGxpa2VseSwgdGhlIGlucHV0IHRvIGRlY3J5cHQgaXMgY29ycnVwdGVkXG4gICAgICBjb25zdCBlcnJvckRldGFpbCA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIHVwZGF0ZSBrZXljaGFpbiBwYXNzd29yZDogJHtlcnJvckRldGFpbH1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjcnlwdCBhbiBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkgd2l0aCBgcGFzc3BocmFzZWAgYW5kIHJlLWVuY3J5cHQgaXQgYXMgYSB2MlxuICAgKiAoQXJnb24yaWQgKyBBRVMtMjU2LUdDTSkgZW52ZWxvcGUgd2l0aCB0aGUgc2FtZSBwYXNzcGhyYXNlLlxuICAgKlxuICAgKiBVc2VkIHRvIHVwZ3JhZGUgbGVnYWN5IHYxIChTSkNMKSBlbnZlbG9wZXMgdG8gdjIgd2l0aG91dCBjaGFuZ2luZyB0aGUgcGFzc3BocmFzZS5cbiAgICogQ2FsbGVycyB0aGF0IG5lZWQgdG8gdHJ5IGEgZmFsbGJhY2sgcGFzc3BocmFzZSAoZS5nLiBhbiBvcmlnaW5hbCBwYXNzcGhyYXNlIGZyb21cbiAgICogYmVmb3JlIGEgcGFzc3dvcmQgcm90YXRpb24pIHNob3VsZCBoYW5kbGUgdGhhdCB0aGVtc2VsdmVzIOKAlCB0aGlzIHByaW1pdGl2ZSBkb2VzIG9uZVxuICAgKiB0aGluZyBhbmQgbGV0cyBkZWNyeXB0aW9uIGVycm9ycyBzdXJmYWNlIGRpcmVjdGx5LlxuICAgKi9cbiAgYXN5bmMgcmVlbmNyeXB0QXNWMihlbmNyeXB0ZWRQcnY6IHN0cmluZywgcGFzc3BocmFzZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcnYgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoeyBpbnB1dDogZW5jcnlwdGVkUHJ2LCBwYXNzd29yZDogcGFzc3BocmFzZSB9KTtcbiAgICByZXR1cm4gdGhpcy5iaXRnby5lbmNyeXB0KHsgaW5wdXQ6IHBydiwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHB1YmxpYy9wcml2YXRlIGtleSBwYWlyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBvcHRpb25hbCBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5zZWVkIG9wdGlvbmFsIC0gc2VlZCB0byB1c2UgZm9yIGtleXBhaXIgZ2VuZXJhdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zLmlzUm9vdEtleSBvcHRpb25hbCAtIHdoZXRoZXIgdGhlIHJlc3VsdGluZyBrZXlwYWlyIHNob3VsZCBiZSBhIHJvb3Qga2V5XG4gICAqIEByZXR1cm5zIHtLZXlQYWlyfSAtIHRoZSBnZW5lcmF0ZWQga2V5cGFpclxuICAgKi9cbiAgY3JlYXRlKHBhcmFtczogeyBzZWVkPzogQnVmZmVyOyBpc1Jvb3RLZXk/OiBib29sZWFuIH0gPSB7fSk6IEtleVBhaXIge1xuICAgIGlmIChwYXJhbXM/LmlzUm9vdEtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuYmFzZUNvaW4uZ2VuZXJhdGVSb290S2V5UGFpcihwYXJhbXMuc2VlZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhc2VDb2luLmdlbmVyYXRlS2V5UGFpcihwYXJhbXMuc2VlZCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEga2V5Y2hhaW4gdG8gQml0R28ncyByZWNvcmRzXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGFkZChwYXJhbXM6IEFkZEtleWNoYWluT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICBjb21tb24udmFsaWRhdGVQYXJhbXMoXG4gICAgICBwYXJhbXMsXG4gICAgICBbXSxcbiAgICAgIFtcbiAgICAgICAgJ3B1YicsXG4gICAgICAgICdlbmNyeXB0ZWRQcnYnLFxuICAgICAgICAna2V5VHlwZScsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ3NvdXJjZScsXG4gICAgICAgICdvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUnLFxuICAgICAgICAnZW50ZXJwcmlzZScsXG4gICAgICAgICdkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkJyxcbiAgICAgICAgJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGgnLFxuICAgICAgICAncGFyZW50JyxcbiAgICAgICAgJ3NhZmVJZCcsXG4gICAgICBdXG4gICAgKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXMuZGlzYWJsZUtSU0VtYWlsKSkge1xuICAgICAgaWYgKCFfLmlzQm9vbGVhbihwYXJhbXMuZGlzYWJsZUtSU0VtYWlsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZGlzYWJsZUtSU0VtYWlsIGFyZ3VtZW50LCBleHBlY3RpbmcgYm9vbGVhbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMucmVxSWQpIHtcbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihwYXJhbXMucmVxSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJhc2VDb2luLnVybCgnL2tleScpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICBwdWI6IHBhcmFtcy5wdWIsXG4gICAgICAgIGNvbW1vblB1YjogcGFyYW1zLmNvbW1vblB1YixcbiAgICAgICAgY29tbW9uS2V5Y2hhaW46IHBhcmFtcy5jb21tb25LZXljaGFpbixcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiBwYXJhbXMuZW5jcnlwdGVkUHJ2LFxuICAgICAgICB0eXBlOiBwYXJhbXMudHlwZSxcbiAgICAgICAga2V5VHlwZTogcGFyYW1zLmtleVR5cGUsXG4gICAgICAgIHNvdXJjZTogcGFyYW1zLnNvdXJjZSxcbiAgICAgICAgcHJvdmlkZXI6IHBhcmFtcy5wcm92aWRlcixcbiAgICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgICBlbnRlcnByaXNlOiBwYXJhbXMuZW50ZXJwcmlzZSxcbiAgICAgICAgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZDogcGFyYW1zLmRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQsXG4gICAgICAgIGRlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGg6IHBhcmFtcy5kZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoLFxuICAgICAgICBwYXJlbnQ6IHBhcmFtcy5wYXJlbnQsXG4gICAgICAgIGRpc2FibGVLUlNFbWFpbDogcGFyYW1zLmRpc2FibGVLUlNFbWFpbCxcbiAgICAgICAga3JzU3BlY2lmaWM6IHBhcmFtcy5rcnNTcGVjaWZpYyxcbiAgICAgICAga2V5U2hhcmVzOiBwYXJhbXMua2V5U2hhcmVzLFxuICAgICAgICB1c2VyR1BHUHVibGljS2V5OiBwYXJhbXMudXNlckdQR1B1YmxpY0tleSxcbiAgICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBwYXJhbXMuYmFja3VwR1BHUHVibGljS2V5LFxuICAgICAgICBhbGdvVXNlZDogcGFyYW1zLmFsZ29Vc2VkLFxuICAgICAgICBpc0Rpc3RyaWJ1dGVkQ3VzdG9keTogcGFyYW1zLmlzRGlzdHJpYnV0ZWRDdXN0b2R5LFxuICAgICAgICBpc01QQ3YyOiBwYXJhbXMuaXNNUEN2MixcbiAgICAgICAgY29pblNwZWNpZmljOiBwYXJhbXMuY29pblNwZWNpZmljLFxuICAgICAgICB3ZWJhdXRobkRldmljZXM6IHBhcmFtcy53ZWJhdXRobkRldmljZXMsXG4gICAgICAgIHdlYmF1dGhuSW5mbzogcGFyYW1zLndlYmF1dGhuSW5mbyxcbiAgICAgICAgc2FmZUlkOiBwYXJhbXMuc2FmZUlkLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBCaXRHbyBrZXlcbiAgICogQHBhcmFtIHBhcmFtcyAoZW1wdHkpXG4gICAqL1xuICBhc3luYyBjcmVhdGVCaXRHbyhwYXJhbXM6IENyZWF0ZUJpdEdvT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHBhcmFtcy5zb3VyY2UgPSAnYml0Z28nO1xuXG4gICAgdGhpcy5iYXNlQ29pbi5wcmVDcmVhdGVCaXRHbyhwYXJhbXMgYXMgYW55KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hZGQocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiYWNrdXAga2V5XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5wcm92aWRlciAob3B0aW9uYWwpXG4gICAqL1xuICBhc3luYyBjcmVhdGVCYWNrdXAocGFyYW1zOiBDcmVhdGVCYWNrdXBPcHRpb25zID0ge30pOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgcGFyYW1zLnNvdXJjZSA9ICdiYWNrdXAnO1xuXG4gICAgY29uc3QgaXNUc3NCYWNrdXBLZXkgPSBwYXJhbXMucHJ2ICYmIChwYXJhbXMuY29tbW9uS2V5Y2hhaW4gfHwgcGFyYW1zLmNvbW1vblB1Yik7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbXMucHJvdmlkZXIpICYmICFpc1Rzc0JhY2t1cEtleSkge1xuICAgICAgLy8gaWYgdGhlIHByb3ZpZGVyIGlzIHVuZGVmaW5lZCwgd2UgZ2VuZXJhdGUgYSBsb2NhbCBrZXkgYW5kIGFkZCB0aGUgc291cmNlIGRldGFpbHNcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuY3JlYXRlKCk7XG4gICAgICBfLmV4dGVuZChwYXJhbXMsIGtleSk7XG4gICAgICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBfLmV4dGVuZChwYXJhbXMsIHtcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6IGF3YWl0IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgICAgICBpbnB1dDoga2V5LnBydixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdhbGxldCBTYWZlcyB2MSBzbG90IOKRoyAoYGVkMjU1MTlNdWx0aXNpZ2ApOiBzdG9yZSBuZXV0cmFsIHJhdyBkZXJpdmF0aW9uIG1hdGVyaWFsIGFzXG4gICAgLy8gcHVibGljS2V5MzIgfHwgY2hhaW5Db2RlMzIsIHNlcmlhbGl6ZWQgdG9nZXRoZXIgYXMgY2Fub25pY2FsIHVucGFkZGVkIFJGQyA0NjQ4IGJhc2UzMlxuICAgIC8vIChleGFjdGx5IDEwMyB1cHBlcmNhc2UgY2hhcmFjdGVycykuIFRoZSByb290IGlzIGRlbGliZXJhdGVseSBub3QgZW5jb2RlZCBhcyBhXG4gICAgLy8gU3RlbGxhci9BbGdvcmFuZC9IQkFSIHB1YmxpYyBrZXk7IGNvaW4tc3BlY2lmaWMgZW5jb2RpbmcgaGFwcGVucyBhZnRlciBwdWJsaWMgc29mdFxuICAgIC8vIGRlcml2YXRpb24gd2hlbiB0aGUgd2FsbGV0IGNoaWxkIGlzIG1pbnRlZC5cbiAgICBjb25zdCB3aXRoS2V5ID0gcGFyYW1zIGFzIENyZWF0ZUJhY2t1cE9wdGlvbnMgJiB7IHB1Yj86IHN0cmluZyB9O1xuICAgIGlmIChwYXJhbXMuc2FmZUlkICE9PSB1bmRlZmluZWQgJiYgd2l0aEtleS5wdWIgIT09IHVuZGVmaW5lZCAmJiBpc1ZhbGlkRWQyNTUxOVN0cktleVB1YmxpY0tleSh3aXRoS2V5LnB1YikpIHtcbiAgICAgIHdpdGhLZXkucHViID0gZW5jb2RlRGVyaXZhYmxlRWQyNTUxOVB1YihkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHdpdGhLZXkucHViKSwgZ2VuZXJhdGVFZDI1NTE5Q2hhaW5Db2RlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcnZlclJlc3BvbnNlID0gYXdhaXQgdGhpcy5hZGQocGFyYW1zKTtcbiAgICByZXR1cm4gXy5leHRlbmQoe30sIHNlcnZlclJlc3BvbnNlLCBfLnBpY2socGFyYW1zLCBbJ3BydicsICdlbmNyeXB0ZWRQcnYnLCAncHJvdmlkZXInLCAnc291cmNlJ10pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGtleXMgZm9yIHNpZ25pbmcgZnJvbSBhIHdhbGxldFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEtleWNoYWluW10+fVxuICAgKi9cbiAgYXN5bmMgZ2V0S2V5c0ZvclNpZ25pbmcocGFyYW1zOiBHZXRLZXlzRm9yU2lnbmluZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8S2V5Y2hhaW5bXT4ge1xuICAgIGlmICghXy5pc09iamVjdChwYXJhbXMud2FsbGV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIHdhbGxldCcpO1xuICAgIH1cbiAgICBjb25zdCB3YWxsZXQgPSBwYXJhbXMud2FsbGV0O1xuICAgIGNvbnN0IHJlcUlkID0gcGFyYW1zLnJlcUlkIHx8IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gICAgY29uc3QgaWRzID0gd2FsbGV0LmJhc2VDb2luLmtleUlkc0ZvclNpZ25pbmcoKTtcbiAgICBjb25zdCBrZXljaGFpblF1ZXJpZXNCbHVlYmlyZHMgPSBpZHMubWFwKChpZCkgPT4gdGhpcy5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW2lkXSwgcmVxSWQgfSkpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChrZXljaGFpblF1ZXJpZXNCbHVlYmlyZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbmQgc3RvcmUgTVBDIGtleWNoYWlucyB3aXRoIEJpdEdvLlxuICAgKiBAcGFyYW0gcGFyYW1zIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHNlY3JldCBtYXRlcmlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0Pn0gbmV3bHkgY3JlYXRlZCBVc2VyLCBCYWNrdXAsIGFuZCBCaXRHbyBrZXlzXG4gICAqL1xuICBhc3luYyBjcmVhdGVNcGMocGFyYW1zOiBDcmVhdGVNcGNPcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgaWYgKHBhcmFtcy5tdWx0aXNpZ1R5cGUgIT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpLXNpZyB0eXBlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHNzU2V0dGluZ3M6IFRzc1NldHRpbmdzID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoJy9hcGkvdjIvdHNzL3NldHRpbmdzJykpXG4gICAgICAucXVlcnkoeyBlbnRlcnByaXNlOiBwYXJhbXMuZW50ZXJwcmlzZSB9KVxuICAgICAgLnJlc3VsdCgpO1xuICAgIGNvbnN0IG11bHRpc2lnVHlwZVZlcnNpb24gPVxuICAgICAgdHNzU2V0dGluZ3MuY29pblNldHRpbmdzW3RoaXMuYmFzZUNvaW4uZ2V0RmFtaWx5KCldPy53YWxsZXRDcmVhdGlvblNldHRpbmdzPy5tdWx0aVNpZ1R5cGVWZXJzaW9uO1xuXG4gICAgY29uc3QgaXNNUEN2MiA9IG11bHRpc2lnVHlwZVZlcnNpb24gPT09ICdNUEN2Mic7XG4gICAgaWYgKHBhcmFtcy5zYWZlSWQgJiYgIWlzTVBDdjIpIHtcbiAgICAgIC8vIFRoZSBsZWdhY3kgTVBDdjEgY2VyZW1vbmllcyBhY2NlcHQgYSBzYWZlSWQgZm9yIHNpZ25hdHVyZSBjb21wYXRpYmlsaXR5IGJ1dCBzaWxlbnRseVxuICAgICAgLy8gaWdub3JlIGl0IChzZWUgRUREU0FVdGlscy5kZWZhdWx0LmNyZWF0ZUtleWNoYWlucyAvIEVDRFNBVXRpbHMuRWNkc2FVdGlscy5jcmVhdGVLZXljaGFpbnMpLFxuICAgICAgLy8gc28gdGhlIHJlc3VsdGluZyBrZXlzIG5ldmVyIGdldCB0YWdnZWQgd2l0aCB0aGUgc2FmZSBhbmQgV1AncyBmaW5hbGl6ZSBzdGVwIHJlamVjdHMgdGhlbVxuICAgICAgLy8gd2l0aCBhIGdlbmVyaWMgNDAwLiBGYWlsIGZhc3QgaGVyZSBpbnN0ZWFkIG9mIGxldHRpbmcgdGhhdCBjb25mdXNpbmcgZXJyb3Igc3VyZmFjZSBsYXRlci5cbiAgICAgIHRocm93IG5ldyBTYWZlTXBjQ2VyZW1vbnlVbnN1cHBvcnRlZEVycm9yKHRoaXMuYmFzZUNvaW4uZ2V0RmFtaWx5KCkpO1xuICAgIH1cblxuICAgIC8vIEEgc2FmZUlkIG9uIGEga2V5Z2VuIGNlcmVtb255IHNlbGVjdHMgdGhlIFZSRiB2YXJpYW50LCB3aGljaCBhZGRpdGlvbmFsbHkgcnVucyB0aGVcbiAgICAvLyBWUkYgREtHIGFsb25nc2lkZSB0aGUgc2lnbmluZyBES0cuIE9yZGluYXJ5IFRTUyB3YWxsZXQgY3JlYXRpb24gbmV2ZXIgc2V0cyBzYWZlSWRcbiAgICAvLyBhbmQga2VlcHMgdGhlIHBsYWluIE1QQ3YyIGZsb3cuXG4gICAgbGV0IE1wY1V0aWxzO1xuICAgIGlmICh0aGlzLmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpID09PSAnZWRkc2EnKSB7XG4gICAgICBNcGNVdGlscyA9IGlzTVBDdjJcbiAgICAgICAgPyBwYXJhbXMuc2FmZUlkXG4gICAgICAgICAgPyBFRERTQVV0aWxzLkVkZHNhVnJmTVBDdjJVdGlsc1xuICAgICAgICAgIDogRUREU0FVdGlscy5FZGRzYU1QQ3YyVXRpbHNcbiAgICAgICAgOiBFRERTQVV0aWxzLmRlZmF1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIE1wY1V0aWxzID0gaXNNUEN2MlxuICAgICAgICA/IHBhcmFtcy5zYWZlSWRcbiAgICAgICAgICA/IEVDRFNBVXRpbHMuRWNkc2FWcmZNUEN2MlV0aWxzXG4gICAgICAgICAgOiBFQ0RTQVV0aWxzLkVjZHNhTVBDdjJVdGlsc1xuICAgICAgICA6IEVDRFNBVXRpbHMuRWNkc2FVdGlscztcbiAgICB9XG5cbiAgICBjb25zdCBtcGNVdGlscyA9IG5ldyBNcGNVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luKTtcbiAgICByZXR1cm4gYXdhaXQgbXBjVXRpbHMuY3JlYXRlS2V5Y2hhaW5zKHtcbiAgICAgIHBhc3NwaHJhc2U6IHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgZW50ZXJwcmlzZTogcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU6IHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICByZXRyb2ZpdDogcGFyYW1zLnJldHJvZml0LFxuICAgICAgd2ViYXV0aG5JbmZvOiBwYXJhbXMud2ViYXV0aG5JbmZvLFxuICAgICAgZW5jcnlwdGlvblZlcnNpb246IHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgIHNhZmVJZDogcGFyYW1zLnNhZmVJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlY3JlYXRlTXBjKHBhcmFtczogUmVjcmVhdGVNcGNPcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgYXNzZXJ0KHBhcmFtcy5jb2luLCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gY29pbicpKTtcbiAgICBhc3NlcnQocGFyYW1zLndhbGxldElkLCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gd2FsbGV0SWQnKSk7XG4gICAgYXNzZXJ0KHBhcmFtcy5vdHAsIG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBwYXJhbSBvdHAnKSk7XG4gICAgYXNzZXJ0KHBhcmFtcy5wYXNzcGhyYXNlLCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gcGFzc3BocmFzZScpKTtcblxuICAgIGFzc2VydChcbiAgICAgIHBhcmFtcy5lbmNyeXB0ZWRNYXRlcmlhbC5lbmNyeXB0ZWRXYWxsZXRQYXNzcGhyYXNlLFxuICAgICAgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGVuY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UnKVxuICAgICk7XG4gICAgYXNzZXJ0KHBhcmFtcy5lbmNyeXB0ZWRNYXRlcmlhbC5lbmNyeXB0ZWRVc2VyS2V5LCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gZW5jcnlwdGVkVXNlcktleScpKTtcbiAgICBhc3NlcnQocGFyYW1zLmVuY3J5cHRlZE1hdGVyaWFsLmVuY3J5cHRlZEJhY2t1cEtleSwgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGVuY3J5cHRlZEJhY2t1cEtleScpKTtcblxuICAgIGF3YWl0IHRoaXMuYml0Z28ucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoJy9hcGkvdjEvdXNlci91bmxvY2snKSkuc2VuZCh7IG90cDogcGFyYW1zLm90cCB9KS5yZXN1bHQoKTtcbiAgICBjb25zdCB7IHJlY292ZXJ5SW5mbyB9ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKGAvYXBpL3YyLyR7cGFyYW1zLmNvaW59L3dhbGxldC8ke3BhcmFtcy53YWxsZXRJZH0vcGFzc2NvZGVyZWNvdmVyeWApKVxuICAgICAgLnJlc3VsdCgpO1xuXG4gICAgaWYgKCFyZWNvdmVyeUluZm8gfHwgISgncGFzc2NvZGVFbmNyeXB0aW9uQ29kZScgaW4gcmVjb3ZlcnlJbmZvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZ2V0IHJlY292ZXJ5IGluZm8nKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRXYWxsZXRQYXNzcGhyYXNlID0gYXdhaXQgdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXJhbXMuZW5jcnlwdGVkTWF0ZXJpYWwuZW5jcnlwdGVkV2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHBhc3N3b3JkOiByZWNvdmVyeUluZm8ucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlY3J5cHRlZFVzZXJLZXkgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhcmFtcy5lbmNyeXB0ZWRNYXRlcmlhbC5lbmNyeXB0ZWRVc2VyS2V5LFxuICAgICAgcGFzc3dvcmQ6IGRlY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRCYWNrdXBLZXkgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhcmFtcy5lbmNyeXB0ZWRNYXRlcmlhbC5lbmNyeXB0ZWRCYWNrdXBLZXksXG4gICAgICBwYXNzd29yZDogZGVjcnlwdGVkV2FsbGV0UGFzc3BocmFzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU1wYyh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgcmV0cm9maXQ6IHtcbiAgICAgICAgZGVjcnlwdGVkVXNlcktleSxcbiAgICAgICAgZGVjcnlwdGVkQmFja3VwS2V5LFxuICAgICAgICB3YWxsZXRJZDogcGFyYW1zLndhbGxldElkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBwYXJzZXMgdGhlIEpTT04gZG93bmxvYWRlZCBmcm9tIHRoZSBPVkMgZm9yIHBsYXRmb3JtIChCaXRHbyksXG4gICAqIGFuZCBjcmVhdGVzIGEgY29ycmVzcG9uZGluZyBUU1MgQml0R28ga2V5LiBJdCBhbHNvIHJldHVybnMgdGhlIEpTT04gdGhhdCBuZWVkc1xuICAgKiB0byBiZSB1cGxvYWRlZCBiYWNrIHRvIHRoZSBPVkNzIGNvbnRhaW5pbmcgdGhlIEJpdEdvIC0+IE9WQyBzaGFyZXMuXG4gICAqIEBwYXJhbSBvdmNPdXRwdXRKc29uIEpTT04gZm9ybWF0IG9mIHRoZSBmaWxlIGRvd25sb2FkZWQgZnJvbSB0aGUgT1ZDIGZvciBwbGF0Zm9ybVxuICAgKiBAcGFyYW0gZW50ZXJwcmlzZSBPcHRpb25hbCBlbnRlcnByaXNlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5XG4gICAqIEByZXR1cm5zIHtCaXRHb0tleUZyb21PdmNTaGFyZXN9XG4gICAqL1xuICBhc3luYyBjcmVhdGVUc3NCaXRHb0tleUZyb21PdmNTaGFyZXMob3ZjT3V0cHV0SnNvbjogdW5rbm93biwgZW50ZXJwcmlzZT86IHN0cmluZyk6IFByb21pc2U8Qml0R29LZXlGcm9tT3ZjU2hhcmVzPiB7XG4gICAgY29uc3QgZGVjb2RlZE92Y091dHB1dCA9IGRlY29kZU9yRWxzZShPdmNUb0JpdEdvSlNPTi5uYW1lLCBPdmNUb0JpdEdvSlNPTiwgb3ZjT3V0cHV0SnNvbiwgKGVycm9ycykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcihzKSBwYXJzaW5nIE9WQyBKU09OOiAke2Vycm9yc31gKTtcbiAgICB9KTtcblxuICAgIGlmIChkZWNvZGVkT3ZjT3V0cHV0LnN0YXRlICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRlIGV4cGVjdGVkIHRvIGJlIFwiMVwiLiBQbGVhc2UgY29tcGxldGUgdGhlIGZpcnN0IHR3byBPVkMgb3BlcmF0aW9ucycpO1xuICAgIH1cblxuICAgIC8vIE9WQy0xIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgVXNlciBrZXlcbiAgICBjb25zdCBvdmMxID0gZGVjb2RlZE92Y091dHB1dC5vdmNbMV07XG4gICAgLy8gT1ZDLTIgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBCYWNrdXAga2V5XG4gICAgY29uc3Qgb3ZjMiA9IGRlY29kZWRPdmNPdXRwdXQub3ZjWzJdO1xuXG4gICAgY29uc3Qga2V5U2hhcmVzOiBBcGlLZXlTaGFyZVtdID0gW1xuICAgICAge1xuICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICBwdWJsaWNTaGFyZTogb3ZjMS5vdmNUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgIHByaXZhdGVTaGFyZTogb3ZjMS5vdmNUb0JpdGdvU2hhcmUucHJpdmF0ZVNoYXJlLFxuICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogb3ZjMS5vdmNUb0JpdGdvU2hhcmUudVNpZy50b1N0cmluZygpID8/ICcnLFxuICAgICAgICB2c3NQcm9vZjogb3ZjMS5vdmNUb0JpdGdvU2hhcmUudnNzUHJvb2YgPz8gJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmcm9tOiAnYmFja3VwJyxcbiAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgIHB1YmxpY1NoYXJlOiBvdmMyLm92Y1RvQml0Z29TaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgcHJpdmF0ZVNoYXJlOiBvdmMyLm92Y1RvQml0Z29TaGFyZS5wcml2YXRlU2hhcmUsXG4gICAgICAgIHByaXZhdGVTaGFyZVByb29mOiBvdmMyLm92Y1RvQml0Z29TaGFyZS51U2lnLnRvU3RyaW5nKCkgPz8gJycsXG4gICAgICAgIHZzc1Byb29mOiBvdmMyLm92Y1RvQml0Z29TaGFyZS52c3NQcm9vZiA/PyAnJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKHtcbiAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgIGtleVNoYXJlcyxcbiAgICAgIGtleVR5cGU6ICd0c3MnLFxuICAgICAgdXNlckdQR1B1YmxpY0tleTogb3ZjMS5ncGdQdWJLZXksXG4gICAgICBiYWNrdXBHUEdQdWJsaWNLZXk6IG92YzIuZ3BnUHViS2V5LFxuICAgICAgZW50ZXJwcmlzZSxcbiAgICB9KTtcbiAgICBhc3NlcnQoa2V5LmtleVNoYXJlcyk7XG4gICAgYXNzZXJ0KGtleS5jb21tb25LZXljaGFpbik7XG4gICAgYXNzZXJ0KGtleS53YWxsZXRIU01HUEdQdWJsaWNLZXlTaWdzKTtcblxuICAgIGNvbnN0IGJpdGdvVG9Vc2VyU2hhcmUgPSBrZXkua2V5U2hhcmVzLmZpbmQoXG4gICAgICAodmFsdWU6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0pID0+IHZhbHVlLmZyb20gPT09ICdiaXRnbycgJiYgdmFsdWUudG8gPT09ICd1c2VyJ1xuICAgICk7XG4gICAgYXNzZXJ0KGJpdGdvVG9Vc2VyU2hhcmUpO1xuICAgIGFzc2VydChiaXRnb1RvVXNlclNoYXJlLnZzc1Byb29mKTtcbiAgICBhc3NlcnQoYml0Z29Ub1VzZXJTaGFyZS5wYWlsbGllclB1YmxpY0tleSk7XG4gICAgY29uc3QgYml0Z29Ub0JhY2t1cFNoYXJlID0ga2V5LmtleVNoYXJlcy5maW5kKFxuICAgICAgKHZhbHVlOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KSA9PiB2YWx1ZS5mcm9tID09PSAnYml0Z28nICYmIHZhbHVlLnRvID09PSAnYmFja3VwJ1xuICAgICk7XG4gICAgYXNzZXJ0KGJpdGdvVG9CYWNrdXBTaGFyZSk7XG4gICAgYXNzZXJ0KGJpdGdvVG9CYWNrdXBTaGFyZS52c3NQcm9vZik7XG4gICAgYXNzZXJ0KGJpdGdvVG9CYWNrdXBTaGFyZS5wYWlsbGllclB1YmxpY0tleSk7XG5cbiAgICAvLyBDcmVhdGUgSlNPTiBkYXRhIHdpdGggcGxhdGZvcm0gc2hhcmVzIGZvciBPVkMtMSBhbmQgT1ZDLTJcbiAgICBjb25zdCBiaXRnb1RvT3ZjT3V0cHV0OiBCaXRHb1RvT3ZjSlNPTiA9IHtcbiAgICAgIHdhbGxldDoge1xuICAgICAgICAuLi5kZWNvZGVkT3ZjT3V0cHV0LFxuICAgICAgICBwbGF0Zm9ybToge1xuICAgICAgICAgIGNvbW1vbktleWNoYWluOiBrZXkuY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgICAgd2FsbGV0R3BnUHViS2V5U2lnczoga2V5LndhbGxldEhTTUdQR1B1YmxpY0tleVNpZ3MsXG4gICAgICAgICAgb3ZjOiB7XG4gICAgICAgICAgICAvLyBCaXRHbyB0byBVc2VyIChPVkMtMSlcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgYml0Z29Ub092Y1NoYXJlOiB7XG4gICAgICAgICAgICAgICAgaTogMSxcbiAgICAgICAgICAgICAgICBqOiAzLFxuICAgICAgICAgICAgICAgIHB1YmxpY1NoYXJlOiBiaXRnb1RvVXNlclNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgICAgICAgIHByaXZhdGVTaGFyZTogYml0Z29Ub1VzZXJTaGFyZS5wcml2YXRlU2hhcmUsXG4gICAgICAgICAgICAgICAgcGFpbGxpZXJQdWJsaWNLZXk6IGJpdGdvVG9Vc2VyU2hhcmUucGFpbGxpZXJQdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgdnNzUHJvb2Y6IGJpdGdvVG9Vc2VyU2hhcmUudnNzUHJvb2YsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gQml0R28gdG8gQmFja3VwIChPVkMtMilcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgYml0Z29Ub092Y1NoYXJlOiB7XG4gICAgICAgICAgICAgICAgaTogMixcbiAgICAgICAgICAgICAgICBqOiAzLFxuICAgICAgICAgICAgICAgIHB1YmxpY1NoYXJlOiBiaXRnb1RvQmFja3VwU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZVNoYXJlOiBiaXRnb1RvQmFja3VwU2hhcmUucHJpdmF0ZVNoYXJlLFxuICAgICAgICAgICAgICAgIHBhaWxsaWVyUHVibGljS2V5OiBiaXRnb1RvQmFja3VwU2hhcmUucGFpbGxpZXJQdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgdnNzUHJvb2Y6IGJpdGdvVG9CYWNrdXBTaGFyZS52c3NQcm9vZixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIE1hcmsgaXQgcmVhZHkgZm9yIG5leHQgb3BlcmF0aW9uLCBzaG91bGQgYmUgMlxuICAgIGJpdGdvVG9PdmNPdXRwdXQud2FsbGV0LnN0YXRlICs9IDE7XG5cbiAgICBjb25zdCBvdXRwdXQ6IEJpdEdvS2V5RnJvbU92Y1NoYXJlcyA9IHtcbiAgICAgIGJpdEdvS2V5SWQ6IGtleS5pZCxcbiAgICAgIGJpdEdvT3V0cHV0SnNvbkZvck92YzogYml0Z29Ub092Y091dHB1dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShCaXRHb0tleUZyb21PdmNTaGFyZXMubmFtZSwgQml0R29LZXlGcm9tT3ZjU2hhcmVzLCBvdXRwdXQsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcHJvZHVjaW5nIHRoZSBvdXRwdXQ6ICR7ZXJyb3JzfWApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB1c2VyIGtleWNoYWluLCBlbmNyeXB0IHRoZSBwcml2YXRlIGtleSB3aXRoIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBhbmQgc3RvcmUgaXQgaW4gQml0R28uXG4gICAqIEBwYXJhbSB3YWxsZXRQYXNzcGhyYXNlXG4gICAqIEByZXR1cm5zIEtleWNoYWluIGluY2x1ZGluZyB0aGUgZGVjcnlwdGVkIHByaXZhdGUga2V5XG4gICAqL1xuICBhc3luYyBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nLFxuICAgIGVuY3J5cHRpb25WZXJzaW9uPzogRW5jcnlwdGlvblZlcnNpb24sXG4gICAgc2Vzc2lvbj86IElFbmNyeXB0aW9uU2Vzc2lvblxuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCBuZXdLZXljaGFpbiA9IGtleWNoYWlucy5jcmVhdGUoKTtcbiAgICBjb25zdCBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgPSBnZW5lcmF0ZVJhbmRvbVBhc3N3b3JkKDUpO1xuXG4gICAgLy8gV2hlbiBhIHNlc3Npb24gaXMgdGhyZWFkZWQgaW4gKHR5cGljYWxseSBmcm9tIGEgYnVsayBvcGVyYXRpb24gdGhhdCBhbHJlYWR5IHJhbiB0aGUgS0RGXG4gICAgLy8gb25jZSksIHJldXNlIGl0IHNvIHRoaXMgZW52ZWxvcGUncyBBRVMga2V5IGRlcml2ZXMgdmlhIEhLREYgaW5zdGVhZCBvZiBhbm90aGVyIEFyZ29uMi5cbiAgICBjb25zdCBlbmNyeXB0ZWRQcnYgPSBzZXNzaW9uXG4gICAgICA/IGF3YWl0IHNlc3Npb24uZW5jcnlwdChuZXdLZXljaGFpbi5wcnYpXG4gICAgICA6IGF3YWl0IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgICAgcGFzc3dvcmQ6IHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgaW5wdXQ6IG5ld0tleWNoYWluLnBydixcbiAgICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGF3YWl0IGtleWNoYWlucy5hZGQoe1xuICAgICAgICBlbmNyeXB0ZWRQcnYsXG4gICAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgICAgcHViOiBuZXdLZXljaGFpbi5wdWIsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgfSkpLFxuICAgICAgcHJ2OiBuZXdLZXljaGFpbi5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3RhdGUgYW4gb2ZjIG11bHRpLXVzZXIta2V5Y2hhaW4gYnkgcmVjcmVhdGluZyBhIG5ldyBrZXlwYWlyLCBlbmNyeXB0IGl0IHVzaW5nIHRoZSB1c2VyIHBhc3N3b3JkIGFuZCBzZW50IGl0IHRvIFdQXG4gICAqIFRoaXMgaXMgb25seSBtZWFudCB0byBiZSBjYWxsZWQgYnkgb2ZjIG11bHRpLXVzZXItd2FsbGV0J3Mga2V5LCBhbmQgd2lsbCB0aHJvdyBpZiBvdGhlcndpc2UuXG4gICAqXG4gICAqIFJlcXVpcmVzIDJmYSBhdXRoIGJlZm9yZSBjYWxsaW5nLiBDYWxsIHRoZSBiaXRnby51bmxvY2soKSBTREsgbWV0aG9kIHRvIHVubG9jayB0aGUgc2Vzc2lvbiBmaXJzdC5cbiAgICogQHBhcmFtIHBhcmFtcyBwYXJhbWV0ZXJzIGZvciB0aGUgcm90YXRlIGtleWNoYWluIG1ldGhvZFxuICAgKiBAcmV0dXJuIHJvdGF0ZWRLZXljaGFpblxuICAgKi9cbiAgYXN5bmMgcm90YXRlS2V5Y2hhaW4ocGFyYW1zOiBSb3RhdGVLZXljaGFpbk9wdGlvbnMpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3Qga2V5Q2hhaW4gPSBhd2FpdCB0aGlzLmdldCh7IGlkOiBwYXJhbXMuaWQgfSk7XG4gICAgaWYgKCFLZXljaGFpbnMuaXNNdWx0aVVzZXJLZXkoa2V5Q2hhaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJvdGF0ZUtleWNoYWluIGlzIG9ubHkgcGVybWl0dGVkIGZvciBvZmMgbXVsdGktdXNlci1rZXkgd2FsbGV0YCk7XG4gICAgfVxuXG4gICAgbGV0IHB1Yjogc3RyaW5nLCBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgICBpZiAoJ2VuY3J5cHRlZFBydicgaW4gcGFyYW1zKSB7XG4gICAgICAvLyBjbGllbnQgcGFzc2VkIGluIHB1YiBhbmQgZW5jcnlwdGVkUHJ2IGRpcmVjdGx5XG4gICAgICBwdWIgPSBwYXJhbXMucHViO1xuICAgICAgZW5jcnlwdGVkUHJ2ID0gcGFyYW1zLmVuY3J5cHRlZFBydjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYml0Z28gZ2VuZXJhdGUgcHViIGFuZCBwcnYgYW5kIGVuY3J5cHQgaXRcbiAgICAgIGNvbnN0IHsgcHViOiBrZXlQdWIsIHBydjoga2V5UHJ2IH0gPSB0aGlzLmNyZWF0ZSgpO1xuICAgICAgaWYgKCFrZXlQdWIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIGEgcHVibGljIGtleSB0byBiZSBnZW5lcmF0ZWQnKTtcbiAgICAgIH1cbiAgICAgIHB1YiA9IGtleVB1YjtcbiAgICAgIGVuY3J5cHRlZFBydiA9IGF3YWl0IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgIGlucHV0OiBrZXlQcnYsXG4gICAgICAgIHBhc3N3b3JkOiBwYXJhbXMucGFzc3dvcmQsXG4gICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iaXRnb1xuICAgICAgLnB1dCh0aGlzLmJhc2VDb2luLnVybChgL2tleS8ke3BhcmFtcy5pZH1gKSlcbiAgICAgIC5zZW5kKHtcbiAgICAgICAgZW5jcnlwdGVkUHJ2LFxuICAgICAgICBwdWIsXG4gICAgICAgIHJlcUlkOiBwYXJhbXMucmVxSWQsXG4gICAgICB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBoZWxwZXIgbWV0aG9kIHRvIGRldGVybWluZSBpZiBhIGtleWNoYWluIGlzIGEgb2ZjIG11bHRpLXVzZXIta2V5XG4gICAqIEBwYXJhbSBrZXljaGFpblxuICAgKi9cbiAgc3RhdGljIGlzTXVsdGlVc2VyS2V5KGtleWNoYWluOiBLZXljaGFpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoa2V5Y2hhaW4uY29pblNwZWNpZmljPy5vZmM/LlsnZmVhdHVyZXMnXSA/PyBbXSkuaW5jbHVkZXMoJ211bHRpLXVzZXIta2V5Jyk7XG4gIH1cbn1cbiJdfQ==
636
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvREFBNEI7QUFDNUIsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2QyxzQ0FBNEQ7QUFDNUQsd0RBSzhCO0FBQzlCLG9DQUF1RztBQW1CdkcsaURBQXVGO0FBR3ZGLE1BQWEsU0FBUztJQUlwQixZQUFZLEtBQWdCLEVBQUUsUUFBbUI7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQTBCO1FBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQThCLEVBQUU7UUFDekMsTUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELFdBQVcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUE2QjtRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDaEIsTUFBTSxNQUFNLEdBQXdCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RSxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDekMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ25DLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUM7d0JBQzlELFFBQVEsRUFBRSxHQUFHO3dCQUNiLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzt3QkFDL0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO3dCQUMvQixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO3dCQUMzQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO3FCQUM1QyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQ2pDLGlIQUFpSDt3QkFDakgsTUFBTSxvQkFBb0IsR0FDeEIsZUFBZSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7NEJBQ3pFLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRTs0QkFDcEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7d0JBQzFCLElBQUksb0JBQW9CLEVBQUUsQ0FBQzs0QkFDekIsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQzt3QkFDbkUsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCwwRUFBMEU7b0JBQzFFLDZFQUE2RTtvQkFDN0UsZ0ZBQWdGO29CQUNoRixJQUNFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7d0JBQy9DLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUMsRUFDekQsQ0FBQzt3QkFDRCxNQUFNLENBQUMsQ0FBQztvQkFDVixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUMsVUFBa0I7UUFDckMsSUFBSSxRQUF5QixDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBeUMsQ0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUE4QyxFQUFFO1FBQ2pGLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN4RyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCO2dCQUM5QyxDQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBQ3ZCLEtBQUssRUFBRSxZQUFZO29CQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVc7b0JBQzVCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDO2lCQUMxRixDQUFDLENBQUM7WUFDUCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLDRFQUE0RTtZQUM1RSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFvQixFQUFFLFVBQWtCO1FBQzFELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFNBQWlELEVBQUU7UUFDeEQsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBNkIsRUFBRTtRQUN2QyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsY0FBYyxDQUNuQixNQUFNLEVBQ04sRUFBRSxFQUNGO1lBQ0UsS0FBSztZQUNMLGNBQWM7WUFDZCxTQUFTO1lBQ1QsTUFBTTtZQUNOLFFBQVE7WUFDUixnQ0FBZ0M7WUFDaEMsWUFBWTtZQUNaLDJCQUEyQjtZQUMzQiwyQkFBMkI7WUFDM0IsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSzthQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0IsSUFBSSxDQUFDO1lBQ0osR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ2YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztZQUNyQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLDhCQUE4QixFQUFFLE1BQU0sQ0FBQyw4QkFBOEI7WUFDckUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7WUFDM0QseUJBQXlCLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtZQUMzRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1lBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUN6QyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCO1lBQzdDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1lBQ2pELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1lBQ3ZDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07U0FDdEIsQ0FBQzthQUNELE1BQU0sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBNkIsRUFBRTtRQUMvQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUV4QixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFhLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBOEIsRUFBRTtRQUNqRCxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUV6QixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RELG1GQUFtRjtZQUNuRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEIsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDZixZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzt3QkFDckMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHO3dCQUNkLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVTt3QkFDM0IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtxQkFDNUMsQ0FBQztpQkFDSCxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELHVGQUF1RjtRQUN2Rix3RkFBd0Y7UUFDeEYsZ0ZBQWdGO1FBQ2hGLHFGQUFxRjtRQUNyRiw4Q0FBOEM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsTUFBZ0QsQ0FBQztRQUNqRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLElBQUEsNkNBQTZCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0csT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFBLHlDQUF5QixFQUFDLElBQUEsNENBQTRCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUEsd0NBQXdCLEdBQUUsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBbUMsRUFBRTtRQUMzRCxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLHFCQUFhLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0YsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQXdCO1FBQ3RDLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFnQixNQUFNLElBQUksQ0FBQyxLQUFLO2FBQzlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDeEQsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN4QyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sbUJBQW1CLEdBQ3ZCLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO1FBRW5HLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixLQUFLLE9BQU8sQ0FBQztRQUNoRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5Qix1RkFBdUY7WUFDdkYsOEZBQThGO1lBQzlGLDJGQUEyRjtZQUMzRiw0RkFBNEY7WUFDNUYsTUFBTSxJQUFJLHdDQUErQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQscUZBQXFGO1FBQ3JGLG9GQUFvRjtRQUNwRixrQ0FBa0M7UUFDbEMsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDaEQsUUFBUSxHQUFHLE9BQU87Z0JBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtvQkFDYixDQUFDLENBQUMsa0JBQVUsQ0FBQyxrQkFBa0I7b0JBQy9CLENBQUMsQ0FBQyxrQkFBVSxDQUFDLGVBQWU7Z0JBQzlCLENBQUMsQ0FBQyxrQkFBVSxDQUFDLE9BQU8sQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsR0FBRyxPQUFPO2dCQUNoQixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU07b0JBQ2IsQ0FBQyxDQUFDLGtCQUFVLENBQUMsa0JBQWtCO29CQUMvQixDQUFDLENBQUMsa0JBQVUsQ0FBQyxlQUFlO2dCQUM5QixDQUFDLENBQUMsa0JBQVUsQ0FBQyxVQUFVLENBQUM7UUFDNUIsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDO1lBQ3BDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsOEJBQThCLEVBQUUsTUFBTSxDQUFDLDhCQUE4QjtZQUNyRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7WUFDM0MsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQTBCO1FBQzFDLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQztRQUUxRSxJQUFBLGdCQUFNLEVBQ0osTUFBTSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixFQUNsRCxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUM5RCxDQUFDO1FBQ0YsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUM7UUFFNUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0csTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUs7YUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxXQUFXLE1BQU0sQ0FBQyxRQUFRLG1CQUFtQixDQUFDLENBQUM7YUFDdEcsTUFBTSxFQUFFLENBQUM7UUFFWixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3pELEtBQUssRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMseUJBQXlCO1lBQ3pELFFBQVEsRUFBRSxZQUFZLENBQUMsc0JBQXNCO1NBQzlDLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNoRCxLQUFLLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQjtZQUNoRCxRQUFRLEVBQUUseUJBQXlCO1NBQ3BDLENBQUMsQ0FBQztRQUVILE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNsRCxLQUFLLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQjtZQUNsRCxRQUFRLEVBQUUseUJBQXlCO1NBQ3BDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixHQUFHLE1BQU07WUFDVCxZQUFZLEVBQUUsS0FBSztZQUNuQixRQUFRLEVBQUU7Z0JBQ1IsZ0JBQWdCO2dCQUNoQixrQkFBa0I7Z0JBQ2xCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLDhCQUE4QixDQUFDLGFBQXNCLEVBQUUsVUFBbUI7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLG9CQUFZLEVBQUMsNkJBQWMsQ0FBQyxJQUFJLEVBQUUsNkJBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLDBDQUEwQztRQUMxQyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckMsTUFBTSxTQUFTLEdBQWtCO1lBQy9CO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLEVBQUUsRUFBRSxPQUFPO2dCQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVk7Z0JBQy9DLGlCQUFpQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQzdELFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsSUFBSSxFQUFFO2FBQzlDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsRUFBRSxFQUFFLE9BQU87Z0JBQ1gsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVztnQkFDN0MsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWTtnQkFDL0MsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDN0QsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxJQUFJLEVBQUU7YUFDOUM7U0FDRixDQUFDO1FBRUYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUM5QyxNQUFNLEVBQUUsT0FBTztZQUNmLFNBQVM7WUFDVCxPQUFPLEVBQUUsS0FBSztZQUNkLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ2hDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ2xDLFVBQVU7U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RCLElBQUEsZ0JBQU0sRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0IsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3pDLENBQUMsS0FBbUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQ3ZGLENBQUM7UUFDRixJQUFBLGdCQUFNLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6QixJQUFBLGdCQUFNLEVBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsSUFBQSxnQkFBTSxFQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDM0MsQ0FBQyxLQUFtQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FDekYsQ0FBQztRQUNGLElBQUEsZ0JBQU0sRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNCLElBQUEsZ0JBQU0sRUFBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFBLGdCQUFNLEVBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3Qyw0REFBNEQ7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBbUI7WUFDdkMsTUFBTSxFQUFFO2dCQUNOLEdBQUcsZ0JBQWdCO2dCQUNuQixRQUFRLEVBQUU7b0JBQ1IsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjO29CQUNsQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMseUJBQXlCO29CQUNsRCxHQUFHLEVBQUU7d0JBQ0gsd0JBQXdCO3dCQUN4QixDQUFDLEVBQUU7NEJBQ0QsZUFBZSxFQUFFO2dDQUNmLENBQUMsRUFBRSxDQUFDO2dDQUNKLENBQUMsRUFBRSxDQUFDO2dDQUNKLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO2dDQUN6QyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsWUFBWTtnQ0FDM0MsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCO2dDQUNyRCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTs2QkFDcEM7eUJBQ0Y7d0JBQ0QsMEJBQTBCO3dCQUMxQixDQUFDLEVBQUU7NEJBQ0QsZUFBZSxFQUFFO2dDQUNmLENBQUMsRUFBRSxDQUFDO2dDQUNKLENBQUMsRUFBRSxDQUFDO2dDQUNKLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO2dDQUMzQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtnQ0FDN0MsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsaUJBQWlCO2dDQUN2RCxRQUFRLEVBQUUsa0JBQWtCLENBQUMsUUFBUTs2QkFDdEM7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixnREFBZ0Q7UUFDaEQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQTBCO1lBQ3BDLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNsQixxQkFBcUIsRUFBRSxnQkFBZ0I7U0FDeEMsQ0FBQztRQUVGLE9BQU8sSUFBQSxvQkFBWSxFQUFDLG9DQUFxQixDQUFDLElBQUksRUFBRSxvQ0FBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN4RixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLGdCQUF3QixFQUN4QixpQkFBcUMsRUFDckMsT0FBNEI7UUFFNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkMsTUFBTSw4QkFBOEIsR0FBRyxJQUFBLDhCQUFzQixFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpFLDBGQUEwRjtRQUMxRix5RkFBeUY7UUFDekYsTUFBTSxZQUFZLEdBQUcsT0FBTztZQUMxQixDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDeEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDdEIsaUJBQWlCO2FBQ2xCLENBQUMsQ0FBQztRQUVQLE9BQU87WUFDTCxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUN0QixZQUFZO2dCQUNaLDhCQUE4QjtnQkFDOUIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHO2dCQUNwQixNQUFNLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQztZQUNILEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRztTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQTZCO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsSUFBSSxHQUFXLEVBQUUsWUFBb0IsQ0FBQztRQUN0QyxJQUFJLGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUM3QixpREFBaUQ7WUFDakQsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDakIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTiw0Q0FBNEM7WUFDNUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNiLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN0QyxLQUFLLEVBQUUsTUFBTTtnQkFDYixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7YUFDNUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMzQyxJQUFJLENBQUM7WUFDSixZQUFZO1lBQ1osR0FBRztZQUNILEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztTQUNwQixDQUFDO2FBQ0QsTUFBTSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFrQjtRQUN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0Y7QUFucEJELDhCQW1wQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUc3NTZXR0aW5ncyB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgY29tbW9uIGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4sIEtleWNoYWluc1RyaXBsZXQsIEtleVBhaXIgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgU2FmZU1wY0NlcmVtb255VW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQge1xuICBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5LFxuICBlbmNvZGVEZXJpdmFibGVFZDI1NTE5UHViLFxuICBnZW5lcmF0ZUVkMjU1MTlDaGFpbkNvZGUsXG4gIGlzVmFsaWRFZDI1NTE5U3RyS2V5UHVibGljS2V5LFxufSBmcm9tICdAYml0Z28vc2RrLWxpYi1zYWZlcyc7XG5pbXBvcnQgeyBkZWNvZGVPckVsc2UsIEVDRFNBVXRpbHMsIEVERFNBVXRpbHMsIGdlbmVyYXRlUmFuZG9tUGFzc3dvcmQsIFJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBBZGRLZXljaGFpbk9wdGlvbnMsXG4gIEFwaUtleVNoYXJlLFxuICBDaGFuZ2VkS2V5Y2hhaW5zLFxuICBDcmVhdGVCYWNrdXBPcHRpb25zLFxuICBDcmVhdGVCaXRHb09wdGlvbnMsXG4gIENyZWF0ZU1wY09wdGlvbnMsXG4gIEdldEtleWNoYWluT3B0aW9ucyxcbiAgR2V0S2V5c0ZvclNpZ25pbmdPcHRpb25zLFxuICBJS2V5Y2hhaW5zLFxuICBLZXljaGFpbixcbiAgTGlzdEtleWNoYWluT3B0aW9ucyxcbiAgTGlzdEtleWNoYWluc1Jlc3VsdCxcbiAgUmVjcmVhdGVNcGNPcHRpb25zLFxuICBSb3RhdGVLZXljaGFpbk9wdGlvbnMsXG4gIFVwZGF0ZVBhc3N3b3JkT3B0aW9ucyxcbiAgVXBkYXRlU2luZ2xlS2V5Y2hhaW5QYXNzd29yZE9wdGlvbnMsXG59IGZyb20gJy4vaUtleWNoYWlucyc7XG5pbXBvcnQgeyBCaXRHb0tleUZyb21PdmNTaGFyZXMsIEJpdEdvVG9PdmNKU09OLCBPdmNUb0JpdEdvSlNPTiB9IGZyb20gJy4vb3ZjSnNvbkNvZGVjJztcbmltcG9ydCB7IEVuY3J5cHRpb25WZXJzaW9uLCBJRW5jcnlwdGlvblNlc3Npb24gfSBmcm9tICcuLi8uLi9hcGknO1xuXG5leHBvcnQgY2xhc3MgS2V5Y2hhaW5zIGltcGxlbWVudHMgSUtleWNoYWlucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29pbjogSUJhc2VDb2luO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5iYXNlQ29pbiA9IGJhc2VDb2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleWNoYWluIGJ5IElEXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5pZFxuICAgKiBAcGFyYW0gcGFyYW1zLnhwdWIgKG9wdGlvbmFsKVxuICAgKiBAcGFyYW0gcGFyYW1zLmV0aEFkZHJlc3MgKG9wdGlvbmFsKVxuICAgKiBAcGFyYW0gcGFyYW1zLnJlcUlkIChvcHRpb25hbClcbiAgICovXG4gIGFzeW5jIGdldChwYXJhbXM6IEdldEtleWNoYWluT3B0aW9ucyk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgWyd4cHViJywgJ2V0aEFkZHJlc3MnXSk7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbXMuaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkO1xuICAgIGlmIChwYXJhbXMucmVxSWQpIHtcbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihwYXJhbXMucmVxSWQpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iYXNlQ29pbi51cmwoJy9rZXkvJyArIGVuY29kZVVSSUNvbXBvbmVudChpZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0IHRoZSB1c2VycyBrZXljaGFpbnNcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gcGFyYW1zLmxpbWl0IC0gTWF4IG51bWJlciBvZiByZXN1bHRzIGluIGEgc2luZ2xlIGNhbGwuXG4gICAqIEBwYXJhbSBwYXJhbXMucHJldklkIC0gQ29udGludWUgaXRlcmF0aW5nIChwcm92aWRlZCBieSBuZXh0QmF0Y2hQcmV2SWQgaW4gdGhlIHByZXZpb3VzIGxpc3QpXG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgYXN5bmMgbGlzdChwYXJhbXM6IExpc3RLZXljaGFpbk9wdGlvbnMgPSB7fSk6IFByb21pc2U8TGlzdEtleWNoYWluc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHF1ZXJ5T2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXMubGltaXQpKSB7XG4gICAgICBpZiAoIV8uaXNOdW1iZXIocGFyYW1zLmxpbWl0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbGltaXQgYXJndW1lbnQsIGV4cGVjdGluZyBudW1iZXInKTtcbiAgICAgIH1cbiAgICAgIHF1ZXJ5T2JqZWN0LmxpbWl0ID0gcGFyYW1zLmxpbWl0O1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFyYW1zLnByZXZJZCkpIHtcbiAgICAgIGlmICghXy5pc1N0cmluZyhwYXJhbXMucHJldklkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJldklkIGFyZ3VtZW50LCBleHBlY3Rpbmcgc3RyaW5nJyk7XG4gICAgICB9XG4gICAgICBxdWVyeU9iamVjdC5wcmV2SWQgPSBwYXJhbXMucHJldklkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJpdGdvLmdldCh0aGlzLmJhc2VDb2luLnVybCgnL2tleScpKS5xdWVyeShxdWVyeU9iamVjdCkucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBkZWNyeXB0aW9uIHBhc3N3b3JkIGZvciBhbGwgcG9zc2libGUga2V5Y2hhaW5zIGFzc29jaWF0ZWQgd2l0aCBhIHVzZXIuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBhbGwga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIsIGRlY3J5cHRzXG4gICAqIHRoZW0gd2l0aCB0aGUgb2xkIHBhc3N3b3JkIGFuZCByZS1lbmNyeXB0cyB0aGVtIHdpdGggdGhlIG5ldyBwYXNzd29yZC5cbiAgICpcbiAgICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgbG9naW4gcGFzc3dvcmQsIGFuZCBhcmUgZXhwZWN0aW5nXG4gICAqIHRoYXQgdGhlaXIgd2FsbGV0IHBhc3N3b3JkcyBhcmUgY2hhbmdlZCB0byBtYXRjaCB0aGUgbmV3IGxvZ2luIHBhc3N3b3JkLlxuICAgKlxuICAgKiBLZXljaGFpbnMgdGhhdCBjYW5ub3QgYmUgZGVjcnlwdGVkIHdpdGggYG9sZFBhc3N3b3JkYCBhcmUgc2lsZW50bHkgc2tpcHBlZFxuICAgKiAoYWJzZW50IGZyb20gdGhlIHJlc3VsdCk6IHdyb25nIHBhc3N3b3JkLCBhIGRpZmZlcmVudCBwYXNzcGhyYXNlLCBvclxuICAgKiBjb3JydXB0IGlucHV0LiBBbiBlbXB0eSByZXN1bHQgaXMgbm90IGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMub2xkUGFzc3dvcmQgLSBUaGUgb2xkIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhlIGtleVxuICAgKiBAcGFyYW0gcGFyYW1zLm5ld1Bhc3N3b3JkIC0gVGhlIG5ldyBwYXNzd29yZCB0byBiZSB1c2VkIGZvciBlbmNyeXB0aW5nIHRoZSBrZXlcbiAgICogQHJldHVybnMgY2hhbmdlZEtleXMgT2JqZWN0IC0gZS5nLjpcbiAgICogIHtcbiAgICogICAgeHB1YjE6IGVuY3J5cHRlZFBydixcbiAgICogICAgLi4uXG4gICAqICB9XG4gICAqL1xuICBhc3luYyB1cGRhdGVQYXNzd29yZChwYXJhbXM6IFVwZGF0ZVBhc3N3b3JkT3B0aW9ucyk6IFByb21pc2U8Q2hhbmdlZEtleWNoYWlucz4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnb2xkUGFzc3dvcmQnLCAnbmV3UGFzc3dvcmQnXSwgW10pO1xuICAgIGNvbnN0IGNoYW5nZWRLZXlzOiBDaGFuZ2VkS2V5Y2hhaW5zID0ge307XG4gICAgbGV0IHByZXZJZDtcbiAgICBsZXQga2V5c0xlZnQgPSB0cnVlO1xuICAgIHdoaWxlIChrZXlzTGVmdCkge1xuICAgICAgY29uc3QgcmVzdWx0OiBMaXN0S2V5Y2hhaW5zUmVzdWx0ID0gYXdhaXQgdGhpcy5saXN0KHsgbGltaXQ6IDUwMCwgcHJldklkIH0pO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgcmVzdWx0LmtleXMpIHtcbiAgICAgICAgY29uc3Qgb2xkRW5jcnlwdGVkUHJ2ID0ga2V5LmVuY3J5cHRlZFBydjtcbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQob2xkRW5jcnlwdGVkUHJ2KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZEtleWNoYWluID0gYXdhaXQgdGhpcy51cGRhdGVTaW5nbGVLZXljaGFpblBhc3N3b3JkKHtcbiAgICAgICAgICAgIGtleWNoYWluOiBrZXksXG4gICAgICAgICAgICBvbGRQYXNzd29yZDogcGFyYW1zLm9sZFBhc3N3b3JkLFxuICAgICAgICAgICAgbmV3UGFzc3dvcmQ6IHBhcmFtcy5uZXdQYXNzd29yZCxcbiAgICAgICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAgICAgICBlbmNyeXB0aW9uU2Vzc2lvbjogcGFyYW1zLmVuY3J5cHRpb25TZXNzaW9uLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh1cGRhdGVkS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgICAgICAgICAvLyBCb3RoIFRTUyBhbmQgbXVsdGktdXNlci1vZmMga2V5cyBoYXZlIG11bHRpcGxlIHB1YmxpYyBrZXlzIGluIHRoZWlyIGtleSBkb2N1bWVudCBhbmQgdGh1cyBuZWVkIHRvIHVzZSBvYmplY3RJRFxuICAgICAgICAgICAgY29uc3QgY2hhbmdlZEtleUlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICB1cGRhdGVkS2V5Y2hhaW4udHlwZSA9PT0gJ3RzcycgfHwgS2V5Y2hhaW5zLmlzTXVsdGlVc2VyS2V5KHVwZGF0ZWRLZXljaGFpbilcbiAgICAgICAgICAgICAgICA/IHVwZGF0ZWRLZXljaGFpbi5pZFxuICAgICAgICAgICAgICAgIDogdXBkYXRlZEtleWNoYWluLnB1YjtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VkS2V5SWRlbnRpZmllcikge1xuICAgICAgICAgICAgICBjaGFuZ2VkS2V5c1tjaGFuZ2VkS2V5SWRlbnRpZmllcl0gPSB1cGRhdGVkS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIEEgZGVjcnlwdCBmYWlsdXJlIGlzIHVzdWFsbHkgbm90IGEgd3JvbmcgcGFzc3dvcmQg4oCUIHRoZSBrZXljaGFpbiBtYXkgYmVcbiAgICAgICAgICAvLyBlbmNyeXB0ZWQgdW5kZXIgYSBkaWZmZXJlbnQgcGFzc3BocmFzZS4gdXBkYXRlU2luZ2xlS2V5Y2hhaW5QYXNzd29yZCB3cmFwc1xuICAgICAgICAgIC8vIHN1Y2ggZmFpbHVyZXMgYXMgJ2ZhaWxlZCB0byB1cGRhdGUga2V5Y2hhaW4gcGFzc3dvcmQ6IC4uLic7IHJldGhyb3cgdGhlIHJlc3QuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWUubWVzc2FnZS5pbmNsdWRlcygncHJpdmF0ZSBrZXkgaXMgaW5jb3JyZWN0JykgJiZcbiAgICAgICAgICAgICFlLm1lc3NhZ2UuaW5jbHVkZXMoJ2ZhaWxlZCB0byB1cGRhdGUga2V5Y2hhaW4gcGFzc3dvcmQnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQubmV4dEJhdGNoUHJldklkKSB7XG4gICAgICAgIHByZXZJZCA9IHJlc3VsdC5uZXh0QmF0Y2hQcmV2SWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzTGVmdCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZEtleXM7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBlbmNyeXB0aW9uIHZlcnNpb24gb2YgYSBjaXBoZXJ0ZXh0IGJ5IGluc3BlY3RpbmcgaXRzIFwidlwiIGZpZWxkLlxuICAgKiAgIC0gdjEgKFNKQ0wgLyBQQktERjItU0hBMjU2ICsgQUVTLTI1Ni1DQ00pOiBcInZcIiBhYnNlbnQgb3IgZXhwbGljaXRseSAxXG4gICAqICAgLSB2MiAoQXJnb24yaWQgKyBBRVMtMjU2LUdDTSk6IFwidlwiID09PSAyXG4gICAqIFRocm93cyBvbiB1bnJlY29nbml6ZWQgdmFsdWVzIHNvIGNhbGxlcnMgY2Fubm90IHNpbGVudGx5IG1pcy1oYW5kbGUgdW5rbm93biBlbnZlbG9wZXMuXG4gICAqL1xuICBnZXRFbmNyeXB0aW9uVmVyc2lvbihjaXBoZXJ0ZXh0OiBzdHJpbmcpOiBFbmNyeXB0aW9uVmVyc2lvbiB7XG4gICAgbGV0IGVudmVsb3BlOiB7IHY/OiB1bmtub3duIH07XG4gICAgdHJ5IHtcbiAgICAgIGVudmVsb3BlID0gSlNPTi5wYXJzZShjaXBoZXJ0ZXh0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBjaXBoZXJ0ZXh0IGVudmVsb3BlOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAoZW52ZWxvcGUudiA9PT0gMikge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIGlmIChlbnZlbG9wZS52ID09PSB1bmRlZmluZWQgfHwgZW52ZWxvcGUudiA9PT0gMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gdmVyc2lvbjogJHtTdHJpbmcoZW52ZWxvcGUudil9YCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwYXNzd29yZCB1c2VkIHRvIGRlY3J5cHQgYSBzaW5nbGUga2V5Y2hhaW4uIERlZmF1bHRzIHRvIHByZXNlcnZpbmcgdGhlXG4gICAqIHNvdXJjZSBlbnZlbG9wZSB2ZXJzaW9uICh2MSBzdGF5cyB2MSwgdjIgc3RheXMgdjIpLCBzbyB0aGlzIGlzIGEgbm8tb3Agd2l0aCByZXNwZWN0IHRvXG4gICAqIGVuY3J5cHRpb24gdmVyc2lvbiB1bmxlc3MgdGhlIGNhbGxlciBvcHRzIGluLiBQYXNzIGBlbmNyeXB0aW9uVmVyc2lvbjogMmAgdG8gZXhwbGljaXRseVxuICAgKiB1cGdyYWRlIGEgdjEgKFNKQ0wpIGtleWNoYWluIHRvIHYyIChBcmdvbjJpZCArIEFFUy0yNTYtR0NNKSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZCBjaGFuZ2VcbiAgICogKGUuZy4gb25jZSBhIGNhbGxlciBpcyByZWFkeSwgYWZ0ZXIgdGhlIFNlcHQgMTUgYnJlYWtpbmctY2hhbmdlIHdpbmRvdyBjbG9zZXMpLlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW4gLSBUaGUga2V5Y2hhaW4gd2hvc2UgcGFzc3dvcmQgc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHBhcmFtcy5vbGRQYXNzd29yZCAtIFRoZSBvbGQgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUga2V5XG4gICAqIEBwYXJhbSBwYXJhbXMubmV3UGFzc3dvcmQgLSBUaGUgbmV3IHBhc3N3b3JkIHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhlIGtleVxuICAgKiBAcGFyYW0gcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uIC0gT3B0aW9uYWwgZW52ZWxvcGUgdmVyc2lvbiB0byBlbWl0OyBkZWZhdWx0cyB0byB0aGUgc291cmNlIGVudmVsb3BlJ3MgdmVyc2lvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXljaGFpbj59XG4gICAqL1xuICBhc3luYyB1cGRhdGVTaW5nbGVLZXljaGFpblBhc3N3b3JkKHBhcmFtczogVXBkYXRlU2luZ2xlS2V5Y2hhaW5QYXNzd29yZE9wdGlvbnMgPSB7fSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBpZiAoIV8uaXNTdHJpbmcocGFyYW1zLm9sZFBhc3N3b3JkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvbGQgcGFzc3dvcmQgdG8gYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcocGFyYW1zLm5ld1Bhc3N3b3JkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBuZXcgcGFzc3dvcmQgdG8gYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNPYmplY3QocGFyYW1zLmtleWNoYWluKSB8fCAhXy5pc1N0cmluZyhwYXJhbXMua2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBrZXljaGFpbiB0byBiZSBhbiBvYmplY3Qgd2l0aCBhbiBlbmNyeXB0ZWRQcnYgcHJvcGVydHknKTtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRFbmNyeXB0ZWRQcnYgPSBwYXJhbXMua2V5Y2hhaW4uZW5jcnlwdGVkUHJ2O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoeyBpbnB1dDogb2xkRW5jcnlwdGVkUHJ2LCBwYXNzd29yZDogcGFyYW1zLm9sZFBhc3N3b3JkIH0pO1xuICAgICAgY29uc3QgbmV3RW5jcnlwdGVkUHJ2ID0gcGFyYW1zLmVuY3J5cHRpb25TZXNzaW9uXG4gICAgICAgID8gYXdhaXQgcGFyYW1zLmVuY3J5cHRpb25TZXNzaW9uLmVuY3J5cHQoZGVjcnlwdGVkUHJ2KVxuICAgICAgICA6IGF3YWl0IHRoaXMuYml0Z28uZW5jcnlwdCh7XG4gICAgICAgICAgICBpbnB1dDogZGVjcnlwdGVkUHJ2LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy5uZXdQYXNzd29yZCxcbiAgICAgICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24gPz8gdGhpcy5nZXRFbmNyeXB0aW9uVmVyc2lvbihvbGRFbmNyeXB0ZWRQcnYpLFxuICAgICAgICAgIH0pO1xuICAgICAgcmV0dXJuIF8uYXNzaWduKHt9LCBwYXJhbXMua2V5Y2hhaW4sIHsgZW5jcnlwdGVkUHJ2OiBuZXdFbmNyeXB0ZWRQcnYgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZGVjcnlwdGlvbiBmYWlsZWQ6IHdyb25nIHBhc3N3b3JkLCBkaWZmZXJlbnQgcGFzc3BocmFzZSwgb3IgY29ycnVwdCBpbnB1dFxuICAgICAgY29uc3QgZXJyb3JEZXRhaWwgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byB1cGRhdGUga2V5Y2hhaW4gcGFzc3dvcmQ6ICR7ZXJyb3JEZXRhaWx9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlY3J5cHQgYW4gZW5jcnlwdGVkIHByaXZhdGUga2V5IHdpdGggYHBhc3NwaHJhc2VgIGFuZCByZS1lbmNyeXB0IGl0IGFzIGEgdjJcbiAgICogKEFyZ29uMmlkICsgQUVTLTI1Ni1HQ00pIGVudmVsb3BlIHdpdGggdGhlIHNhbWUgcGFzc3BocmFzZS5cbiAgICpcbiAgICogVXNlZCB0byB1cGdyYWRlIGxlZ2FjeSB2MSAoU0pDTCkgZW52ZWxvcGVzIHRvIHYyIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBhc3NwaHJhc2UuXG4gICAqIENhbGxlcnMgdGhhdCBuZWVkIHRvIHRyeSBhIGZhbGxiYWNrIHBhc3NwaHJhc2UgKGUuZy4gYW4gb3JpZ2luYWwgcGFzc3BocmFzZSBmcm9tXG4gICAqIGJlZm9yZSBhIHBhc3N3b3JkIHJvdGF0aW9uKSBzaG91bGQgaGFuZGxlIHRoYXQgdGhlbXNlbHZlcyDigJQgdGhpcyBwcmltaXRpdmUgZG9lcyBvbmVcbiAgICogdGhpbmcgYW5kIGxldHMgZGVjcnlwdGlvbiBlcnJvcnMgc3VyZmFjZSBkaXJlY3RseS5cbiAgICovXG4gIGFzeW5jIHJlZW5jcnlwdEFzVjIoZW5jcnlwdGVkUHJ2OiBzdHJpbmcsIHBhc3NwaHJhc2U6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJ2ID0gYXdhaXQgdGhpcy5iaXRnby5kZWNyeXB0KHsgaW5wdXQ6IGVuY3J5cHRlZFBydiwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UgfSk7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uZW5jcnlwdCh7IGlucHV0OiBwcnYsIHBhc3N3b3JkOiBwYXNzcGhyYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFpclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gb3B0aW9uYWwgcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMuc2VlZCBvcHRpb25hbCAtIHNlZWQgdG8gdXNlIGZvciBrZXlwYWlyIGdlbmVyYXRpb25cbiAgICogQHBhcmFtIHBhcmFtcy5pc1Jvb3RLZXkgb3B0aW9uYWwgLSB3aGV0aGVyIHRoZSByZXN1bHRpbmcga2V5cGFpciBzaG91bGQgYmUgYSByb290IGtleVxuICAgKiBAcmV0dXJucyB7S2V5UGFpcn0gLSB0aGUgZ2VuZXJhdGVkIGtleXBhaXJcbiAgICovXG4gIGNyZWF0ZShwYXJhbXM6IHsgc2VlZD86IEJ1ZmZlcjsgaXNSb290S2V5PzogYm9vbGVhbiB9ID0ge30pOiBLZXlQYWlyIHtcbiAgICBpZiAocGFyYW1zPy5pc1Jvb3RLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmJhc2VDb2luLmdlbmVyYXRlUm9vdEtleVBhaXIocGFyYW1zLnNlZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi5nZW5lcmF0ZUtleVBhaXIocGFyYW1zLnNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGtleWNoYWluIHRvIEJpdEdvJ3MgcmVjb3Jkc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBhZGQocGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7fSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gICAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKFxuICAgICAgcGFyYW1zLFxuICAgICAgW10sXG4gICAgICBbXG4gICAgICAgICdwdWInLFxuICAgICAgICAnZW5jcnlwdGVkUHJ2JyxcbiAgICAgICAgJ2tleVR5cGUnLFxuICAgICAgICAndHlwZScsXG4gICAgICAgICdzb3VyY2UnLFxuICAgICAgICAnb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlJyxcbiAgICAgICAgJ2VudGVycHJpc2UnLFxuICAgICAgICAnZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCcsXG4gICAgICAgICdkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoJyxcbiAgICAgICAgJ3BhcmVudCcsXG4gICAgICAgICdzYWZlSWQnLFxuICAgICAgXVxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFyYW1zLmRpc2FibGVLUlNFbWFpbCkpIHtcbiAgICAgIGlmICghXy5pc0Jvb2xlYW4ocGFyYW1zLmRpc2FibGVLUlNFbWFpbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGRpc2FibGVLUlNFbWFpbCBhcmd1bWVudCwgZXhwZWN0aW5nIGJvb2xlYW4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnJlcUlkKSB7XG4gICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocGFyYW1zLnJlcUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iYXNlQ29pbi51cmwoJy9rZXknKSlcbiAgICAgIC5zZW5kKHtcbiAgICAgICAgcHViOiBwYXJhbXMucHViLFxuICAgICAgICBjb21tb25QdWI6IHBhcmFtcy5jb21tb25QdWIsXG4gICAgICAgIGNvbW1vbktleWNoYWluOiBwYXJhbXMuY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgIGVuY3J5cHRlZFBydjogcGFyYW1zLmVuY3J5cHRlZFBydixcbiAgICAgICAgdHlwZTogcGFyYW1zLnR5cGUsXG4gICAgICAgIGtleVR5cGU6IHBhcmFtcy5rZXlUeXBlLFxuICAgICAgICBzb3VyY2U6IHBhcmFtcy5zb3VyY2UsXG4gICAgICAgIHByb3ZpZGVyOiBwYXJhbXMucHJvdmlkZXIsXG4gICAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgICAgZW50ZXJwcmlzZTogcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICAgIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQ6IHBhcmFtcy5kZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBwYXJhbXMuZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aCxcbiAgICAgICAgcGFyZW50OiBwYXJhbXMucGFyZW50LFxuICAgICAgICBkaXNhYmxlS1JTRW1haWw6IHBhcmFtcy5kaXNhYmxlS1JTRW1haWwsXG4gICAgICAgIGtyc1NwZWNpZmljOiBwYXJhbXMua3JzU3BlY2lmaWMsXG4gICAgICAgIGtleVNoYXJlczogcGFyYW1zLmtleVNoYXJlcyxcbiAgICAgICAgdXNlckdQR1B1YmxpY0tleTogcGFyYW1zLnVzZXJHUEdQdWJsaWNLZXksXG4gICAgICAgIGJhY2t1cEdQR1B1YmxpY0tleTogcGFyYW1zLmJhY2t1cEdQR1B1YmxpY0tleSxcbiAgICAgICAgYWxnb1VzZWQ6IHBhcmFtcy5hbGdvVXNlZCxcbiAgICAgICAgaXNEaXN0cmlidXRlZEN1c3RvZHk6IHBhcmFtcy5pc0Rpc3RyaWJ1dGVkQ3VzdG9keSxcbiAgICAgICAgaXNNUEN2MjogcGFyYW1zLmlzTVBDdjIsXG4gICAgICAgIGNvaW5TcGVjaWZpYzogcGFyYW1zLmNvaW5TcGVjaWZpYyxcbiAgICAgICAgd2ViYXV0aG5EZXZpY2VzOiBwYXJhbXMud2ViYXV0aG5EZXZpY2VzLFxuICAgICAgICB3ZWJhdXRobkluZm86IHBhcmFtcy53ZWJhdXRobkluZm8sXG4gICAgICAgIHNhZmVJZDogcGFyYW1zLnNhZmVJZCxcbiAgICAgIH0pXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgQml0R28ga2V5XG4gICAqIEBwYXJhbSBwYXJhbXMgKGVtcHR5KVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQml0R28ocGFyYW1zOiBDcmVhdGVCaXRHb09wdGlvbnMgPSB7fSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBwYXJhbXMuc291cmNlID0gJ2JpdGdvJztcblxuICAgIHRoaXMuYmFzZUNvaW4ucHJlQ3JlYXRlQml0R28ocGFyYW1zIGFzIGFueSk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYWRkKHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYmFja3VwIGtleVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMucHJvdmlkZXIgKG9wdGlvbmFsKVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQmFja3VwKHBhcmFtczogQ3JlYXRlQmFja3VwT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHBhcmFtcy5zb3VyY2UgPSAnYmFja3VwJztcblxuICAgIGNvbnN0IGlzVHNzQmFja3VwS2V5ID0gcGFyYW1zLnBydiAmJiAocGFyYW1zLmNvbW1vbktleWNoYWluIHx8IHBhcmFtcy5jb21tb25QdWIpO1xuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1zLnByb3ZpZGVyKSAmJiAhaXNUc3NCYWNrdXBLZXkpIHtcbiAgICAgIC8vIGlmIHRoZSBwcm92aWRlciBpcyB1bmRlZmluZWQsIHdlIGdlbmVyYXRlIGEgbG9jYWwga2V5IGFuZCBhZGQgdGhlIHNvdXJjZSBkZXRhaWxzXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmNyZWF0ZSgpO1xuICAgICAgXy5leHRlbmQocGFyYW1zLCBrZXkpO1xuICAgICAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgXy5leHRlbmQocGFyYW1zLCB7XG4gICAgICAgICAgZW5jcnlwdGVkUHJ2OiBhd2FpdCB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICAgICAgaW5wdXQ6IGtleS5wcnYsXG4gICAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbjogcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWxsZXQgU2FmZXMgdjEgc2xvdCDikaMgKGBlZDI1NTE5TXVsdGlzaWdgKTogc3RvcmUgbmV1dHJhbCByYXcgZGVyaXZhdGlvbiBtYXRlcmlhbCBhc1xuICAgIC8vIHB1YmxpY0tleTMyIHx8IGNoYWluQ29kZTMyLCBzZXJpYWxpemVkIHRvZ2V0aGVyIGFzIGNhbm9uaWNhbCB1bnBhZGRlZCBSRkMgNDY0OCBiYXNlMzJcbiAgICAvLyAoZXhhY3RseSAxMDMgdXBwZXJjYXNlIGNoYXJhY3RlcnMpLiBUaGUgcm9vdCBpcyBkZWxpYmVyYXRlbHkgbm90IGVuY29kZWQgYXMgYVxuICAgIC8vIFN0ZWxsYXIvQWxnb3JhbmQvSEJBUiBwdWJsaWMga2V5OyBjb2luLXNwZWNpZmljIGVuY29kaW5nIGhhcHBlbnMgYWZ0ZXIgcHVibGljIHNvZnRcbiAgICAvLyBkZXJpdmF0aW9uIHdoZW4gdGhlIHdhbGxldCBjaGlsZCBpcyBtaW50ZWQuXG4gICAgY29uc3Qgd2l0aEtleSA9IHBhcmFtcyBhcyBDcmVhdGVCYWNrdXBPcHRpb25zICYgeyBwdWI/OiBzdHJpbmcgfTtcbiAgICBpZiAocGFyYW1zLnNhZmVJZCAhPT0gdW5kZWZpbmVkICYmIHdpdGhLZXkucHViICE9PSB1bmRlZmluZWQgJiYgaXNWYWxpZEVkMjU1MTlTdHJLZXlQdWJsaWNLZXkod2l0aEtleS5wdWIpKSB7XG4gICAgICB3aXRoS2V5LnB1YiA9IGVuY29kZURlcml2YWJsZUVkMjU1MTlQdWIoZGVjb2RlRWQyNTUxOVN0cktleVB1YmxpY0tleSh3aXRoS2V5LnB1YiksIGdlbmVyYXRlRWQyNTUxOUNoYWluQ29kZSgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXJ2ZXJSZXNwb25zZSA9IGF3YWl0IHRoaXMuYWRkKHBhcmFtcyk7XG4gICAgcmV0dXJuIF8uZXh0ZW5kKHt9LCBzZXJ2ZXJSZXNwb25zZSwgXy5waWNrKHBhcmFtcywgWydwcnYnLCAnZW5jcnlwdGVkUHJ2JywgJ3Byb3ZpZGVyJywgJ3NvdXJjZSddKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBrZXlzIGZvciBzaWduaW5nIGZyb20gYSB3YWxsZXRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXljaGFpbltdPn1cbiAgICovXG4gIGFzeW5jIGdldEtleXNGb3JTaWduaW5nKHBhcmFtczogR2V0S2V5c0ZvclNpZ25pbmdPcHRpb25zID0ge30pOiBQcm9taXNlPEtleWNoYWluW10+IHtcbiAgICBpZiAoIV8uaXNPYmplY3QocGFyYW1zLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBwYXJhbSB3YWxsZXQnKTtcbiAgICB9XG4gICAgY29uc3Qgd2FsbGV0ID0gcGFyYW1zLndhbGxldDtcbiAgICBjb25zdCByZXFJZCA9IHBhcmFtcy5yZXFJZCB8fCBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGNvbnN0IGlkcyA9IHdhbGxldC5iYXNlQ29pbi5rZXlJZHNGb3JTaWduaW5nKCk7XG4gICAgY29uc3Qga2V5Y2hhaW5RdWVyaWVzQmx1ZWJpcmRzID0gaWRzLm1hcCgoaWQpID0+IHRoaXMuZ2V0KHsgaWQ6IHdhbGxldC5rZXlJZHMoKVtpZF0sIHJlcUlkIH0pKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoa2V5Y2hhaW5RdWVyaWVzQmx1ZWJpcmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgYW5kIHN0b3JlIE1QQyBrZXljaGFpbnMgd2l0aCBCaXRHby5cbiAgICogQHBhcmFtIHBhcmFtcyBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCBzZWNyZXQgbWF0ZXJpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8S2V5Y2hhaW5zVHJpcGxldD59IG5ld2x5IGNyZWF0ZWQgVXNlciwgQmFja3VwLCBhbmQgQml0R28ga2V5c1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlTXBjKHBhcmFtczogQ3JlYXRlTXBjT3B0aW9ucyk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGlmIChwYXJhbXMubXVsdGlzaWdUeXBlICE9PSAndHNzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBtdWx0aS1zaWcgdHlwZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHRzc1NldHRpbmdzOiBUc3NTZXR0aW5ncyA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKCcvYXBpL3YyL3Rzcy9zZXR0aW5ncycpKVxuICAgICAgLnF1ZXJ5KHsgZW50ZXJwcmlzZTogcGFyYW1zLmVudGVycHJpc2UgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgICBjb25zdCBtdWx0aXNpZ1R5cGVWZXJzaW9uID1cbiAgICAgIHRzc1NldHRpbmdzLmNvaW5TZXR0aW5nc1t0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpXT8ud2FsbGV0Q3JlYXRpb25TZXR0aW5ncz8ubXVsdGlTaWdUeXBlVmVyc2lvbjtcblxuICAgIGNvbnN0IGlzTVBDdjIgPSBtdWx0aXNpZ1R5cGVWZXJzaW9uID09PSAnTVBDdjInO1xuICAgIGlmIChwYXJhbXMuc2FmZUlkICYmICFpc01QQ3YyKSB7XG4gICAgICAvLyBUaGUgbGVnYWN5IE1QQ3YxIGNlcmVtb25pZXMgYWNjZXB0IGEgc2FmZUlkIGZvciBzaWduYXR1cmUgY29tcGF0aWJpbGl0eSBidXQgc2lsZW50bHlcbiAgICAgIC8vIGlnbm9yZSBpdCAoc2VlIEVERFNBVXRpbHMuZGVmYXVsdC5jcmVhdGVLZXljaGFpbnMgLyBFQ0RTQVV0aWxzLkVjZHNhVXRpbHMuY3JlYXRlS2V5Y2hhaW5zKSxcbiAgICAgIC8vIHNvIHRoZSByZXN1bHRpbmcga2V5cyBuZXZlciBnZXQgdGFnZ2VkIHdpdGggdGhlIHNhZmUgYW5kIFdQJ3MgZmluYWxpemUgc3RlcCByZWplY3RzIHRoZW1cbiAgICAgIC8vIHdpdGggYSBnZW5lcmljIDQwMC4gRmFpbCBmYXN0IGhlcmUgaW5zdGVhZCBvZiBsZXR0aW5nIHRoYXQgY29uZnVzaW5nIGVycm9yIHN1cmZhY2UgbGF0ZXIuXG4gICAgICB0aHJvdyBuZXcgU2FmZU1wY0NlcmVtb255VW5zdXBwb3J0ZWRFcnJvcih0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpKTtcbiAgICB9XG5cbiAgICAvLyBBIHNhZmVJZCBvbiBhIGtleWdlbiBjZXJlbW9ueSBzZWxlY3RzIHRoZSBWUkYgdmFyaWFudCwgd2hpY2ggYWRkaXRpb25hbGx5IHJ1bnMgdGhlXG4gICAgLy8gVlJGIERLRyBhbG9uZ3NpZGUgdGhlIHNpZ25pbmcgREtHLiBPcmRpbmFyeSBUU1Mgd2FsbGV0IGNyZWF0aW9uIG5ldmVyIHNldHMgc2FmZUlkXG4gICAgLy8gYW5kIGtlZXBzIHRoZSBwbGFpbiBNUEN2MiBmbG93LlxuICAgIGxldCBNcGNVdGlscztcbiAgICBpZiAodGhpcy5iYXNlQ29pbi5nZXRNUENBbGdvcml0aG0oKSA9PT0gJ2VkZHNhJykge1xuICAgICAgTXBjVXRpbHMgPSBpc01QQ3YyXG4gICAgICAgID8gcGFyYW1zLnNhZmVJZFxuICAgICAgICAgID8gRUREU0FVdGlscy5FZGRzYVZyZk1QQ3YyVXRpbHNcbiAgICAgICAgICA6IEVERFNBVXRpbHMuRWRkc2FNUEN2MlV0aWxzXG4gICAgICAgIDogRUREU0FVdGlscy5kZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICBNcGNVdGlscyA9IGlzTVBDdjJcbiAgICAgICAgPyBwYXJhbXMuc2FmZUlkXG4gICAgICAgICAgPyBFQ0RTQVV0aWxzLkVjZHNhVnJmTVBDdjJVdGlsc1xuICAgICAgICAgIDogRUNEU0FVdGlscy5FY2RzYU1QQ3YyVXRpbHNcbiAgICAgICAgOiBFQ0RTQVV0aWxzLkVjZHNhVXRpbHM7XG4gICAgfVxuXG4gICAgY29uc3QgbXBjVXRpbHMgPSBuZXcgTXBjVXRpbHModGhpcy5iaXRnbywgdGhpcy5iYXNlQ29pbik7XG4gICAgcmV0dXJuIGF3YWl0IG1wY1V0aWxzLmNyZWF0ZUtleWNoYWlucyh7XG4gICAgICBwYXNzcGhyYXNlOiBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIGVudGVycHJpc2U6IHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgcmV0cm9maXQ6IHBhcmFtcy5yZXRyb2ZpdCxcbiAgICAgIHdlYmF1dGhuSW5mbzogcGFyYW1zLndlYmF1dGhuSW5mbyxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICBzYWZlSWQ6IHBhcmFtcy5zYWZlSWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWNyZWF0ZU1wYyhwYXJhbXM6IFJlY3JlYXRlTXBjT3B0aW9ucyk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGFzc2VydChwYXJhbXMuY29pbiwgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGNvaW4nKSk7XG4gICAgYXNzZXJ0KHBhcmFtcy53YWxsZXRJZCwgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIHdhbGxldElkJykpO1xuICAgIGFzc2VydChwYXJhbXMub3RwLCBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gb3RwJykpO1xuICAgIGFzc2VydChwYXJhbXMucGFzc3BocmFzZSwgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIHBhc3NwaHJhc2UnKSk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBwYXJhbXMuZW5jcnlwdGVkTWF0ZXJpYWwuZW5jcnlwdGVkV2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBwYXJhbSBlbmNyeXB0ZWRXYWxsZXRQYXNzcGhyYXNlJylcbiAgICApO1xuICAgIGFzc2VydChwYXJhbXMuZW5jcnlwdGVkTWF0ZXJpYWwuZW5jcnlwdGVkVXNlcktleSwgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtIGVuY3J5cHRlZFVzZXJLZXknKSk7XG4gICAgYXNzZXJ0KHBhcmFtcy5lbmNyeXB0ZWRNYXRlcmlhbC5lbmNyeXB0ZWRCYWNrdXBLZXksIG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBwYXJhbSBlbmNyeXB0ZWRCYWNrdXBLZXknKSk7XG5cbiAgICBhd2FpdCB0aGlzLmJpdGdvLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKCcvYXBpL3YxL3VzZXIvdW5sb2NrJykpLnNlbmQoeyBvdHA6IHBhcmFtcy5vdHAgfSkucmVzdWx0KCk7XG4gICAgY29uc3QgeyByZWNvdmVyeUluZm8gfSA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChgL2FwaS92Mi8ke3BhcmFtcy5jb2lufS93YWxsZXQvJHtwYXJhbXMud2FsbGV0SWR9L3Bhc3Njb2RlcmVjb3ZlcnlgKSlcbiAgICAgIC5yZXN1bHQoKTtcblxuICAgIGlmICghcmVjb3ZlcnlJbmZvIHx8ICEoJ3Bhc3Njb2RlRW5jcnlwdGlvbkNvZGUnIGluIHJlY292ZXJ5SW5mbykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGdldCByZWNvdmVyeSBpbmZvJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdGVkV2FsbGV0UGFzc3BocmFzZSA9IGF3YWl0IHRoaXMuYml0Z28uZGVjcnlwdCh7XG4gICAgICBpbnB1dDogcGFyYW1zLmVuY3J5cHRlZE1hdGVyaWFsLmVuY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcmVjb3ZlcnlJbmZvLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRVc2VyS2V5ID0gYXdhaXQgdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXJhbXMuZW5jcnlwdGVkTWF0ZXJpYWwuZW5jcnlwdGVkVXNlcktleSxcbiAgICAgIHBhc3N3b3JkOiBkZWNyeXB0ZWRXYWxsZXRQYXNzcGhyYXNlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVjcnlwdGVkQmFja3VwS2V5ID0gYXdhaXQgdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXJhbXMuZW5jcnlwdGVkTWF0ZXJpYWwuZW5jcnlwdGVkQmFja3VwS2V5LFxuICAgICAgcGFzc3dvcmQ6IGRlY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVNcGMoe1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgbXVsdGlzaWdUeXBlOiAndHNzJyxcbiAgICAgIHJldHJvZml0OiB7XG4gICAgICAgIGRlY3J5cHRlZFVzZXJLZXksXG4gICAgICAgIGRlY3J5cHRlZEJhY2t1cEtleSxcbiAgICAgICAgd2FsbGV0SWQ6IHBhcmFtcy53YWxsZXRJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSXQgcGFyc2VzIHRoZSBKU09OIGRvd25sb2FkZWQgZnJvbSB0aGUgT1ZDIGZvciBwbGF0Zm9ybSAoQml0R28pLFxuICAgKiBhbmQgY3JlYXRlcyBhIGNvcnJlc3BvbmRpbmcgVFNTIEJpdEdvIGtleS4gSXQgYWxzbyByZXR1cm5zIHRoZSBKU09OIHRoYXQgbmVlZHNcbiAgICogdG8gYmUgdXBsb2FkZWQgYmFjayB0byB0aGUgT1ZDcyBjb250YWluaW5nIHRoZSBCaXRHbyAtPiBPVkMgc2hhcmVzLlxuICAgKiBAcGFyYW0gb3ZjT3V0cHV0SnNvbiBKU09OIGZvcm1hdCBvZiB0aGUgZmlsZSBkb3dubG9hZGVkIGZyb20gdGhlIE9WQyBmb3IgcGxhdGZvcm1cbiAgICogQHBhcmFtIGVudGVycHJpc2UgT3B0aW9uYWwgZW50ZXJwcmlzZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGtleVxuICAgKiBAcmV0dXJucyB7Qml0R29LZXlGcm9tT3ZjU2hhcmVzfVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVHNzQml0R29LZXlGcm9tT3ZjU2hhcmVzKG92Y091dHB1dEpzb246IHVua25vd24sIGVudGVycHJpc2U/OiBzdHJpbmcpOiBQcm9taXNlPEJpdEdvS2V5RnJvbU92Y1NoYXJlcz4ge1xuICAgIGNvbnN0IGRlY29kZWRPdmNPdXRwdXQgPSBkZWNvZGVPckVsc2UoT3ZjVG9CaXRHb0pTT04ubmFtZSwgT3ZjVG9CaXRHb0pTT04sIG92Y091dHB1dEpzb24sIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IocykgcGFyc2luZyBPVkMgSlNPTjogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZGVjb2RlZE92Y091dHB1dC5zdGF0ZSAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0ZSBleHBlY3RlZCB0byBiZSBcIjFcIi4gUGxlYXNlIGNvbXBsZXRlIHRoZSBmaXJzdCB0d28gT1ZDIG9wZXJhdGlvbnMnKTtcbiAgICB9XG5cbiAgICAvLyBPVkMtMSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIFVzZXIga2V5XG4gICAgY29uc3Qgb3ZjMSA9IGRlY29kZWRPdmNPdXRwdXQub3ZjWzFdO1xuICAgIC8vIE9WQy0yIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgQmFja3VwIGtleVxuICAgIGNvbnN0IG92YzIgPSBkZWNvZGVkT3ZjT3V0cHV0Lm92Y1syXTtcblxuICAgIGNvbnN0IGtleVNoYXJlczogQXBpS2V5U2hhcmVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgZnJvbTogJ3VzZXInLFxuICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgcHVibGljU2hhcmU6IG92YzEub3ZjVG9CaXRnb1NoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICBwcml2YXRlU2hhcmU6IG92YzEub3ZjVG9CaXRnb1NoYXJlLnByaXZhdGVTaGFyZSxcbiAgICAgICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IG92YzEub3ZjVG9CaXRnb1NoYXJlLnVTaWcudG9TdHJpbmcoKSA/PyAnJyxcbiAgICAgICAgdnNzUHJvb2Y6IG92YzEub3ZjVG9CaXRnb1NoYXJlLnZzc1Byb29mID8/ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICBwdWJsaWNTaGFyZTogb3ZjMi5vdmNUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgIHByaXZhdGVTaGFyZTogb3ZjMi5vdmNUb0JpdGdvU2hhcmUucHJpdmF0ZVNoYXJlLFxuICAgICAgICBwcml2YXRlU2hhcmVQcm9vZjogb3ZjMi5vdmNUb0JpdGdvU2hhcmUudVNpZy50b1N0cmluZygpID8/ICcnLFxuICAgICAgICB2c3NQcm9vZjogb3ZjMi5vdmNUb0JpdGdvU2hhcmUudnNzUHJvb2YgPz8gJycsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpLmFkZCh7XG4gICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICBrZXlTaGFyZXMsXG4gICAgICBrZXlUeXBlOiAndHNzJyxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IG92YzEuZ3BnUHViS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiBvdmMyLmdwZ1B1YktleSxcbiAgICAgIGVudGVycHJpc2UsXG4gICAgfSk7XG4gICAgYXNzZXJ0KGtleS5rZXlTaGFyZXMpO1xuICAgIGFzc2VydChrZXkuY29tbW9uS2V5Y2hhaW4pO1xuICAgIGFzc2VydChrZXkud2FsbGV0SFNNR1BHUHVibGljS2V5U2lncyk7XG5cbiAgICBjb25zdCBiaXRnb1RvVXNlclNoYXJlID0ga2V5LmtleVNoYXJlcy5maW5kKFxuICAgICAgKHZhbHVlOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KSA9PiB2YWx1ZS5mcm9tID09PSAnYml0Z28nICYmIHZhbHVlLnRvID09PSAndXNlcidcbiAgICApO1xuICAgIGFzc2VydChiaXRnb1RvVXNlclNoYXJlKTtcbiAgICBhc3NlcnQoYml0Z29Ub1VzZXJTaGFyZS52c3NQcm9vZik7XG4gICAgYXNzZXJ0KGJpdGdvVG9Vc2VyU2hhcmUucGFpbGxpZXJQdWJsaWNLZXkpO1xuICAgIGNvbnN0IGJpdGdvVG9CYWNrdXBTaGFyZSA9IGtleS5rZXlTaGFyZXMuZmluZChcbiAgICAgICh2YWx1ZTogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSkgPT4gdmFsdWUuZnJvbSA9PT0gJ2JpdGdvJyAmJiB2YWx1ZS50byA9PT0gJ2JhY2t1cCdcbiAgICApO1xuICAgIGFzc2VydChiaXRnb1RvQmFja3VwU2hhcmUpO1xuICAgIGFzc2VydChiaXRnb1RvQmFja3VwU2hhcmUudnNzUHJvb2YpO1xuICAgIGFzc2VydChiaXRnb1RvQmFja3VwU2hhcmUucGFpbGxpZXJQdWJsaWNLZXkpO1xuXG4gICAgLy8gQ3JlYXRlIEpTT04gZGF0YSB3aXRoIHBsYXRmb3JtIHNoYXJlcyBmb3IgT1ZDLTEgYW5kIE9WQy0yXG4gICAgY29uc3QgYml0Z29Ub092Y091dHB1dDogQml0R29Ub092Y0pTT04gPSB7XG4gICAgICB3YWxsZXQ6IHtcbiAgICAgICAgLi4uZGVjb2RlZE92Y091dHB1dCxcbiAgICAgICAgcGxhdGZvcm06IHtcbiAgICAgICAgICBjb21tb25LZXljaGFpbjoga2V5LmNvbW1vbktleWNoYWluLFxuICAgICAgICAgIHdhbGxldEdwZ1B1YktleVNpZ3M6IGtleS53YWxsZXRIU01HUEdQdWJsaWNLZXlTaWdzLFxuICAgICAgICAgIG92Yzoge1xuICAgICAgICAgICAgLy8gQml0R28gdG8gVXNlciAoT1ZDLTEpXG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgIGJpdGdvVG9PdmNTaGFyZToge1xuICAgICAgICAgICAgICAgIGk6IDEsXG4gICAgICAgICAgICAgICAgajogMyxcbiAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogYml0Z29Ub1VzZXJTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlU2hhcmU6IGJpdGdvVG9Vc2VyU2hhcmUucHJpdmF0ZVNoYXJlLFxuICAgICAgICAgICAgICAgIHBhaWxsaWVyUHVibGljS2V5OiBiaXRnb1RvVXNlclNoYXJlLnBhaWxsaWVyUHVibGljS2V5LFxuICAgICAgICAgICAgICAgIHZzc1Byb29mOiBiaXRnb1RvVXNlclNoYXJlLnZzc1Byb29mLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIEJpdEdvIHRvIEJhY2t1cCAoT1ZDLTIpXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgIGJpdGdvVG9PdmNTaGFyZToge1xuICAgICAgICAgICAgICAgIGk6IDIsXG4gICAgICAgICAgICAgICAgajogMyxcbiAgICAgICAgICAgICAgICBwdWJsaWNTaGFyZTogYml0Z29Ub0JhY2t1cFNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgICAgICAgIHByaXZhdGVTaGFyZTogYml0Z29Ub0JhY2t1cFNoYXJlLnByaXZhdGVTaGFyZSxcbiAgICAgICAgICAgICAgICBwYWlsbGllclB1YmxpY0tleTogYml0Z29Ub0JhY2t1cFNoYXJlLnBhaWxsaWVyUHVibGljS2V5LFxuICAgICAgICAgICAgICAgIHZzc1Byb29mOiBiaXRnb1RvQmFja3VwU2hhcmUudnNzUHJvb2YsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBNYXJrIGl0IHJlYWR5IGZvciBuZXh0IG9wZXJhdGlvbiwgc2hvdWxkIGJlIDJcbiAgICBiaXRnb1RvT3ZjT3V0cHV0LndhbGxldC5zdGF0ZSArPSAxO1xuXG4gICAgY29uc3Qgb3V0cHV0OiBCaXRHb0tleUZyb21PdmNTaGFyZXMgPSB7XG4gICAgICBiaXRHb0tleUlkOiBrZXkuaWQsXG4gICAgICBiaXRHb091dHB1dEpzb25Gb3JPdmM6IGJpdGdvVG9PdmNPdXRwdXQsXG4gICAgfTtcblxuICAgIHJldHVybiBkZWNvZGVPckVsc2UoQml0R29LZXlGcm9tT3ZjU2hhcmVzLm5hbWUsIEJpdEdvS2V5RnJvbU92Y1NoYXJlcywgb3V0cHV0LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHByb2R1Y2luZyB0aGUgb3V0cHV0OiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdXNlciBrZXljaGFpbiwgZW5jcnlwdCB0aGUgcHJpdmF0ZSBrZXkgd2l0aCB0aGUgd2FsbGV0IHBhc3NwaHJhc2UgYW5kIHN0b3JlIGl0IGluIEJpdEdvLlxuICAgKiBAcGFyYW0gd2FsbGV0UGFzc3BocmFzZVxuICAgKiBAcmV0dXJucyBLZXljaGFpbiBpbmNsdWRpbmcgdGhlIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVXNlcktleWNoYWluKFxuICAgIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uLFxuICAgIHNlc3Npb24/OiBJRW5jcnlwdGlvblNlc3Npb25cbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGtleWNoYWlucyA9IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCk7XG4gICAgY29uc3QgbmV3S2V5Y2hhaW4gPSBrZXljaGFpbnMuY3JlYXRlKCk7XG4gICAgY29uc3Qgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlID0gZ2VuZXJhdGVSYW5kb21QYXNzd29yZCg1KTtcblxuICAgIC8vIFdoZW4gYSBzZXNzaW9uIGlzIHRocmVhZGVkIGluICh0eXBpY2FsbHkgZnJvbSBhIGJ1bGsgb3BlcmF0aW9uIHRoYXQgYWxyZWFkeSByYW4gdGhlIEtERlxuICAgIC8vIG9uY2UpLCByZXVzZSBpdCBzbyB0aGlzIGVudmVsb3BlJ3MgQUVTIGtleSBkZXJpdmVzIHZpYSBIS0RGIGluc3RlYWQgb2YgYW5vdGhlciBBcmdvbjIuXG4gICAgY29uc3QgZW5jcnlwdGVkUHJ2ID0gc2Vzc2lvblxuICAgICAgPyBhd2FpdCBzZXNzaW9uLmVuY3J5cHQobmV3S2V5Y2hhaW4ucHJ2KVxuICAgICAgOiBhd2FpdCB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICAgIHBhc3N3b3JkOiB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIGlucHV0OiBuZXdLZXljaGFpbi5wcnYsXG4gICAgICAgICAgZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihhd2FpdCBrZXljaGFpbnMuYWRkKHtcbiAgICAgICAgZW5jcnlwdGVkUHJ2LFxuICAgICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICAgIHB1YjogbmV3S2V5Y2hhaW4ucHViLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIH0pKSxcbiAgICAgIHBydjogbmV3S2V5Y2hhaW4ucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUm90YXRlIGFuIG9mYyBtdWx0aS11c2VyLWtleWNoYWluIGJ5IHJlY3JlYXRpbmcgYSBuZXcga2V5cGFpciwgZW5jcnlwdCBpdCB1c2luZyB0aGUgdXNlciBwYXNzd29yZCBhbmQgc2VudCBpdCB0byBXUFxuICAgKiBUaGlzIGlzIG9ubHkgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IG9mYyBtdWx0aS11c2VyLXdhbGxldCdzIGtleSwgYW5kIHdpbGwgdGhyb3cgaWYgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBSZXF1aXJlcyAyZmEgYXV0aCBiZWZvcmUgY2FsbGluZy4gQ2FsbCB0aGUgYml0Z28udW5sb2NrKCkgU0RLIG1ldGhvZCB0byB1bmxvY2sgdGhlIHNlc3Npb24gZmlyc3QuXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVycyBmb3IgdGhlIHJvdGF0ZSBrZXljaGFpbiBtZXRob2RcbiAgICogQHJldHVybiByb3RhdGVkS2V5Y2hhaW5cbiAgICovXG4gIGFzeW5jIHJvdGF0ZUtleWNoYWluKHBhcmFtczogUm90YXRlS2V5Y2hhaW5PcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGtleUNoYWluID0gYXdhaXQgdGhpcy5nZXQoeyBpZDogcGFyYW1zLmlkIH0pO1xuICAgIGlmICghS2V5Y2hhaW5zLmlzTXVsdGlVc2VyS2V5KGtleUNoYWluKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGByb3RhdGVLZXljaGFpbiBpcyBvbmx5IHBlcm1pdHRlZCBmb3Igb2ZjIG11bHRpLXVzZXIta2V5IHdhbGxldGApO1xuICAgIH1cblxuICAgIGxldCBwdWI6IHN0cmluZywgZW5jcnlwdGVkUHJ2OiBzdHJpbmc7XG4gICAgaWYgKCdlbmNyeXB0ZWRQcnYnIGluIHBhcmFtcykge1xuICAgICAgLy8gY2xpZW50IHBhc3NlZCBpbiBwdWIgYW5kIGVuY3J5cHRlZFBydiBkaXJlY3RseVxuICAgICAgcHViID0gcGFyYW1zLnB1YjtcbiAgICAgIGVuY3J5cHRlZFBydiA9IHBhcmFtcy5lbmNyeXB0ZWRQcnY7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGJpdGdvIGdlbmVyYXRlIHB1YiBhbmQgcHJ2IGFuZCBlbmNyeXB0IGl0XG4gICAgICBjb25zdCB7IHB1Yjoga2V5UHViLCBwcnY6IGtleVBydiB9ID0gdGhpcy5jcmVhdGUoKTtcbiAgICAgIGlmICgha2V5UHViKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCBhIHB1YmxpYyBrZXkgdG8gYmUgZ2VuZXJhdGVkJyk7XG4gICAgICB9XG4gICAgICBwdWIgPSBrZXlQdWI7XG4gICAgICBlbmNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICBpbnB1dDoga2V5UHJ2LFxuICAgICAgICBwYXNzd29yZDogcGFyYW1zLnBhc3N3b3JkLFxuICAgICAgICBlbmNyeXB0aW9uVmVyc2lvbjogcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYml0Z29cbiAgICAgIC5wdXQodGhpcy5iYXNlQ29pbi51cmwoYC9rZXkvJHtwYXJhbXMuaWR9YCkpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIGVuY3J5cHRlZFBydixcbiAgICAgICAgcHViLFxuICAgICAgICByZXFJZDogcGFyYW1zLnJlcUlkLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgaGVscGVyIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgYSBrZXljaGFpbiBpcyBhIG9mYyBtdWx0aS11c2VyLWtleVxuICAgKiBAcGFyYW0ga2V5Y2hhaW5cbiAgICovXG4gIHN0YXRpYyBpc011bHRpVXNlcktleShrZXljaGFpbjogS2V5Y2hhaW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGtleWNoYWluLmNvaW5TcGVjaWZpYz8ub2ZjPy5bJ2ZlYXR1cmVzJ10gPz8gW10pLmluY2x1ZGVzKCdtdWx0aS11c2VyLWtleScpO1xuICB9XG59XG4iXX0=
@@ -32,8 +32,8 @@ export interface CreateSafeWalletOptions {
32
32
  passphrase: string;
33
33
  type?: 'hot';
34
34
  /**
35
- * `onchain` (default) mints a secp256k1 multisig wallet; `tss` mints an MPC
36
- * wallet by deriving child keys from the safe's MPC roots.
35
+ * Mint scheme: `onchain` (default) uses the independent multisig root slot for the coin's
36
+ * curve; `tss` uses the MPC root slot. Independent of the coin's default wallet multisig type.
37
37
  */
38
38
  multisigType?: 'onchain' | 'tss';
39
39
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pU2FmZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoZSBzYWZlIGNsaWVudCBzdXJmYWNlIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGNoYW5nZSAoaW5jbHVkaW5nIGJyZWFraW5nXG4gKiBjaGFuZ2VzKSBiZWZvcmUgdGhlIHB1YmxpYyByZWxlYXNlLlxuICovXG4vLyBXaXJlL2RhdGEgc2hhcGVzIGFyZSBvd25lZCBieSBAYml0Z28vcHVibGljLXR5cGVzIOKAlCBpbXBvcnQgdGhlbSB3aGVyZSBuZWVkZWQgcmF0aGVyIHRoYW5cbi8vIHJlLWV4cG9ydGluZyBmcm9tIHNkay1jb3JlLlxuaW1wb3J0IHR5cGUge1xuICBGcmVlemVTYWZlQm9keSxcbiAgU2FmZURhdGEsXG4gIFNhZmVQZXJtaXNzaW9uLFxuICBTYWZlUm9vdEtleXMsXG4gIFNhZmVTaGFyZURhdGEsXG4gIFNhZmVTaGFyZUtleWNoYWluLFxuICBTYWZlU2hhcmVTdGF0ZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldCwgV2FsbGV0U2hhcmUgfSBmcm9tICcuLi93YWxsZXQnO1xuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTYWZlT3B0aW9ucyB7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGhhc2UgMyDigJQgdGhlIGNsaWVudCBoYW5kcyBiYWNrIHRoZSAxMiBrZXkgaWRzIGl0IGNyZWF0ZWQgaW4gUGhhc2UgMi5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5hbGl6ZVNhZmVPcHRpb25zIHtcbiAgcm9vdEtleXM6IFNhZmVSb290S2V5cztcbn1cblxuLyoqXG4gKiBTaGFyaW5nIE9ORSBzYWZlIHdhbGxldCB3aXRoIGEgbm9uLW1lbWJlciByaWRlcyB0aGUgZXhpc3Rpbmcgd2FsbGV0LXNoYXJlIGhhbmRzaGFrZSxcbiAqIHNvIHRoZSByZXN1bHQgaXMgdGhlIGV4aXN0aW5nIFdhbGxldFNoYXJlIHNoYXBlLlxuICovXG5leHBvcnQgdHlwZSBXYWxsZXRTaGFyZURhdGEgPSBXYWxsZXRTaGFyZTtcblxuLy8gLS0tLSBwZXItc2FmZSBvcGVyYXRpb24gb3B0aW9ucyAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2FmZVdhbGxldE9wdGlvbnMge1xuICBjb2luOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgdHlwZT86ICdob3QnO1xuICAvKipcbiAgICogYG9uY2hhaW5gIChkZWZhdWx0KSBtaW50cyBhIHNlY3AyNTZrMSBtdWx0aXNpZyB3YWxsZXQ7IGB0c3NgIG1pbnRzIGFuIE1QQ1xuICAgKiB3YWxsZXQgYnkgZGVyaXZpbmcgY2hpbGQga2V5cyBmcm9tIHRoZSBzYWZlJ3MgTVBDIHJvb3RzLlxuICAgKi9cbiAgbXVsdGlzaWdUeXBlPzogJ29uY2hhaW4nIHwgJ3Rzcyc7XG59XG5cbmludGVyZmFjZSBBZGRTYWZlTWVtYmVyQmFzZSB7XG4gIHBlcm1pc3Npb25zOiBTYWZlUGVybWlzc2lvbltdO1xuICAvKiogcmVxdWlyZWQgd2hlbiAnc3BlbmQnIGlzIGluY2x1ZGVkIOKAlCB0aGUgNCByb290IHVzZXIga2V5cyBFQ0RILXJlLWVuY3J5cHRlZCB0byB0aGUgaW52aXRlZSAqL1xuICBrZXljaGFpbnM/OiBTYWZlU2hhcmVLZXljaGFpbltdO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICAvKiogd2hlbiB0cnVlLCBzdXBwcmVzcyB0aGUgaW52aXRhdGlvbiBlbWFpbCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBzZW50IHRvIGBlbWFpbGAgKi9cbiAgZGlzYWJsZUVtYWlsPzogYm9vbGVhbjtcbn1cblxuLyoqIEFkZCBhIG1lbWJlciBieSBlaXRoZXIgYHVzZXJJZGAgb3IgYGVtYWlsYCDigJQgZXhhY3RseSBvbmUgaXMgcmVxdWlyZWQuICovXG5leHBvcnQgdHlwZSBBZGRTYWZlTWVtYmVyT3B0aW9ucyA9XG4gIHwgKEFkZFNhZmVNZW1iZXJCYXNlICYgeyB1c2VySWQ6IHN0cmluZzsgZW1haWw/OiBuZXZlciB9KVxuICB8IChBZGRTYWZlTWVtYmVyQmFzZSAmIHsgZW1haWw6IHN0cmluZzsgdXNlcklkPzogbmV2ZXIgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2FmZVdhbGxldE1lbWJlck9wdGlvbnMge1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICAvKiogcmVxdWlyZWQg4oCUIHNoYXJpbmcgcmUtZW5jcnlwdHMgdGhlIHVzZXIga2V5LCB3aGljaCBuZWVkcyBoYXJkZW5lZCBkZXJpdmF0aW9uIGZyb20gdGhlIHBhc3NwaHJhc2UgKi9cbiAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWNjZXB0U2FmZVNoYXJlQXNTcGVuZGVyT3B0aW9ucyA9IHtcbiAgc2FmZVNoYXJlSWQ6IHN0cmluZztcbiAgdXNlclBhc3N3b3JkOiBzdHJpbmc7XG4gIG5ld1dhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQWNjZXB0U2FmZVNoYXJlQXNOb25TcGVuZGVyT3B0aW9ucyA9IHtcbiAgc2FmZVNoYXJlSWQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBBY2NlcHRTYWZlU2hhcmVPcHRpb25zID0gQWNjZXB0U2FmZVNoYXJlQXNTcGVuZGVyT3B0aW9ucyB8IEFjY2VwdFNhZmVTaGFyZUFzTm9uU3BlbmRlck9wdGlvbnM7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTYWZlIHtcbiAgaWQoKTogc3RyaW5nO1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nO1xuICBsYWJlbCgpOiBzdHJpbmc7XG4gIHN0YXR1cygpOiBTYWZlRGF0YVsnc3RhdHVzJ107XG4gIHVybChleHRyYT86IHN0cmluZyk6IHN0cmluZztcbiAgY3JlYXRlV2FsbGV0KHBhcmFtczogQ3JlYXRlU2FmZVdhbGxldE9wdGlvbnMpOiBQcm9taXNlPFdhbGxldD47XG4gIHVwZGF0ZShwYXJhbXM6IFVwZGF0ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIC8vIHdob2xlLXNhZmU6IHZpZXcvYWRtaW4vc3BlbmQvZGFwcDsgc3BlbmQgb3BlbnMgYSBrZXkgc2hhcmUgKGFsc28gaG93IGEgc3BlbmRlciBzZXJ2aWNlcyBhXG4gIC8vIHNhZmVTaGFyZVJlcXVlc3RzIGVudHJ5IGluIFVNUyBvcmdzKVxuICBhZGRNZW1iZXIocGFyYW1zOiBBZGRTYWZlTWVtYmVyT3B0aW9ucyk6IFByb21pc2U8U2FmZURhdGE+O1xuICAvLyBzaGFyZSBPTkUgc2FmZSB3YWxsZXQsIG5vdCB0aGUgd2hvbGUgc2FmZVxuICBhZGRNZW1iZXJUb1dhbGxldChwYXJhbXM6IEFkZFNhZmVXYWxsZXRNZW1iZXJPcHRpb25zKTogUHJvbWlzZTxXYWxsZXRTaGFyZURhdGE+O1xuICBsaXN0U2hhcmVzKHBhcmFtcz86IHsgc3RhdGU/OiBTYWZlU2hhcmVTdGF0ZSB9KTogUHJvbWlzZTxTYWZlU2hhcmVEYXRhW10+O1xuICBhY2NlcHRTaGFyZShwYXJhbXM6IEFjY2VwdFNhZmVTaGFyZU9wdGlvbnMpOiBQcm9taXNlPFNhZmVTaGFyZURhdGE+O1xuICBmcmVlemUocGFyYW1zPzogRnJlZXplU2FmZUJvZHkpOiBQcm9taXNlPFNhZmVEYXRhPjtcbiAgYXJjaGl2ZSgpOiBQcm9taXNlPFNhZmVEYXRhPjtcbiAgdG9KU09OKCk6IFNhZmVEYXRhO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pU2FmZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoZSBzYWZlIGNsaWVudCBzdXJmYWNlIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGNoYW5nZSAoaW5jbHVkaW5nIGJyZWFraW5nXG4gKiBjaGFuZ2VzKSBiZWZvcmUgdGhlIHB1YmxpYyByZWxlYXNlLlxuICovXG4vLyBXaXJlL2RhdGEgc2hhcGVzIGFyZSBvd25lZCBieSBAYml0Z28vcHVibGljLXR5cGVzIOKAlCBpbXBvcnQgdGhlbSB3aGVyZSBuZWVkZWQgcmF0aGVyIHRoYW5cbi8vIHJlLWV4cG9ydGluZyBmcm9tIHNkay1jb3JlLlxuaW1wb3J0IHR5cGUge1xuICBGcmVlemVTYWZlQm9keSxcbiAgU2FmZURhdGEsXG4gIFNhZmVQZXJtaXNzaW9uLFxuICBTYWZlUm9vdEtleXMsXG4gIFNhZmVTaGFyZURhdGEsXG4gIFNhZmVTaGFyZUtleWNoYWluLFxuICBTYWZlU2hhcmVTdGF0ZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldCwgV2FsbGV0U2hhcmUgfSBmcm9tICcuLi93YWxsZXQnO1xuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKiogQGV4cGVyaW1lbnRhbCAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTYWZlT3B0aW9ucyB7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGhhc2UgMyDigJQgdGhlIGNsaWVudCBoYW5kcyBiYWNrIHRoZSAxMiBrZXkgaWRzIGl0IGNyZWF0ZWQgaW4gUGhhc2UgMi5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5hbGl6ZVNhZmVPcHRpb25zIHtcbiAgcm9vdEtleXM6IFNhZmVSb290S2V5cztcbn1cblxuLyoqXG4gKiBTaGFyaW5nIE9ORSBzYWZlIHdhbGxldCB3aXRoIGEgbm9uLW1lbWJlciByaWRlcyB0aGUgZXhpc3Rpbmcgd2FsbGV0LXNoYXJlIGhhbmRzaGFrZSxcbiAqIHNvIHRoZSByZXN1bHQgaXMgdGhlIGV4aXN0aW5nIFdhbGxldFNoYXJlIHNoYXBlLlxuICovXG5leHBvcnQgdHlwZSBXYWxsZXRTaGFyZURhdGEgPSBXYWxsZXRTaGFyZTtcblxuLy8gLS0tLSBwZXItc2FmZSBvcGVyYXRpb24gb3B0aW9ucyAtLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2FmZVdhbGxldE9wdGlvbnMge1xuICBjb2luOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgdHlwZT86ICdob3QnO1xuICAvKipcbiAgICogTWludCBzY2hlbWU6IGBvbmNoYWluYCAoZGVmYXVsdCkgdXNlcyB0aGUgaW5kZXBlbmRlbnQgbXVsdGlzaWcgcm9vdCBzbG90IGZvciB0aGUgY29pbidzXG4gICAqIGN1cnZlOyBgdHNzYCB1c2VzIHRoZSBNUEMgcm9vdCBzbG90LiBJbmRlcGVuZGVudCBvZiB0aGUgY29pbidzIGRlZmF1bHQgd2FsbGV0IG11bHRpc2lnIHR5cGUuXG4gICAqL1xuICBtdWx0aXNpZ1R5cGU/OiAnb25jaGFpbicgfCAndHNzJztcbn1cblxuaW50ZXJmYWNlIEFkZFNhZmVNZW1iZXJCYXNlIHtcbiAgcGVybWlzc2lvbnM6IFNhZmVQZXJtaXNzaW9uW107XG4gIC8qKiByZXF1aXJlZCB3aGVuICdzcGVuZCcgaXMgaW5jbHVkZWQg4oCUIHRoZSA0IHJvb3QgdXNlciBrZXlzIEVDREgtcmUtZW5jcnlwdGVkIHRvIHRoZSBpbnZpdGVlICovXG4gIGtleWNoYWlucz86IFNhZmVTaGFyZUtleWNoYWluW107XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiB3aGVuIHRydWUsIHN1cHByZXNzIHRoZSBpbnZpdGF0aW9uIGVtYWlsIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHNlbnQgdG8gYGVtYWlsYCAqL1xuICBkaXNhYmxlRW1haWw/OiBib29sZWFuO1xufVxuXG4vKiogQWRkIGEgbWVtYmVyIGJ5IGVpdGhlciBgdXNlcklkYCBvciBgZW1haWxgIOKAlCBleGFjdGx5IG9uZSBpcyByZXF1aXJlZC4gKi9cbmV4cG9ydCB0eXBlIEFkZFNhZmVNZW1iZXJPcHRpb25zID1cbiAgfCAoQWRkU2FmZU1lbWJlckJhc2UgJiB7IHVzZXJJZDogc3RyaW5nOyBlbWFpbD86IG5ldmVyIH0pXG4gIHwgKEFkZFNhZmVNZW1iZXJCYXNlICYgeyBlbWFpbDogc3RyaW5nOyB1c2VySWQ/OiBuZXZlciB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBBZGRTYWZlV2FsbGV0TWVtYmVyT3B0aW9ucyB7XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIC8qKiByZXF1aXJlZCDigJQgc2hhcmluZyByZS1lbmNyeXB0cyB0aGUgdXNlciBrZXksIHdoaWNoIG5lZWRzIGhhcmRlbmVkIGRlcml2YXRpb24gZnJvbSB0aGUgcGFzc3BocmFzZSAqL1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBY2NlcHRTYWZlU2hhcmVBc1NwZW5kZXJPcHRpb25zID0ge1xuICBzYWZlU2hhcmVJZDogc3RyaW5nO1xuICB1c2VyUGFzc3dvcmQ6IHN0cmluZztcbiAgbmV3V2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBBY2NlcHRTYWZlU2hhcmVBc05vblNwZW5kZXJPcHRpb25zID0ge1xuICBzYWZlU2hhcmVJZDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEFjY2VwdFNhZmVTaGFyZU9wdGlvbnMgPSBBY2NlcHRTYWZlU2hhcmVBc1NwZW5kZXJPcHRpb25zIHwgQWNjZXB0U2FmZVNoYXJlQXNOb25TcGVuZGVyT3B0aW9ucztcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNhZmUge1xuICBpZCgpOiBzdHJpbmc7XG4gIGVudGVycHJpc2VJZCgpOiBzdHJpbmc7XG4gIGxhYmVsKCk6IHN0cmluZztcbiAgc3RhdHVzKCk6IFNhZmVEYXRhWydzdGF0dXMnXTtcbiAgdXJsKGV4dHJhPzogc3RyaW5nKTogc3RyaW5nO1xuICBjcmVhdGVXYWxsZXQocGFyYW1zOiBDcmVhdGVTYWZlV2FsbGV0T3B0aW9ucyk6IFByb21pc2U8V2FsbGV0PjtcbiAgdXBkYXRlKHBhcmFtczogVXBkYXRlU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmVEYXRhPjtcbiAgLy8gd2hvbGUtc2FmZTogdmlldy9hZG1pbi9zcGVuZC9kYXBwOyBzcGVuZCBvcGVucyBhIGtleSBzaGFyZSAoYWxzbyBob3cgYSBzcGVuZGVyIHNlcnZpY2VzIGFcbiAgLy8gc2FmZVNoYXJlUmVxdWVzdHMgZW50cnkgaW4gVU1TIG9yZ3MpXG4gIGFkZE1lbWJlcihwYXJhbXM6IEFkZFNhZmVNZW1iZXJPcHRpb25zKTogUHJvbWlzZTxTYWZlRGF0YT47XG4gIC8vIHNoYXJlIE9ORSBzYWZlIHdhbGxldCwgbm90IHRoZSB3aG9sZSBzYWZlXG4gIGFkZE1lbWJlclRvV2FsbGV0KHBhcmFtczogQWRkU2FmZVdhbGxldE1lbWJlck9wdGlvbnMpOiBQcm9taXNlPFdhbGxldFNoYXJlRGF0YT47XG4gIGxpc3RTaGFyZXMocGFyYW1zPzogeyBzdGF0ZT86IFNhZmVTaGFyZVN0YXRlIH0pOiBQcm9taXNlPFNhZmVTaGFyZURhdGFbXT47XG4gIGFjY2VwdFNoYXJlKHBhcmFtczogQWNjZXB0U2FmZVNoYXJlT3B0aW9ucyk6IFByb21pc2U8U2FmZVNoYXJlRGF0YT47XG4gIGZyZWV6ZShwYXJhbXM/OiBGcmVlemVTYWZlQm9keSk6IFByb21pc2U8U2FmZURhdGE+O1xuICBhcmNoaXZlKCk6IFByb21pc2U8U2FmZURhdGE+O1xuICB0b0pTT04oKTogU2FmZURhdGE7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safe.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAEhH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,EACL,iBAAiB,EACjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAgDjB;;GAEG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,SAAgB,KAAK,EAAE,QAAQ,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IAKhD,EAAE,IAAI,MAAM;IAIZ,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI5B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuFpE;;;OAGG;YACW,qBAAqB;YA+CrB,aAAa;IAK3B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrF;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,cAAc,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInF;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzE;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK1D;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK5D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAKlC,MAAM,IAAI,QAAQ;CAGnB"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safe.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAEhH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,EACL,iBAAiB,EACjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAgDjB;;GAEG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,SAAgB,KAAK,EAAE,QAAQ,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IAKhD,EAAE,IAAI,MAAM;IAIZ,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI5B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkFpE;;;OAGG;YACW,qBAAqB;YA+CrB,aAAa;IAK3B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrF;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,cAAc,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInF;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzE;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK1D;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK5D;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IAKlC,MAAM,IAAI,QAAQ;CAGnB"}