@bitgo/sdk-coin-polyx 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"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"}
@@ -186,6 +186,16 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
186
186
  const secondCallMethod = utils_1.default.decodeMethodName(args.calls[1], registry);
187
187
  // Check for batch staking pattern: bond + nominate
188
188
  if (firstCallMethod === 'bond' && secondCallMethod === 'nominate') {
189
+ // v8 dropped the controller leg of `staking.bond` (bond(controller, value, payee) →
190
+ // bond(value, payee)). When the transaction was decoded against v8 material the bond call
191
+ // carries no `controller`, so route it to the v8 batch staking builder — the v7
192
+ // BatchStakingBuilder would otherwise crash reading `args.controller.id`. This runs on the
193
+ // decode-success path because, unlike v8 transfers, v8 staking batchAll can decode without
194
+ // throwing, so tryGetV8Builder never fires. See SI-981.
195
+ const bondArgs = args.calls[0].args;
196
+ if (bondArgs.controller === undefined) {
197
+ return this.getV8BatchStakingBuilder();
198
+ }
189
199
  return this.getBatchBuilder();
190
200
  }
191
201
  // Check for batch unstaking pattern: chill + unbond
@@ -232,7 +242,30 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
232
242
  return undefined;
233
243
  }
234
244
  const methodName = decodedTxn.method?.name;
