@bitgo/sdk-lib-mpc 10.15.0 → 10.17.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.
@@ -1,4 +1,4 @@
1
- import { DeserializedMessage, DeserializedMessages, DkgState } from './types';
1
+ import { DeserializedMessage, DeserializedMessages, DkgState, EddsaRetrofitData } from './types';
2
2
  /**
3
3
  * EdDSA Distributed Key Generation (DKG) implementation using @bitgo/wasm-mps.
4
4
  *
@@ -35,8 +35,10 @@ export declare class DKG {
35
35
  private shareChaincode;
36
36
  /** Lazily loaded WASM module */
37
37
  private wasmMps;
38
+ /** Optional MPCv1 retrofit data; when set, round0 uses ed25519_dkg_round0_import */
39
+ private retrofitData;
38
40
  protected dkgState: DkgState;
39
- constructor(n: number, t: number, partyIdx: number);
41
+ constructor(n: number, t: number, partyIdx: number, retrofitData?: EddsaRetrofitData);
40
42
  private loadWasmMps;
41
43
  private getWasmMps;
42
44
  getState(): DkgState;
@@ -1 +1 @@
1
- {"version":3,"file":"dkg.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/dkg.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAwB,MAAM,SAAS,CAAC;AAMpG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,GAAG;IACd,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAuB;IAC5C,mGAAmG;IACnG,OAAO,CAAC,YAAY,CAAyB;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAuB;IAC5C,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAuB;IACvC,6CAA6C;IAC7C,OAAO,CAAC,OAAO,CAAuB;IACtC,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAuB;IAC7C,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAwB;IAEvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;gBAE1C,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;YAMpC,WAAW;IAoBzB,OAAO,CAAC,UAAU;IAOlB,QAAQ,IAAI,QAAQ;IAIpB;;;;;;;OAOG;IACG,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjF;;;;;OAKG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAmBtD;;;;;;;;;;;OAWG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;IAuDvF;;;OAGG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;;OAIG;IACH,kBAAkB,IAAI,MAAM;IAY5B;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAepB;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAOtC"}
1
+ {"version":3,"file":"dkg.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/dkg.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAwB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMvH;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,GAAG;IACd,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAuB;IAC5C,mGAAmG;IACnG,OAAO,CAAC,YAAY,CAAyB;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAuB;IAC5C,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAuB;IACvC,6CAA6C;IAC7C,OAAO,CAAC,OAAO,CAAuB;IACtC,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAuB;IAC7C,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAwB;IACvC,oFAAoF;IACpF,OAAO,CAAC,YAAY,CAAgC;IAEpD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAA0B;gBAE1C,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,iBAAiB;YAOtE,WAAW;IAoBzB,OAAO,CAAC,UAAU;IAOlB,QAAQ,IAAI,QAAQ;IAIpB;;;;;;;OAOG;IACG,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjF;;;;;OAKG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAgCtD;;;;;;;;;;;OAWG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,oBAAoB;IAuDvF;;;OAGG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;;OAIG;IACH,kBAAkB,IAAI,MAAM;IAY5B;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAgBpB;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAQtC"}
@@ -59,7 +59,7 @@ const types_1 = require("./types");
59
59
  * ```
60
60
  */
61
61
  class DKG {
62
- constructor(n, t, partyIdx) {
62
+ constructor(n, t, partyIdx, retrofitData) {
63
63
  /** Private X25519 key (from GPG encryption subkey) */
64
64
  this.decryptionKey = null;
65
65
  /** Other parties' X25519 public keys (from their GPG encryption subkeys), sorted by party index */
@@ -78,6 +78,7 @@ class DKG {
78
78
  this.n = n;
79
79
  this.t = t;
80
80
  this.partyIdx = partyIdx;
81
+ this.retrofitData = retrofitData;
81
82
  }
82
83
  async loadWasmMps() {
83
84
  if (!this.wasmMps) {
@@ -143,13 +144,20 @@ class DKG {
143
144
  const wasm = this.getWasmMps();
144
145
  let result;
145
146
  try {
146
- result = wasm.ed25519_dkg_round0_process(this.partyIdx, this.decryptionKey, this.otherPubKeys, seed);
147
+ if (this.retrofitData) {
148
+ result = wasm.ed25519_dkg_round0_import(this.partyIdx, this.decryptionKey, this.otherPubKeys, Buffer.from(this.retrofitData.s_i_0, 'hex'), Buffer.from(this.retrofitData.expectedPk, 'hex'), Buffer.from(this.retrofitData.chainCode, 'hex'));
149
+ }
150
+ else {
151
+ result = wasm.ed25519_dkg_round0_process(this.partyIdx, this.decryptionKey, this.otherPubKeys, seed);
152
+ }
147
153
  }
148
154
  catch (err) {
149
155
  throw new Error(`Error while creating the first message from party ${this.partyIdx}: ${err}`);
150
156
  }
151
157
  this.dkgStateBytes = Buffer.from(result.state);
152
158
  this.dkgState = types_1.DkgState.WaitMsg1;
159
+ // Clear retrofit key material once consumed — it is not needed after round 0
160
+ this.retrofitData = undefined;
153
161
  return { payload: new Uint8Array(result.msg), from: this.partyIdx };
154
162
  }
155
163
  /**
@@ -275,6 +283,7 @@ class DKG {
275
283
  dkgRound: this.dkgState,
276
284
  decryptionKey: this.decryptionKey?.toString('base64') ?? null,
277
285
  otherPubKeys: this.otherPubKeys?.map((k) => k.toString('base64')) ?? null,
286
+ retrofitData: this.retrofitData,
278
287
  });
279
288
  }
280
289
  /**
@@ -287,7 +296,8 @@ class DKG {
287
296
  this.dkgState = data.dkgRound;
288
297
  this.decryptionKey = data.decryptionKey ? Buffer.from(data.decryptionKey, 'base64') : null;
289
298
  this.otherPubKeys = data.otherPubKeys ? data.otherPubKeys.map((k) => Buffer.from(k, 'base64')) : null;
299
+ this.retrofitData = data.retrofitData ?? undefined;
290
300
  }
291
301
  }
292
302
  exports.DKG = DKG;
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGtnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lZGRzYS1tcHMvZGtnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG1DQUFnQztBQUNoQyxvREFBNEI7QUFDNUIsbUNBQW9HO0FBTXBHOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQWEsR0FBRztJQXNCZCxZQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsUUFBZ0I7UUFqQmxELHNEQUFzRDtRQUM5QyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDNUMsbUdBQW1HO1FBQzNGLGlCQUFZLEdBQW9CLElBQUksQ0FBQztRQUM3QywyRUFBMkU7UUFDbkUsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLHFEQUFxRDtRQUM3QyxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUN2Qyw2Q0FBNkM7UUFDckMsWUFBTyxHQUFrQixJQUFJLENBQUM7UUFDdEMscUNBQXFDO1FBQzdCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUM3QyxnQ0FBZ0M7UUFDeEIsWUFBTyxHQUFtQixJQUFJLENBQUM7UUFFN0IsYUFBUSxHQUFhLGdCQUFRLENBQUMsYUFBYSxDQUFDO1FBR3BELElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVc7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUNFLE9BQU8sTUFBTSxLQUFLLFdBQVc7Z0JBQzdCLG1DQUFtQztnQkFDbkMsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDZixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDekIs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Q0FBQyxDQUFDLElBQUksSUFBSTtTQUMxRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLE9BQWU7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFlBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEgsQ0FBQztDQUNGO0FBaFFELGtCQWdRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTXNnU3RhdGUsIFNoYXJlIH0gZnJvbSAnQGJpdGdvL3dhc20tbXBzJztcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWRNZXNzYWdlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgRGtnU3RhdGUsIEVkZHNhUmVkdWNlZEtleVNoYXJlIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTm9kZVdhc21lciA9IHR5cGVvZiBpbXBvcnQoJ0BiaXRnby93YXNtLW1wcycpO1xudHlwZSBXZWJXYXNtZXIgPSB0eXBlb2YgaW1wb3J0KCdAYml0Z28vd2FzbS1tcHMvd2ViJyk7XG50eXBlIFdhc21NcHMgPSBOb2RlV2FzbWVyIHwgV2ViV2FzbWVyO1xuXG4vKipcbiAqIEVkRFNBIERpc3RyaWJ1dGVkIEtleSBHZW5lcmF0aW9uIChES0cpIGltcGxlbWVudGF0aW9uIHVzaW5nIEBiaXRnby93YXNtLW1wcy5cbiAqXG4gKiBTdGF0ZSBpcyBleHBsaWNpdDogZWFjaCByb3VuZCBmdW5jdGlvbiByZXR1cm5zIGB7IG1zZywgc3RhdGUgfWAgYnl0ZXMuXG4gKiBUaGUgc3RhdGUgYnl0ZXMgYXJlIHN0b3JlZCBiZXR3ZWVuIHJvdW5kcyBhbmQgcGFzc2VkIHRvIHRoZSBuZXh0IHJvdW5kIGZ1bmN0aW9uLFxuICogbWlycm9yaW5nIHRoZSBzZXJ2ZXItc2lkZSBwZXJzaXN0ZW5jZSBwYXR0ZXJuIChzdGF0ZSB3b3VsZCBiZSBzZXJpYWxpc2VkIHRvIERCKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGtnID0gbmV3IERLRygzLCAyLCAwKTtcbiAqIC8vIFgyNTUxOSBrZXlzIGNvbWUgZnJvbSBHUEcgZW5jcnlwdGlvbiBzdWJrZXlzIChleHRyYWN0ZWQgYnkgdGhlIG9yY2hlc3RyYXRvcilcbiAqIGF3YWl0IGRrZy5pbml0RGtnKG15WDI1NTE5UHJpdktleSwgW290aGVyUGFydHkxWDI1NTE5UHViS2V5LCBvdGhlclBhcnR5MlgyNTUxOVB1YktleV0pO1xuICogY29uc3QgbXNnMSA9IGRrZy5nZXRGaXJzdE1lc3NhZ2UoKTtcbiAqIGNvbnN0IG1zZzJzID0gZGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoYWxsVGhyZWVNc2cxcyk7XG4gKiBka2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhhbGxUaHJlZU1zZzJzKTsgIC8vIGNvbXBsZXRlcyBES0dcbiAqIGNvbnN0IGtleVNoYXJlID0gZGtnLmdldEtleVNoYXJlKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERLRyB7XG4gIHByb3RlY3RlZCBuOiBudW1iZXI7XG4gIHByb3RlY3RlZCB0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBwYXJ0eUlkeDogbnVtYmVyO1xuXG4gIC8qKiBQcml2YXRlIFgyNTUxOSBrZXkgKGZyb20gR1BHIGVuY3J5cHRpb24gc3Via2V5KSAqL1xuICBwcml2YXRlIGRlY3J5cHRpb25LZXk6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuICAvKiogT3RoZXIgcGFydGllcycgWDI1NTE5IHB1YmxpYyBrZXlzIChmcm9tIHRoZWlyIEdQRyBlbmNyeXB0aW9uIHN1YmtleXMpLCBzb3J0ZWQgYnkgcGFydHkgaW5kZXggKi9cbiAgcHJpdmF0ZSBvdGhlclB1YktleXM6IEJ1ZmZlcltdIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBTZXJpYWxpc2VkIHJvdW5kIHN0YXRlIGJ5dGVzIHJldHVybmVkIGJ5IHRoZSBwcmV2aW91cyByb3VuZCBmdW5jdGlvbiAqL1xuICBwcml2YXRlIGRrZ1N0YXRlQnl0ZXM6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuICAvKiogT3BhcXVlIGJpbmNvZGUtc2VyaWFsaXNlZCBrZXlzaGFyZSBmcm9tIHJvdW5kMiAqL1xuICBwcml2YXRlIGtleVNoYXJlOiBCdWZmZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIDMyLWJ5dGUgRWQyNTUxOSBwdWJsaWMga2V5IGZyb20gcm91bmQyICovXG4gIHByaXZhdGUgc2hhcmVQazogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKiAzMi1ieXRlIGNoYWluIGNvZGUgZnJvbSByb3VuZDIgKi9cbiAgcHJpdmF0ZSBzaGFyZUNoYWluY29kZTogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBMYXppbHkgbG9hZGVkIFdBU00gbW9kdWxlICovXG4gIHByaXZhdGUgd2FzbU1wczogV2FzbU1wcyB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBka2dTdGF0ZTogRGtnU3RhdGUgPSBEa2dTdGF0ZS5VbmluaXRpYWxpemVkO1xuXG4gIGNvbnN0cnVjdG9yKG46IG51bWJlciwgdDogbnVtYmVyLCBwYXJ0eUlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5uID0gbjtcbiAgICB0aGlzLnQgPSB0O1xuICAgIHRoaXMucGFydHlJZHggPSBwYXJ0eUlkeDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFdhc21NcHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLndhc21NcHMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgLyogY2hlY2tzIGZvciBlbGVjdHJvbiBwcm9jZXNzZXMgKi9cbiAgICAgICAgIXdpbmRvdy5wcm9jZXNzICYmXG4gICAgICAgICF3aW5kb3cucHJvY2Vzcz8uWyd0eXBlJ11cbiAgICAgICkge1xuICAgICAgICAvLyBCcm93c2VyOiB3ZWIgYnVpbGQgaGFzIGV4cGxpY2l0IGluaXQoKSDigJQgZ3VhcmFudGVlZCByZWFkeSBhZnRlciBhd2FpdFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWludGVybmFsLW1vZHVsZXMgLS0gQGJpdGdvL3dhc20tbXBzIGV4cG9zZXMgZW52aXJvbm1lbnQtc3BlY2lmaWMgc3VicGF0aCBleHBvcnRzLlxuICAgICAgICBjb25zdCB3ZWJXYXNtID0gYXdhaXQgaW1wb3J0KCdAYml0Z28vd2FzbS1tcHMvd2ViJyk7XG4gICAgICAgIGF3YWl0IHdlYldhc20uZGVmYXVsdCgpO1xuICAgICAgICB0aGlzLndhc21NcHMgPSB3ZWJXYXNtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm9kZS5qczogZHluYW1pYyBpbXBvcnQoKSByZXdyaXR0ZW4gdG8gcmVxdWlyZSgpIGJ5IHRzYyDihpIgQ0pTIGJ1aWxkIOKGkiByZWFkRmlsZVN5bmNcbiAgICAgICAgdGhpcy53YXNtTXBzID0gYXdhaXQgaW1wb3J0KCdAYml0Z28vd2FzbS1tcHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFdhc21NcHMoKTogV2FzbU1wcyB7XG4gICAgaWYgKCF0aGlzLndhc21NcHMpIHtcbiAgICAgIHRocm93IEVycm9yKCdXQVNNIG1vZHVsZSBub3QgbG9hZGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhc21NcHM7XG4gIH1cblxuICBnZXRTdGF0ZSgpOiBEa2dTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGtnU3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzZXMgdGhlIERLRyBzZXNzaW9uIHdpdGggdGhpcyBwYXJ0eSdzIFgyNTUxOSBwcml2YXRlIGtleSBhbmQgdGhlIG90aGVyIHBhcnRpZXMnXG4gICAqIFgyNTUxOSBwdWJsaWMga2V5cy4gS2V5cyBhcmUgZXh0cmFjdGVkIGZyb20gR1BHIGVuY3J5cHRpb24gc3Via2V5cyBieSB0aGUgb3JjaGVzdHJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gZGVjcnlwdGlvbktleSAtIFRoaXMgcGFydHkncyAzMi1ieXRlIFgyNTUxOSBwcml2YXRlIGtleSAoR1BHIGVuYyBzdWJrZXkgcHJpdmF0ZSBwYXJ0KS5cbiAgICogQHBhcmFtIG90aGVyRW5jUHVibGljS2V5cyAtIE90aGVyIHBhcnRpZXMnIDMyLWJ5dGUgWDI1NTE5IHB1YmxpYyBrZXlzLCBzb3J0ZWQgYnkgYXNjZW5kaW5nXG4gICAqICAgcGFydHkgaW5kZXggKGV4Y2x1ZGluZyBvd24pLiBGb3IgYSAzLXBhcnR5IHNldHVwLCB0aGlzIGlzIFtwYXJ0eV9BX3B1YiwgcGFydHlfQl9wdWJdLlxuICAgKi9cbiAgYXN5bmMgaW5pdERrZyhkZWNyeXB0aW9uS2V5OiBCdWZmZXIsIG90aGVyRW5jUHVibGljS2V5czogQnVmZmVyW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWRXYXNtTXBzKCk7XG4gICAgaWYgKCFkZWNyeXB0aW9uS2V5IHx8IGRlY3J5cHRpb25LZXkubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgRXJyb3IoJ01pc3Npbmcgb3IgaW52YWxpZCBkZWNyeXB0aW9uIGtleTogbXVzdCBiZSAzMiBieXRlcycpO1xuICAgIH1cbiAgICBpZiAoIW90aGVyRW5jUHVibGljS2V5cyB8fCBvdGhlckVuY1B1YmxpY0tleXMubGVuZ3RoICE9PSB0aGlzLm4gLSAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRXhwZWN0ZWQgJHt0aGlzLm4gLSAxfSBvdGhlciBwYXJ0aWVzJyBwdWJsaWMga2V5c2ApO1xuICAgIH1cbiAgICBpZiAodGhpcy50ID4gdGhpcy5uIHx8IHRoaXMucGFydHlJZHggPj0gdGhpcy5uKSB7XG4gICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXJzIGZvciBES0cnKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlY3J5cHRpb25LZXkgPSBkZWNyeXB0aW9uS2V5O1xuICAgIHRoaXMub3RoZXJQdWJLZXlzID0gb3RoZXJFbmNQdWJsaWNLZXlzO1xuICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5Jbml0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcm91bmQwIG9mIHRoZSBES0cgcHJvdG9jb2wuIFJldHVybnMgdGhpcyBwYXJ0eSdzIGJyb2FkY2FzdCBtZXNzYWdlLlxuICAgKiBTdG9yZXMgdGhlIHJvdW5kIHN0YXRlIGJ5dGVzIGludGVybmFsbHkgZm9yIHRoZSBuZXh0IHJvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gZGtnU2VlZCAtIE9wdGlvbmFsIDMyLWJ5dGUgc2VlZCBmb3IgZGV0ZXJtaW5pc3RpYyBES0cgb3V0cHV0ICh0ZXN0aW5nIG9ubHkpLlxuICAgKi9cbiAgZ2V0Rmlyc3RNZXNzYWdlKGRrZ1NlZWQ/OiBCdWZmZXIpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlIHtcbiAgICBpZiAodGhpcy5ka2dTdGF0ZSAhPT0gRGtnU3RhdGUuSW5pdCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZWQgPSBka2dTZWVkID8/IGNyeXB0by5yYW5kb21CeXRlcygzMik7XG4gICAgY29uc3Qgd2FzbSA9IHRoaXMuZ2V0V2FzbU1wcygpO1xuICAgIGxldCByZXN1bHQ6IE1zZ1N0YXRlO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSB3YXNtLmVkMjU1MTlfZGtnX3JvdW5kMF9wcm9jZXNzKHRoaXMucGFydHlJZHgsIHRoaXMuZGVjcnlwdGlvbktleSEsIHRoaXMub3RoZXJQdWJLZXlzISwgc2VlZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBmaXJzdCBtZXNzYWdlIGZyb20gcGFydHkgJHt0aGlzLnBhcnR5SWR4fTogJHtlcnJ9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5ka2dTdGF0ZUJ5dGVzID0gQnVmZmVyLmZyb20ocmVzdWx0LnN0YXRlKTtcbiAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuV2FpdE1zZzE7XG4gICAgcmV0dXJuIHsgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmVzdWx0Lm1zZyksIGZyb206IHRoaXMucGFydHlJZHggfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGluY29taW5nIG1lc3NhZ2VzIGZyb20gYWxsIHBhcnRpZXMgYW5kIGFkdmFuY2VzIHRoZSBwcm90b2NvbC5cbiAgICpcbiAgICogLSBJbiBXYWl0TXNnMTogcnVucyByb3VuZDEsIHJldHVybnMgdGhpcyBwYXJ0eSdzIHJvdW5kMSBicm9hZGNhc3QgbWVzc2FnZS5cbiAgICogLSBJbiBXYWl0TXNnMjogcnVucyByb3VuZDIsIGNvbXBsZXRlcyBES0csIHJldHVybnMgW10uXG4gICAqXG4gICAqIFRoZSBjYWxsZXIgcGFzc2VzIGFsbCBuIG1lc3NhZ2VzIChpbmNsdWRpbmcgb3duKTsgb3duIG1lc3NhZ2UgaXMgZmlsdGVyZWRcbiAgICogb3V0IGludGVybmFsbHkuIE90aGVyIHBhcnRpZXMnIG1lc3NhZ2VzIGFyZSBzb3J0ZWQgYnkgYXNjZW5kaW5nIHBhcnR5IGluZGV4LFxuICAgKiBtYXRjaGluZyB0aGUgb3JkZXJpbmcgZXhwZWN0ZWQgYnkgQGJpdGdvL3dhc20tbXBzLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZXNGb3JJdGhSb3VuZCAtIEFsbCBuIG1lc3NhZ2VzIGZvciB0aGlzIHJvdW5kIChpbmNsdWRpbmcgb3duKS5cbiAgICovXG4gIGhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZXNGb3JJdGhSb3VuZDogRGVzZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLkNvbXBsZXRlKSB7XG4gICAgICB0aHJvdyBFcnJvcignREtHIHNlc3Npb24gYWxyZWFkeSBjb21wbGV0ZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLkluaXQpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnREtHIHNlc3Npb24gbXVzdCBjYWxsIGdldEZpcnN0TWVzc2FnZSgpIGJlZm9yZSBoYW5kbGluZyBpbmNvbWluZyBtZXNzYWdlcy4gQ2FsbCBnZXRGaXJzdE1lc3NhZ2UoKSBmaXJzdC4nXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZXNGb3JJdGhSb3VuZC5sZW5ndGggIT09IHRoaXMubikge1xuICAgICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbnVtYmVyIG9mIG1lc3NhZ2VzIGZvciB0aGUgcm91bmQuIE51bWJlciBvZiBtZXNzYWdlcyBzaG91bGQgYmUgZXF1YWwgdG8gTicpO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3Qgb3RoZXIgcGFydGllcycgbWVzc2FnZXMsIHNvcnRlZCBieSBwYXJ0eSBpbmRleCAoYXNjZW5kaW5nKVxuICAgIGNvbnN0IG90aGVyTXNncyA9IG1lc3NhZ2VzRm9ySXRoUm91bmRcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0uZnJvbSAhPT0gdGhpcy5wYXJ0eUlkeClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmZyb20gLSBiLmZyb20pXG4gICAgICAubWFwKChtKSA9PiBtLnBheWxvYWQpO1xuXG4gICAgY29uc3Qgd2FzbSA9IHRoaXMuZ2V0V2FzbU1wcygpO1xuXG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLldhaXRNc2cxKSB7XG4gICAgICBsZXQgcmVzdWx0OiBNc2dTdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IHdhc20uZWQyNTUxOV9ka2dfcm91bmQxX3Byb2Nlc3Mob3RoZXJNc2dzLCB0aGlzLmRrZ1N0YXRlQnl0ZXMhKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGNyZWF0aW5nIG1lc3NhZ2VzIGZyb20gcGFydHkgJHt0aGlzLnBhcnR5SWR4fSwgcm91bmQgJHt0aGlzLmRrZ1N0YXRlfTogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgICAvLyBTdG9yZSBuZXcgc3RhdGU7IHRoaXMgaXMgd2hhdCB3b3VsZCBiZSBwZXJzaXN0ZWQgdG8gREIgYmV0d2VlbiBBUEkgcm91bmRzXG4gICAgICB0aGlzLmRrZ1N0YXRlQnl0ZXMgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RhdGUpO1xuICAgICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLldhaXRNc2cyO1xuICAgICAgcmV0dXJuIFt7IHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KHJlc3VsdC5tc2cpLCBmcm9tOiB0aGlzLnBhcnR5SWR4IH1dO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRrZ1N0YXRlID09PSBEa2dTdGF0ZS5XYWl0TXNnMikge1xuICAgICAgbGV0IHNoYXJlOiBTaGFyZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNoYXJlID0gd2FzbS5lZDI1NTE5X2RrZ19yb3VuZDJfcHJvY2VzcyhvdGhlck1zZ3MsIHRoaXMuZGtnU3RhdGVCeXRlcyEpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgY3JlYXRpbmcgbWVzc2FnZXMgZnJvbSBwYXJ0eSAke3RoaXMucGFydHlJZHh9LCByb3VuZCAke3RoaXMuZGtnU3RhdGV9OiAke2Vycn1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMua2V5U2hhcmUgPSBCdWZmZXIuZnJvbShzaGFyZS5zaGFyZSk7XG4gICAgICB0aGlzLnNoYXJlUGsgPSBCdWZmZXIuZnJvbShzaGFyZS5wayk7XG4gICAgICB0aGlzLnNoYXJlQ2hhaW5jb2RlID0gQnVmZmVyLmZyb20oc2hhcmUuY2hhaW5jb2RlKTtcbiAgICAgIHRoaXMuZGtnU3RhdGVCeXRlcyA9IG51bGw7XG4gICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuQ29tcGxldGU7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoJ1VuZXhwZWN0ZWQgREtHIHN0YXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb3BhcXVlIGJpbmNvZGUtc2VyaWFsaXNlZCBrZXlzaGFyZSBwcm9kdWNlZCBieSByb3VuZDIuXG4gICAqIFRoaXMgaXMgdXNlZCBhcyBpbnB1dCB0byB0aGUgc2lnbmluZyBwcm90b2NvbC5cbiAgICovXG4gIGdldEtleVNoYXJlKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLmtleVNoYXJlKSB7XG4gICAgICB0aHJvdyBFcnJvcignREtHIHNlc3Npb24gbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmtleVNoYXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIDMyLWJ5dGUgRWQyNTUxOSBwdWJsaWMga2V5IGFncmVlZCBieSBhbGwgcGFydGllcyBkdXJpbmcgREtHLlxuICAgKi9cbiAgZ2V0U2hhcmVQdWJsaWNLZXkoKTogQnVmZmVyIHtcbiAgICBpZiAoIXRoaXMuc2hhcmVQaykge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaGFyZVBrO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIDEyOC1jaGFyIGhleCBjb21tb24ga2V5Y2hhaW46IDY0LWNoYXIgcHVibGljIGtleSArIDY0LWNoYXIgY2hhaW4gY29kZS5cbiAgICogVGhpcyBtYXRjaGVzIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgYWRkcmVzcyBkZXJpdmF0aW9uIChFZGRzYS5kZXJpdmVVbmhhcmRlbmVkKS5cbiAgICovXG4gIGdldENvbW1vbktleWNoYWluKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNoYXJlUGsgfHwgIXRoaXMuc2hhcmVDaGFpbmNvZGUpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVQay50b1N0cmluZygnaGV4JykgKyB0aGlzLnNoYXJlQ2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgQ0JPUi1lbmNvZGVkIFJlZHVjZWRLZXlTaGFyZSBidWZmZXIgY29udGFpbmluZyB0aGUgcGFydHkncyBvcGFxdWVcbiAgICogc2lnbmluZyBrZXkgc2hhcmUgaW4gdGhlIGBrZXlTaGFyZWAgZmllbGQuIFRoaXMgYnVmZmVyIGlzIHByaXZhdGUga2V5IG1hdGVyaWFsLlxuICAgKiBUaGUgY2FsbGVyIGVuY3J5cHRzIGl0IGFuZCBzdG9yZXMgaXQgYXMgYHJlZHVjZWRFbmNyeXB0ZWRQcnZgIG9uIHRoZSBrZXkgY2FyZCBRUiBjb2RlLlxuICAgKi9cbiAgZ2V0UmVkdWNlZEtleVNoYXJlKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLmtleVNoYXJlIHx8ICF0aGlzLnNoYXJlUGsgfHwgIXRoaXMuc2hhcmVDaGFpbmNvZGUpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgY29uc3QgcmVkdWNlZEtleVNoYXJlOiBFZGRzYVJlZHVjZWRLZXlTaGFyZSA9IHtcbiAgICAgIGtleVNoYXJlOiBBcnJheS5mcm9tKHRoaXMua2V5U2hhcmUpLFxuICAgICAgcHViOiBBcnJheS5mcm9tKHRoaXMuc2hhcmVQayksXG4gICAgICByb290Q2hhaW5Db2RlOiBBcnJheS5mcm9tKHRoaXMuc2hhcmVDaGFpbmNvZGUpLFxuICAgIH07XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGVuY29kZShyZWR1Y2VkS2V5U2hhcmUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnRzIHRoZSBjdXJyZW50IHNlc3Npb24gc3RhdGUgYXMgYSBKU09OIHN0cmluZyBmb3IgcGVyc2lzdGVuY2UuXG4gICAqIEluY2x1ZGVzOiByb3VuZCBzdGF0ZSBieXRlcywgY3VycmVudCBES0cgcm91bmQsIGRlY3J5cHRpb24ga2V5LCBvdGhlciBwYXJ0aWVzJyBwdWIga2V5cy5cbiAgICogVGhpcyBtaXJyb3JzIHdoYXQgYSBzZXJ2ZXIgd291bGQgc3RvcmUgaW4gYSBkYXRhYmFzZSBiZXR3ZWVuIEFQSSByb3VuZHMuXG4gICAqL1xuICBnZXRTZXNzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLkNvbXBsZXRlKSB7XG4gICAgICB0aHJvdyBFcnJvcignREtHIHNlc3Npb24gaXMgY29tcGxldGUuIEV4cG9ydGluZyB0aGUgc2Vzc2lvbiBpcyBub3QgYWxsb3dlZC4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGRrZ1N0YXRlQnl0ZXM6IHRoaXMuZGtnU3RhdGVCeXRlcz8udG9TdHJpbmcoJ2Jhc2U2NCcpID8/IG51bGwsXG4gICAgICBka2dSb3VuZDogdGhpcy5ka2dTdGF0ZSxcbiAgICAgIGRlY3J5cHRpb25LZXk6IHRoaXMuZGVjcnlwdGlvbktleT8udG9TdHJpbmcoJ2Jhc2U2NCcpID8/IG51bGwsXG4gICAgICBvdGhlclB1YktleXM6IHRoaXMub3RoZXJQdWJLZXlzPy5tYXAoKGspID0+IGsudG9TdHJpbmcoJ2Jhc2U2NCcpKSA/PyBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGEgcHJldmlvdXNseSBleHBvcnRlZCBzZXNzaW9uLiBBbGxvd3MgdGhlIHByb3RvY29sIHRvIGNvbnRpbnVlXG4gICAqIGZyb20gd2hlcmUgaXQgbGVmdCBvZmYsIGFzIGlmIHRoZSByb3VuZCBzdGF0ZSB3YXMgbG9hZGVkIGZyb20gYSBkYXRhYmFzZS5cbiAgICovXG4gIHJlc3RvcmVTZXNzaW9uKHNlc3Npb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb24pO1xuICAgIHRoaXMuZGtnU3RhdGVCeXRlcyA9IGRhdGEuZGtnU3RhdGVCeXRlcyA/IEJ1ZmZlci5mcm9tKGRhdGEuZGtnU3RhdGVCeXRlcywgJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB0aGlzLmRrZ1N0YXRlID0gZGF0YS5ka2dSb3VuZDtcbiAgICB0aGlzLmRlY3J5cHRpb25LZXkgPSBkYXRhLmRlY3J5cHRpb25LZXkgPyBCdWZmZXIuZnJvbShkYXRhLmRlY3J5cHRpb25LZXksICdiYXNlNjQnKSA6IG51bGw7XG4gICAgdGhpcy5vdGhlclB1YktleXMgPSBkYXRhLm90aGVyUHViS2V5cyA/IChkYXRhLm90aGVyUHViS2V5cyBhcyBzdHJpbmdbXSkubWFwKChrKSA9PiBCdWZmZXIuZnJvbShrLCAnYmFzZTY0JykpIDogbnVsbDtcbiAgfVxufVxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGtnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rzcy9lZGRzYS1tcHMvZGtnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG1DQUFnQztBQUNoQyxvREFBNEI7QUFDNUIsbUNBQXVIO0FBTXZIOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQWEsR0FBRztJQXdCZCxZQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsUUFBZ0IsRUFBRSxZQUFnQztRQW5CcEYsc0RBQXNEO1FBQzlDLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUM1QyxtR0FBbUc7UUFDM0YsaUJBQVksR0FBb0IsSUFBSSxDQUFDO1FBQzdDLDJFQUEyRTtRQUNuRSxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDNUMscURBQXFEO1FBQzdDLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDZDQUE2QztRQUNyQyxZQUFPLEdBQWtCLElBQUksQ0FBQztRQUN0QyxxQ0FBcUM7UUFDN0IsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBQzdDLGdDQUFnQztRQUN4QixZQUFPLEdBQW1CLElBQUksQ0FBQztRQUk3QixhQUFRLEdBQWEsZ0JBQVEsQ0FBQyxhQUFhLENBQUM7UUFHcEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQ0UsT0FBTyxNQUFNLEtBQUssV0FBVztnQkFDN0IsbUNBQW1DO2dCQUNuQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUNmLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUN6QixDQUFDO2dCQUNELHdFQUF3RTtnQkFDeEUsdUhBQXVIO2dCQUN2SCxNQUFNLE9BQU8sR0FBRyx3REFBYSxxQkFBcUIsR0FBQyxDQUFDO2dCQUNwRCxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDekIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFGQUFxRjtnQkFDckYsSUFBSSxDQUFDLE9BQU8sR0FBRyx3REFBYSxpQkFBaUIsR0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQXFCLEVBQUUsa0JBQTRCO1FBQy9ELE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLElBQUksZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksTUFBZ0IsQ0FBQztRQUNyQixJQUFJLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDckMsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsYUFBYyxFQUNuQixJQUFJLENBQUMsWUFBYSxFQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUNoRCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYyxFQUFFLElBQUksQ0FBQyxZQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekcsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsSUFBSSxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbEMsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsc0JBQXNCLENBQUMsbUJBQXlDO1FBQzlELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sS0FBSyxDQUNULDBHQUEwRyxDQUMzRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxTQUFTLEdBQUcsbUJBQW1CO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsSUFBSSxNQUFnQixDQUFDO1lBQ3JCLElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLFFBQVEsV0FBVyxJQUFJLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDL0csQ0FBQztZQUNELDRFQUE0RTtZQUM1RSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksS0FBWSxDQUFDO1lBQ2pCLElBQUksQ0FBQztnQkFDSCxLQUFLLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLFFBQVEsV0FBVyxJQUFJLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDL0csQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1RCxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBeUI7WUFDNUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0MsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLGVBQU0sRUFBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTtZQUM3RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUk7WUFDN0QsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSTtZQUN6RSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxZQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBbFJELGtCQWtSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTXNnU3RhdGUsIFNoYXJlIH0gZnJvbSAnQGJpdGdvL3dhc20tbXBzJztcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWRNZXNzYWdlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgRGtnU3RhdGUsIEVkZHNhUmVkdWNlZEtleVNoYXJlLCBFZGRzYVJldHJvZml0RGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG50eXBlIE5vZGVXYXNtZXIgPSB0eXBlb2YgaW1wb3J0KCdAYml0Z28vd2FzbS1tcHMnKTtcbnR5cGUgV2ViV2FzbWVyID0gdHlwZW9mIGltcG9ydCgnQGJpdGdvL3dhc20tbXBzL3dlYicpO1xudHlwZSBXYXNtTXBzID0gTm9kZVdhc21lciB8IFdlYldhc21lcjtcblxuLyoqXG4gKiBFZERTQSBEaXN0cmlidXRlZCBLZXkgR2VuZXJhdGlvbiAoREtHKSBpbXBsZW1lbnRhdGlvbiB1c2luZyBAYml0Z28vd2FzbS1tcHMuXG4gKlxuICogU3RhdGUgaXMgZXhwbGljaXQ6IGVhY2ggcm91bmQgZnVuY3Rpb24gcmV0dXJucyBgeyBtc2csIHN0YXRlIH1gIGJ5dGVzLlxuICogVGhlIHN0YXRlIGJ5dGVzIGFyZSBzdG9yZWQgYmV0d2VlbiByb3VuZHMgYW5kIHBhc3NlZCB0byB0aGUgbmV4dCByb3VuZCBmdW5jdGlvbixcbiAqIG1pcnJvcmluZyB0aGUgc2VydmVyLXNpZGUgcGVyc2lzdGVuY2UgcGF0dGVybiAoc3RhdGUgd291bGQgYmUgc2VyaWFsaXNlZCB0byBEQikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRrZyA9IG5ldyBES0coMywgMiwgMCk7XG4gKiAvLyBYMjU1MTkga2V5cyBjb21lIGZyb20gR1BHIGVuY3J5cHRpb24gc3Via2V5cyAoZXh0cmFjdGVkIGJ5IHRoZSBvcmNoZXN0cmF0b3IpXG4gKiBhd2FpdCBka2cuaW5pdERrZyhteVgyNTUxOVByaXZLZXksIFtvdGhlclBhcnR5MVgyNTUxOVB1YktleSwgb3RoZXJQYXJ0eTJYMjU1MTlQdWJLZXldKTtcbiAqIGNvbnN0IG1zZzEgPSBka2cuZ2V0Rmlyc3RNZXNzYWdlKCk7XG4gKiBjb25zdCBtc2cycyA9IGRrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKGFsbFRocmVlTXNnMXMpO1xuICogZGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoYWxsVGhyZWVNc2cycyk7ICAvLyBjb21wbGV0ZXMgREtHXG4gKiBjb25zdCBrZXlTaGFyZSA9IGRrZy5nZXRLZXlTaGFyZSgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBES0cge1xuICBwcm90ZWN0ZWQgbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgdDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgcGFydHlJZHg6IG51bWJlcjtcblxuICAvKiogUHJpdmF0ZSBYMjU1MTkga2V5IChmcm9tIEdQRyBlbmNyeXB0aW9uIHN1YmtleSkgKi9cbiAgcHJpdmF0ZSBkZWNyeXB0aW9uS2V5OiBCdWZmZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIE90aGVyIHBhcnRpZXMnIFgyNTUxOSBwdWJsaWMga2V5cyAoZnJvbSB0aGVpciBHUEcgZW5jcnlwdGlvbiBzdWJrZXlzKSwgc29ydGVkIGJ5IHBhcnR5IGluZGV4ICovXG4gIHByaXZhdGUgb3RoZXJQdWJLZXlzOiBCdWZmZXJbXSB8IG51bGwgPSBudWxsO1xuICAvKiogU2VyaWFsaXNlZCByb3VuZCBzdGF0ZSBieXRlcyByZXR1cm5lZCBieSB0aGUgcHJldmlvdXMgcm91bmQgZnVuY3Rpb24gKi9cbiAgcHJpdmF0ZSBka2dTdGF0ZUJ5dGVzOiBCdWZmZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIE9wYXF1ZSBiaW5jb2RlLXNlcmlhbGlzZWQga2V5c2hhcmUgZnJvbSByb3VuZDIgKi9cbiAgcHJpdmF0ZSBrZXlTaGFyZTogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKiAzMi1ieXRlIEVkMjU1MTkgcHVibGljIGtleSBmcm9tIHJvdW5kMiAqL1xuICBwcml2YXRlIHNoYXJlUGs6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuICAvKiogMzItYnl0ZSBjaGFpbiBjb2RlIGZyb20gcm91bmQyICovXG4gIHByaXZhdGUgc2hhcmVDaGFpbmNvZGU6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuICAvKiogTGF6aWx5IGxvYWRlZCBXQVNNIG1vZHVsZSAqL1xuICBwcml2YXRlIHdhc21NcHM6IFdhc21NcHMgfCBudWxsID0gbnVsbDtcbiAgLyoqIE9wdGlvbmFsIE1QQ3YxIHJldHJvZml0IGRhdGE7IHdoZW4gc2V0LCByb3VuZDAgdXNlcyBlZDI1NTE5X2RrZ19yb3VuZDBfaW1wb3J0ICovXG4gIHByaXZhdGUgcmV0cm9maXREYXRhOiBFZGRzYVJldHJvZml0RGF0YSB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgZGtnU3RhdGU6IERrZ1N0YXRlID0gRGtnU3RhdGUuVW5pbml0aWFsaXplZDtcblxuICBjb25zdHJ1Y3RvcihuOiBudW1iZXIsIHQ6IG51bWJlciwgcGFydHlJZHg6IG51bWJlciwgcmV0cm9maXREYXRhPzogRWRkc2FSZXRyb2ZpdERhdGEpIHtcbiAgICB0aGlzLm4gPSBuO1xuICAgIHRoaXMudCA9IHQ7XG4gICAgdGhpcy5wYXJ0eUlkeCA9IHBhcnR5SWR4O1xuICAgIHRoaXMucmV0cm9maXREYXRhID0gcmV0cm9maXREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkV2FzbU1wcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMud2FzbU1wcykge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAvKiBjaGVja3MgZm9yIGVsZWN0cm9uIHByb2Nlc3NlcyAqL1xuICAgICAgICAhd2luZG93LnByb2Nlc3MgJiZcbiAgICAgICAgIXdpbmRvdy5wcm9jZXNzPy5bJ3R5cGUnXVxuICAgICAgKSB7XG4gICAgICAgIC8vIEJyb3dzZXI6IHdlYiBidWlsZCBoYXMgZXhwbGljaXQgaW5pdCgpIOKAlCBndWFyYW50ZWVkIHJlYWR5IGFmdGVyIGF3YWl0XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8taW50ZXJuYWwtbW9kdWxlcyAtLSBAYml0Z28vd2FzbS1tcHMgZXhwb3NlcyBlbnZpcm9ubWVudC1zcGVjaWZpYyBzdWJwYXRoIGV4cG9ydHMuXG4gICAgICAgIGNvbnN0IHdlYldhc20gPSBhd2FpdCBpbXBvcnQoJ0BiaXRnby93YXNtLW1wcy93ZWInKTtcbiAgICAgICAgYXdhaXQgd2ViV2FzbS5kZWZhdWx0KCk7XG4gICAgICAgIHRoaXMud2FzbU1wcyA9IHdlYldhc207XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb2RlLmpzOiBkeW5hbWljIGltcG9ydCgpIHJld3JpdHRlbiB0byByZXF1aXJlKCkgYnkgdHNjIOKGkiBDSlMgYnVpbGQg4oaSIHJlYWRGaWxlU3luY1xuICAgICAgICB0aGlzLndhc21NcHMgPSBhd2FpdCBpbXBvcnQoJ0BiaXRnby93YXNtLW1wcycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2FzbU1wcygpOiBXYXNtTXBzIHtcbiAgICBpZiAoIXRoaXMud2FzbU1wcykge1xuICAgICAgdGhyb3cgRXJyb3IoJ1dBU00gbW9kdWxlIG5vdCBsb2FkZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMud2FzbU1wcztcbiAgfVxuXG4gIGdldFN0YXRlKCk6IERrZ1N0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5ka2dTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlcyB0aGUgREtHIHNlc3Npb24gd2l0aCB0aGlzIHBhcnR5J3MgWDI1NTE5IHByaXZhdGUga2V5IGFuZCB0aGUgb3RoZXIgcGFydGllcydcbiAgICogWDI1NTE5IHB1YmxpYyBrZXlzLiBLZXlzIGFyZSBleHRyYWN0ZWQgZnJvbSBHUEcgZW5jcnlwdGlvbiBzdWJrZXlzIGJ5IHRoZSBvcmNoZXN0cmF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBkZWNyeXB0aW9uS2V5IC0gVGhpcyBwYXJ0eSdzIDMyLWJ5dGUgWDI1NTE5IHByaXZhdGUga2V5IChHUEcgZW5jIHN1YmtleSBwcml2YXRlIHBhcnQpLlxuICAgKiBAcGFyYW0gb3RoZXJFbmNQdWJsaWNLZXlzIC0gT3RoZXIgcGFydGllcycgMzItYnl0ZSBYMjU1MTkgcHVibGljIGtleXMsIHNvcnRlZCBieSBhc2NlbmRpbmdcbiAgICogICBwYXJ0eSBpbmRleCAoZXhjbHVkaW5nIG93bikuIEZvciBhIDMtcGFydHkgc2V0dXAsIHRoaXMgaXMgW3BhcnR5X0FfcHViLCBwYXJ0eV9CX3B1Yl0uXG4gICAqL1xuICBhc3luYyBpbml0RGtnKGRlY3J5cHRpb25LZXk6IEJ1ZmZlciwgb3RoZXJFbmNQdWJsaWNLZXlzOiBCdWZmZXJbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZFdhc21NcHMoKTtcbiAgICBpZiAoIWRlY3J5cHRpb25LZXkgfHwgZGVjcnlwdGlvbktleS5sZW5ndGggIT09IDMyKSB7XG4gICAgICB0aHJvdyBFcnJvcignTWlzc2luZyBvciBpbnZhbGlkIGRlY3J5cHRpb24ga2V5OiBtdXN0IGJlIDMyIGJ5dGVzJyk7XG4gICAgfVxuICAgIGlmICghb3RoZXJFbmNQdWJsaWNLZXlzIHx8IG90aGVyRW5jUHVibGljS2V5cy5sZW5ndGggIT09IHRoaXMubiAtIDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBFeHBlY3RlZCAke3RoaXMubiAtIDF9IG90aGVyIHBhcnRpZXMnIHB1YmxpYyBrZXlzYCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnQgPiB0aGlzLm4gfHwgdGhpcy5wYXJ0eUlkeCA+PSB0aGlzLm4pIHtcbiAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHBhcmFtZXRlcnMgZm9yIERLRycpO1xuICAgIH1cblxuICAgIHRoaXMuZGVjcnlwdGlvbktleSA9IGRlY3J5cHRpb25LZXk7XG4gICAgdGhpcy5vdGhlclB1YktleXMgPSBvdGhlckVuY1B1YmxpY0tleXM7XG4gICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLkluaXQ7XG4gIH1cblxuICAvKipcbiAgICogUnVucyByb3VuZDAgb2YgdGhlIERLRyBwcm90b2NvbC4gUmV0dXJucyB0aGlzIHBhcnR5J3MgYnJvYWRjYXN0IG1lc3NhZ2UuXG4gICAqIFN0b3JlcyB0aGUgcm91bmQgc3RhdGUgYnl0ZXMgaW50ZXJuYWxseSBmb3IgdGhlIG5leHQgcm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBka2dTZWVkIC0gT3B0aW9uYWwgMzItYnl0ZSBzZWVkIGZvciBkZXRlcm1pbmlzdGljIERLRyBvdXRwdXQgKHRlc3Rpbmcgb25seSkuXG4gICAqL1xuICBnZXRGaXJzdE1lc3NhZ2UoZGtnU2VlZD86IEJ1ZmZlcik6IERlc2VyaWFsaXplZE1lc3NhZ2Uge1xuICAgIGlmICh0aGlzLmRrZ1N0YXRlICE9PSBEa2dTdGF0ZS5Jbml0KSB7XG4gICAgICB0aHJvdyBFcnJvcignREtHIHNlc3Npb24gbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VlZCA9IGRrZ1NlZWQgPz8gY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCB3YXNtID0gdGhpcy5nZXRXYXNtTXBzKCk7XG4gICAgbGV0IHJlc3VsdDogTXNnU3RhdGU7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnJldHJvZml0RGF0YSkge1xuICAgICAgICByZXN1bHQgPSB3YXNtLmVkMjU1MTlfZGtnX3JvdW5kMF9pbXBvcnQoXG4gICAgICAgICAgdGhpcy5wYXJ0eUlkeCxcbiAgICAgICAgICB0aGlzLmRlY3J5cHRpb25LZXkhLFxuICAgICAgICAgIHRoaXMub3RoZXJQdWJLZXlzISxcbiAgICAgICAgICBCdWZmZXIuZnJvbSh0aGlzLnJldHJvZml0RGF0YS5zX2lfMCwgJ2hleCcpLFxuICAgICAgICAgIEJ1ZmZlci5mcm9tKHRoaXMucmV0cm9maXREYXRhLmV4cGVjdGVkUGssICdoZXgnKSxcbiAgICAgICAgICBCdWZmZXIuZnJvbSh0aGlzLnJldHJvZml0RGF0YS5jaGFpbkNvZGUsICdoZXgnKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gd2FzbS5lZDI1NTE5X2RrZ19yb3VuZDBfcHJvY2Vzcyh0aGlzLnBhcnR5SWR4LCB0aGlzLmRlY3J5cHRpb25LZXkhLCB0aGlzLm90aGVyUHViS2V5cyEsIHNlZWQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZmlyc3QgbWVzc2FnZSBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH06ICR7ZXJyfWApO1xuICAgIH1cblxuICAgIHRoaXMuZGtnU3RhdGVCeXRlcyA9IEJ1ZmZlci5mcm9tKHJlc3VsdC5zdGF0ZSk7XG4gICAgdGhpcy5ka2dTdGF0ZSA9IERrZ1N0YXRlLldhaXRNc2cxO1xuICAgIC8vIENsZWFyIHJldHJvZml0IGtleSBtYXRlcmlhbCBvbmNlIGNvbnN1bWVkIOKAlCBpdCBpcyBub3QgbmVlZGVkIGFmdGVyIHJvdW5kIDBcbiAgICB0aGlzLnJldHJvZml0RGF0YSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBwYXlsb2FkOiBuZXcgVWludDhBcnJheShyZXN1bHQubXNnKSwgZnJvbTogdGhpcy5wYXJ0eUlkeCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSBhbGwgcGFydGllcyBhbmQgYWR2YW5jZXMgdGhlIHByb3RvY29sLlxuICAgKlxuICAgKiAtIEluIFdhaXRNc2cxOiBydW5zIHJvdW5kMSwgcmV0dXJucyB0aGlzIHBhcnR5J3Mgcm91bmQxIGJyb2FkY2FzdCBtZXNzYWdlLlxuICAgKiAtIEluIFdhaXRNc2cyOiBydW5zIHJvdW5kMiwgY29tcGxldGVzIERLRywgcmV0dXJucyBbXS5cbiAgICpcbiAgICogVGhlIGNhbGxlciBwYXNzZXMgYWxsIG4gbWVzc2FnZXMgKGluY2x1ZGluZyBvd24pOyBvd24gbWVzc2FnZSBpcyBmaWx0ZXJlZFxuICAgKiBvdXQgaW50ZXJuYWxseS4gT3RoZXIgcGFydGllcycgbWVzc2FnZXMgYXJlIHNvcnRlZCBieSBhc2NlbmRpbmcgcGFydHkgaW5kZXgsXG4gICAqIG1hdGNoaW5nIHRoZSBvcmRlcmluZyBleHBlY3RlZCBieSBAYml0Z28vd2FzbS1tcHMuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlc0Zvckl0aFJvdW5kIC0gQWxsIG4gbWVzc2FnZXMgZm9yIHRoaXMgcm91bmQgKGluY2x1ZGluZyBvd24pLlxuICAgKi9cbiAgaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlc0Zvckl0aFJvdW5kOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyk6IERlc2VyaWFsaXplZE1lc3NhZ2VzIHtcbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBhbHJlYWR5IGNvbXBsZXRlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuVW5pbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuSW5pdCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdES0cgc2Vzc2lvbiBtdXN0IGNhbGwgZ2V0Rmlyc3RNZXNzYWdlKCkgYmVmb3JlIGhhbmRsaW5nIGluY29taW5nIG1lc3NhZ2VzLiBDYWxsIGdldEZpcnN0TWVzc2FnZSgpIGZpcnN0LidcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlc0Zvckl0aFJvdW5kLmxlbmd0aCAhPT0gdGhpcy5uKSB7XG4gICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBudW1iZXIgb2YgbWVzc2FnZXMgZm9yIHRoZSByb3VuZC4gTnVtYmVyIG9mIG1lc3NhZ2VzIHNob3VsZCBiZSBlcXVhbCB0byBOJyk7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBvdGhlciBwYXJ0aWVzJyBtZXNzYWdlcywgc29ydGVkIGJ5IHBhcnR5IGluZGV4IChhc2NlbmRpbmcpXG4gICAgY29uc3Qgb3RoZXJNc2dzID0gbWVzc2FnZXNGb3JJdGhSb3VuZFxuICAgICAgLmZpbHRlcigobSkgPT4gbS5mcm9tICE9PSB0aGlzLnBhcnR5SWR4KVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZnJvbSAtIGIuZnJvbSlcbiAgICAgIC5tYXAoKG0pID0+IG0ucGF5bG9hZCk7XG5cbiAgICBjb25zdCB3YXNtID0gdGhpcy5nZXRXYXNtTXBzKCk7XG5cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuV2FpdE1zZzEpIHtcbiAgICAgIGxldCByZXN1bHQ6IE1zZ1N0YXRlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gd2FzbS5lZDI1NTE5X2RrZ19yb3VuZDFfcHJvY2VzcyhvdGhlck1zZ3MsIHRoaXMuZGtnU3RhdGVCeXRlcyEpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgY3JlYXRpbmcgbWVzc2FnZXMgZnJvbSBwYXJ0eSAke3RoaXMucGFydHlJZHh9LCByb3VuZCAke3RoaXMuZGtnU3RhdGV9OiAke2Vycn1gKTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIG5ldyBzdGF0ZTsgdGhpcyBpcyB3aGF0IHdvdWxkIGJlIHBlcnNpc3RlZCB0byBEQiBiZXR3ZWVuIEFQSSByb3VuZHNcbiAgICAgIHRoaXMuZGtnU3RhdGVCeXRlcyA9IEJ1ZmZlci5mcm9tKHJlc3VsdC5zdGF0ZSk7XG4gICAgICB0aGlzLmRrZ1N0YXRlID0gRGtnU3RhdGUuV2FpdE1zZzI7XG4gICAgICByZXR1cm4gW3sgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkocmVzdWx0Lm1zZyksIGZyb206IHRoaXMucGFydHlJZHggfV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGtnU3RhdGUgPT09IERrZ1N0YXRlLldhaXRNc2cyKSB7XG4gICAgICBsZXQgc2hhcmU6IFNoYXJlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2hhcmUgPSB3YXNtLmVkMjU1MTlfZGtnX3JvdW5kMl9wcm9jZXNzKG90aGVyTXNncywgdGhpcy5ka2dTdGF0ZUJ5dGVzISk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciB3aGlsZSBjcmVhdGluZyBtZXNzYWdlcyBmcm9tIHBhcnR5ICR7dGhpcy5wYXJ0eUlkeH0sIHJvdW5kICR7dGhpcy5ka2dTdGF0ZX06ICR7ZXJyfWApO1xuICAgICAgfVxuICAgICAgdGhpcy5rZXlTaGFyZSA9IEJ1ZmZlci5mcm9tKHNoYXJlLnNoYXJlKTtcbiAgICAgIHRoaXMuc2hhcmVQayA9IEJ1ZmZlci5mcm9tKHNoYXJlLnBrKTtcbiAgICAgIHRoaXMuc2hhcmVDaGFpbmNvZGUgPSBCdWZmZXIuZnJvbShzaGFyZS5jaGFpbmNvZGUpO1xuICAgICAgdGhpcy5ka2dTdGF0ZUJ5dGVzID0gbnVsbDtcbiAgICAgIHRoaXMuZGtnU3RhdGUgPSBEa2dTdGF0ZS5Db21wbGV0ZTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcignVW5leHBlY3RlZCBES0cgc3RhdGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvcGFxdWUgYmluY29kZS1zZXJpYWxpc2VkIGtleXNoYXJlIHByb2R1Y2VkIGJ5IHJvdW5kMi5cbiAgICogVGhpcyBpcyB1c2VkIGFzIGlucHV0IHRvIHRoZSBzaWduaW5nIHByb3RvY29sLlxuICAgKi9cbiAgZ2V0S2V5U2hhcmUoKTogQnVmZmVyIHtcbiAgICBpZiAoIXRoaXMua2V5U2hhcmUpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMua2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgMzItYnl0ZSBFZDI1NTE5IHB1YmxpYyBrZXkgYWdyZWVkIGJ5IGFsbCBwYXJ0aWVzIGR1cmluZyBES0cuXG4gICAqL1xuICBnZXRTaGFyZVB1YmxpY0tleSgpOiBCdWZmZXIge1xuICAgIGlmICghdGhpcy5zaGFyZVBrKSB7XG4gICAgICB0aHJvdyBFcnJvcignREtHIHNlc3Npb24gbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNoYXJlUGs7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgMTI4LWNoYXIgaGV4IGNvbW1vbiBrZXljaGFpbjogNjQtY2hhciBwdWJsaWMga2V5ICsgNjQtY2hhciBjaGFpbiBjb2RlLlxuICAgKiBUaGlzIG1hdGNoZXMgdGhlIGZvcm1hdCBleHBlY3RlZCBieSBhZGRyZXNzIGRlcml2YXRpb24gKEVkZHNhLmRlcml2ZVVuaGFyZGVuZWQpLlxuICAgKi9cbiAgZ2V0Q29tbW9uS2V5Y2hhaW4oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2hhcmVQayB8fCAhdGhpcy5zaGFyZUNoYWluY29kZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaGFyZVBrLnRvU3RyaW5nKCdoZXgnKSArIHRoaXMuc2hhcmVDaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBDQk9SLWVuY29kZWQgUmVkdWNlZEtleVNoYXJlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBwYXJ0eSdzIG9wYXF1ZVxuICAgKiBzaWduaW5nIGtleSBzaGFyZSBpbiB0aGUgYGtleVNoYXJlYCBmaWVsZC4gVGhpcyBidWZmZXIgaXMgcHJpdmF0ZSBrZXkgbWF0ZXJpYWwuXG4gICAqIFRoZSBjYWxsZXIgZW5jcnlwdHMgaXQgYW5kIHN0b3JlcyBpdCBhcyBgcmVkdWNlZEVuY3J5cHRlZFBydmAgb24gdGhlIGtleSBjYXJkIFFSIGNvZGUuXG4gICAqL1xuICBnZXRSZWR1Y2VkS2V5U2hhcmUoKTogQnVmZmVyIHtcbiAgICBpZiAoIXRoaXMua2V5U2hhcmUgfHwgIXRoaXMuc2hhcmVQayB8fCAhdGhpcy5zaGFyZUNoYWluY29kZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICBjb25zdCByZWR1Y2VkS2V5U2hhcmU6IEVkZHNhUmVkdWNlZEtleVNoYXJlID0ge1xuICAgICAga2V5U2hhcmU6IEFycmF5LmZyb20odGhpcy5rZXlTaGFyZSksXG4gICAgICBwdWI6IEFycmF5LmZyb20odGhpcy5zaGFyZVBrKSxcbiAgICAgIHJvb3RDaGFpbkNvZGU6IEFycmF5LmZyb20odGhpcy5zaGFyZUNoYWluY29kZSksXG4gICAgfTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZW5jb2RlKHJlZHVjZWRLZXlTaGFyZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydHMgdGhlIGN1cnJlbnQgc2Vzc2lvbiBzdGF0ZSBhcyBhIEpTT04gc3RyaW5nIGZvciBwZXJzaXN0ZW5jZS5cbiAgICogSW5jbHVkZXM6IHJvdW5kIHN0YXRlIGJ5dGVzLCBjdXJyZW50IERLRyByb3VuZCwgZGVjcnlwdGlvbiBrZXksIG90aGVyIHBhcnRpZXMnIHB1YiBrZXlzLlxuICAgKiBUaGlzIG1pcnJvcnMgd2hhdCBhIHNlcnZlciB3b3VsZCBzdG9yZSBpbiBhIGRhdGFiYXNlIGJldHdlZW4gQVBJIHJvdW5kcy5cbiAgICovXG4gIGdldFNlc3Npb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuQ29tcGxldGUpIHtcbiAgICAgIHRocm93IEVycm9yKCdES0cgc2Vzc2lvbiBpcyBjb21wbGV0ZS4gRXhwb3J0aW5nIHRoZSBzZXNzaW9uIGlzIG5vdCBhbGxvd2VkLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ka2dTdGF0ZSA9PT0gRGtnU3RhdGUuVW5pbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RLRyBzZXNzaW9uIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZGtnU3RhdGVCeXRlczogdGhpcy5ka2dTdGF0ZUJ5dGVzPy50b1N0cmluZygnYmFzZTY0JykgPz8gbnVsbCxcbiAgICAgIGRrZ1JvdW5kOiB0aGlzLmRrZ1N0YXRlLFxuICAgICAgZGVjcnlwdGlvbktleTogdGhpcy5kZWNyeXB0aW9uS2V5Py50b1N0cmluZygnYmFzZTY0JykgPz8gbnVsbCxcbiAgICAgIG90aGVyUHViS2V5czogdGhpcy5vdGhlclB1YktleXM/Lm1hcCgoaykgPT4gay50b1N0cmluZygnYmFzZTY0JykpID8/IG51bGwsXG4gICAgICByZXRyb2ZpdERhdGE6IHRoaXMucmV0cm9maXREYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGEgcHJldmlvdXNseSBleHBvcnRlZCBzZXNzaW9uLiBBbGxvd3MgdGhlIHByb3RvY29sIHRvIGNvbnRpbnVlXG4gICAqIGZyb20gd2hlcmUgaXQgbGVmdCBvZmYsIGFzIGlmIHRoZSByb3VuZCBzdGF0ZSB3YXMgbG9hZGVkIGZyb20gYSBkYXRhYmFzZS5cbiAgICovXG4gIHJlc3RvcmVTZXNzaW9uKHNlc3Npb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb24pO1xuICAgIHRoaXMuZGtnU3RhdGVCeXRlcyA9IGRhdGEuZGtnU3RhdGVCeXRlcyA/IEJ1ZmZlci5mcm9tKGRhdGEuZGtnU3RhdGVCeXRlcywgJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB0aGlzLmRrZ1N0YXRlID0gZGF0YS5ka2dSb3VuZDtcbiAgICB0aGlzLmRlY3J5cHRpb25LZXkgPSBkYXRhLmRlY3J5cHRpb25LZXkgPyBCdWZmZXIuZnJvbShkYXRhLmRlY3J5cHRpb25LZXksICdiYXNlNjQnKSA6IG51bGw7XG4gICAgdGhpcy5vdGhlclB1YktleXMgPSBkYXRhLm90aGVyUHViS2V5cyA/IChkYXRhLm90aGVyUHViS2V5cyBhcyBzdHJpbmdbXSkubWFwKChrKSA9PiBCdWZmZXIuZnJvbShrLCAnYmFzZTY0JykpIDogbnVsbDtcbiAgICB0aGlzLnJldHJvZml0RGF0YSA9IGRhdGEucmV0cm9maXREYXRhID8/IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -3,4 +3,5 @@ export * as EddsaMPSDsg from './dsg';
3
3
  export * as MPSUtil from './util';
4
4
  export * as MPSTypes from './types';
5
5
  export * as MPSComms from './commsLayer';
6
+ export type { EddsaRetrofitData } from './types';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,WAAW,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,WAAW,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
@@ -39,4 +39,4 @@ exports.EddsaMPSDsg = __importStar(require("./dsg"));
39
39
  exports.MPSUtil = __importStar(require("./util"));
40
40
  exports.MPSTypes = __importStar(require("./types"));
41
41
  exports.MPSComms = __importStar(require("./commsLayer"));
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VkZHNhLW1wcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUM7QUFDckMscURBQXFDO0FBQ3JDLGtEQUFrQztBQUNsQyxvREFBb0M7QUFDcEMseURBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgRWRkc2FNUFNEa2cgZnJvbSAnLi9ka2cnO1xuZXhwb3J0ICogYXMgRWRkc2FNUFNEc2cgZnJvbSAnLi9kc2cnO1xuZXhwb3J0ICogYXMgTVBTVXRpbCBmcm9tICcuL3V0aWwnO1xuZXhwb3J0ICogYXMgTVBTVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBNUFNDb21tcyBmcm9tICcuL2NvbW1zTGF5ZXInO1xuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VkZHNhLW1wcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBcUM7QUFDckMscURBQXFDO0FBQ3JDLGtEQUFrQztBQUNsQyxvREFBb0M7QUFDcEMseURBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgRWRkc2FNUFNEa2cgZnJvbSAnLi9ka2cnO1xuZXhwb3J0ICogYXMgRWRkc2FNUFNEc2cgZnJvbSAnLi9kc2cnO1xuZXhwb3J0ICogYXMgTVBTVXRpbCBmcm9tICcuL3V0aWwnO1xuZXhwb3J0ICogYXMgTVBTVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBNUFNDb21tcyBmcm9tICcuL2NvbW1zTGF5ZXInO1xuZXhwb3J0IHR5cGUgeyBFZGRzYVJldHJvZml0RGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuIl19
@@ -1,4 +1,17 @@
1
1
  import * as t from 'io-ts';
2
+ /**
3
+ * Retrofit data derived from an existing MPCv1 EdDSA key share, used to seed
4
+ * an MPCv2 (MPS) DKG retrofit ceremony (`ed25519_dkg_round0_import`).
5
+ *
6
+ * @property s_i_0 - Party's clamped additive scalar (pShare.u), 32 bytes LE hex.
7
+ * @property expectedPk - Aggregate Ed25519 public key (pShare.y), 32 bytes hex.
8
+ * @property chainCode - Combined 32-byte BIP32 chain code (pShare.chaincode), hex.
9
+ */
10
+ export type EddsaRetrofitData = {
11
+ s_i_0: string;
12
+ expectedPk: string;
13
+ chainCode: string;
14
+ };
2
15
  export declare const ReducedKeyShareType: t.TypeC<{
3
16
  keyShare: t.ArrayC<t.NumberC>;
4
17
  pub: t.ArrayC<t.NumberC>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAExE;;GAEG;AACH,oBAAY,QAAQ;IAClB,2CAA2C;IAC3C,aAAa,kBAAkB;IAC/B,4DAA4D;IAC5D,IAAI,SAAS;IACb,wEAAwE;IACxE,QAAQ,aAAa;IACrB,yEAAyE;IACzE,QAAQ,aAAa;IACrB,iEAAiE;IACjE,KAAK,UAAU;IACf,0EAA0E;IAC1E,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,2CAA2C;IAC3C,aAAa,kBAAkB;IAC/B,6DAA6D;IAC7D,IAAI,SAAS;IACb,8EAA8E;IAC9E,QAAQ,aAAa;IACrB,8EAA8E;IAC9E,QAAQ,aAAa;IACrB,+FAA+F;IAC/F,QAAQ,aAAa;IACrB,sEAAsE;IACtE,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAEzD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,CAElF;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,CAMpG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAExE;;GAEG;AACH,oBAAY,QAAQ;IAClB,2CAA2C;IAC3C,aAAa,kBAAkB;IAC/B,4DAA4D;IAC5D,IAAI,SAAS;IACb,wEAAwE;IACxE,QAAQ,aAAa;IACrB,yEAAyE;IACzE,QAAQ,aAAa;IACrB,iEAAiE;IACjE,KAAK,UAAU;IACf,0EAA0E;IAC1E,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,2CAA2C;IAC3C,aAAa,kBAAkB;IAC/B,6DAA6D;IAC7D,IAAI,SAAS;IACb,8EAA8E;IAC9E,QAAQ,aAAa;IACrB,8EAA8E;IAC9E,QAAQ,aAAa;IACrB,+FAA+F;IAC/F,QAAQ,aAAa;IACrB,sEAAsE;IACtE,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAEzD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,CAElF;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,CAMpG"}
@@ -102,4 +102,4 @@ function getDecodedReducedKeyShare(reducedKeyShare) {
102
102
  }
103
103
  return decoded.right;
104
104
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VkZHNhLW1wcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2REEsNENBRUM7QUFFRCxnREFFQztBQUVELDhDQUVDO0FBRUQsa0RBRUM7QUFXRCw4REFNQztBQTVGRCxtQ0FBZ0M7QUFDaEMseUNBQXNDO0FBQ3RDLHlDQUEyQjtBQUVkLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUNqQyxDQUFDLENBQUM7QUFJSDs7R0FFRztBQUNILElBQVksUUFhWDtBQWJELFdBQVksUUFBUTtJQUNsQiwyQ0FBMkM7SUFDM0MsMkNBQStCLENBQUE7SUFDL0IsNERBQTREO0lBQzVELHlCQUFhLENBQUE7SUFDYix3RUFBd0U7SUFDeEUsaUNBQXFCLENBQUE7SUFDckIseUVBQXlFO0lBQ3pFLGlDQUFxQixDQUFBO0lBQ3JCLGlFQUFpRTtJQUNqRSwyQkFBZSxDQUFBO0lBQ2YsMEVBQTBFO0lBQzFFLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFiVyxRQUFRLHdCQUFSLFFBQVEsUUFhbkI7QUFFRDs7R0FFRztBQUNILElBQVksUUFhWDtBQWJELFdBQVksUUFBUTtJQUNsQiwyQ0FBMkM7SUFDM0MsMkNBQStCLENBQUE7SUFDL0IsNkRBQTZEO0lBQzdELHlCQUFhLENBQUE7SUFDYiw4RUFBOEU7SUFDOUUsaUNBQXFCLENBQUE7SUFDckIsOEVBQThFO0lBQzlFLGlDQUFxQixDQUFBO0lBQ3JCLCtGQUErRjtJQUMvRixpQ0FBcUIsQ0FBQTtJQUNyQixzRUFBc0U7SUFDdEUsaUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWJXLFFBQVEsd0JBQVIsUUFBUSxRQWFuQjtBQWVELFNBQWdCLGdCQUFnQixDQUFDLEdBQXdCO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDbEYsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLEdBQXNCO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLElBQTBCO0lBQzFELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxJQUF3QjtJQUMxRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBV0QsU0FBZ0IseUJBQXlCLENBQUMsZUFBb0M7SUFDNUUsTUFBTSxPQUFPLEdBQUcsMkJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBTSxFQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsSUFBSSxJQUFBLGVBQU0sRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgeyBpc0xlZnQgfSBmcm9tICdmcC10cy9FaXRoZXInO1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5cbmV4cG9ydCBjb25zdCBSZWR1Y2VkS2V5U2hhcmVUeXBlID0gdC50eXBlKHtcbiAga2V5U2hhcmU6IHQuYXJyYXkodC5udW1iZXIpLFxuICBwdWI6IHQuYXJyYXkodC5udW1iZXIpLFxuICByb290Q2hhaW5Db2RlOiB0LmFycmF5KHQubnVtYmVyKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBFZGRzYVJlZHVjZWRLZXlTaGFyZSA9IHQuVHlwZU9mPHR5cGVvZiBSZWR1Y2VkS2V5U2hhcmVUeXBlPjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzdGF0ZSBvZiBhIERLRyAoRGlzdHJpYnV0ZWQgS2V5IEdlbmVyYXRpb24pIHNlc3Npb25cbiAqL1xuZXhwb3J0IGVudW0gRGtnU3RhdGUge1xuICAvKiogREtHIHNlc3Npb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkICovXG4gIFVuaW5pdGlhbGl6ZWQgPSAnVW5pbml0aWFsaXplZCcsXG4gIC8qKiBES0cgc2Vzc2lvbiBoYXMgYmVlbiBpbml0aWFsaXplZCAoSW5pdCBzdGF0ZSBpbiBXQVNNKSAqL1xuICBJbml0ID0gJ0luaXQnLFxuICAvKiogREtHIHNlc3Npb24gaXMgd2FpdGluZyBmb3IgZmlyc3QgbWVzc2FnZSAoV2FpdE1zZzEgc3RhdGUgaW4gV0FTTSkgKi9cbiAgV2FpdE1zZzEgPSAnV2FpdE1zZzEnLFxuICAvKiogREtHIHNlc3Npb24gaXMgd2FpdGluZyBmb3Igc2Vjb25kIG1lc3NhZ2UgKFdhaXRNc2cyIHN0YXRlIGluIFdBU00pICovXG4gIFdhaXRNc2cyID0gJ1dhaXRNc2cyJyxcbiAgLyoqIERLRyBzZXNzaW9uIGhhcyBnZW5lcmF0ZWQga2V5IHNoYXJlcyAoU2hhcmUgc3RhdGUgaW4gV0FTTSkgKi9cbiAgU2hhcmUgPSAnU2hhcmUnLFxuICAvKiogREtHIHNlc3Npb24gaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYW5kIGtleSBzaGFyZXMgYXJlIGF2YWlsYWJsZSAqL1xuICBDb21wbGV0ZSA9ICdDb21wbGV0ZScsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSBEU0cgKERpc3RyaWJ1dGVkIFNpZ24gR2VuZXJhdGlvbikgc2Vzc2lvbi5cbiAqL1xuZXhwb3J0IGVudW0gRHNnU3RhdGUge1xuICAvKiogRFNHIHNlc3Npb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkICovXG4gIFVuaW5pdGlhbGl6ZWQgPSAnVW5pbml0aWFsaXplZCcsXG4gIC8qKiBpbml0RHNnKCkgaGFzIGJlZW4gY2FsbGVkOyByZWFkeSBmb3IgZ2V0Rmlyc3RNZXNzYWdlKCkgKi9cbiAgSW5pdCA9ICdJbml0JyxcbiAgLyoqIFIwIGJyb2FkY2FzdCBlbWl0dGVkOyB3YWl0aW5nIGZvciBjb3VudGVycGFydCdzIFIwIGJyb2FkY2FzdCAoU2lnbk1zZzEpICovXG4gIFdhaXRNc2cxID0gJ1dhaXRNc2cxJyxcbiAgLyoqIFIxIGJyb2FkY2FzdCBlbWl0dGVkOyB3YWl0aW5nIGZvciBjb3VudGVycGFydCdzIFIxIGJyb2FkY2FzdCAoU2lnbk1zZzIpICovXG4gIFdhaXRNc2cyID0gJ1dhaXRNc2cyJyxcbiAgLyoqIFIyIGJyb2FkY2FzdCBlbWl0dGVkOyB3YWl0aW5nIGZvciBjb3VudGVycGFydCdzIFIyIGJyb2FkY2FzdCAoU2lnbk1zZzMsIHRoZSBwYXJ0aWFsIHNpZykgKi9cbiAgV2FpdE1zZzMgPSAnV2FpdE1zZzMnLFxuICAvKiogRmluYWwgNjQtYnl0ZSBFZDI1NTE5IHNpZ25hdHVyZSBpcyBhdmFpbGFibGUgdmlhIGdldFNpZ25hdHVyZSgpICovXG4gIENvbXBsZXRlID0gJ0NvbXBsZXRlJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlPFQ+IHtcbiAgcGF5bG9hZDogVDtcbiAgZnJvbTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkTWVzc2FnZSA9IE1lc3NhZ2U8c3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE1lc3NhZ2VzID0gTWVzc2FnZTxzdHJpbmc+W107XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE1lc3NhZ2UgPSBNZXNzYWdlPFVpbnQ4QXJyYXk+O1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IE1lc3NhZ2U8VWludDhBcnJheT5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU1lc3NhZ2UobXNnOiBEZXNlcmlhbGl6ZWRNZXNzYWdlKTogU2VyaWFsaXplZE1lc3NhZ2Uge1xuICByZXR1cm4geyBmcm9tOiBtc2cuZnJvbSwgcGF5bG9hZDogQnVmZmVyLmZyb20obXNnLnBheWxvYWQpLnRvU3RyaW5nKCdiYXNlNjQnKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVNZXNzYWdlKG1zZzogU2VyaWFsaXplZE1lc3NhZ2UpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlIHtcbiAgcmV0dXJuIHsgZnJvbTogbXNnLmZyb20sIHBheWxvYWQ6IEJ1ZmZlci5mcm9tKG1zZy5wYXlsb2FkLCAnYmFzZTY0JykgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU1lc3NhZ2VzKG1zZ3M6IERlc2VyaWFsaXplZE1lc3NhZ2VzKTogU2VyaWFsaXplZE1lc3NhZ2VzIHtcbiAgcmV0dXJuIG1zZ3MubWFwKHNlcmlhbGl6ZU1lc3NhZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVNZXNzYWdlcyhtc2dzOiBTZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiBtc2dzLm1hcChkZXNlcmlhbGl6ZU1lc3NhZ2UpO1xufVxuXG4vKiogQSBQR1AgZGV0YWNoZWQtc2lnbmVkIG1lc3NhZ2UgYnkgYSBwYXJ0eS5cbiAqIGBtZXNzYWdlYCBpcyB0aGUgcmF3IHBheWxvYWQgZW5jb2RlZCBhcyBiYXNlNjQuXG4gKiBgc2lnbmF0dXJlYCBpcyBhbiBhcm1vcmVkIFBHUCBkZXRhY2hlZCBzaWduYXR1cmUgb3ZlciB0aG9zZSBieXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNUFNTaWduZWRNZXNzYWdlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29kZWRSZWR1Y2VkS2V5U2hhcmUocmVkdWNlZEtleVNoYXJlOiBCdWZmZXIgfCBVaW50OEFycmF5KTogRWRkc2FSZWR1Y2VkS2V5U2hhcmUge1xuICBjb25zdCBkZWNvZGVkID0gUmVkdWNlZEtleVNoYXJlVHlwZS5kZWNvZGUoZGVjb2RlKHJlZHVjZWRLZXlTaGFyZSkpO1xuICBpZiAoaXNMZWZ0KGRlY29kZWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgcmVkdWNlZEtleVNoYXJlOiAke2RlY29kZWQubGVmdH1gKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlZC5yaWdodDtcbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VkZHNhLW1wcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyRUEsNENBRUM7QUFFRCxnREFFQztBQUVELDhDQUVDO0FBRUQsa0RBRUM7QUFXRCw4REFNQztBQTFHRCxtQ0FBZ0M7QUFDaEMseUNBQXNDO0FBQ3RDLHlDQUEyQjtBQWdCZCxRQUFBLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDakMsQ0FBQyxDQUFDO0FBSUg7O0dBRUc7QUFDSCxJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEIsMkNBQTJDO0lBQzNDLDJDQUErQixDQUFBO0lBQy9CLDREQUE0RDtJQUM1RCx5QkFBYSxDQUFBO0lBQ2Isd0VBQXdFO0lBQ3hFLGlDQUFxQixDQUFBO0lBQ3JCLHlFQUF5RTtJQUN6RSxpQ0FBcUIsQ0FBQTtJQUNyQixpRUFBaUU7SUFDakUsMkJBQWUsQ0FBQTtJQUNmLDBFQUEwRTtJQUMxRSxpQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBYlcsUUFBUSx3QkFBUixRQUFRLFFBYW5CO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEIsMkNBQTJDO0lBQzNDLDJDQUErQixDQUFBO0lBQy9CLDZEQUE2RDtJQUM3RCx5QkFBYSxDQUFBO0lBQ2IsOEVBQThFO0lBQzlFLGlDQUFxQixDQUFBO0lBQ3JCLDhFQUE4RTtJQUM5RSxpQ0FBcUIsQ0FBQTtJQUNyQiwrRkFBK0Y7SUFDL0YsaUNBQXFCLENBQUE7SUFDckIsc0VBQXNFO0lBQ3RFLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFiVyxRQUFRLHdCQUFSLFFBQVEsUUFhbkI7QUFlRCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUF3QjtJQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ2xGLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFzQjtJQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ3pFLENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxJQUEwQjtJQUMxRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsSUFBd0I7SUFDMUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDdEMsQ0FBQztBQVdELFNBQWdCLHlCQUF5QixDQUFDLGVBQW9DO0lBQzVFLE1BQU0sT0FBTyxHQUFHLDJCQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQU0sRUFBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksSUFBQSxlQUFNLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0IHsgaXNMZWZ0IH0gZnJvbSAnZnAtdHMvRWl0aGVyJztcbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuXG4vKipcbiAqIFJldHJvZml0IGRhdGEgZGVyaXZlZCBmcm9tIGFuIGV4aXN0aW5nIE1QQ3YxIEVkRFNBIGtleSBzaGFyZSwgdXNlZCB0byBzZWVkXG4gKiBhbiBNUEN2MiAoTVBTKSBES0cgcmV0cm9maXQgY2VyZW1vbnkgKGBlZDI1NTE5X2RrZ19yb3VuZDBfaW1wb3J0YCkuXG4gKlxuICogQHByb3BlcnR5IHNfaV8wIC0gUGFydHkncyBjbGFtcGVkIGFkZGl0aXZlIHNjYWxhciAocFNoYXJlLnUpLCAzMiBieXRlcyBMRSBoZXguXG4gKiBAcHJvcGVydHkgZXhwZWN0ZWRQayAtIEFnZ3JlZ2F0ZSBFZDI1NTE5IHB1YmxpYyBrZXkgKHBTaGFyZS55KSwgMzIgYnl0ZXMgaGV4LlxuICogQHByb3BlcnR5IGNoYWluQ29kZSAtIENvbWJpbmVkIDMyLWJ5dGUgQklQMzIgY2hhaW4gY29kZSAocFNoYXJlLmNoYWluY29kZSksIGhleC5cbiAqL1xuZXhwb3J0IHR5cGUgRWRkc2FSZXRyb2ZpdERhdGEgPSB7XG4gIHNfaV8wOiBzdHJpbmc7XG4gIGV4cGVjdGVkUGs6IHN0cmluZztcbiAgY2hhaW5Db2RlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgUmVkdWNlZEtleVNoYXJlVHlwZSA9IHQudHlwZSh7XG4gIGtleVNoYXJlOiB0LmFycmF5KHQubnVtYmVyKSxcbiAgcHViOiB0LmFycmF5KHQubnVtYmVyKSxcbiAgcm9vdENoYWluQ29kZTogdC5hcnJheSh0Lm51bWJlciksXG59KTtcblxuZXhwb3J0IHR5cGUgRWRkc2FSZWR1Y2VkS2V5U2hhcmUgPSB0LlR5cGVPZjx0eXBlb2YgUmVkdWNlZEtleVNoYXJlVHlwZT47XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSBES0cgKERpc3RyaWJ1dGVkIEtleSBHZW5lcmF0aW9uKSBzZXNzaW9uXG4gKi9cbmV4cG9ydCBlbnVtIERrZ1N0YXRlIHtcbiAgLyoqIERLRyBzZXNzaW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCAqL1xuICBVbmluaXRpYWxpemVkID0gJ1VuaW5pdGlhbGl6ZWQnLFxuICAvKiogREtHIHNlc3Npb24gaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKEluaXQgc3RhdGUgaW4gV0FTTSkgKi9cbiAgSW5pdCA9ICdJbml0JyxcbiAgLyoqIERLRyBzZXNzaW9uIGlzIHdhaXRpbmcgZm9yIGZpcnN0IG1lc3NhZ2UgKFdhaXRNc2cxIHN0YXRlIGluIFdBU00pICovXG4gIFdhaXRNc2cxID0gJ1dhaXRNc2cxJyxcbiAgLyoqIERLRyBzZXNzaW9uIGlzIHdhaXRpbmcgZm9yIHNlY29uZCBtZXNzYWdlIChXYWl0TXNnMiBzdGF0ZSBpbiBXQVNNKSAqL1xuICBXYWl0TXNnMiA9ICdXYWl0TXNnMicsXG4gIC8qKiBES0cgc2Vzc2lvbiBoYXMgZ2VuZXJhdGVkIGtleSBzaGFyZXMgKFNoYXJlIHN0YXRlIGluIFdBU00pICovXG4gIFNoYXJlID0gJ1NoYXJlJyxcbiAgLyoqIERLRyBzZXNzaW9uIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFuZCBrZXkgc2hhcmVzIGFyZSBhdmFpbGFibGUgKi9cbiAgQ29tcGxldGUgPSAnQ29tcGxldGUnLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIGEgRFNHIChEaXN0cmlidXRlZCBTaWduIEdlbmVyYXRpb24pIHNlc3Npb24uXG4gKi9cbmV4cG9ydCBlbnVtIERzZ1N0YXRlIHtcbiAgLyoqIERTRyBzZXNzaW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCAqL1xuICBVbmluaXRpYWxpemVkID0gJ1VuaW5pdGlhbGl6ZWQnLFxuICAvKiogaW5pdERzZygpIGhhcyBiZWVuIGNhbGxlZDsgcmVhZHkgZm9yIGdldEZpcnN0TWVzc2FnZSgpICovXG4gIEluaXQgPSAnSW5pdCcsXG4gIC8qKiBSMCBicm9hZGNhc3QgZW1pdHRlZDsgd2FpdGluZyBmb3IgY291bnRlcnBhcnQncyBSMCBicm9hZGNhc3QgKFNpZ25Nc2cxKSAqL1xuICBXYWl0TXNnMSA9ICdXYWl0TXNnMScsXG4gIC8qKiBSMSBicm9hZGNhc3QgZW1pdHRlZDsgd2FpdGluZyBmb3IgY291bnRlcnBhcnQncyBSMSBicm9hZGNhc3QgKFNpZ25Nc2cyKSAqL1xuICBXYWl0TXNnMiA9ICdXYWl0TXNnMicsXG4gIC8qKiBSMiBicm9hZGNhc3QgZW1pdHRlZDsgd2FpdGluZyBmb3IgY291bnRlcnBhcnQncyBSMiBicm9hZGNhc3QgKFNpZ25Nc2czLCB0aGUgcGFydGlhbCBzaWcpICovXG4gIFdhaXRNc2czID0gJ1dhaXRNc2czJyxcbiAgLyoqIEZpbmFsIDY0LWJ5dGUgRWQyNTUxOSBzaWduYXR1cmUgaXMgYXZhaWxhYmxlIHZpYSBnZXRTaWduYXR1cmUoKSAqL1xuICBDb21wbGV0ZSA9ICdDb21wbGV0ZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZTxUPiB7XG4gIHBheWxvYWQ6IFQ7XG4gIGZyb206IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZE1lc3NhZ2UgPSBNZXNzYWdlPHN0cmluZz47XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRNZXNzYWdlcyA9IE1lc3NhZ2U8c3RyaW5nPltdO1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRNZXNzYWdlID0gTWVzc2FnZTxVaW50OEFycmF5PjtcblxuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkTWVzc2FnZXMgPSBNZXNzYWdlPFVpbnQ4QXJyYXk+W107XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVNZXNzYWdlKG1zZzogRGVzZXJpYWxpemVkTWVzc2FnZSk6IFNlcmlhbGl6ZWRNZXNzYWdlIHtcbiAgcmV0dXJuIHsgZnJvbTogbXNnLmZyb20sIHBheWxvYWQ6IEJ1ZmZlci5mcm9tKG1zZy5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JykgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplTWVzc2FnZShtc2c6IFNlcmlhbGl6ZWRNZXNzYWdlKTogRGVzZXJpYWxpemVkTWVzc2FnZSB7XG4gIHJldHVybiB7IGZyb206IG1zZy5mcm9tLCBwYXlsb2FkOiBCdWZmZXIuZnJvbShtc2cucGF5bG9hZCwgJ2Jhc2U2NCcpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVNZXNzYWdlcyhtc2dzOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyk6IFNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiBtc2dzLm1hcChzZXJpYWxpemVNZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplTWVzc2FnZXMobXNnczogU2VyaWFsaXplZE1lc3NhZ2VzKTogRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICByZXR1cm4gbXNncy5tYXAoZGVzZXJpYWxpemVNZXNzYWdlKTtcbn1cblxuLyoqIEEgUEdQIGRldGFjaGVkLXNpZ25lZCBtZXNzYWdlIGJ5IGEgcGFydHkuXG4gKiBgbWVzc2FnZWAgaXMgdGhlIHJhdyBwYXlsb2FkIGVuY29kZWQgYXMgYmFzZTY0LlxuICogYHNpZ25hdHVyZWAgaXMgYW4gYXJtb3JlZCBQR1AgZGV0YWNoZWQgc2lnbmF0dXJlIG92ZXIgdGhvc2UgYnl0ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTVBTU2lnbmVkTWVzc2FnZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKHJlZHVjZWRLZXlTaGFyZTogQnVmZmVyIHwgVWludDhBcnJheSk6IEVkZHNhUmVkdWNlZEtleVNoYXJlIHtcbiAgY29uc3QgZGVjb2RlZCA9IFJlZHVjZWRLZXlTaGFyZVR5cGUuZGVjb2RlKGRlY29kZShyZWR1Y2VkS2V5U2hhcmUpKTtcbiAgaWYgKGlzTGVmdChkZWNvZGVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIHJlZHVjZWRLZXlTaGFyZTogJHtkZWNvZGVkLmxlZnR9YCk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQucmlnaHQ7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { DKG } from './dkg';
2
2
  import { DSG } from './dsg';
3
- import { DeserializedMessages } from './types';
3
+ import { DeserializedMessages, EddsaRetrofitData } from './types';
4
4
  /**
5
5
  * Concatenates multiple Uint8Array instances into a single Uint8Array
6
6
  * @param chunks - Array of Uint8Array instances to concatenate
@@ -16,7 +16,7 @@ export interface EdDsaDKGPartySeed {
16
16
  dkgSeed?: Buffer;
17
17
  }
18
18
  /** See `EdDsaDKGPartySeed`. Mirrors `DklsUtils.generateDKGKeyShares` for ECDSA DKLS. */
19
- export declare function generateEdDsaDKGKeyShares(seedUser?: EdDsaDKGPartySeed, seedBackup?: EdDsaDKGPartySeed, seedBitgo?: EdDsaDKGPartySeed): Promise<[DKG, DKG, DKG]>;
19
+ export declare function generateEdDsaDKGKeyShares(seedUser?: EdDsaDKGPartySeed, seedBackup?: EdDsaDKGPartySeed, seedBitgo?: EdDsaDKGPartySeed, retrofitUser?: EddsaRetrofitData, retrofitBackup?: EddsaRetrofitData, retrofitBitgo?: EddsaRetrofitData): Promise<[DKG, DKG, DKG]>;
20
20
  /**
21
21
  * Initializes two DSG parties and drives them through the protocol until the specified round.
22
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAG5D;AAQD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,wFAAwF;AACxF,wBAAsB,yBAAyB,CAC7C,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,iBAAiB,EAC9B,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAkC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,CAsB1C"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/eddsa-mps/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAG5D;AAQD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,wFAAwF;AACxF,wBAAsB,yBAAyB,CAC7C,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,iBAAiB,EAC9B,SAAS,CAAC,EAAE,iBAAiB,EAC7B,YAAY,CAAC,EAAE,iBAAiB,EAChC,cAAc,CAAC,EAAE,iBAAiB,EAClC,aAAa,CAAC,EAAE,iBAAiB,GAChC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAkC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,CAsB1C"}
@@ -30,13 +30,13 @@ function validateSeed(seed) {
30
30
  return seed ?? {};
31
31
  }
32
32
  /** See `EdDsaDKGPartySeed`. Mirrors `DklsUtils.generateDKGKeyShares` for ECDSA DKLS. */
33
- async function generateEdDsaDKGKeyShares(seedUser, seedBackup, seedBitgo) {
33
+ async function generateEdDsaDKGKeyShares(seedUser, seedBackup, seedBitgo, retrofitUser, retrofitBackup, retrofitBitgo) {
34
34
  const { encKey: userEncKey, dkgSeed: userDkgSeed } = validateSeed(seedUser);
35
35
  const { encKey: backupEncKey, dkgSeed: backupDkgSeed } = validateSeed(seedBackup);
36
36
  const { encKey: bitgoEncKey, dkgSeed: bitgoDkgSeed } = validateSeed(seedBitgo);
37
- const user = new dkg_1.DKG(3, 2, 0);
38
- const backup = new dkg_1.DKG(3, 2, 1);
39
- const bitgo = new dkg_1.DKG(3, 2, 2);
37
+ const user = new dkg_1.DKG(3, 2, 0, retrofitUser);
38
+ const backup = new dkg_1.DKG(3, 2, 1, retrofitBackup);
39
+ const bitgo = new dkg_1.DKG(3, 2, 2, retrofitBitgo);
40
40
  const userKP = generateX25519Keypair(userEncKey);
41
41
  const backupKP = generateX25519Keypair(backupEncKey);
42
42
  const bitgoKP = generateX25519Keypair(bitgoEncKey);
@@ -91,4 +91,4 @@ async function executeTillRound(round, party1Dsg, party2Dsg, keyShare1, keyShare
91
91
  (0, assert_1.default)(party1Dsg.getSignature().toString('hex') === party2Dsg.getSignature().toString('hex'));
92
92
  return party1Dsg.getSignature();
93
93
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWRkc2EtbXBzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFZQSxrQ0FHQztBQXdCRCw4REFzQ0M7QUFjRCw0Q0E4QkM7QUF6SEQsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QixtREFBK0M7QUFDL0MsK0JBQTRCO0FBSTVCOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsTUFBb0I7SUFDOUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQWE7SUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBV0QsU0FBUyxZQUFZLENBQUMsSUFBd0I7SUFDNUMsSUFBQSxnQkFBTSxFQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUN0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QVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUMvRSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyB4MjU1MTkgfSBmcm9tICdAbm9ibGUvY3VydmVzL2VkMjU1MTknO1xuaW1wb3J0IHsgREtHIH0gZnJvbSAnLi9ka2cnO1xuaW1wb3J0IHsgRFNHIH0gZnJvbSAnLi9kc2cnO1xuaW1wb3J0IHsgRGVzZXJpYWxpemVkTWVzc2FnZXMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBDb25jYXRlbmF0ZXMgbXVsdGlwbGUgVWludDhBcnJheSBpbnN0YW5jZXMgaW50byBhIHNpbmdsZSBVaW50OEFycmF5XG4gKiBAcGFyYW0gY2h1bmtzIC0gQXJyYXkgb2YgVWludDhBcnJheSBpbnN0YW5jZXMgdG8gY29uY2F0ZW5hdGVcbiAqIEByZXR1cm5zIENvbmNhdGVuYXRlZCBVaW50OEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRCeXRlcyhjaHVua3M6IFVpbnQ4QXJyYXlbXSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBidWZmZXJzID0gY2h1bmtzLm1hcCgoY2h1bmspID0+IEJ1ZmZlci5mcm9tKGNodW5rKSk7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVYMjU1MTlLZXlwYWlyKHNlZWQ/OiBCdWZmZXIpOiB7IHByaXZLZXk6IEJ1ZmZlcjsgcHViS2V5OiBCdWZmZXIgfSB7XG4gIGNvbnN0IHByaXZLZXkgPSBzZWVkID8gc2VlZC5zdWJhcnJheSgwLCAzMikgOiBjcnlwdG8ucmFuZG9tQnl0ZXMoMzIpO1xuICBjb25zdCBwdWJLZXkgPSBCdWZmZXIuZnJvbSh4MjU1MTkuZ2V0UHVibGljS2V5KHByaXZLZXkpKTtcbiAgcmV0dXJuIHsgcHJpdktleTogQnVmZmVyLmZyb20ocHJpdktleSksIHB1YktleSB9O1xufVxuXG4vKipcbiAqIFBlci1wYXJ0eSBkZXRlcm1pbmlzdGljIHNlZWQgbWF0ZXJpYWwuIFRvIHVzZSB0aGUgc2FtZSBzZWVkIGZvciBib3RoLCBwYXNzIGl0IGFzIGJvdGggZmllbGRzLlxuICogYGVuY0tleWAgc2VlZHMgdGhlIFgyNTUxOSBlbmNyeXB0aW9uIGtleTsgYGRrZ1NlZWRgIHNlZWRzIERLRyByb3VuZCAwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkRHNhREtHUGFydHlTZWVkIHtcbiAgZW5jS2V5PzogQnVmZmVyO1xuICBka2dTZWVkPzogQnVmZmVyO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNlZWQoc2VlZD86IEVkRHNhREtHUGFydHlTZWVkKTogRWREc2FES0dQYXJ0eVNlZWQge1xuICBhc3NlcnQoIXNlZWQ/LmVuY0tleSB8fCBzZWVkLmVuY0tleS5sZW5ndGggPj0gMzIsICdlbmNLZXkgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcycpO1xuICBhc3NlcnQoIXNlZWQ/LmRrZ1NlZWQgfHwgc2VlZC5ka2dTZWVkLmxlbmd0aCA+PSAzMiwgJ2RrZ1NlZWQgbXVzdCBiZSBhdCBsZWFzdCAzMiBieXRlcycpO1xuICByZXR1cm4gc2VlZCA/PyB7fTtcbn1cblxuLyoqIFNlZSBgRWREc2FES0dQYXJ0eVNlZWRgLiBNaXJyb3JzIGBEa2xzVXRpbHMuZ2VuZXJhdGVES0dLZXlTaGFyZXNgIGZvciBFQ0RTQSBES0xTLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoXG4gIHNlZWRVc2VyPzogRWREc2FES0dQYXJ0eVNlZWQsXG4gIHNlZWRCYWNrdXA/OiBFZERzYURLR1BhcnR5U2VlZCxcbiAgc2VlZEJpdGdvPzogRWREc2FES0dQYXJ0eVNlZWRcbik6IFByb21pc2U8W0RLRywgREtHLCBES0ddPiB7XG4gIGNvbnN0IHsgZW5jS2V5OiB1c2VyRW5jS2V5LCBka2dTZWVkOiB1c2VyRGtnU2VlZCB9ID0gdmFsaWRhdGVTZWVkKHNlZWRVc2VyKTtcbiAgY29uc3QgeyBlbmNLZXk6IGJhY2t1cEVuY0tleSwgZGtnU2VlZDogYmFja3VwRGtnU2VlZCB9ID0gdmFsaWRhdGVTZWVkKHNlZWRCYWNrdXApO1xuICBjb25zdCB7IGVuY0tleTogYml0Z29FbmNLZXksIGRrZ1NlZWQ6IGJpdGdvRGtnU2VlZCB9ID0gdmFsaWRhdGVTZWVkKHNlZWRCaXRnbyk7XG5cbiAgY29uc3QgdXNlciA9IG5ldyBES0coMywgMiwgMCk7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBES0coMywgMiwgMSk7XG4gIGNvbnN0IGJpdGdvID0gbmV3IERLRygzLCAyLCAyKTtcblxuICBjb25zdCB1c2VyS1AgPSBnZW5lcmF0ZVgyNTUxOUtleXBhaXIodXNlckVuY0tleSk7XG4gIGNvbnN0IGJhY2t1cEtQID0gZ2VuZXJhdGVYMjU1MTlLZXlwYWlyKGJhY2t1cEVuY0tleSk7XG4gIGNvbnN0IGJpdGdvS1AgPSBnZW5lcmF0ZVgyNTUxOUtleXBhaXIoYml0Z29FbmNLZXkpO1xuXG4gIGF3YWl0IHVzZXIuaW5pdERrZyh1c2VyS1AucHJpdktleSwgW2JhY2t1cEtQLnB1YktleSwgYml0Z29LUC5wdWJLZXldKTtcbiAgYXdhaXQgYmFja3VwLmluaXREa2coYmFja3VwS1AucHJpdktleSwgW3VzZXJLUC5wdWJLZXksIGJpdGdvS1AucHViS2V5XSk7XG4gIGF3YWl0IGJpdGdvLmluaXREa2coYml0Z29LUC5wcml2S2V5LCBbdXNlcktQLnB1YktleSwgYmFja3VwS1AucHViS2V5XSk7XG5cbiAgY29uc3QgcjFNZXNzYWdlcyA9IFtcbiAgICB1c2VyLmdldEZpcnN0TWVzc2FnZSh1c2VyRGtnU2VlZCksXG4gICAgYmFja3VwLmdldEZpcnN0TWVzc2FnZShiYWNrdXBEa2dTZWVkKSxcbiAgICBiaXRnby5nZXRGaXJzdE1lc3NhZ2UoYml0Z29Ea2dTZWVkKSxcbiAgXTtcblxuICBjb25zdCByMk1lc3NhZ2VzID0gW1xuICAgIC4uLnVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyMU1lc3NhZ2VzKSxcbiAgICAuLi5iYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyMU1lc3NhZ2VzKSxcbiAgICAuLi5iaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHIxTWVzc2FnZXMpLFxuICBdO1xuXG4gIHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyMk1lc3NhZ2VzKTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMocjJNZXNzYWdlcyk7XG4gIGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMocjJNZXNzYWdlcyk7XG5cbiAgcmV0dXJuIFt1c2VyLCBiYWNrdXAsIGJpdGdvXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0d28gRFNHIHBhcnRpZXMgYW5kIGRyaXZlcyB0aGVtIHRocm91Z2ggdGhlIHByb3RvY29sIHVudGlsIHRoZSBzcGVjaWZpZWQgcm91bmQuXG4gKlxuICogQHBhcmFtIHJvdW5kIC0gUm91bmQgdG8gZXhlY3V0ZSB1bnRpbCAoMeKAkzMpLiBSZXR1cm5zIGludGVybWVkaWF0ZSBtZXNzYWdlIGFycmF5cyBmb3IgMeKAkzIsXG4gKiAgIG9yIHRoZSA2NC1ieXRlIEVkMjU1MTkgc2lnbmF0dXJlIEJ1ZmZlciBmb3IgMy5cbiAqIEBwYXJhbSBwYXJ0eTFEc2cgLSBGaXJzdCBEU0cgcGFydHkgKGBuZXcgRFNHKHBhcnR5SWR4KWApLCBub3QgeWV0IGluaXRpYWxpemVkLlxuICogQHBhcmFtIHBhcnR5MkRzZyAtIFNlY29uZCBEU0cgcGFydHkgKGBuZXcgRFNHKHBhcnR5SWR4KWApLCBub3QgeWV0IGluaXRpYWxpemVkLlxuICogQHBhcmFtIGtleVNoYXJlMSAtIEtleSBzaGFyZSBmb3IgdGhlIGZpcnN0IHBhcnR5LlxuICogQHBhcmFtIGtleVNoYXJlMiAtIEtleSBzaGFyZSBmb3IgdGhlIHNlY29uZCBwYXJ0eS5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gUmF3IG1lc3NhZ2UgYnl0ZXMgdG8gc2lnbi5cbiAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aCAtIEJJUC0zMi1zdHlsZSBkZXJpdmF0aW9uIHBhdGgsIGUuZy4gYFwibVwiYCBvciBgXCJtLzAvMFwiYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVUaWxsUm91bmQoXG4gIHJvdW5kOiBudW1iZXIsXG4gIHBhcnR5MURzZzogRFNHLFxuICBwYXJ0eTJEc2c6IERTRyxcbiAga2V5U2hhcmUxOiBCdWZmZXIsXG4gIGtleVNoYXJlMjogQnVmZmVyLFxuICBtZXNzYWdlOiBCdWZmZXIsXG4gIGRlcml2YXRpb25QYXRoOiBzdHJpbmdcbik6IFByb21pc2U8RGVzZXJpYWxpemVkTWVzc2FnZXNbXSB8IEJ1ZmZlcj4ge1xuICBpZiAocm91bmQgPCAxIHx8IHJvdW5kID4gMykge1xuICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHJvdW5kIG51bWJlcicpO1xuICB9XG4gIGF3YWl0IHBhcnR5MURzZy5pbml0RHNnKGtleVNoYXJlMSwgbWVzc2FnZSwgZGVyaXZhdGlvblBhdGgsIHBhcnR5MkRzZy5nZXRQYXJ0eUlkeCgpKTtcbiAgYXdhaXQgcGFydHkyRHNnLmluaXREc2coa2V5U2hhcmUyLCBtZXNzYWdlLCBkZXJpdmF0aW9uUGF0aCwgcGFydHkxRHNnLmdldFBhcnR5SWR4KCkpO1xuICBjb25zdCBwYXJ0eTFSb3VuZDBNZXNzYWdlID0gcGFydHkxRHNnLmdldEZpcnN0TWVzc2FnZSgpO1xuICBjb25zdCBwYXJ0eTJSb3VuZDBNZXNzYWdlID0gcGFydHkyRHNnLmdldEZpcnN0TWVzc2FnZSgpO1xuXG4gIGNvbnN0IFtwYXJ0eTJSb3VuZDFNZXNzYWdlc10gPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbcGFydHkxUm91bmQwTWVzc2FnZSwgcGFydHkyUm91bmQwTWVzc2FnZV0pO1xuICBjb25zdCBbcGFydHkxUm91bmQxTWVzc2FnZXNdID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW3BhcnR5MVJvdW5kME1lc3NhZ2UsIHBhcnR5MlJvdW5kME1lc3NhZ2VdKTtcbiAgaWYgKHJvdW5kID09PSAxKSByZXR1cm4gW1twYXJ0eTFSb3VuZDFNZXNzYWdlc10sIFtwYXJ0eTJSb3VuZDFNZXNzYWdlc11dO1xuXG4gIGNvbnN0IFtwYXJ0eTFSb3VuZDJNZXNzYWdlc10gPSBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbcGFydHkxUm91bmQxTWVzc2FnZXMsIHBhcnR5MlJvdW5kMU1lc3NhZ2VzXSk7XG4gIGNvbnN0IFtwYXJ0eTJSb3VuZDJNZXNzYWdlc10gPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbcGFydHkxUm91bmQxTWVzc2FnZXMsIHBhcnR5MlJvdW5kMU1lc3NhZ2VzXSk7XG4gIGlmIChyb3VuZCA9PT0gMikgcmV0dXJuIFtbcGFydHkxUm91bmQyTWVzc2FnZXNdLCBbcGFydHkyUm91bmQyTWVzc2FnZXNdXTtcblxuICBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbcGFydHkxUm91bmQyTWVzc2FnZXMsIHBhcnR5MlJvdW5kMk1lc3NhZ2VzXSk7XG4gIHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtwYXJ0eTFSb3VuZDJNZXNzYWdlcywgcGFydHkyUm91bmQyTWVzc2FnZXNdKTtcblxuICBhc3NlcnQocGFydHkxRHNnLmdldFNpZ25hdHVyZSgpLnRvU3RyaW5nKCdoZXgnKSA9PT0gcGFydHkyRHNnLmdldFNpZ25hdHVyZSgpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIHJldHVybiBwYXJ0eTFEc2cuZ2V0U2lnbmF0dXJlKCk7XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWRkc2EtbXBzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFZQSxrQ0FHQztBQXdCRCw4REF5Q0M7QUFjRCw0Q0E4QkM7QUE1SEQsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QixtREFBK0M7QUFDL0MsK0JBQTRCO0FBSTVCOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsTUFBb0I7SUFDOUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQWE7SUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBV0QsU0FBUyxZQUFZLENBQUMsSUFBd0I7SUFDNUMsSUFBQSxnQkFBTSxFQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUN0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QUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBRXpFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUMvRSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyB4MjU1MTkgfSBmcm9tICdAbm9ibGUvY3VydmVzL2VkMjU1MTknO1xuaW1wb3J0IHsgREtHIH0gZnJvbSAnLi9ka2cnO1xuaW1wb3J0IHsgRFNHIH0gZnJvbSAnLi9kc2cnO1xuaW1wb3J0IHsgRGVzZXJpYWxpemVkTWVzc2FnZXMsIEVkZHNhUmV0cm9maXREYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29uY2F0ZW5hdGVzIG11bHRpcGxlIFVpbnQ4QXJyYXkgaW5zdGFuY2VzIGludG8gYSBzaW5nbGUgVWludDhBcnJheVxuICogQHBhcmFtIGNodW5rcyAtIEFycmF5IG9mIFVpbnQ4QXJyYXkgaW5zdGFuY2VzIHRvIGNvbmNhdGVuYXRlXG4gKiBAcmV0dXJucyBDb25jYXRlbmF0ZWQgVWludDhBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0Qnl0ZXMoY2h1bmtzOiBVaW50OEFycmF5W10pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYnVmZmVycyA9IGNodW5rcy5tYXAoKGNodW5rKSA9PiBCdWZmZXIuZnJvbShjaHVuaykpO1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmNvbmNhdChidWZmZXJzKSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlWDI1NTE5S2V5cGFpcihzZWVkPzogQnVmZmVyKTogeyBwcml2S2V5OiBCdWZmZXI7IHB1YktleTogQnVmZmVyIH0ge1xuICBjb25zdCBwcml2S2V5ID0gc2VlZCA/IHNlZWQuc3ViYXJyYXkoMCwgMzIpIDogY3J5cHRvLnJhbmRvbUJ5dGVzKDMyKTtcbiAgY29uc3QgcHViS2V5ID0gQnVmZmVyLmZyb20oeDI1NTE5LmdldFB1YmxpY0tleShwcml2S2V5KSk7XG4gIHJldHVybiB7IHByaXZLZXk6IEJ1ZmZlci5mcm9tKHByaXZLZXkpLCBwdWJLZXkgfTtcbn1cblxuLyoqXG4gKiBQZXItcGFydHkgZGV0ZXJtaW5pc3RpYyBzZWVkIG1hdGVyaWFsLiBUbyB1c2UgdGhlIHNhbWUgc2VlZCBmb3IgYm90aCwgcGFzcyBpdCBhcyBib3RoIGZpZWxkcy5cbiAqIGBlbmNLZXlgIHNlZWRzIHRoZSBYMjU1MTkgZW5jcnlwdGlvbiBrZXk7IGBka2dTZWVkYCBzZWVkcyBES0cgcm91bmQgMC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZERzYURLR1BhcnR5U2VlZCB7XG4gIGVuY0tleT86IEJ1ZmZlcjtcbiAgZGtnU2VlZD86IEJ1ZmZlcjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTZWVkKHNlZWQ/OiBFZERzYURLR1BhcnR5U2VlZCk6IEVkRHNhREtHUGFydHlTZWVkIHtcbiAgYXNzZXJ0KCFzZWVkPy5lbmNLZXkgfHwgc2VlZC5lbmNLZXkubGVuZ3RoID49IDMyLCAnZW5jS2V5IG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMnKTtcbiAgYXNzZXJ0KCFzZWVkPy5ka2dTZWVkIHx8IHNlZWQuZGtnU2VlZC5sZW5ndGggPj0gMzIsICdka2dTZWVkIG11c3QgYmUgYXQgbGVhc3QgMzIgYnl0ZXMnKTtcbiAgcmV0dXJuIHNlZWQgPz8ge307XG59XG5cbi8qKiBTZWUgYEVkRHNhREtHUGFydHlTZWVkYC4gTWlycm9ycyBgRGtsc1V0aWxzLmdlbmVyYXRlREtHS2V5U2hhcmVzYCBmb3IgRUNEU0EgREtMUy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVkRHNhREtHS2V5U2hhcmVzKFxuICBzZWVkVXNlcj86IEVkRHNhREtHUGFydHlTZWVkLFxuICBzZWVkQmFja3VwPzogRWREc2FES0dQYXJ0eVNlZWQsXG4gIHNlZWRCaXRnbz86IEVkRHNhREtHUGFydHlTZWVkLFxuICByZXRyb2ZpdFVzZXI/OiBFZGRzYVJldHJvZml0RGF0YSxcbiAgcmV0cm9maXRCYWNrdXA/OiBFZGRzYVJldHJvZml0RGF0YSxcbiAgcmV0cm9maXRCaXRnbz86IEVkZHNhUmV0cm9maXREYXRhXG4pOiBQcm9taXNlPFtES0csIERLRywgREtHXT4ge1xuICBjb25zdCB7IGVuY0tleTogdXNlckVuY0tleSwgZGtnU2VlZDogdXNlckRrZ1NlZWQgfSA9IHZhbGlkYXRlU2VlZChzZWVkVXNlcik7XG4gIGNvbnN0IHsgZW5jS2V5OiBiYWNrdXBFbmNLZXksIGRrZ1NlZWQ6IGJhY2t1cERrZ1NlZWQgfSA9IHZhbGlkYXRlU2VlZChzZWVkQmFja3VwKTtcbiAgY29uc3QgeyBlbmNLZXk6IGJpdGdvRW5jS2V5LCBka2dTZWVkOiBiaXRnb0RrZ1NlZWQgfSA9IHZhbGlkYXRlU2VlZChzZWVkQml0Z28pO1xuXG4gIGNvbnN0IHVzZXIgPSBuZXcgREtHKDMsIDIsIDAsIHJldHJvZml0VXNlcik7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBES0coMywgMiwgMSwgcmV0cm9maXRCYWNrdXApO1xuICBjb25zdCBiaXRnbyA9IG5ldyBES0coMywgMiwgMiwgcmV0cm9maXRCaXRnbyk7XG5cbiAgY29uc3QgdXNlcktQID0gZ2VuZXJhdGVYMjU1MTlLZXlwYWlyKHVzZXJFbmNLZXkpO1xuICBjb25zdCBiYWNrdXBLUCA9IGdlbmVyYXRlWDI1NTE5S2V5cGFpcihiYWNrdXBFbmNLZXkpO1xuICBjb25zdCBiaXRnb0tQID0gZ2VuZXJhdGVYMjU1MTlLZXlwYWlyKGJpdGdvRW5jS2V5KTtcblxuICBhd2FpdCB1c2VyLmluaXREa2codXNlcktQLnByaXZLZXksIFtiYWNrdXBLUC5wdWJLZXksIGJpdGdvS1AucHViS2V5XSk7XG4gIGF3YWl0IGJhY2t1cC5pbml0RGtnKGJhY2t1cEtQLnByaXZLZXksIFt1c2VyS1AucHViS2V5LCBiaXRnb0tQLnB1YktleV0pO1xuICBhd2FpdCBiaXRnby5pbml0RGtnKGJpdGdvS1AucHJpdktleSwgW3VzZXJLUC5wdWJLZXksIGJhY2t1cEtQLnB1YktleV0pO1xuXG4gIGNvbnN0IHIxTWVzc2FnZXMgPSBbXG4gICAgdXNlci5nZXRGaXJzdE1lc3NhZ2UodXNlckRrZ1NlZWQpLFxuICAgIGJhY2t1cC5nZXRGaXJzdE1lc3NhZ2UoYmFja3VwRGtnU2VlZCksXG4gICAgYml0Z28uZ2V0Rmlyc3RNZXNzYWdlKGJpdGdvRGtnU2VlZCksXG4gIF07XG5cbiAgY29uc3QgcjJNZXNzYWdlcyA9IFtcbiAgICAuLi51c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMocjFNZXNzYWdlcyksXG4gICAgLi4uYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMocjFNZXNzYWdlcyksXG4gICAgLi4uYml0Z28uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyMU1lc3NhZ2VzKSxcbiAgXTtcblxuICB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMocjJNZXNzYWdlcyk7XG4gIGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHIyTWVzc2FnZXMpO1xuICBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHIyTWVzc2FnZXMpO1xuXG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb107XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgdHdvIERTRyBwYXJ0aWVzIGFuZCBkcml2ZXMgdGhlbSB0aHJvdWdoIHRoZSBwcm90b2NvbCB1bnRpbCB0aGUgc3BlY2lmaWVkIHJvdW5kLlxuICpcbiAqIEBwYXJhbSByb3VuZCAtIFJvdW5kIHRvIGV4ZWN1dGUgdW50aWwgKDHigJMzKS4gUmV0dXJucyBpbnRlcm1lZGlhdGUgbWVzc2FnZSBhcnJheXMgZm9yIDHigJMyLFxuICogICBvciB0aGUgNjQtYnl0ZSBFZDI1NTE5IHNpZ25hdHVyZSBCdWZmZXIgZm9yIDMuXG4gKiBAcGFyYW0gcGFydHkxRHNnIC0gRmlyc3QgRFNHIHBhcnR5IChgbmV3IERTRyhwYXJ0eUlkeClgKSwgbm90IHlldCBpbml0aWFsaXplZC5cbiAqIEBwYXJhbSBwYXJ0eTJEc2cgLSBTZWNvbmQgRFNHIHBhcnR5IChgbmV3IERTRyhwYXJ0eUlkeClgKSwgbm90IHlldCBpbml0aWFsaXplZC5cbiAqIEBwYXJhbSBrZXlTaGFyZTEgLSBLZXkgc2hhcmUgZm9yIHRoZSBmaXJzdCBwYXJ0eS5cbiAqIEBwYXJhbSBrZXlTaGFyZTIgLSBLZXkgc2hhcmUgZm9yIHRoZSBzZWNvbmQgcGFydHkuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFJhdyBtZXNzYWdlIGJ5dGVzIHRvIHNpZ24uXG4gKiBAcGFyYW0gZGVyaXZhdGlvblBhdGggLSBCSVAtMzItc3R5bGUgZGVyaXZhdGlvbiBwYXRoLCBlLmcuIGBcIm1cImAgb3IgYFwibS8wLzBcImAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlVGlsbFJvdW5kKFxuICByb3VuZDogbnVtYmVyLFxuICBwYXJ0eTFEc2c6IERTRyxcbiAgcGFydHkyRHNnOiBEU0csXG4gIGtleVNoYXJlMTogQnVmZmVyLFxuICBrZXlTaGFyZTI6IEJ1ZmZlcixcbiAgbWVzc2FnZTogQnVmZmVyLFxuICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPERlc2VyaWFsaXplZE1lc3NhZ2VzW10gfCBCdWZmZXI+IHtcbiAgaWYgKHJvdW5kIDwgMSB8fCByb3VuZCA+IDMpIHtcbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCByb3VuZCBudW1iZXInKTtcbiAgfVxuICBhd2FpdCBwYXJ0eTFEc2cuaW5pdERzZyhrZXlTaGFyZTEsIG1lc3NhZ2UsIGRlcml2YXRpb25QYXRoLCBwYXJ0eTJEc2cuZ2V0UGFydHlJZHgoKSk7XG4gIGF3YWl0IHBhcnR5MkRzZy5pbml0RHNnKGtleVNoYXJlMiwgbWVzc2FnZSwgZGVyaXZhdGlvblBhdGgsIHBhcnR5MURzZy5nZXRQYXJ0eUlkeCgpKTtcbiAgY29uc3QgcGFydHkxUm91bmQwTWVzc2FnZSA9IHBhcnR5MURzZy5nZXRGaXJzdE1lc3NhZ2UoKTtcbiAgY29uc3QgcGFydHkyUm91bmQwTWVzc2FnZSA9IHBhcnR5MkRzZy5nZXRGaXJzdE1lc3NhZ2UoKTtcblxuICBjb25zdCBbcGFydHkyUm91bmQxTWVzc2FnZXNdID0gcGFydHkyRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW3BhcnR5MVJvdW5kME1lc3NhZ2UsIHBhcnR5MlJvdW5kME1lc3NhZ2VdKTtcbiAgY29uc3QgW3BhcnR5MVJvdW5kMU1lc3NhZ2VzXSA9IHBhcnR5MURzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtwYXJ0eTFSb3VuZDBNZXNzYWdlLCBwYXJ0eTJSb3VuZDBNZXNzYWdlXSk7XG4gIGlmIChyb3VuZCA9PT0gMSkgcmV0dXJuIFtbcGFydHkxUm91bmQxTWVzc2FnZXNdLCBbcGFydHkyUm91bmQxTWVzc2FnZXNdXTtcblxuICBjb25zdCBbcGFydHkxUm91bmQyTWVzc2FnZXNdID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW3BhcnR5MVJvdW5kMU1lc3NhZ2VzLCBwYXJ0eTJSb3VuZDFNZXNzYWdlc10pO1xuICBjb25zdCBbcGFydHkyUm91bmQyTWVzc2FnZXNdID0gcGFydHkyRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW3BhcnR5MVJvdW5kMU1lc3NhZ2VzLCBwYXJ0eTJSb3VuZDFNZXNzYWdlc10pO1xuICBpZiAocm91bmQgPT09IDIpIHJldHVybiBbW3BhcnR5MVJvdW5kMk1lc3NhZ2VzXSwgW3BhcnR5MlJvdW5kMk1lc3NhZ2VzXV07XG5cbiAgcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoW3BhcnR5MVJvdW5kMk1lc3NhZ2VzLCBwYXJ0eTJSb3VuZDJNZXNzYWdlc10pO1xuICBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhbcGFydHkxUm91bmQyTWVzc2FnZXMsIHBhcnR5MlJvdW5kMk1lc3NhZ2VzXSk7XG5cbiAgYXNzZXJ0KHBhcnR5MURzZy5nZXRTaWduYXR1cmUoKS50b1N0cmluZygnaGV4JykgPT09IHBhcnR5MkRzZy5nZXRTaWduYXR1cmUoKS50b1N0cmluZygnaGV4JykpO1xuICByZXR1cm4gcGFydHkxRHNnLmdldFNpZ25hdHVyZSgpO1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './ecdsa';
2
2
  export * from './ecdsa-dkls';
3
3
  export * from './eddsa-mps';
4
+ export * from './redpallas-mps';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tss/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tss/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ecdsa"), exports);
18
18
  __exportStar(require("./ecdsa-dkls"), exports);
19
19
  __exportStar(require("./eddsa-mps"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBQzdCLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWNkc2EnO1xuZXhwb3J0ICogZnJvbSAnLi9lY2RzYS1ka2xzJztcbmV4cG9ydCAqIGZyb20gJy4vZWRkc2EtbXBzJztcbiJdfQ==
20
+ __exportStar(require("./redpallas-mps"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBQzdCLDhDQUE0QjtBQUM1QixrREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VjZHNhJztcbmV4cG9ydCAqIGZyb20gJy4vZWNkc2EtZGtscyc7XG5leHBvcnQgKiBmcm9tICcuL2VkZHNhLW1wcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlZHBhbGxhcy1tcHMnO1xuIl19
@@ -0,0 +1,105 @@
1
+ import { DeserializedMessage, DeserializedMessages, RedPallasDkgState } from './types';
2
+ /**
3
+ * RedPallas (Zcash Ironwood) Distributed Key Generation (DKG) implementation using @bitgo/wasm-mps.
4
+ *
5
+ * Mirrors the structure of the EdDSA MPS `DKG` class (see `../eddsa-mps/dkg.ts`), but wraps the
6
+ * `redpallas_dkg_*` WASM bindings. Round2 additionally requires a `derivationSeed` and returns a
7
+ * `MsgDerivationInit` (msg/pk/share/state) rather than a final `Share`, because RedPallas key
8
+ * derivation (ask/nk/rivk/ivks, via `redpallas_derivation_process`) is a separate, subsequent
9
+ * process that is platform-side only and intentionally not exposed here.
10
+ *
11
+ * State is explicit: each round function returns `{ msg, state }` bytes. The state bytes are
12
+ * stored between rounds and passed to the next round function, mirroring the server-side
13
+ * persistence pattern (state would be serialised to DB, or in OVC's case, a microSD card).
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const dkg = new RedPallasDKG(3, 2, 0);
18
+ * // X25519 keys come from GPG encryption subkeys (extracted by the orchestrator)
19
+ * await dkg.initDkg(myX25519PrivKey, [otherParty1X25519PubKey, otherParty2X25519PubKey]);
20
+ * const msg1 = dkg.getFirstMessage();
21
+ * const msg2s = dkg.handleIncomingMessages(allThreeMsg1s);
22
+ * dkg.handleIncomingMessages(allThreeMsg2s, derivationSeed); // completes DKG
23
+ * const keyShare = dkg.getKeyShare();
24
+ * ```
25
+ */
26
+ export declare class RedPallasDKG {
27
+ protected n: number;
28
+ protected t: number;
29
+ protected partyIdx: number;
30
+ /** Private X25519 key (from GPG encryption subkey) */
31
+ private decryptionKey;
32
+ /** Other parties' X25519 public keys (from their GPG encryption subkeys), sorted by party index */
33
+ private otherPubKeys;
34
+ /** Serialised round state bytes returned by the previous round function */
35
+ private dkgStateBytes;
36
+ /** Opaque bincode-serialised keyshare from round2 */
37
+ private keyShare;
38
+ /** RedPallas public key (verification key) from round2 */
39
+ private sharePk;
40
+ /** Lazily loaded WASM module */
41
+ private wasmMps;
42
+ protected dkgState: RedPallasDkgState;
43
+ constructor(n: number, t: number, partyIdx: number);
44
+ private loadWasmMps;
45
+ private getWasmMps;
46
+ getState(): RedPallasDkgState;
47
+ /**
48
+ * Initialises the DKG session with this party's X25519 private key and the other parties'
49
+ * X25519 public keys. Keys are extracted from GPG encryption subkeys by the orchestrator.
50
+ *
51
+ * @param decryptionKey - This party's 32-byte X25519 private key (GPG enc subkey private part).
52
+ * @param otherEncPublicKeys - Other parties' 32-byte X25519 public keys, sorted by ascending
53
+ * party index (excluding own). For a 3-party setup, this is [party_A_pub, party_B_pub].
54
+ */
55
+ initDkg(decryptionKey: Buffer, otherEncPublicKeys: Buffer[]): Promise<void>;
56
+ /**
57
+ * Runs round0 of the DKG protocol. Returns this party's broadcast message.
58
+ * Stores the round state bytes internally for the next round.
59
+ *
60
+ * @param dkgSeed - Optional 32-byte seed for deterministic DKG output (testing only).
61
+ */
62
+ getFirstMessage(dkgSeed?: Buffer): DeserializedMessage;
63
+ /**
64
+ * Handles incoming messages from all parties and advances the protocol.
65
+ *
66
+ * - In WaitMsg1: runs round1, returns this party's round1 broadcast message.
67
+ * - In WaitMsg2: runs round2, completes DKG, returns [].
68
+ *
69
+ * The caller passes all n messages (including own); own message is filtered
70
+ * out internally. Other parties' messages are sorted by ascending party index,
71
+ * matching the ordering expected by @bitgo/wasm-mps.
72
+ *
73
+ * @param messagesForIthRound - All n messages for this round (including own).
74
+ * @param derivationSeed - Required only when advancing WaitMsg2 -> Complete (round2): a
75
+ * 32-byte seed consumed by the subsequent, platform-side-only derivation process.
76
+ */
77
+ handleIncomingMessages(messagesForIthRound: DeserializedMessages, derivationSeed?: Buffer): DeserializedMessages;
78
+ /**
79
+ * Returns the opaque bincode-serialised keyshare produced by round2.
80
+ * This is used as input to the (platform-side) signing and derivation protocols.
81
+ */
82
+ getKeyShare(): Buffer;
83
+ /**
84
+ * Returns the RedPallas public key (verification key) agreed by all parties during DKG.
85
+ */
86
+ getSharePublicKey(): Buffer;
87
+ /**
88
+ * Returns a CBOR-encoded ReducedKeyShare buffer containing the party's opaque
89
+ * signing key share in the `keyShare` field. This buffer is private key material.
90
+ * The caller encrypts it and stores it as `reducedEncryptedPrv` on the key card QR code.
91
+ */
92
+ getReducedKeyShare(): Buffer;
93
+ /**
94
+ * Exports the current session state as a JSON string for persistence.
95
+ * Includes: round state bytes, current DKG round, decryption key, other parties' pub keys.
96
+ * This mirrors what a server would store in a database between API rounds.
97
+ */
98
+ getSession(): string;
99
+ /**
100
+ * Restores a previously exported session. Allows the protocol to continue
101
+ * from where it left off, as if the round state was loaded from a database.
102
+ */
103
+ restoreSession(session: string): void;
104
+ }
105
+ //# sourceMappingURL=dkg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dkg.d.ts","sourceRoot":"","sources":["../../../../src/tss/redpallas-mps/dkg.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAA4B,MAAM,SAAS,CAAC;AAMjH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,YAAY;IACvB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE3B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAuB;IAC5C,mGAAmG;IACnG,OAAO,CAAC,YAAY,CAAyB;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAuB;IAC5C,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAuB;IACvC,0DAA0D;IAC1D,OAAO,CAAC,OAAO,CAAuB;IACtC,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAwB;IAEvC,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAmC;gBAE5D,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;YAMpC,WAAW;IAoBzB,OAAO,CAAC,UAAU;IAOlB,QAAQ,IAAI,iBAAiB;IAI7B;;;;;;;OAOG;IACG,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjF;;;;;OAKG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAmBtD;;;;;;;;;;;;;OAaG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAyDhH;;;OAGG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;;OAIG;IACH,kBAAkB,IAAI,MAAM;IAW5B;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAepB;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAOtC"}