235
- if (methodName === 'batchAll') {
245
+ if (methodName === _1.Interface.MethodNames.TransferWithMemo) {
246
+ const args = decodedTxn.method.args;
247
+ if (utils_1.default.isNewMemoEncoding(args.memo)) {
248
+ return this.getV8HexTransferBuilder();
249
+ }
250
+ return this.getV8TransferBuilder();
251
+ }
252
+ else if (methodName === iface_1.MethodNames.AddAndAffirmWithMediators) {
253
+ const args = decodedTxn.method.args;
254
+ if (utils_1.default.isNewMemoEncoding(args.instructionMemo)) {
255
+ return this.getV8HexTokenTransferBuilder();
256
+ }
257
+ return this.getV8TokenTransferBuilder();
258
+ }
259
+ else if (methodName === iface_1.MethodNames.RegisterDidWithCDD) {
260
+ return this.getV8RegisterDidWithCDDBuilder();
261
+ }
262
+ else if (methodName === iface_1.MethodNames.RegisterDid) {
263
+ return this.getV8RegisterDidBuilder();
264
+ }
265
+ else if (methodName === iface_1.MethodNames.PreApproveAsset) {
266
+ return this.getV8PreApproveAssetBuilder();
267
+ }
268
+ else if (methodName === 'batchAll') {
236
269
  const args = decodedTxn.method.args;
237
270
  if (args.calls && args.calls.length === 2) {
238
271
  const firstCallMethod = utils_1.default.decodeMethodName(args.calls[0], registry);
@@ -264,4 +297,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
264
297
  }
265
298
  }
266
299
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBcUY7QUFFckYsc0VBQXVEO0FBQ3ZELHVEQUFvRDtBQUNwRCw2REFBMEQ7QUFDMUQsMkVBQXdFO0FBQ3hFLHlEQUFzRDtBQUN0RCwrREFBNEQ7QUFDNUQsbUVBQWdFO0FBQ2hFLG1EQUFnRDtBQUNoRCx1RUFBb0U7QUFDcEUsb0RBQTRCO0FBQzVCLHlCQUFzRTtBQUN0RSxtQ0FBZ0c7QUFHaEcscUVBQWtFO0FBQ2xFLGlFQUE4RDtBQUM5RCx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHVEQUFvRDtBQUNwRCwyREFBd0Q7QUFDeEQsaUVBQThEO0FBQzlELCtFQUE0RTtBQUM1RSxpRUFBOEQ7QUFDOUQscUVBQWtFO0FBQ2xFLDJFQUF3RTtBQUN4RSx5RUFBc0U7QUFDdEUsbUVBQWdFO0FBQ2hFLDZEQUEwRDtBQUMxRCx1REFBb0Q7QUFDcEQsdUVBQW9FO0FBQ3BFLDJFQUF3RTtBQUN4RSwyREFBd0Q7QUFJeEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENB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SyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQTNQRCw4REEyUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgSGV4VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9oZXhUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgUmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciB9IGZyb20gJy4vcmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcic7XG5pbXBvcnQgeyBCb25kRXh0cmFCdWlsZGVyIH0gZnJvbSAnLi9ib25kRXh0cmFCdWlsZGVyJztcbmltcG9ydCB7IEJhdGNoU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL2JhdGNoU3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgQmF0Y2hVbnN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi9iYXRjaFVuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVW5ib25kQnVpbGRlciB9IGZyb20gJy4vdW5ib25kQnVpbGRlcic7XG5pbXBvcnQgeyBXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB9IGZyb20gJy4vd2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgSW50ZXJmYWNlLCBTaW5nbGV0b25SZWdpc3RyeSwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi8nO1xuaW1wb3J0IHsgVHhNZXRob2QsIEJhdGNoQ2FsbE9iamVjdCwgTWV0aG9kTmFtZXMsIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28vYWJzdHJhY3Qtc3Vic3RyYXRlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIGFzIFBvbHl4VHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFByZUFwcHJvdmVBc3NldEJ1aWxkZXIgfSBmcm9tICcuL3ByZUFwcHJvdmVBc3NldEJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEhleFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9oZXhUb2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3JlamVjdEluc3RydWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBOb21pbmF0ZUJ1aWxkZXIgfSBmcm9tICcuL25vbWluYXRlQnVpbGRlcic7XG5pbXBvcnQgeyBWOFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhIZXhUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Y4SGV4VHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciB9IGZyb20gJy4vdjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyJztcbmltcG9ydCB7IFY4UmVnaXN0ZXJEaWRCdWlsZGVyIH0gZnJvbSAnLi92OFJlZ2lzdGVyRGlkQnVpbGRlcic7XG5pbXBvcnQgeyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi92OFRva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Y4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIH0gZnJvbSAnLi92OFByZUFwcHJvdmVBc3NldEJ1aWxkZXInO1xuaW1wb3J0IHsgVjhCYXRjaFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi92OEJhdGNoU3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVjhCb25kRXh0cmFCdWlsZGVyIH0gZnJvbSAnLi92OEJvbmRFeHRyYUJ1aWxkZXInO1xuaW1wb3J0IHsgVjhVbmJvbmRCdWlsZGVyIH0gZnJvbSAnLi92OFVuYm9uZEJ1aWxkZXInO1xuaW1wb3J0IHsgVjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Y4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgfSBmcm9tICcuL3Y4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXInO1xuaW1wb3J0IHsgVjhOb21pbmF0ZUJ1aWxkZXIgfSBmcm9tICcuL3Y4Tm9taW5hdGVCdWlsZGVyJztcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkVHJhbnNhY3Rpb24gPSBCYXNlVHJhbnNhY3Rpb24gfCBQb2x5eFRyYW5zYWN0aW9uO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgcHJvdGVjdGVkIF9tYXRlcmlhbDogSW50ZXJmYWNlLk1hdGVyaWFsO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9tYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKF9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gIH1cblxuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRIZXhUcmFuc2ZlckJ1aWxkZXIoKTogSGV4VHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEhleFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKCk6IFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCk6IFByZUFwcHJvdmVBc3NldEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUHJlQXBwcm92ZUFzc2V0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRIZXhUb2tlblRyYW5zZmVyQnVpbGRlcigpOiBIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBIZXhUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIoKTogUmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFJlamVjdEluc3RydWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRCb25kRXh0cmFCdWlsZGVyKCk6IEJvbmRFeHRyYUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgQm9uZEV4dHJhQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRCYXRjaEJ1aWxkZXIoKTogQmF0Y2hTdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBCYXRjaFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEJhdGNoVW5zdGFraW5nQnVpbGRlcigpOiBCYXRjaFVuc3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgQmF0Y2hVbnN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFVuYm9uZEJ1aWxkZXIoKTogVW5ib25kQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBVbmJvbmRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk6IFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldE5vbWluYXRlQnVpbGRlcigpOiBOb21pbmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgTm9taW5hdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFY4VHJhbnNmZXJCdWlsZGVyKCk6IFY4VHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4VHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhIZXhUcmFuc2ZlckJ1aWxkZXIoKTogVjhIZXhUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoKTogVjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4UmVnaXN0ZXJEaWRCdWlsZGVyKCk6IFY4UmVnaXN0ZXJEaWRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4UmVnaXN0ZXJEaWRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhUb2tlblRyYW5zZmVyQnVpbGRlcigpOiBWOFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcigpOiBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk6IFY4QmF0Y2hTdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEJvbmRFeHRyYUJ1aWxkZXIoKTogVjhCb25kRXh0cmFCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4Qm9uZEV4dHJhQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4VW5ib25kQnVpbGRlcigpOiBWOFVuYm9uZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhVbmJvbmRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTogVjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk6IFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4Tm9taW5hdGVCdWlsZGVyKCk6IFY4Tm9taW5hdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4Tm9taW5hdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKGB3YWxsZXRJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLl9jb2luQ29uZmlnLm5hbWV9IG5vdCBpbXBsZW1lbnRlZGApO1xuICB9XG5cbiAgZnJvbShyYXdUeG46IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlcjxUeE1ldGhvZCwgU3VwcG9ydGVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBidWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKHJhd1R4bik7XG4gICAgYnVpbGRlci5mcm9tKHJhd1R4bik7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICBtYXRlcmlhbChtYXRlcmlhbDogSW50ZXJmYWNlLk1hdGVyaWFsKTogdGhpcyB7XG4gICAgdGhpcy5fbWF0ZXJpYWwgPSBtYXRlcmlhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlcihyYXdUeG46IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlcjxUeE1ldGhvZCwgU3VwcG9ydGVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKHRoaXMuX21hdGVyaWFsKTtcbiAgICBsZXQgZGVjb2RlZFR4bjtcbiAgICB0cnkge1xuICAgICAgZGVjb2RlZFR4biA9IGRlY29kZShyYXdUeG4sIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX21hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHY4LWVuY29kZWQgdHJhbnNhY3Rpb25zIHVzZSBkaWZmZXJlbnQgY2hhaW4gbWV0YWRhdGEgYW5kIHNpZ25lZCBleHRlbnNpb25zLCBzbyB0aGV5XG4gICAgICAvLyBjYW5ub3QgYmUgZGVjb2RlZCB3aXRoIHY3IG1hdGVyaWFsLiBSZXRyeSBhZ2FpbnN0IHY4IG1hdGVyaWFsIGFuZCByb3V0ZSB0byB0aGUgbWF0Y2hpbmdcbiAgICAgIC8vIHY4IHN0YWtpbmcgYnVpbGRlciAoZS5nLiBiYXRjaEFsbChbYm9uZCwgbm9taW5hdGVdKSB3aXRoIHRoZSAyLWFyZyB2OCBib25kIOKGkiBub1xuICAgICAgLy8gY29udHJvbGxlcikuIEZhbGxzIGJhY2sgdG8gcmUtdGhyb3dpbmcgdGhlIG9yaWdpbmFsIHY3IGRlY29kZSBlcnJvciBpZiB0aGUgdHJhbnNhY3Rpb24gaXNcbiAgICAgIC8vIG5vdCBhIHJlY29nbml6ZWQgdjggc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgIGNvbnN0IHY4QnVpbGRlciA9IHRoaXMudHJ5R2V0VjhCdWlsZGVyKHJhd1R4bik7XG4gICAgICBpZiAodjhCdWlsZGVyKSB7XG4gICAgICAgIHJldHVybiB2OEJ1aWxkZXI7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lO1xuICAgIGlmIChtZXRob2ROYW1lID09PSBJbnRlcmZhY2UuTWV0aG9kTmFtZXMuVHJhbnNmZXJXaXRoTWVtbykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgSW50ZXJmYWNlLlRyYW5zZmVyV2l0aE1lbW9BcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MubWVtbykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SGV4VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlJlZ2lzdGVyRGlkV2l0aENERCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUHJlQXBwcm92ZUFzc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5BZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncztcbiAgICAgIGlmICh1dGlscy5pc05ld01lbW9FbmNvZGluZyhhcmdzLmluc3RydWN0aW9uTWVtbykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5SZWplY3RJbnN0cnVjdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYm9uZEV4dHJhJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm9uZEV4dHJhQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JhdGNoQWxsJykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgeyBjYWxscz86IEJhdGNoQ2FsbE9iamVjdFtdIH07XG5cbiAgICAgIGlmIChhcmdzLmNhbGxzICYmIGFyZ3MuY2FsbHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIC8vIERlY29kZSBtZXRob2QgbmFtZXMgZnJvbSB0aGUgY2FsbHMgdXNpbmcgdXRpbHMuZGVjb2RlTWV0aG9kTmFtZVxuICAgICAgICBjb25zdCBmaXJzdENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKGFyZ3MuY2FsbHNbMF0sIHJlZ2lzdHJ5KTtcbiAgICAgICAgY29uc3Qgc2Vjb25kQ2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1sxXSwgcmVnaXN0cnkpO1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBiYXRjaCBzdGFraW5nIHBhdHRlcm46IGJvbmQgKyBub21pbmF0ZVxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnYm9uZCcgJiYgc2Vjb25kQ2FsbE1ldGhvZCA9PT0gJ25vbWluYXRlJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoQnVpbGRlcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGZvciBiYXRjaCB1bnN0YWtpbmcgcGF0dGVybjogY2hpbGwgKyB1bmJvbmRcbiAgICAgICAgaWYgKGZpcnN0Q2FsbE1ldGhvZCA9PT0gJ2NoaWxsJyAmJiBzZWNvbmRDYWxsTWV0aG9kID09PSAndW5ib25kJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoVW5zdGFraW5nQnVpbGRlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGYWxsIGJhY2sgdG8gZ2VuZXJhbCBiYXRjaCBidWlsZGVyIGZvciBvdGhlciBiYXRjaEFsbCBjYXNlc1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYmF0Y2gnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdib25kJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnbm9taW5hdGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd1bmJvbmQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVbmJvbmRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnd2l0aGRyYXdVbmJvbmRlZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBkZWNvZGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHY4IGNoYWluIG1ldGFkYXRhIGFuZCByZXR1cm4gdGhlIG1hdGNoaW5nIHY4IHN0YWtpbmdcbiAgICogYnVpbGRlci4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0aGUgdHJhbnNhY3Rpb24gY2Fubm90IGJlIGRlY29kZWQgd2l0aCB2OCBtYXRlcmlhbCBvciBpcyBub3QgYVxuICAgKiByZWNvZ25pemVkIHY4IHN0YWtpbmcgdHJhbnNhY3Rpb24sIHNvIHRoZSBjYWxsZXIgY2FuIHN1cmZhY2UgdGhlIG9yaWdpbmFsIHY3IGRlY29kZSBlcnJvci5cbiAgICovXG4gIHByaXZhdGUgdHJ5R2V0VjhCdWlsZGVyKHJhd1R4bjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFR4TWV0aG9kLCBTdXBwb3J0ZWRUcmFuc2FjdGlvbj4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHY4TWF0ZXJpYWwgPSB1dGlscy5nZXRWOE1hdGVyaWFsKHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKHY4TWF0ZXJpYWwpO1xuICAgIGxldCBkZWNvZGVkVHhuO1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1R4biwge1xuICAgICAgICBtZXRhZGF0YVJwYzogdjhNYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRob2ROYW1lID0gZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWU7XG4gICAgaWYgKG1ldGhvZE5hbWUgPT09ICdiYXRjaEFsbCcpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHsgY2FsbHM/OiBCYXRjaENhbGxPYmplY3RbXSB9O1xuXG4gICAgICBpZiAoYXJncy5jYWxscyAmJiBhcmdzLmNhbGxzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBmaXJzdENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKGFyZ3MuY2FsbHNbMF0sIHJlZ2lzdHJ5KTtcbiAgICAgICAgY29uc3Qgc2Vjb25kQ2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1sxXSwgcmVnaXN0cnkpO1xuXG4gICAgICAgIC8vIHY4IGJhdGNoIHN0YWtpbmcgcGF0dGVybjogYm9uZCAoMi1hcmcsIG5vIGNvbnRyb2xsZXIpICsgbm9taW5hdGVcbiAgICAgICAgaWYgKGZpcnN0Q2FsbE1ldGhvZCA9PT0gJ2JvbmQnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICdub21pbmF0ZScpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB2OCBiYXRjaCB1bnN0YWtpbmcgcGF0dGVybjogY2hpbGwgKyB1bmJvbmRcbiAgICAgICAgaWYgKGZpcnN0Q2FsbE1ldGhvZCA9PT0gJ2NoaWxsJyAmJiBzZWNvbmRDYWxsTWV0aG9kID09PSAndW5ib25kJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JvbmRFeHRyYScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4Qm9uZEV4dHJhQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ25vbWluYXRlJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhOb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd1bmJvbmQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFVuYm9uZEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd3aXRoZHJhd1VuYm9uZGVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBcUY7QUFFckYsc0VBQXVEO0FBQ3ZELHVEQUFvRDtBQUNwRCw2REFBMEQ7QUFDMUQsMkVBQXdFO0FBQ3hFLHlEQUFzRDtBQUN0RCwrREFBNEQ7QUFDNUQsbUVBQWdFO0FBQ2hFLG1EQUFnRDtBQUNoRCx1RUFBb0U7QUFDcEUsb0RBQTRCO0FBQzVCLHlCQUFzRTtBQUN0RSxtQ0FNaUI7QUFHakIscUVBQWtFO0FBQ2xFLGlFQUE4RDtBQUM5RCx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHVEQUFvRDtBQUNwRCwyREFBd0Q7QUFDeEQsaUVBQThEO0FBQzlELCtFQUE0RTtBQUM1RSxpRUFBOEQ7QUFDOUQscUVBQWtFO0FBQ2xFLDJFQUF3RTtBQUN4RSx5RUFBc0U7QUFDdEUsbUVBQWdFO0FBQ2hFLDZEQUEwRDtBQUMxRCx1REFBb0Q7QUFDcEQsdUVBQW9FO0FBQ3BFLDJFQUF3RTtBQUN4RSwyREFBd0Q7QUFJeEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxxREFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSwrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxpREFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxtQ0FBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSw2Q0FBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLDZCQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksaURBQXVCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCw4QkFBOEI7UUFDNUIsT0FBTyxJQUFJLHlEQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLElBQUksK0NBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsT0FBTyxJQUFJLHFEQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksNkNBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxpREFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLElBQUkscURBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLHFDQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFjO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQTRCO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFjO1FBQy9CLE1BQU0sUUFBUSxHQUFHLG9CQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLENBQUM7WUFDSCxVQUFVLEdBQUcsSUFBQSwyQkFBTSxFQUFDLE1BQU0sRUFBRTtnQkFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFDcEMsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixzRkFBc0Y7WUFDdEYsMEZBQTBGO1lBQzFGLGtGQUFrRjtZQUNsRiw0RkFBNEY7WUFDNUYsMkNBQTJDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDM0MsSUFBSSxVQUFVLEtBQUssWUFBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBc0MsQ0FBQztZQUN0RSxJQUFJLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssbUJBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLG1CQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssbUJBQVcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBcUMsQ0FBQztZQUNyRSxJQUFJLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsT0FBTyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssbUJBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hELE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBcUMsQ0FBQztZQUVyRSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLGtFQUFrRTtnQkFDbEUsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBRXpFLG1EQUFtRDtnQkFDbkQsSUFBSSxlQUFlLEtBQUssTUFBTSxJQUFJLGdCQUFnQixLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNsRSxvRkFBb0Y7b0JBQ3BGLDBGQUEwRjtvQkFDMUYsZ0ZBQWdGO29CQUNoRiwyRkFBMkY7b0JBQzNGLDJGQUEyRjtvQkFDM0Ysd0RBQXdEO29CQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQWdDLENBQUM7b0JBQ2hFLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztvQkFDekMsQ0FBQztvQkFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxvREFBb0Q7Z0JBQ3BELElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7WUFDRCw4REFBOEQ7WUFDOUQsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxlQUFlLENBQUMsTUFBYztRQUNwQyxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLG9CQUFpQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksQ0FBQztZQUNILFVBQVUsR0FBRyxJQUFBLDJCQUFNLEVBQUMsTUFBTSxFQUFFO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQ2hDLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQzNDLElBQUksVUFBVSxLQUFLLFlBQVMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQXNDLENBQUM7WUFDdEUsSUFBSSxlQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLG1CQUFXLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNoRSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQXVFLENBQUM7WUFDdkcsSUFBSSxlQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE9BQU8sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDN0MsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLG1CQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQy9DLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxtQkFBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLG1CQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFxQyxDQUFDO1lBRXJFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBRXpFLG1FQUFtRTtnQkFDbkUsSUFBSSxlQUFlLEtBQUssTUFBTSxJQUFJLGdCQUFnQixLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNsRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELDZDQUE2QztnQkFDN0MsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNqRSxPQUFPLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLGtCQUFrQixFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBdlJELDhEQXVSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBIZXhUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2hleFRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyIH0gZnJvbSAnLi9yZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyJztcbmltcG9ydCB7IEJvbmRFeHRyYUJ1aWxkZXIgfSBmcm9tICcuL2JvbmRFeHRyYUJ1aWxkZXInO1xuaW1wb3J0IHsgQmF0Y2hTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vYmF0Y2hTdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL2JhdGNoVW5zdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBVbmJvbmRCdWlsZGVyIH0gZnJvbSAnLi91bmJvbmRCdWlsZGVyJztcbmltcG9ydCB7IFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyIH0gZnJvbSAnLi93aXRoZHJhd1VuYm9uZGVkQnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBJbnRlcmZhY2UsIFNpbmdsZXRvblJlZ2lzdHJ5LCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLyc7XG5pbXBvcnQge1xuICBUeE1ldGhvZCxcbiAgQmF0Y2hDYWxsT2JqZWN0LFxuICBNZXRob2ROYW1lcyxcbiAgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MsXG4gIFY4QWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgQmFzZVRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBQb2x5eFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIH0gZnJvbSAnLi9wcmVBcHByb3ZlQXNzZXRCdWlsZGVyJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vaGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgUmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9yZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgTm9taW5hdGVCdWlsZGVyIH0gZnJvbSAnLi9ub21pbmF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgVjhUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Y4VHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFY4SGV4VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi92OEhleFRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIgfSBmcm9tICcuL3Y4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcic7XG5pbXBvcnQgeyBWOFJlZ2lzdGVyRGlkQnVpbGRlciB9IGZyb20gJy4vdjhSZWdpc3RlckRpZEJ1aWxkZXInO1xuaW1wb3J0IHsgVjhUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhUb2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi92OEhleFRva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlciB9IGZyb20gJy4vdjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyJztcbmltcG9ydCB7IFY4QmF0Y2hTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdjhCYXRjaFN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFY4Qm9uZEV4dHJhQnVpbGRlciB9IGZyb20gJy4vdjhCb25kRXh0cmFCdWlsZGVyJztcbmltcG9ydCB7IFY4VW5ib25kQnVpbGRlciB9IGZyb20gJy4vdjhVbmJvbmRCdWlsZGVyJztcbmltcG9ydCB7IFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi92OEJhdGNoVW5zdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyIH0gZnJvbSAnLi92OFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyJztcbmltcG9ydCB7IFY4Tm9taW5hdGVCdWlsZGVyIH0gZnJvbSAnLi92OE5vbWluYXRlQnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFRyYW5zYWN0aW9uID0gQmFzZVRyYW5zYWN0aW9uIHwgUG9seXhUcmFuc2FjdGlvbjtcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIHByb3RlY3RlZCBfbWF0ZXJpYWw6IEludGVyZmFjZS5NYXRlcmlhbDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICB9XG5cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKCk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0SGV4VHJhbnNmZXJCdWlsZGVyKCk6IEhleFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBIZXhUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpOiBSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0UHJlQXBwcm92ZUFzc2V0QnVpbGRlcigpOiBQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFByZUFwcHJvdmVBc3NldEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogSGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0UmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyKCk6IFJlamVjdEluc3RydWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0Qm9uZEV4dHJhQnVpbGRlcigpOiBCb25kRXh0cmFCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEJvbmRFeHRyYUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0QmF0Y2hCdWlsZGVyKCk6IEJhdGNoU3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgQmF0Y2hTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTogQmF0Y2hVbnN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEJhdGNoVW5zdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRVbmJvbmRCdWlsZGVyKCk6IFVuYm9uZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVW5ib25kQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpOiBXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXROb21pbmF0ZUJ1aWxkZXIoKTogTm9taW5hdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IE5vbWluYXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKS5tYXRlcmlhbCh0aGlzLl9tYXRlcmlhbCk7XG4gIH1cblxuICBnZXRWOFRyYW5zZmVyQnVpbGRlcigpOiBWOFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4SGV4VHJhbnNmZXJCdWlsZGVyKCk6IFY4SGV4VHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4SGV4VHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKCk6IFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFJlZ2lzdGVyRGlkQnVpbGRlcigpOiBWOFJlZ2lzdGVyRGlkQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFJlZ2lzdGVyRGlkQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVjhUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcigpOiBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoKTogVjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpOiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhCb25kRXh0cmFCdWlsZGVyKCk6IFY4Qm9uZEV4dHJhQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEJvbmRFeHRyYUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFVuYm9uZEJ1aWxkZXIoKTogVjhVbmJvbmRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4VW5ib25kQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk6IFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpOiBWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOE5vbWluYXRlQnVpbGRlcigpOiBWOE5vbWluYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOE5vbWluYXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihgd2FsbGV0SW5pdGlhbGl6YXRpb24gZm9yICR7dGhpcy5fY29pbkNvbmZpZy5uYW1lfSBub3QgaW1wbGVtZW50ZWRgKTtcbiAgfVxuXG4gIGZyb20ocmF3VHhuOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXI8VHhNZXRob2QsIFN1cHBvcnRlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgYnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcihyYXdUeG4pO1xuICAgIGJ1aWxkZXIuZnJvbShyYXdUeG4pO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgbWF0ZXJpYWwobWF0ZXJpYWw6IEludGVyZmFjZS5NYXRlcmlhbCk6IHRoaXMge1xuICAgIHRoaXMuX21hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIocmF3VHhuOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXI8VHhNZXRob2QsIFN1cHBvcnRlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZSh0aGlzLl9tYXRlcmlhbCk7XG4gICAgbGV0IGRlY29kZWRUeG47XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWRUeG4gPSBkZWNvZGUocmF3VHhuLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9tYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB2OC1lbmNvZGVkIHRyYW5zYWN0aW9ucyB1c2UgZGlmZmVyZW50IGNoYWluIG1ldGFkYXRhIGFuZCBzaWduZWQgZXh0ZW5zaW9ucywgc28gdGhleVxuICAgICAgLy8gY2Fubm90IGJlIGRlY29kZWQgd2l0aCB2NyBtYXRlcmlhbC4gUmV0cnkgYWdhaW5zdCB2OCBtYXRlcmlhbCBhbmQgcm91dGUgdG8gdGhlIG1hdGNoaW5nXG4gICAgICAvLyB2OCBzdGFraW5nIGJ1aWxkZXIgKGUuZy4gYmF0Y2hBbGwoW2JvbmQsIG5vbWluYXRlXSkgd2l0aCB0aGUgMi1hcmcgdjggYm9uZCDihpIgbm9cbiAgICAgIC8vIGNvbnRyb2xsZXIpLiBGYWxscyBiYWNrIHRvIHJlLXRocm93aW5nIHRoZSBvcmlnaW5hbCB2NyBkZWNvZGUgZXJyb3IgaWYgdGhlIHRyYW5zYWN0aW9uIGlzXG4gICAgICAvLyBub3QgYSByZWNvZ25pemVkIHY4IHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICBjb25zdCB2OEJ1aWxkZXIgPSB0aGlzLnRyeUdldFY4QnVpbGRlcihyYXdUeG4pO1xuICAgICAgaWYgKHY4QnVpbGRlcikge1xuICAgICAgICByZXR1cm4gdjhCdWlsZGVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZTtcbiAgICBpZiAobWV0aG9kTmFtZSA9PT0gSW50ZXJmYWNlLk1ldGhvZE5hbWVzLlRyYW5zZmVyV2l0aE1lbW8pIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIEludGVyZmFjZS5UcmFuc2ZlcldpdGhNZW1vQXJncztcbiAgICAgIGlmICh1dGlscy5pc05ld01lbW9FbmNvZGluZyhhcmdzLm1lbW8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhleFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5SZWdpc3RlckRpZFdpdGhDREQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlByZUFwcHJvdmVBc3NldCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJlQXBwcm92ZUFzc2V0QnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3M7XG4gICAgICBpZiAodXRpbHMuaXNOZXdNZW1vRW5jb2RpbmcoYXJncy5pbnN0cnVjdGlvbk1lbW8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUmVqZWN0SW5zdHJ1Y3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFJlamVjdEluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JvbmRFeHRyYScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEJvbmRFeHRyYUJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdiYXRjaEFsbCcpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHsgY2FsbHM/OiBCYXRjaENhbGxPYmplY3RbXSB9O1xuXG4gICAgICBpZiAoYXJncy5jYWxscyAmJiBhcmdzLmNhbGxzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAvLyBEZWNvZGUgbWV0aG9kIG5hbWVzIGZyb20gdGhlIGNhbGxzIHVzaW5nIHV0aWxzLmRlY29kZU1ldGhvZE5hbWVcbiAgICAgICAgY29uc3QgZmlyc3RDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzBdLCByZWdpc3RyeSk7XG4gICAgICAgIGNvbnN0IHNlY29uZENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKGFyZ3MuY2FsbHNbMV0sIHJlZ2lzdHJ5KTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgYmF0Y2ggc3Rha2luZyBwYXR0ZXJuOiBib25kICsgbm9taW5hdGVcbiAgICAgICAgaWYgKGZpcnN0Q2FsbE1ldGhvZCA9PT0gJ2JvbmQnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICdub21pbmF0ZScpIHtcbiAgICAgICAgICAvLyB2OCBkcm9wcGVkIHRoZSBjb250cm9sbGVyIGxlZyBvZiBgc3Rha2luZy5ib25kYCAoYm9uZChjb250cm9sbGVyLCB2YWx1ZSwgcGF5ZWUpIOKGklxuICAgICAgICAgIC8vIGJvbmQodmFsdWUsIHBheWVlKSkuIFdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBkZWNvZGVkIGFnYWluc3QgdjggbWF0ZXJpYWwgdGhlIGJvbmQgY2FsbFxuICAgICAgICAgIC8vIGNhcnJpZXMgbm8gYGNvbnRyb2xsZXJgLCBzbyByb3V0ZSBpdCB0byB0aGUgdjggYmF0Y2ggc3Rha2luZyBidWlsZGVyIOKAlCB0aGUgdjdcbiAgICAgICAgICAvLyBCYXRjaFN0YWtpbmdCdWlsZGVyIHdvdWxkIG90aGVyd2lzZSBjcmFzaCByZWFkaW5nIGBhcmdzLmNvbnRyb2xsZXIuaWRgLiBUaGlzIHJ1bnMgb24gdGhlXG4gICAgICAgICAgLy8gZGVjb2RlLXN1Y2Nlc3MgcGF0aCBiZWNhdXNlLCB1bmxpa2UgdjggdHJhbnNmZXJzLCB2OCBzdGFraW5nIGJhdGNoQWxsIGNhbiBkZWNvZGUgd2l0aG91dFxuICAgICAgICAgIC8vIHRocm93aW5nLCBzbyB0cnlHZXRWOEJ1aWxkZXIgbmV2ZXIgZmlyZXMuIFNlZSBTSS05ODEuXG4gICAgICAgICAgY29uc3QgYm9uZEFyZ3MgPSBhcmdzLmNhbGxzWzBdLmFyZ3MgYXMgeyBjb250cm9sbGVyPzogdW5rbm93biB9O1xuICAgICAgICAgIGlmIChib25kQXJncy5jb250cm9sbGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBmb3IgYmF0Y2ggdW5zdGFraW5nIHBhdHRlcm46IGNoaWxsICsgdW5ib25kXG4gICAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgPT09ICdjaGlsbCcgJiYgc2Vjb25kQ2FsbE1ldGhvZCA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRmFsbCBiYWNrIHRvIGdlbmVyYWwgYmF0Y2ggYnVpbGRlciBmb3Igb3RoZXIgYmF0Y2hBbGwgY2FzZXNcbiAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JhdGNoJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYm9uZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ25vbWluYXRlJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAndW5ib25kJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VW5ib25kQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3dpdGhkcmF3VW5ib25kZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gZGVjb2RlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB2OCBjaGFpbiBtZXRhZGF0YSBhbmQgcmV0dXJuIHRoZSBtYXRjaGluZyB2OCBzdGFraW5nXG4gICAqIGJ1aWxkZXIuIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBkZWNvZGVkIHdpdGggdjggbWF0ZXJpYWwgb3IgaXMgbm90IGFcbiAgICogcmVjb2duaXplZCB2OCBzdGFraW5nIHRyYW5zYWN0aW9uLCBzbyB0aGUgY2FsbGVyIGNhbiBzdXJmYWNlIHRoZSBvcmlnaW5hbCB2NyBkZWNvZGUgZXJyb3IuXG4gICAqL1xuICBwcml2YXRlIHRyeUdldFY4QnVpbGRlcihyYXdUeG46IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlcjxUeE1ldGhvZCwgU3VwcG9ydGVkVHJhbnNhY3Rpb24+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2OE1hdGVyaWFsID0gdXRpbHMuZ2V0VjhNYXRlcmlhbCh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZSh2OE1hdGVyaWFsKTtcbiAgICBsZXQgZGVjb2RlZFR4bjtcbiAgICB0cnkge1xuICAgICAgZGVjb2RlZFR4biA9IGRlY29kZShyYXdUeG4sIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IHY4TWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lO1xuICAgIGlmIChtZXRob2ROYW1lID09PSBJbnRlcmZhY2UuTWV0aG9kTmFtZXMuVHJhbnNmZXJXaXRoTWVtbykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgSW50ZXJmYWNlLlRyYW5zZmVyV2l0aE1lbW9BcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MubWVtbykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhIZXhUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFY4VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5BZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyB8IFY4QWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3M7XG4gICAgICBpZiAodXRpbHMuaXNOZXdNZW1vRW5jb2RpbmcoYXJncy5pbnN0cnVjdGlvbk1lbW8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlJlZ2lzdGVyRGlkV2l0aENERCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5SZWdpc3RlckRpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhSZWdpc3RlckRpZEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlByZUFwcHJvdmVBc3NldCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYmF0Y2hBbGwnKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB7IGNhbGxzPzogQmF0Y2hDYWxsT2JqZWN0W10gfTtcblxuICAgICAgaWYgKGFyZ3MuY2FsbHMgJiYgYXJncy5jYWxscy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgZmlyc3RDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzBdLCByZWdpc3RyeSk7XG4gICAgICAgIGNvbnN0IHNlY29uZENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKGFyZ3MuY2FsbHNbMV0sIHJlZ2lzdHJ5KTtcblxuICAgICAgICAvLyB2OCBiYXRjaCBzdGFraW5nIHBhdHRlcm46IGJvbmQgKDItYXJnLCBubyBjb250cm9sbGVyKSArIG5vbWluYXRlXG4gICAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgPT09ICdib25kJyAmJiBzZWNvbmRDYWxsTWV0aG9kID09PSAnbm9taW5hdGUnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdjggYmF0Y2ggdW5zdGFraW5nIHBhdHRlcm46IGNoaWxsICsgdW5ib25kXG4gICAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgPT09ICdjaGlsbCcgJiYgc2Vjb25kQ2FsbE1ldGhvZCA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRWOEJhdGNoVW5zdGFraW5nQnVpbGRlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdib25kRXh0cmEnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOEJvbmRFeHRyYUJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdub21pbmF0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAndW5ib25kJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhVbmJvbmRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnd2l0aGRyYXdVbmJvbmRlZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -48,6 +48,8 @@ const testData = __importStar(require("../resources/wrwUsers"));
48
48
  const mocha_1 = require("mocha");
49
49
  const resources_1 = require("../resources");
50
50
  const sdk_core_1 = require("@bitgo/sdk-core");
51
+ const lib_1 = require("../../src/lib");
52
+ const resources_2 = require("../../src/resources");
51
53
  describe('Polyx:', function () {
52
54
  let bitgo;
53
55
  let baseCoin;
@@ -271,6 +273,62 @@ describe('Polyx:', function () {
271
273
  .should.be.rejectedWith('missing recipients in txParams');
272
274
  });
273
275
  });
276
+ describe('v8 transfer with coinSpecific.material', function () {
277
+ const v8Amount = '1000000';
278
+ const v8Receiver = resources_1.accounts.account2;
279
+ const v8Sender = resources_1.accounts.account1;
280
+ let v8SignedTxHex;
281
+ before(async function () {
282
+ // Build a signed v8 transfer tx using testnetV8Material.
283
+ // The server embeds this material in coinSpecific during prebuild so that
284
+ // verifyTransaction can decode txHex built against a chain spec newer than
285
+ // the SDK's hardcoded v7 material (CECHO-1471).
286
+ const builder = new lib_1.V8TransferBuilder(statics_1.coins.get('tpolyx'))
287
+ .amount(v8Amount)
288
+ .to({ address: v8Receiver.address })
289
+ .sender({ address: v8Sender.address })
290
+ .memo('0')
291
+ .validity({ firstValid: 3933, maxDuration: 64 })
292
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
293
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
294
+ .fee({ amount: 0, type: 'tip' });
295
+ builder.addSignature({ pub: v8Sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
296
+ const tx = await builder.build();
297
+ v8SignedTxHex = tx.toBroadcastFormat();
298
+ });
299
+ it('verifies a v8 transfer when coinSpecific.material is provided', async function () {
300
+ const result = await baseCoin.verifyTransaction({
301
+ txPrebuild: {
302
+ txHex: v8SignedTxHex,
303
+ coinSpecific: { material: resources_2.testnetV8Material },
304
+ },
305
+ txParams: { recipients: [{ address: v8Receiver.address, amount: v8Amount }] },
306
+ });
307
+ result.should.be.true();
308
+ });
309
+ it('throws TxIntentMismatchRecipientError for address mismatch on v8 transfer', async function () {
310
+ await baseCoin
311
+ .verifyTransaction({
312
+ txPrebuild: {
313
+ txHex: v8SignedTxHex,
314
+ coinSpecific: { material: resources_2.testnetV8Material },
315
+ },
316
+ txParams: { recipients: [{ address: wrongAddress, amount: v8Amount }] },
317
+ })
318
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
319
+ });
320
+ it('throws TxIntentMismatchRecipientError for amount mismatch on v8 transfer', async function () {
321
+ await baseCoin
322
+ .verifyTransaction({
323
+ txPrebuild: {
324
+ txHex: v8SignedTxHex,
325
+ coinSpecific: { material: resources_2.testnetV8Material },
326
+ },
327
+ txParams: { recipients: [{ address: v8Receiver.address, amount: '1' }] },
328
+ })
329
+ .should.be.rejectedWith(sdk_core_1.TxIntentMismatchRecipientError);
330
+ });
331
+ });
274
332
  });
275
333
  });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcG9seXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOENBQTBEO0FBQzFELDRDQUEwQztBQUMxQyxtQ0FBMEM7QUFDMUMsdURBQXNGO0FBQ3RGLGdFQUF3QztBQUN4Qyw0Q0FBdUM7QUFDdkMsNkNBQStCO0FBQy9CLGdFQUFrRDtBQUNsRCxpQ0FBa0M7QUFDbEMsNENBQTBFO0FBQzFFLDhDQUFpRTtBQUVqRSxRQUFRLENBQUMsUUFBUSxFQUFFO0lBQ2pCLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQVEsQ0FBQztJQUViLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFlBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtRQUNuQyxFQUFFLENBQUMsa0RBQWtELEVBQUU7WUFDckQsNkNBQTZDO1lBQzdDLGdDQUFvQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsaUNBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENB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QVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5RSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3hGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRixRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN2RixrREFBa0QsQ0FDbkQsQ0FBQztZQUNGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxR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O1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBQb2x5eCwgVHBvbHl4IH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IFBPTFlYX0FERFJFU1NfRk9STUFULCBUUE9MWVhfQUREUkVTU19GT1JNQVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy93cndVc2Vycyc7XG5pbXBvcnQgeyBhZnRlckVhY2ggfSBmcm9tICdtb2NoYSc7XG5pbXBvcnQgeyBnZW5lc2lzSGFzaCwgc3BlY1ZlcnNpb24sIHR4VmVyc2lvbiwgcmF3VHggfSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZGVzY3JpYmUoJ1BvbHl4OicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlQ29pbjtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ21vY2snIH0pO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigncG9seXgnLCBQb2x5eC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0cG9seXgnLCBUcG9seXguY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2VDb2luID0gYml0Z28uY29pbigndHBvbHl4JykgYXMgVHBvbHl4O1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkcmVzcyBGb3JtYXQgQ29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBhZGRyZXNzIGZvcm1hdCBjb25zdGFudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBWZXJpZnkgdGhlIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBjb3JyZWN0bHlcbiAgICAgIFBPTFlYX0FERFJFU1NfRk9STUFULnNob3VsZC5lcXVhbCgxMik7XG4gICAgICBUUE9MWVhfQUREUkVTU19GT1JNQVQuc2hvdWxkLmVxdWFsKDQyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlY292ZXIgVHJhbnNhY3Rpb25zOicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzYW5kQm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSAnNUg1NmYzMWhTWUdDUlYzVVJqUUh2MkNjNFpTa0pOSFRNOE1LR3Rra1Y2aHpDcU43JztcbiAgICBjb25zdCBub25jZSA9IDA7XG4gICAgbGV0IGFjY291bnRJbmZvQ0I7XG4gICAgbGV0IGhlYWRlckluZm9DQjtcbiAgICBsZXQgZ2V0RmVlQ0I7XG4gICAgbGV0IGdldE1hdGVyaWFsQ0I7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjY291bnRJbmZvQ0IgPSBzYW5kQm94LnN0dWIoUG9seXgucHJvdG90eXBlLCAnZ2V0QWNjb3VudEluZm8nIGFzIGtleW9mIFBvbHl4KTtcbiAgICAgIGhlYWRlckluZm9DQiA9IHNhbmRCb3guc3R1YihQb2x5eC5wcm90b3R5cGUsICdnZXRIZWFkZXJJbmZvJyBhcyBrZXlvZiBQb2x5eCk7XG4gICAgICBnZXRGZWVDQiA9IHNhbmRCb3guc3R1YihQb2x5eC5wcm90b3R5cGUsICdnZXRGZWUnIGFzIGtleW9mIFBvbHl4KTtcbiAgICAgIGdldE1hdGVyaWFsQ0IgPSBzYW5kQm94LnN0dWIoUG9seXgucHJvdG90eXBlLCAnZ2V0TWF0ZXJpYWwnIGFzIGtleW9mIFBvbHl4KTtcbiAgICAgIGdldE1hdGVyaWFsQ0IucmVzb2x2ZXModXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kQm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgdW5zaWduZWQgc3dlZXAgY29ycmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYWNjb3VudEluZm9DQlxuICAgICAgICAud2l0aEFyZ3ModGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcylcbiAgICAgICAgLnJlc29sdmVzKHsgbm9uY2U6IDAsIGZyZWVCYWxhbmNlOiAxMDAwMDcwMDAwMDAgfSk7XG4gICAgICBoZWFkZXJJbmZvQ0IucmVzb2x2ZXMoe1xuICAgICAgICBoZWFkZXJOdW1iZXI6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcixcbiAgICAgICAgaGVhZGVySGFzaDogdGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gsXG4gICAgICB9KTtcbiAgICAgIGdldEZlZUNCLndpdGhBcmdzKHJlY292ZXJ5RGVzdGluYXRpb24sIHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MsIDEwMDAwNzAwMDAwMCkucmVzb2x2ZXMoNzQ0MDEpO1xuXG4gICAgICBjb25zdCBjb21tb25LZXlDaGFpbiA9IHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLmJpdGdvS2V5O1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IGF3YWl0IGJhc2VDb2luLnJlY292ZXIoeyBiaXRnb0tleTogY29tbW9uS2V5Q2hhaW4sIHJlY292ZXJ5RGVzdGluYXRpb24gfSk7XG5cbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHMuc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLndhbGxldENvaW4uc2hvdWxkLmVxdWFsKCd0cG9seXgnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4LnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNjYW5JbmRleC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW4uc2hvdWxkLmVxdWFsKCd0cG9seXgnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2lnbmFibGVIZXguc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguZGVyaXZhdGlvblBhdGguc2hvdWxkLmVxdWFsKCdtLzAnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguaW5wdXRzLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICc1RG5aUXFieHRCM0NXa0xnZkE2d3BxZGtDZDlCcTdBWDQ5UnBMUEp3Vzltem9UN3MnXG4gICAgICApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5pbnB1dHNbMF0udmFsdWVTdHJpbmcuc2hvdWxkLmVxdWFsKCcxMDAwMDYyNTU5OTAnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgxMDAwMDYyNTU5OTApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5vdXRwdXRzLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChcbiAgICAgICAgJzVINTZmMzFoU1lHQ1JWM1VSalFIdjJDYzRaU2tKTkhUTThNS0d0a2tWNmh6Q3FONydcbiAgICAgICk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4Lm91dHB1dHNbMF0udmFsdWVTdHJpbmcuc2hvdWxkLmVxdWFsKCcxMDAwMDYyNTU5OTAnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgub3V0cHV0c1swXS5jb2luTmFtZS5zaG91bGQuZXF1YWwoJ3Rwb2x5eCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC50eXBlLnNob3VsZC5lcXVhbCgnJyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmZlZUluZm8uc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguZmVlSW5mby5mZWUuc2hvdWxkLmVxdWFsKDApO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5mZWVJbmZvLmZlZVN0cmluZy5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5maXJzdFZhbGlkLnNob3VsZC5ub3QuYmUudW5kZWZpbmVkKCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5tYXhEdXJhdGlvbi5zaG91bGQuZXF1YWwoMjQwMCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpYy5jb21tb25LZXljaGFpbi5zaG91bGQuZXF1YWwoXG4gICAgICAgICc5N2Q5ZGE4YmY1NDRkMDdmM2M3YWU4ZWUwNmJiMTJhNjNmNzQ0NzhkMGM0NjEyMDFhYjk0NDIxYTljODFkNWIzNzk1NTNmMDMzMmRhYWE4NWNiOGM2NWUxZmU3ZTY5MDdjNjIyNjhjMDA4MTJiMDhhNGUxMzYxMTc4ZTMwNGRkYidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0eCBmb3Igbm9uLWJpdGdvIHJlY292ZXJpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhY2NvdW50SW5mb0NCLndpdGhBcmdzKHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzcykucmVzb2x2ZXMoeyBub25jZTogMCwgZnJlZUJhbGFuY2U6IDEwMDAwNzAwMDAwMCB9KTtcbiAgICAgIGhlYWRlckluZm9DQi5yZXNvbHZlcyh7XG4gICAgICAgIGhlYWRlck51bWJlcjogdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyLFxuICAgICAgICBoZWFkZXJIYXNoOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCxcbiAgICAgIH0pO1xuICAgICAgZ2V0RmVlQ0Iud2l0aEFyZ3MocmVjb3ZlcnlEZXN0aW5hdGlvbiwgdGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzLCAxMDAwMDcwMDAwMDApLnJlc29sdmVzKDc0NDAxKTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICAgIHVzZXJLZXk6IHRlc3REYXRhLndyd1VzZXIudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS53cndVc2VyLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLndyd1VzZXIuYml0Z29LZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLndyd1VzZXIud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2VyaWFsaXplZFR4Jyk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gYmFzZUNvaW4uZ2V0QnVpbGRlcigpLmZyb20ocmVzLnNlcmlhbGl6ZWRUeCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHtcbiAgICAgICAgICBmaXJzdFZhbGlkOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIsXG4gICAgICAgICAgbWF4RHVyYXRpb246IGJhc2VDb2luLlNXRUVQX1RYTl9EVVJBVElPTixcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgdGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgbm9uY2UpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdHhWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgYmFzZUNvaW4uU1dFRVBfVFhOX0RVUkFUSU9OKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4biBmb3IgdW5zaWduZWQtc3dlZXAgcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjY291bnRJbmZvQ0JcbiAgICAgICAgLndpdGhBcmdzKHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MpXG4gICAgICAgIC5yZXNvbHZlcyh7IG5vbmNlOiAwLCBmcmVlQmFsYW5jZTogMTAwMDA3MDAwMDAwIH0pO1xuICAgICAgaGVhZGVySW5mb0NCLnJlc29sdmVzKHtcbiAgICAgICAgaGVhZGVyTnVtYmVyOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIsXG4gICAgICAgIGhlYWRlckhhc2g6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoLFxuICAgICAgfSk7XG4gICAgICBnZXRGZWVDQi53aXRoQXJncyhyZWNvdmVyeURlc3RpbmF0aW9uLCB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzLCAxMDAwMDcwMDAwMDApLnJlc29sdmVzKDc0NDAxKTtcblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICAgIGJpdGdvS2V5OiB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci5iaXRnb0tleSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogcmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgIH0pO1xuXG4gICAgICByZXMuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNob3VsZC5oYXNPd25Qcm9wZXJ0eSgnc2NhbkluZGV4Jyk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGJhc2VDb2luLmdldEJ1aWxkZXIoKS5mcm9tKHJlcy50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeCk7XG4gICAgICB0eEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHtcbiAgICAgICAgICBmaXJzdFZhbGlkOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIsXG4gICAgICAgICAgbWF4RHVyYXRpb246IGJhc2VDb2luLlNXRUVQX1RYTl9EVVJBVElPTixcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcyB9KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdHhWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgYmFzZUNvaW4uU1dFRVBfVFhOX0RVUkFUSU9OKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rva2VuIEVuYWJsZW1lbnQ6JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgaGF2ZSBjb3JyZWN0IHRva2VuIGVuYWJsZW1lbnQgY29uZmlnJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29uZmlnID0gYmFzZUNvaW4uZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk7XG4gICAgICBzaG91bGQuZXhpc3QoY29uZmlnKTtcbiAgICAgIGNvbmZpZy5yZXF1aXJlc1Rva2VuRW5hYmxlbWVudC5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBjb25maWcuc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHMuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2FsbGV0IHR5cGUgZm9yIHRva2VuIGVuYWJsZW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBiYXNlQ29pbi5nZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKTtcbiAgICAgICgoKSA9PiBjb25maWcudmFsaWRhdGVXYWxsZXQoJ2N1c3RvZGlhbCcpKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICAoKCkgPT4gY29uZmlnLnZhbGlkYXRlV2FsbGV0KCdob3QnKSkuc2hvdWxkLnRocm93KFxuICAgICAgICAvVG9rZW4gZW5hYmxlbWVudCBmb3IgUG9seW1lc2ggXFwocG9seXhcXCkgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGN1c3RvZGlhbCB3YWxsZXRzL1xuICAgICAgKTtcbiAgICAgICgoKSA9PiBjb25maWcudmFsaWRhdGVXYWxsZXQoJ2NvbGQnKSkuc2hvdWxkLnRocm93KFxuICAgICAgICAvVG9rZW4gZW5hYmxlbWVudCBmb3IgUG9seW1lc2ggXFwocG9seXhcXCkgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGN1c3RvZGlhbCB3YWxsZXRzL1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZlcmlmeVRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRyYW5zZmVyVG8gPSAnNUY4anhLRTgxR2hGcnBoeWZNRnI1VWplQXo1d1M0QWFaRm1lRlBuZjh3VGV0RDcyJztcbiAgICBjb25zdCB0cmFuc2ZlckFtb3VudCA9ICcyMDAwMDAwMDAwJztcbiAgICBjb25zdCB3cm9uZ0FkZHJlc3MgPSAnNUdoYkM2bjJwVUZyWDk4RHd5UGl0NjdmQjVBd1F2VkN3WjRqMkhLQTdhNGRVSzR5JztcblxuICAgIGRlc2NyaWJlKCd0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhZGRyZXNzIGFuZCBhbW91bnQgbWF0Y2gnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhc2VDb2luLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQgfSxcbiAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB0cmFuc2ZlclRvLCBhbW91bnQ6IHRyYW5zZmVyQW1vdW50IH1dIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvciBmb3IgYWRkcmVzcyBtaXNtYXRjaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkIH0sXG4gICAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB3cm9uZ0FkZHJlc3MsIGFtb3VudDogdHJhbnNmZXJBbW91bnQgfV0gfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IgZm9yIGFtb3VudCBtaXNtYXRjaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkIH0sXG4gICAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB0cmFuc2ZlclRvLCBhbW91bnQ6ICcxJyB9XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2d1YXJkIGNhc2VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHR4SGV4IGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHt9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogdHJhbnNmZXJUbywgYW1vdW50OiB0cmFuc2ZlckFtb3VudCB9XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgdHhIZXggaW4gdHhQcmVidWlsZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiByZWNpcGllbnRzIGhhcyBtb3JlIHRoYW4gMSBlbnRyeScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkIH0sXG4gICAgICAgICAgICB0eFBhcmFtczoge1xuICAgICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgICAgeyBhZGRyZXNzOiB0cmFuc2ZlclRvLCBhbW91bnQ6IHRyYW5zZmVyQW1vdW50IH0sXG4gICAgICAgICAgICAgICAgeyBhZGRyZXNzOiB3cm9uZ0FkZHJlc3MsIGFtb3VudDogdHJhbnNmZXJBbW91bnQgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3MvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gcmVjaXBpZW50cyBpcyBhbiBlbXB0eSBhcnJheScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogcmF3VHgudHJhbnNmZXIuc2lnbmVkIH0sXG4gICAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVjaXBpZW50cyBpbiB0eFBhcmFtcycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcG9seXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOENBQTBEO0FBQzFELDRDQUEwQztBQUMxQyxtQ0FBMEM7QUFDMUMsdURBQXNGO0FBQ3RGLGdFQUF3QztBQUN4Qyw0Q0FBdUM7QUFDdkMsNkNBQStCO0FBQy9CLGdFQUFrRDtBQUNsRCxpQ0FBa0M7QUFDbEMsNENBQXNHO0FBQ3RHLDhDQUFpRTtBQUNqRSx1Q0FBa0Q7QUFDbEQsbURBQXdEO0FBRXhELFFBQVEsQ0FBQyxRQUFRLEVBQUU7SUFDakIsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBRWIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsWUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFO1FBQ25DLEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtZQUNyRCw2Q0FBNkM7WUFDN0MsZ0NBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxpQ0FBcUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FB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QUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RixRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JGLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3ZGLGtEQUFrRCxDQUNuRCxDQUFDO1lBQ0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMs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LE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2lCQUN6RSxDQUFDO3FCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHlDQUE4QixDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IFBvbHl4LCBUcG9seXggfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgUE9MWVhfQUREUkVTU19GT1JNQVQsIFRQT0xZWF9BRERSRVNTX0ZPUk1BVCB9IGZyb20gJy4uLy4uL3NyYy9saWIvY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3dyd1VzZXJzJztcbmltcG9ydCB7IGFmdGVyRWFjaCB9IGZyb20gJ21vY2hhJztcbmltcG9ydCB7IGdlbmVzaXNIYXNoLCBzcGVjVmVyc2lvbiwgdHhWZXJzaW9uLCByYXdUeCwgYWNjb3VudHMsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFY4VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyB0ZXN0bmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnUG9seXg6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2VDb2luO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdwb2x5eCcsIFBvbHl4LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3Rwb2x5eCcsIFRwb2x5eC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZUNvaW4gPSBiaXRnby5jb2luKCd0cG9seXgnKSBhcyBUcG9seXg7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIEZvcm1hdCBDb25zdGFudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGFkZHJlc3MgZm9ybWF0IGNvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFZlcmlmeSB0aGUgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGNvcnJlY3RseVxuICAgICAgUE9MWVhfQUREUkVTU19GT1JNQVQuc2hvdWxkLmVxdWFsKDEyKTtcbiAgICAgIFRQT0xZWF9BRERSRVNTX0ZPUk1BVC5zaG91bGQuZXF1YWwoNDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjb3ZlciBUcmFuc2FjdGlvbnM6JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNhbmRCb3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgY29uc3QgcmVjb3ZlcnlEZXN0aW5hdGlvbiA9ICc1SDU2ZjMxaFNZR0NSVjNVUmpRSHYyQ2M0WlNrSk5IVE04TUtHdGtrVjZoekNxTjcnO1xuICAgIGNvbnN0IG5vbmNlID0gMDtcbiAgICBsZXQgYWNjb3VudEluZm9DQjtcbiAgICBsZXQgaGVhZGVySW5mb0NCO1xuICAgIGxldCBnZXRGZWVDQjtcbiAgICBsZXQgZ2V0TWF0ZXJpYWxDQjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgYWNjb3VudEluZm9DQiA9IHNhbmRCb3guc3R1YihQb2x5eC5wcm90b3R5cGUsICdnZXRBY2NvdW50SW5mbycgYXMga2V5b2YgUG9seXgpO1xuICAgICAgaGVhZGVySW5mb0NCID0gc2FuZEJveC5zdHViKFBvbHl4LnByb3RvdHlwZSwgJ2dldEhlYWRlckluZm8nIGFzIGtleW9mIFBvbHl4KTtcbiAgICAgIGdldEZlZUNCID0gc2FuZEJveC5zdHViKFBvbHl4LnByb3RvdHlwZSwgJ2dldEZlZScgYXMga2V5b2YgUG9seXgpO1xuICAgICAgZ2V0TWF0ZXJpYWxDQiA9IHNhbmRCb3guc3R1YihQb2x5eC5wcm90b3R5cGUsICdnZXRNYXRlcmlhbCcgYXMga2V5b2YgUG9seXgpO1xuICAgICAgZ2V0TWF0ZXJpYWxDQi5yZXNvbHZlcyh1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRCb3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSB1bnNpZ25lZCBzd2VlcCBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhY2NvdW50SW5mb0NCXG4gICAgICAgIC53aXRoQXJncyh0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzKVxuICAgICAgICAucmVzb2x2ZXMoeyBub25jZTogMCwgZnJlZUJhbGFuY2U6IDEwMDAwNzAwMDAwMCB9KTtcbiAgICAgIGhlYWRlckluZm9DQi5yZXNvbHZlcyh7XG4gICAgICAgIGhlYWRlck51bWJlcjogdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyLFxuICAgICAgICBoZWFkZXJIYXNoOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCxcbiAgICAgIH0pO1xuICAgICAgZ2V0RmVlQ0Iud2l0aEFyZ3MocmVjb3ZlcnlEZXN0aW5hdGlvbiwgdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcywgMTAwMDA3MDAwMDAwKS5yZXNvbHZlcyg3NDQwMSk7XG5cbiAgICAgIGNvbnN0IGNvbW1vbktleUNoYWluID0gdGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIuYml0Z29LZXk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkID0gYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7IGJpdGdvS2V5OiBjb21tb25LZXlDaGFpbiwgcmVjb3ZlcnlEZXN0aW5hdGlvbiB9KTtcblxuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0cy5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0ud2FsbGV0Q29pbi5zaG91bGQuZXF1YWwoJ3Rwb2x5eCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHguc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2NhbkluZGV4LnNob3VsZC5lcXVhbCgwKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pbi5zaG91bGQuZXF1YWwoJ3Rwb2x5eCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaWduYWJsZUhleC5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5kZXJpdmF0aW9uUGF0aC5zaG91bGQuZXF1YWwoJ20vMCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5pbnB1dHMuc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChcbiAgICAgICAgJzVEblpRcWJ4dEIzQ1drTGdmQTZ3cHFka0NkOUJxN0FYNDlScExQSndXOW16b1Q3cydcbiAgICAgICk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LmlucHV0c1swXS52YWx1ZVN0cmluZy5zaG91bGQuZXF1YWwoJzEwMDAwNjI1NTk5MCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKDEwMDAwNjI1NTk5MCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4Lm91dHB1dHMuc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKFxuICAgICAgICAnNUg1NmYzMWhTWUdDUlYzVVJqUUh2MkNjNFpTa0pOSFRNOE1LR3Rra1Y2aHpDcU43J1xuICAgICAgKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHgucGFyc2VkVHgub3V0cHV0c1swXS52YWx1ZVN0cmluZy5zaG91bGQuZXF1YWwoJzEwMDAwNjI1NTk5MCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5wYXJzZWRUeC5vdXRwdXRzWzBdLmNvaW5OYW1lLnNob3VsZC5lcXVhbCgndHBvbHl4Jyk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnBhcnNlZFR4LnR5cGUuc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguZmVlSW5mby5zaG91bGQubm90LmJlLnVuZGVmaW5lZCgpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5mZWVJbmZvLmZlZS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICB1bnNpZ25lZC50eFJlcXVlc3RzWzBdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmZlZUluZm8uZmVlU3RyaW5nLnNob3VsZC5lcXVhbCgnMCcpO1xuICAgICAgdW5zaWduZWQudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMuc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljLmZpcnN0VmFsaWQuc2hvdWxkLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljLm1heER1cmF0aW9uLnNob3VsZC5lcXVhbCgyNDAwKTtcbiAgICAgIHVuc2lnbmVkLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljLmNvbW1vbktleWNoYWluLnNob3VsZC5lcXVhbChcbiAgICAgICAgJzk3ZDlkYThiZjU0NGQwN2YzYzdhZThlZTA2YmIxMmE2M2Y3NDQ3OGQwYzQ2MTIwMWFiOTQ0MjFhOWM4MWQ1YjM3OTU1M2YwMzMyZGFhYTg1Y2I4YzY1ZTFmZTdlNjkwN2M2MjI2OGMwMDgxMmIwOGE0ZTEzNjExNzhlMzA0ZGRiJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVjb3ZlciBhIHR4IGZvciBub24tYml0Z28gcmVjb3ZlcmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjY291bnRJbmZvQ0Iud2l0aEFyZ3ModGVzdERhdGEud3J3VXNlci53YWxsZXRBZGRyZXNzKS5yZXNvbHZlcyh7IG5vbmNlOiAwLCBmcmVlQmFsYW5jZTogMTAwMDA3MDAwMDAwIH0pO1xuICAgICAgaGVhZGVySW5mb0NCLnJlc29sdmVzKHtcbiAgICAgICAgaGVhZGVyTnVtYmVyOiB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suYmxvY2tOdW1iZXIsXG4gICAgICAgIGhlYWRlckhhc2g6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5oYXNoLFxuICAgICAgfSk7XG4gICAgICBnZXRGZWVDQi53aXRoQXJncyhyZWNvdmVyeURlc3RpbmF0aW9uLCB0ZXN0RGF0YS53cndVc2VyLndhbGxldEFkZHJlc3MsIDEwMDAwNzAwMDAwMCkucmVzb2x2ZXMoNzQ0MDEpO1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlQ29pbi5yZWNvdmVyKHtcbiAgICAgICAgdXNlcktleTogdGVzdERhdGEud3J3VXNlci51c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLndyd1VzZXIuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogdGVzdERhdGEud3J3VXNlci5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEud3J3VXNlci53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMuc2hvdWxkLmhhc093blByb3BlcnR5KCdzZXJpYWxpemVkVHgnKTtcbiAgICAgIHJlcy5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NjYW5JbmRleCcpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBiYXNlQ29pbi5nZXRCdWlsZGVyKCkuZnJvbShyZXMuc2VyaWFsaXplZFR4KTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoe1xuICAgICAgICAgIGZpcnN0VmFsaWQ6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcixcbiAgICAgICAgICBtYXhEdXJhdGlvbjogYmFzZUNvaW4uU1dFRVBfVFhOX0RVUkFUSU9OLFxuICAgICAgICB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2sodGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHRlc3REYXRhLndyd1VzZXIud2FsbGV0QWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgdGVzdERhdGEudGVzdG5ldEJsb2NrLmJsb2NrTnVtYmVyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCB0ZXN0RGF0YS50ZXN0bmV0QmxvY2suaGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCBub25jZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCBiYXNlQ29pbi5TV0VFUF9UWE5fRFVSQVRJT04pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHhuIGZvciB1bnNpZ25lZC1zd2VlcCByZWNvdmVyaWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYWNjb3VudEluZm9DQlxuICAgICAgICAud2l0aEFyZ3ModGVzdERhdGEudW5zaWduZWRTd2VlcFVzZXIud2FsbGV0QWRkcmVzcylcbiAgICAgICAgLnJlc29sdmVzKHsgbm9uY2U6IDAsIGZyZWVCYWxhbmNlOiAxMDAwMDcwMDAwMDAgfSk7XG4gICAgICBoZWFkZXJJbmZvQ0IucmVzb2x2ZXMoe1xuICAgICAgICBoZWFkZXJOdW1iZXI6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcixcbiAgICAgICAgaGVhZGVySGFzaDogdGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gsXG4gICAgICB9KTtcbiAgICAgIGdldEZlZUNCLndpdGhBcmdzKHJlY292ZXJ5RGVzdGluYXRpb24sIHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MsIDEwMDAwNzAwMDAwMCkucmVzb2x2ZXMoNzQ0MDEpO1xuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBiYXNlQ29pbi5yZWNvdmVyKHtcbiAgICAgICAgYml0Z29LZXk6IHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLmJpdGdvS2V5LFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgfSk7XG5cbiAgICAgIHJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgICByZXMudHhSZXF1ZXN0c1swXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3NlcmlhbGl6ZWRUeCcpO1xuICAgICAgcmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2hvdWxkLmhhc093blByb3BlcnR5KCdzY2FuSW5kZXgnKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gYmFzZUNvaW4uZ2V0QnVpbGRlcigpLmZyb20ocmVzLnR4UmVxdWVzdHNbMF0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4KTtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoe1xuICAgICAgICAgIGZpcnN0VmFsaWQ6IHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcixcbiAgICAgICAgICBtYXhEdXJhdGlvbjogYmFzZUNvaW4uU1dFRVBfVFhOX0RVUkFUSU9OLFxuICAgICAgICB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2sodGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiB0ZXN0RGF0YS51bnNpZ25lZFN3ZWVwVXNlci53YWxsZXRBZGRyZXNzIH0pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHRlc3REYXRhLnVuc2lnbmVkU3dlZXBVc2VyLndhbGxldEFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIHRlc3REYXRhLnRlc3RuZXRCbG9jay5ibG9ja051bWJlcik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgdGVzdERhdGEudGVzdG5ldEJsb2NrLmhhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCBiYXNlQ29pbi5TV0VFUF9UWE5fRFVSQVRJT04pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVG9rZW4gRW5hYmxlbWVudDonLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBoYXZlIGNvcnJlY3QgdG9rZW4gZW5hYmxlbWVudCBjb25maWcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBiYXNlQ29pbi5nZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKTtcbiAgICAgIHNob3VsZC5leGlzdChjb25maWcpO1xuICAgICAgY29uZmlnLnJlcXVpcmVzVG9rZW5FbmFibGVtZW50LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIGNvbmZpZy5zdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50cy5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3YWxsZXQgdHlwZSBmb3IgdG9rZW4gZW5hYmxlbWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGJhc2VDb2luLmdldFRva2VuRW5hYmxlbWVudENvbmZpZygpO1xuICAgICAgKCgpID0+IGNvbmZpZy52YWxpZGF0ZVdhbGxldCgnY3VzdG9kaWFsJykpLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICgoKSA9PiBjb25maWcudmFsaWRhdGVXYWxsZXQoJ2hvdCcpKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9Ub2tlbiBlbmFibGVtZW50IGZvciBQb2x5bWVzaCBcXChwb2x5eFxcKSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY3VzdG9kaWFsIHdhbGxldHMvXG4gICAgICApO1xuICAgICAgKCgpID0+IGNvbmZpZy52YWxpZGF0ZVdhbGxldCgnY29sZCcpKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9Ub2tlbiBlbmFibGVtZW50IGZvciBQb2x5bWVzaCBcXChwb2x5eFxcKSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY3VzdG9kaWFsIHdhbGxldHMvXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmVyaWZ5VHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHJhbnNmZXJUbyA9ICc1RjhqeEtFODFHaEZycGh5Zk1GcjVVamVBejV3UzRBYVpGbWVGUG5mOHdUZXRENzInO1xuICAgIGNvbnN0IHRyYW5zZmVyQW1vdW50ID0gJzIwMDAwMDAwMDAnO1xuICAgIGNvbnN0IHdyb25nQWRkcmVzcyA9ICc1R2hiQzZuMnBVRnJYOThEd3lQaXQ2N2ZCNUF3UXZWQ3daNGoySEtBN2E0ZFVLNHknO1xuXG4gICAgZGVzY3JpYmUoJ3RyYW5zZmVyIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFkZHJlc3MgYW5kIGFtb3VudCBtYXRjaCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFzZUNvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHJhd1R4LnRyYW5zZmVyLnNpZ25lZCB9LFxuICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHRyYW5zZmVyVG8sIGFtb3VudDogdHJhbnNmZXJBbW91bnQgfV0gfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGZvciBhZGRyZXNzIG1pc21hdGNoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQgfSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHdyb25nQWRkcmVzcywgYW1vdW50OiB0cmFuc2ZlckFtb3VudCB9XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvciBmb3IgYW1vdW50IG1pc21hdGNoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQgfSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHRyYW5zZmVyVG8sIGFtb3VudDogJzEnIH1dIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZ3VhcmQgY2FzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gdHhIZXggaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgYmFzZUNvaW5cbiAgICAgICAgICAudmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQcmVidWlsZDoge30sXG4gICAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB0cmFuc2ZlclRvLCBhbW91bnQ6IHRyYW5zZmVyQW1vdW50IH1dIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB0eEhleCBpbiB0eFByZWJ1aWxkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHJlY2lwaWVudHMgaGFzIG1vcmUgdGhhbiAxIGVudHJ5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQgfSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAgICB7IGFkZHJlc3M6IHRyYW5zZmVyVG8sIGFtb3VudDogdHJhbnNmZXJBbW91bnQgfSxcbiAgICAgICAgICAgICAgICB7IGFkZHJlc3M6IHdyb25nQWRkcmVzcywgYW1vdW50OiB0cmFuc2ZlckFtb3VudCB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9zdXBwb3J0IHNlbmRpbmcgdG8gbW9yZSB0aGFuIDEgZGVzdGluYXRpb24gYWRkcmVzcy8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiByZWNpcGllbnRzIGlzIGFuIGVtcHR5IGFycmF5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiByYXdUeC50cmFuc2Zlci5zaWduZWQgfSxcbiAgICAgICAgICAgIHR4UGFyYW1zOiB7IHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyByZWNpcGllbnRzIGluIHR4UGFyYW1zJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2OCB0cmFuc2ZlciB3aXRoIGNvaW5TcGVjaWZpYy5tYXRlcmlhbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHY4QW1vdW50ID0gJzEwMDAwMDAnO1xuICAgICAgY29uc3QgdjhSZWNlaXZlciA9IGFjY291bnRzLmFjY291bnQyO1xuICAgICAgY29uc3QgdjhTZW5kZXIgPSBhY2NvdW50cy5hY2NvdW50MTtcbiAgICAgIGxldCB2OFNpZ25lZFR4SGV4OiBzdHJpbmc7XG5cbiAgICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIEJ1aWxkIGEgc2lnbmVkIHY4IHRyYW5zZmVyIHR4IHVzaW5nIHRlc3RuZXRWOE1hdGVyaWFsLlxuICAgICAgICAvLyBUaGUgc2VydmVyIGVtYmVkcyB0aGlzIG1hdGVyaWFsIGluIGNvaW5TcGVjaWZpYyBkdXJpbmcgcHJlYnVpbGQgc28gdGhhdFxuICAgICAgICAvLyB2ZXJpZnlUcmFuc2FjdGlvbiBjYW4gZGVjb2RlIHR4SGV4IGJ1aWx0IGFnYWluc3QgYSBjaGFpbiBzcGVjIG5ld2VyIHRoYW5cbiAgICAgICAgLy8gdGhlIFNESydzIGhhcmRjb2RlZCB2NyBtYXRlcmlhbCAoQ0VDSE8tMTQ3MSkuXG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0cG9seXgnKSlcbiAgICAgICAgICAuYW1vdW50KHY4QW1vdW50KVxuICAgICAgICAgIC50byh7IGFkZHJlc3M6IHY4UmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiB2OFNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiB2OFNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHY4U2lnbmVkVHhIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd2ZXJpZmllcyBhIHY4IHRyYW5zZmVyIHdoZW4gY29pblNwZWNpZmljLm1hdGVyaWFsIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiYXNlQ29pbi52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgdHhQcmVidWlsZDoge1xuICAgICAgICAgICAgdHhIZXg6IHY4U2lnbmVkVHhIZXgsXG4gICAgICAgICAgICBjb2luU3BlY2lmaWM6IHsgbWF0ZXJpYWw6IHRlc3RuZXRWOE1hdGVyaWFsIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB2OFJlY2VpdmVyLmFkZHJlc3MsIGFtb3VudDogdjhBbW91bnQgfV0gfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aHJvd3MgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGZvciBhZGRyZXNzIG1pc21hdGNoIG9uIHY4IHRyYW5zZmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBiYXNlQ29pblxuICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eFByZWJ1aWxkOiB7XG4gICAgICAgICAgICAgIHR4SGV4OiB2OFNpZ25lZFR4SGV4LFxuICAgICAgICAgICAgICBjb2luU3BlY2lmaWM6IHsgbWF0ZXJpYWw6IHRlc3RuZXRWOE1hdGVyaWFsIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogd3JvbmdBZGRyZXNzLCBhbW91bnQ6IHY4QW1vdW50IH1dIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aHJvd3MgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGZvciBhbW91bnQgbWlzbWF0Y2ggb24gdjggdHJhbnNmZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGJhc2VDb2luXG4gICAgICAgICAgLnZlcmlmeVRyYW5zYWN0aW9uKHtcbiAgICAgICAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgICAgICAgdHhIZXg6IHY4U2lnbmVkVHhIZXgsXG4gICAgICAgICAgICAgIGNvaW5TcGVjaWZpYzogeyBtYXRlcmlhbDogdGVzdG5ldFY4TWF0ZXJpYWwgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB2OFJlY2VpdmVyLmFkZHJlc3MsIGFtb3VudDogJzEnIH1dIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=