cdk-assets 2.155.6 → 2.155.8

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.
@@ -64,7 +64,23 @@ class FileAssetHandler {
64
64
  throw new Error(`Bucket named '${destination.bucketName}' exists, but we dont have access to it.`);
65
65
  case BucketOwnership.SOMEONE_ELSES_AND_HAVE_ACCESS:
66
66
  if (!allowCrossAccount) {
67
- throw new Error(`Bucket named '${destination.bucketName}' exists, but not in account ${await account()}. Wrong account?`);
67
+ throw new Error(`❗❗ UNEXPECTED BUCKET OWNER DETECTED ❗❗
68
+
69
+ We've detected that the S3 bucket ${destination.bucketName} was
70
+ originally created in account ${await account()} as part of the CloudFormation stack CDKToolkit,
71
+ but now resides in a different AWS account. To prevent cross-account asset bucket access of your
72
+ deployments, CDK will stop now.
73
+
74
+ If this situation is intentional and you own the AWS account that the bucket has moved to, remove the
75
+ resource named StagingBucket from the template of CloudFormation stack CDKToolkit and try again.
76
+
77
+ If this situation is not intentional, we strongly recommend auditing your account to make sure all
78
+ resources are configured the way you expect them [1]. For questions or concerns, please contact
79
+ AWS Support [2].
80
+
81
+ [1] https://repost.aws/knowledge-center/potential-account-compromise
82
+
83
+ [2] https://aws.amazon.com/support`);
68
84
  }
69
85
  break;
70
86
  }
@@ -264,4 +280,4 @@ async function cached(cache, key, factory) {
264
280
  cache.set(key, fresh);
265
281
  return fresh;
266
282
  }
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBc0Q7QUFDdEQsNkJBQTZCO0FBQzdCLDBFQUFnRjtBQUNoRiw2QkFBNkI7QUFDN0Isd0JBQStDO0FBRS9DLDZDQUEyQztBQUMzQyx3Q0FBMEM7QUFFMUMsMENBQXlDO0FBQ3pDLGtEQUF5RDtBQUN6RCxvQ0FBaUM7QUFFakM7Ozs7R0FJRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRS9CLE1BQWEsZ0JBQWdCO0lBRzNCLFlBQ21CLE9BQWUsRUFDZixLQUF3QixFQUN4QixJQUFrQjtRQUZsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxLQUFtQixDQUFDO0lBRS9CLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLFFBQVEsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLEdBQUcsSUFBQSw2QkFBMEIsRUFBQyxXQUFXLENBQUM7Z0JBQzFDLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBGaWxlQXNzZXRQYWNrYWdpbmcsIEZpbGVTb3VyY2UgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCB7IGRlc3RpbmF0aW9uVG9DbGllbnRPcHRpb25zIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBGaWxlTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4uLy4uL2Fzc2V0LW1hbmlmZXN0JztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL3Byb2dyZXNzJztcbmltcG9ydCB7IHppcERpcmVjdG9yeSB9IGZyb20gJy4uL2FyY2hpdmUnO1xuaW1wb3J0IHsgSUFzc2V0SGFuZGxlciwgSUhhbmRsZXJIb3N0LCB0eXBlIFB1Ymxpc2hPcHRpb25zIH0gZnJvbSAnLi4vYXNzZXQtaGFuZGxlcic7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSAnLi4vZnMtZXh0cmEnO1xuaW1wb3J0IHsgcmVwbGFjZUF3c1BsYWNlaG9sZGVycyB9IGZyb20gJy4uL3BsYWNlaG9sZGVycyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4uL3NoZWxsJztcblxuLyoqXG4gKiBUaGUgc2l6ZSBvZiBhbiBlbXB0eSB6aXAgZmlsZSBpcyAyMiBieXRlc1xuICpcbiAqIFJlZjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWklQXyhmaWxlX2Zvcm1hdClcbiAqL1xuY29uc3QgRU1QVFlfWklQX0ZJTEVfU0laRSA9IDIyO1xuXG5leHBvcnQgY2xhc3MgRmlsZUFzc2V0SGFuZGxlciBpbXBsZW1lbnRzIElBc3NldEhhbmRsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVDYWNoZVJvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtEaXI6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0OiBGaWxlTWFuaWZlc3RFbnRyeSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IElIYW5kbGVySG9zdFxuICApIHtcbiAgICB0aGlzLmZpbGVDYWNoZVJvb3QgPSBwYXRoLmpvaW4od29ya0RpciwgJy5jYWNoZScpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge31cblxuICBwdWJsaWMgYXN5bmMgaXNQdWJsaXNoZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBhd2FpdCByZXBsYWNlQXdzUGxhY2Vob2xkZXJzKHRoaXMuYXNzZXQuZGVzdGluYXRpb24sIHRoaXMuaG9zdC5hd3MpO1xuICAgIGNvbnN0IHMzVXJsID0gYHMzOi8vJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfS8ke2Rlc3RpbmF0aW9uLm9iamVjdEtleX1gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzMyA9IGF3YWl0IHRoaXMuaG9zdC5hd3MuczNDbGllbnQoe1xuICAgICAgICAuLi5kZXN0aW5hdGlvblRvQ2xpZW50T3B0aW9ucyhkZXN0aW5hdGlvbiksXG4gICAgICAgIHF1aWV0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNIRUNLLCBgQ2hlY2sgJHtzM1VybH1gKTtcblxuICAgICAgaWYgKGF3YWl0IG9iamVjdEV4aXN0cyhzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSwgZGVzdGluYXRpb24ub2JqZWN0S2V5KSkge1xuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkZPVU5ELCBgRm91bmQgJHtzM1VybH1gKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkRFQlVHLCBgJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKG9wdGlvbnM6IFB1Ymxpc2hPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGF3YWl0IHJlcGxhY2VBd3NQbGFjZWhvbGRlcnModGhpcy5hc3NldC5kZXN0aW5hdGlvbiwgdGhpcy5ob3N0LmF3cyk7XG4gICAgY29uc3QgczNVcmwgPSBgczM6Ly8ke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9LyR7ZGVzdGluYXRpb24ub2JqZWN0S2V5fWA7XG5cbiAgICBjb25zdCBjbGllbnRPcHRpb25zID0gZGVzdGluYXRpb25Ub0NsaWVudE9wdGlvbnMoZGVzdGluYXRpb24pO1xuICAgIGNvbnN0IHMzID0gYXdhaXQgdGhpcy5ob3N0LmF3cy5zM0NsaWVudChjbGllbnRPcHRpb25zKTtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNIRUNLLCBgQ2hlY2sgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IGJ1Y2tldEluZm8gPSBCdWNrZXRJbmZvcm1hdGlvbi5mb3IodGhpcy5ob3N0KTtcblxuICAgIC8vIEEgdGh1bmsgZm9yIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgYWNjb3VudC4gVXNlZCB3aGVuIHdlIG5lZWQgdG8gZm9ybWF0IGFuIGVycm9yXG4gICAgLy8gbWVzc2FnZSwgbm90IGluIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgY29uc3QgYWNjb3VudCA9IGFzeW5jICgpID0+XG4gICAgICAoYXdhaXQgdGhpcy5ob3N0LmF3cy5kaXNjb3ZlclRhcmdldEFjY291bnQoY2xpZW50T3B0aW9ucykpLmFjY291bnRJZDtcblxuICAgIGNvbnN0IGFsbG93Q3Jvc3NBY2NvdW50ID0gb3B0aW9ucy5hbGxvd0Nyb3NzQWNjb3VudCA/PyB0cnVlO1xuICAgIHN3aXRjaCAoXG4gICAgICBhd2FpdCBidWNrZXRJbmZvLmJ1Y2tldE93bmVyc2hpcChcbiAgICAgICAgczMsXG4gICAgICAgIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUsXG4gICAgICAgIGFsbG93Q3Jvc3NBY2NvdW50ID8gdW5kZWZpbmVkIDogYXdhaXQgYWNjb3VudCgpXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjYXNlIEJ1Y2tldE93bmVyc2hpcC5NSU5FOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE5vIGJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScuIElzIGFjY291bnQgJHthd2FpdCBhY2NvdW50KCl9IGJvb3RzdHJhcHBlZD9gXG4gICAgICAgICk7XG4gICAgICBjYXNlIEJ1Y2tldE93bmVyc2hpcC5OT19BQ0NFU1M6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9JyBleGlzdHMsIGJ1dCB3ZSBkb250IGhhdmUgYWNjZXNzIHRvIGl0LmBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLlNPTUVPTkVfRUxTRVNfQU5EX0hBVkVfQUNDRVNTOlxuICAgICAgICBpZiAoIWFsbG93Q3Jvc3NBY2NvdW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScgZXhpc3RzLCBidXQgbm90IGluIGFjY291bnQgJHthd2FpdCBhY2NvdW50KCl9LiBXcm9uZyBhY2NvdW50P2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChhd2FpdCBvYmplY3RFeGlzdHMoczMsIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUsIGRlc3RpbmF0aW9uLm9iamVjdEtleSkpIHtcbiAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuRk9VTkQsIGBGb3VuZCAke3MzVXJsfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElkZW50aWZ5IHRoZSB0aGUgYnVja2V0IGVuY3J5cHRpb24gdHlwZSB0byBzZXQgdGhlIGhlYWRlciBvbiB1cGxvYWRcbiAgICAvLyByZXF1aXJlZCBmb3IgU0NQIHJ1bGVzIGRlbnlpbmcgdXBsb2FkcyB3aXRob3V0IGVuY3J5cHRpb24gaGVhZGVyXG4gICAgbGV0IHBhcmFtc0VuY3J5cHRpb246IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnN0IGVuY3J5cHRpb24yID0gYXdhaXQgYnVja2V0SW5mby5idWNrZXRFbmNyeXB0aW9uKHMzLCBkZXN0aW5hdGlvbi5idWNrZXROYW1lKTtcbiAgICBzd2l0Y2ggKGVuY3J5cHRpb24yLnR5cGUpIHtcbiAgICAgIGNhc2UgJ25vX2VuY3J5cHRpb24nOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FlczI1Nic6XG4gICAgICAgIHBhcmFtc0VuY3J5cHRpb24gPSB7IFNlcnZlclNpZGVFbmNyeXB0aW9uOiAnQUVTMjU2JyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ttcyc6XG4gICAgICAgIC8vIFdlIG11c3QgaW5jbHVkZSB0aGUga2V5IElEIG90aGVyd2lzZSBTMyB3aWxsIGVuY3J5cHQgd2l0aCB0aGUgZGVmYXVsdCBrZXlcbiAgICAgICAgcGFyYW1zRW5jcnlwdGlvbiA9IHtcbiAgICAgICAgICBTZXJ2ZXJTaWRlRW5jcnlwdGlvbjogJ2F3czprbXMnLFxuICAgICAgICAgIFNTRUtNU0tleUlkOiBlbmNyeXB0aW9uMi5rbXNLZXlJZCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkb2VzX25vdF9leGlzdCc6XG4gICAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShcbiAgICAgICAgICBFdmVudFR5cGUuREVCVUcsXG4gICAgICAgICAgYE5vIGJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScuIElzIGFjY291bnQgJHthY2NvdW50fSBib290c3RyYXBwZWQ/YFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FjY2Vzc19kZW5pZWQnOlxuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoXG4gICAgICAgICAgRXZlbnRUeXBlLkRFQlVHLFxuICAgICAgICAgIGBDb3VsZCBub3QgcmVhZCBlbmNyeXB0aW9uIHNldHRpbmdzIG9mIGJ1Y2tldCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfSc6IHVwbG9hZGluZyB3aXRoIGRlZmF1bHQgc2V0dGluZ3MgKFwiY2RrIGJvb3RzdHJhcFwiIHRvIHZlcnNpb24gOSBpZiB5b3VyIG9yZ2FuaXphdGlvbidzIHBvbGljaWVzIHByZXZlbnQgYSBzdWNjZXNzZnVsIHVwbG9hZCBvciB0byBnZXQgcmlkIG9mIHRoaXMgbWVzc2FnZSkuYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0LmFib3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcHVibGlzaEZpbGUgPSB0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlXG4gICAgICA/IGF3YWl0IHRoaXMuZXh0ZXJuYWxQYWNrYWdlRmlsZSh0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlKVxuICAgICAgOiBhd2FpdCB0aGlzLnBhY2thZ2VGaWxlKHRoaXMuYXNzZXQuc291cmNlKTtcblxuICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuVVBMT0FELCBgVXBsb2FkICR7czNVcmx9YCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIEJ1Y2tldDogZGVzdGluYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBkZXN0aW5hdGlvbi5vYmplY3RLZXksXG4gICAgICAgIEJvZHk6IGNyZWF0ZVJlYWRTdHJlYW0ocHVibGlzaEZpbGUucGFja2FnZWRQYXRoKSxcbiAgICAgICAgQ29udGVudFR5cGU6IHB1Ymxpc2hGaWxlLmNvbnRlbnRUeXBlLFxuICAgICAgfSxcbiAgICAgIHBhcmFtc0VuY3J5cHRpb25cbiAgICApO1xuXG4gICAgYXdhaXQgczMudXBsb2FkKHBhcmFtcykucHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYWNrYWdlRmlsZShzb3VyY2U6IEZpbGVTb3VyY2UpOiBQcm9taXNlPFBhY2thZ2VkRmlsZUFzc2V0PiB7XG4gICAgaWYgKCFzb3VyY2UucGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJ3BhdGgnIGlzIGV4cGVjdGVkIGluIHRoZSBGaWxlIGFzc2V0IHNvdXJjZSwgZ290OiAke0pTT04uc3RyaW5naWZ5KHNvdXJjZSl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLndvcmtEaXIsIHNvdXJjZS5wYXRoKTtcblxuICAgIGlmIChzb3VyY2UucGFja2FnaW5nID09PSBGaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSkge1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vemlwJztcblxuICAgICAgYXdhaXQgZnMubWtkaXIodGhpcy5maWxlQ2FjaGVSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHBhY2thZ2VkUGF0aCA9IHBhdGguam9pbih0aGlzLmZpbGVDYWNoZVJvb3QsIGAke3RoaXMuYXNzZXQuaWQuYXNzZXRJZH0uemlwYCk7XG5cbiAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhY2thZ2VkUGF0aCkpIHtcbiAgICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5DQUNIRUQsIGBGcm9tIGNhY2hlICR7cGFja2FnZWRQYXRofWApO1xuICAgICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGgsIGNvbnRlbnRUeXBlIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuQlVJTEQsIGBaaXAgJHtmdWxsUGF0aH0gLT4gJHtwYWNrYWdlZFBhdGh9YCk7XG4gICAgICBhd2FpdCB6aXBEaXJlY3RvcnkoZnVsbFBhdGgsIHBhY2thZ2VkUGF0aCwgKG0pID0+IHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuREVCVUcsIG0pKTtcbiAgICAgIHJldHVybiB7IHBhY2thZ2VkUGF0aCwgY29udGVudFR5cGUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZnVsbFBhdGgpID8/ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICAgICAgcmV0dXJuIHsgcGFja2FnZWRQYXRoOiBmdWxsUGF0aCwgY29udGVudFR5cGUgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4dGVybmFsUGFja2FnZUZpbGUoZXhlY3V0YWJsZTogc3RyaW5nW10pOiBQcm9taXNlPFBhY2thZ2VkRmlsZUFzc2V0PiB7XG4gICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5CVUlMRCwgYEJ1aWxkaW5nIGFzc2V0IHNvdXJjZSB1c2luZyBjb21tYW5kOiAnJHtleGVjdXRhYmxlfSdgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYWNrYWdlZFBhdGg6IChhd2FpdCBzaGVsbChleGVjdXRhYmxlLCB7IHF1aWV0OiB0cnVlIH0pKS50cmltKCksXG4gICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3ppcCcsXG4gICAgfTtcbiAgfVxufVxuXG5lbnVtIEJ1Y2tldE93bmVyc2hpcCB7XG4gIERPRVNfTk9UX0VYSVNULFxuICBNSU5FLFxuICBOT19BQ0NFU1MsXG4gIFNPTUVPTkVfRUxTRVNfQU5EX0hBVkVfQUNDRVNTLFxufVxuXG50eXBlIEJ1Y2tldEVuY3J5cHRpb24gPVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ25vX2VuY3J5cHRpb24nIH1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdhZXMyNTYnIH1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdrbXMnOyByZWFkb25seSBrbXNLZXlJZD86IHN0cmluZyB9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnYWNjZXNzX2RlbmllZCcgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2RvZXNfbm90X2V4aXN0JyB9O1xuXG5hc3luYyBmdW5jdGlvbiBvYmplY3RFeGlzdHMoczM6IEFXUy5TMywgYnVja2V0OiBzdHJpbmcsIGtleTogc3RyaW5nKSB7XG4gIC8qXG4gICAqIFRoZSBvYmplY3QgZXhpc3RlbmNlIGNoZWNrIGhlcmUgcmVmcmFpbnMgZnJvbSB1c2luZyB0aGUgYGhlYWRPYmplY3RgIG9wZXJhdGlvbiBiZWNhdXNlIHRoaXNcbiAgICogd291bGQgY3JlYXRlIGEgbmVnYXRpdmUgY2FjaGUgZW50cnksIG1ha2luZyBHRVQtYWZ0ZXItUFVUIGV2ZW50dWFsbHkgY29uc2lzdGVudC4gVGhpcyBoYXMgYmVlblxuICAgKiBvYnNlcnZlZCB0byByZXN1bHQgaW4gQ2xvdWRGb3JtYXRpb24gaXNzdWluZyBcIlZhbGlkYXRpb25FcnJvcjogUzMgZXJyb3I6IEFjY2VzcyBEZW5pZWRcIiwgZm9yXG4gICAqIGV4YW1wbGUgaW4gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy82NDMwLlxuICAgKlxuICAgKiBUbyBwcmV2ZW50IHRoaXMsIHdlIGFyZSBpbnN0ZWFkIHVzaW5nIHRoZSBsaXN0T2JqZWN0c1YyIGNhbGwsIHVzaW5nIHRoZSBsb29rZWQgdXAga2V5IGFzIHRoZVxuICAgKiBwcmVmaXgsIGFuZCBsaW1pdGluZyByZXN1bHRzIHRvIDEuIFNpbmNlIHRoZSBsaXN0IG9wZXJhdGlvbiByZXR1cm5zIGtleXMgb3JkZXJlZCBieSBiaW5hcnlcbiAgICogVVRGLTggcmVwcmVzZW50YXRpb24sIHRoZSBrZXkgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIGJlIHRoZSBmaXJzdCBtYXRjaFxuICAgKiByZXR1cm5lZCBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIElmIHRoZSBmaWxlIGlzIHRvbyBzbWFsbCwgd2UgZGlzY291bnQgaXQgYXMgYSBjYWNoZSBoaXQuIFRoZXJlIGlzIGFuIGlzc3VlXG4gICAqIHNvbWV3aGVyZSB0aGF0IHNvbWV0aW1lcyBwcm9kdWNlcyBlbXB0eSB6aXAgZmlsZXMsIGFuZCB3ZSB3b3VsZCBvdGhlcndpc2VcbiAgICogbmV2ZXIgcmV0cnkgYnVpbGRpbmcgdGhvc2UgYXNzZXRzIHdpdGhvdXQgdXNlcnMgaGF2aW5nIHRvIG1hbnVhbGx5IGNsZWFyXG4gICAqIHRoZWlyIGJ1Y2tldCwgd2hpY2ggaXMgYSBiYWQgZXhwZXJpZW5jZS5cbiAgICovXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgczMubGlzdE9iamVjdHNWMih7IEJ1Y2tldDogYnVja2V0LCBQcmVmaXg6IGtleSwgTWF4S2V5czogMSB9KS5wcm9taXNlKCk7XG4gIHJldHVybiAoXG4gICAgcmVzcG9uc2UuQ29udGVudHMgIT0gbnVsbCAmJlxuICAgIHJlc3BvbnNlLkNvbnRlbnRzLnNvbWUoXG4gICAgICAob2JqZWN0KSA9PiBvYmplY3QuS2V5ID09PSBrZXkgJiYgKG9iamVjdC5TaXplID09IG51bGwgfHwgb2JqZWN0LlNpemUgPiBFTVBUWV9aSVBfRklMRV9TSVpFKVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2VkIGFzc2V0IHdoaWNoIGNhbiBiZSB1cGxvYWRlZCAoZWl0aGVyIGEgc2luZ2xlIGZpbGUgb3IgZGlyZWN0b3J5KVxuICovXG5pbnRlcmZhY2UgUGFja2FnZWRGaWxlQXNzZXQge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VkUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHR5cGUgdG8gYmUgYWRkZWQgaW4gdGhlIFMzIHVwbG9hZCBhY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjb250ZW50IHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENhY2hlIGZvciBidWNrZXQgaW5mb3JtYXRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8ga2VlcCBkb2luZyB0aGUgc2FtZSBjYWxscyBhZ2FpbiBhbmQgYWdhaW5cbiAqXG4gKiBXZSBzY29wZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGNhY2hlIHRvIHRoZSBsaWZldGltZSBvZiB0aGUgaG9zdCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvXG4gKiBhbnl0aGluZyBzcGVjaWFsIGZvciB0ZXN0cyBhbmQgeWV0IHRoZSBjYWNoZSB3aWxsIGxpdmUgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgdGhlIGFzc2V0XG4gKiB1cGxvYWQgc2Vzc2lvbiB3aGVuIHVzZWQgYnkgdGhlIENMSS5cbiAqL1xuY2xhc3MgQnVja2V0SW5mb3JtYXRpb24ge1xuICBwdWJsaWMgc3RhdGljIGZvcihob3N0OiBJSGFuZGxlckhvc3QpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IEJ1Y2tldEluZm9ybWF0aW9uLmNhY2hlcy5nZXQoaG9zdCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgZnJlc2ggPSBuZXcgQnVja2V0SW5mb3JtYXRpb24oKTtcbiAgICBCdWNrZXRJbmZvcm1hdGlvbi5jYWNoZXMuc2V0KGhvc3QsIGZyZXNoKTtcbiAgICByZXR1cm4gZnJlc2g7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjYWNoZXMgPSBuZXcgV2Vha01hcDxJSGFuZGxlckhvc3QsIEJ1Y2tldEluZm9ybWF0aW9uPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3duZXJzaGlwcyA9IG5ldyBNYXA8c3RyaW5nLCBCdWNrZXRPd25lcnNoaXA+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5jcnlwdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgQnVja2V0RW5jcnlwdGlvbj4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgYXN5bmMgYnVja2V0T3duZXJzaGlwKFxuICAgIHMzOiBBV1MuUzMsXG4gICAgYnVja2V0OiBzdHJpbmcsXG4gICAgZXhwZWN0ZWRBY2NvdW50Pzogc3RyaW5nXG4gICk6IFByb21pc2U8QnVja2V0T3duZXJzaGlwPiB7XG4gICAgcmV0dXJuIGNhY2hlZCh0aGlzLm93bmVyc2hpcHMsIGJ1Y2tldCwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYW55QWNjb3VudCA9IGF3YWl0IHRoaXMuX2J1Y2tldE93bmVyc2hpcChzMywgYnVja2V0KTtcblxuICAgICAgc3dpdGNoIChhbnlBY2NvdW50KSB7XG4gICAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLk1JTkU6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXhwZWN0ZWRBY2NvdW50ICYmXG4gICAgICAgICAgICAoYXdhaXQgdGhpcy5fYnVja2V0T3duZXJzaGlwKHMzLCBidWNrZXQsIGV4cGVjdGVkQWNjb3VudCkpID09PSBCdWNrZXRPd25lcnNoaXAuTk9fQUNDRVNTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gTUlORSBhbmQgTk9fQUNDRVNTIGlzIHRoZSBleHBlY3RlZCBhY2NvdW50LFxuICAgICAgICAgICAgLy8gdGhlbiBpdHMgZGVmaW5pdGVseSBzb21lb25lIGVsc2UncyBidWNrZXQuXG4gICAgICAgICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLlNPTUVPTkVfRUxTRVNfQU5EX0hBVkVfQUNDRVNTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLk1JTkU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGFueUFjY291bnQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYnVja2V0RW5jcnlwdGlvbihzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZyk6IFByb21pc2U8QnVja2V0RW5jcnlwdGlvbj4ge1xuICAgIHJldHVybiBjYWNoZWQodGhpcy5lbmNyeXB0aW9ucywgYnVja2V0LCAoKSA9PiB0aGlzLl9idWNrZXRFbmNyeXB0aW9uKHMzLCBidWNrZXQpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2J1Y2tldE93bmVyc2hpcChcbiAgICBzMzogQVdTLlMzLFxuICAgIGJ1Y2tldDogc3RyaW5nLFxuICAgIGFjY291bnQ/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxCdWNrZXRPd25lcnNoaXAuTUlORSB8IEJ1Y2tldE93bmVyc2hpcC5ET0VTX05PVF9FWElTVCB8IEJ1Y2tldE93bmVyc2hpcC5OT19BQ0NFU1M+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgczMuZ2V0QnVja2V0TG9jYXRpb24oeyBCdWNrZXQ6IGJ1Y2tldCwgRXhwZWN0ZWRCdWNrZXRPd25lcjogYWNjb3VudCB9KS5wcm9taXNlKCk7XG4gICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLk1JTkU7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5jb2RlID09PSAnTm9TdWNoQnVja2V0Jykge1xuICAgICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUO1xuICAgICAgfVxuICAgICAgaWYgKFsnQWNjZXNzRGVuaWVkJywgJ0FsbEFjY2Vzc0Rpc2FibGVkJ10uaW5jbHVkZXMoZS5jb2RlKSkge1xuICAgICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLk5PX0FDQ0VTUztcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfYnVja2V0RW5jcnlwdGlvbihzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZyk6IFByb21pc2U8QnVja2V0RW5jcnlwdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmNyeXB0aW9uID0gYXdhaXQgczMuZ2V0QnVja2V0RW5jcnlwdGlvbih7IEJ1Y2tldDogYnVja2V0IH0pLnByb21pc2UoKTtcbiAgICAgIGNvbnN0IGwgPSBlbmNyeXB0aW9uPy5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/LlJ1bGVzPy5sZW5ndGggPz8gMDtcbiAgICAgIGlmIChsID4gMCkge1xuICAgICAgICBjb25zdCBhcHBseSA9XG4gICAgICAgICAgZW5jcnlwdGlvbj8uU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uPy5SdWxlc1swXVxuICAgICAgICAgICAgPy5BcHBseVNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0O1xuICAgICAgICBsZXQgc3NlYWxnbyA9IGFwcGx5Py5TU0VBbGdvcml0aG07XG4gICAgICAgIGlmIChzc2VhbGdvID09PSAnQUVTMjU2JykgcmV0dXJuIHsgdHlwZTogJ2FlczI1NicgfTtcbiAgICAgICAgaWYgKHNzZWFsZ28gPT09ICdhd3M6a21zJykgcmV0dXJuIHsgdHlwZTogJ2ttcycsIGttc0tleUlkOiBhcHBseT8uS01TTWFzdGVyS2V5SUQgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6ICdub19lbmNyeXB0aW9uJyB9O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ05vU3VjaEJ1Y2tldCcpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2RvZXNfbm90X2V4aXN0JyB9O1xuICAgICAgfVxuICAgICAgaWYgKGUuY29kZSA9PT0gJ1NlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbk5vdEZvdW5kRXJyb3InKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdub19lbmNyeXB0aW9uJyB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoWydBY2Nlc3NEZW5pZWQnLCAnQWxsQWNjZXNzRGlzYWJsZWQnXS5pbmNsdWRlcyhlLmNvZGUpKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdhY2Nlc3NfZGVuaWVkJyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vX2VuY3J5cHRpb24nIH07XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhY2hlZDxBLCBCPihjYWNoZTogTWFwPEEsIEI+LCBrZXk6IEEsIGZhY3Rvcnk6ICh4OiBBKSA9PiBQcm9taXNlPEI+KTogUHJvbWlzZTxCPiB7XG4gIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KSE7XG4gIH1cblxuICBjb25zdCBmcmVzaCA9IGF3YWl0IGZhY3Rvcnkoa2V5KTtcbiAgY2FjaGUuc2V0KGtleSwgZnJlc2gpO1xuICByZXR1cm4gZnJlc2g7XG59XG4iXX0=
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBc0Q7QUFDdEQsNkJBQTZCO0FBQzdCLDBFQUFnRjtBQUNoRiw2QkFBNkI7QUFDN0Isd0JBQStDO0FBRS9DLDZDQUEyQztBQUMzQyx3Q0FBMEM7QUFFMUMsMENBQXlDO0FBQ3pDLGtEQUF5RDtBQUN6RCxvQ0FBaUM7QUFFakM7Ozs7R0FJRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRS9CLE1BQWEsZ0JBQWdCO0lBRzNCLFlBQ21CLE9BQWUsRUFDZixLQUF3QixFQUN4QixJQUFrQjtRQUZsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxLQUFtQixDQUFDO0lBRS9CLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLFFBQVEsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLEdBQUcsSUFBQSw2QkFBMEIsRUFBQyxXQUFXLENBQUM7Z0JBQzFDLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FB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RyxDQUFDLEdBQUcsQ0FBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBGaWxlQXNzZXRQYWNrYWdpbmcsIEZpbGVTb3VyY2UgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCB7IGRlc3RpbmF0aW9uVG9DbGllbnRPcHRpb25zIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBGaWxlTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4uLy4uL2Fzc2V0LW1hbmlmZXN0JztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL3Byb2dyZXNzJztcbmltcG9ydCB7IHppcERpcmVjdG9yeSB9IGZyb20gJy4uL2FyY2hpdmUnO1xuaW1wb3J0IHsgSUFzc2V0SGFuZGxlciwgSUhhbmRsZXJIb3N0LCB0eXBlIFB1Ymxpc2hPcHRpb25zIH0gZnJvbSAnLi4vYXNzZXQtaGFuZGxlcic7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSAnLi4vZnMtZXh0cmEnO1xuaW1wb3J0IHsgcmVwbGFjZUF3c1BsYWNlaG9sZGVycyB9IGZyb20gJy4uL3BsYWNlaG9sZGVycyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4uL3NoZWxsJztcblxuLyoqXG4gKiBUaGUgc2l6ZSBvZiBhbiBlbXB0eSB6aXAgZmlsZSBpcyAyMiBieXRlc1xuICpcbiAqIFJlZjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWklQXyhmaWxlX2Zvcm1hdClcbiAqL1xuY29uc3QgRU1QVFlfWklQX0ZJTEVfU0laRSA9IDIyO1xuXG5leHBvcnQgY2xhc3MgRmlsZUFzc2V0SGFuZGxlciBpbXBsZW1lbnRzIElBc3NldEhhbmRsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVDYWNoZVJvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtEaXI6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0OiBGaWxlTWFuaWZlc3RFbnRyeSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IElIYW5kbGVySG9zdFxuICApIHtcbiAgICB0aGlzLmZpbGVDYWNoZVJvb3QgPSBwYXRoLmpvaW4od29ya0RpciwgJy5jYWNoZScpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge31cblxuICBwdWJsaWMgYXN5bmMgaXNQdWJsaXNoZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBhd2FpdCByZXBsYWNlQXdzUGxhY2Vob2xkZXJzKHRoaXMuYXNzZXQuZGVzdGluYXRpb24sIHRoaXMuaG9zdC5hd3MpO1xuICAgIGNvbnN0IHMzVXJsID0gYHMzOi8vJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfS8ke2Rlc3RpbmF0aW9uLm9iamVjdEtleX1gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzMyA9IGF3YWl0IHRoaXMuaG9zdC5hd3MuczNDbGllbnQoe1xuICAgICAgICAuLi5kZXN0aW5hdGlvblRvQ2xpZW50T3B0aW9ucyhkZXN0aW5hdGlvbiksXG4gICAgICAgIHF1aWV0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNIRUNLLCBgQ2hlY2sgJHtzM1VybH1gKTtcblxuICAgICAgaWYgKGF3YWl0IG9iamVjdEV4aXN0cyhzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSwgZGVzdGluYXRpb24ub2JqZWN0S2V5KSkge1xuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkZPVU5ELCBgRm91bmQgJHtzM1VybH1gKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkRFQlVHLCBgJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKG9wdGlvbnM6IFB1Ymxpc2hPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGF3YWl0IHJlcGxhY2VBd3NQbGFjZWhvbGRlcnModGhpcy5hc3NldC5kZXN0aW5hdGlvbiwgdGhpcy5ob3N0LmF3cyk7XG4gICAgY29uc3QgczNVcmwgPSBgczM6Ly8ke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9LyR7ZGVzdGluYXRpb24ub2JqZWN0S2V5fWA7XG5cbiAgICBjb25zdCBjbGllbnRPcHRpb25zID0gZGVzdGluYXRpb25Ub0NsaWVudE9wdGlvbnMoZGVzdGluYXRpb24pO1xuICAgIGNvbnN0IHMzID0gYXdhaXQgdGhpcy5ob3N0LmF3cy5zM0NsaWVudChjbGllbnRPcHRpb25zKTtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNIRUNLLCBgQ2hlY2sgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IGJ1Y2tldEluZm8gPSBCdWNrZXRJbmZvcm1hdGlvbi5mb3IodGhpcy5ob3N0KTtcblxuICAgIC8vIEEgdGh1bmsgZm9yIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgYWNjb3VudC4gVXNlZCB3aGVuIHdlIG5lZWQgdG8gZm9ybWF0IGFuIGVycm9yXG4gICAgLy8gbWVzc2FnZSwgbm90IGluIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgY29uc3QgYWNjb3VudCA9IGFzeW5jICgpID0+XG4gICAgICAoYXdhaXQgdGhpcy5ob3N0LmF3cy5kaXNjb3ZlclRhcmdldEFjY291bnQoY2xpZW50T3B0aW9ucykpLmFjY291bnRJZDtcblxuICAgIGNvbnN0IGFsbG93Q3Jvc3NBY2NvdW50ID0gb3B0aW9ucy5hbGxvd0Nyb3NzQWNjb3VudCA/PyB0cnVlO1xuICAgIHN3aXRjaCAoXG4gICAgICBhd2FpdCBidWNrZXRJbmZvLmJ1Y2tldE93bmVyc2hpcChcbiAgICAgICAgczMsXG4gICAgICAgIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUsXG4gICAgICAgIGFsbG93Q3Jvc3NBY2NvdW50ID8gdW5kZWZpbmVkIDogYXdhaXQgYWNjb3VudCgpXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjYXNlIEJ1Y2tldE93bmVyc2hpcC5NSU5FOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE5vIGJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScuIElzIGFjY291bnQgJHthd2FpdCBhY2NvdW50KCl9IGJvb3RzdHJhcHBlZD9gXG4gICAgICAgICk7XG4gICAgICBjYXNlIEJ1Y2tldE93bmVyc2hpcC5OT19BQ0NFU1M6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9JyBleGlzdHMsIGJ1dCB3ZSBkb250IGhhdmUgYWNjZXNzIHRvIGl0LmBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLlNPTUVPTkVfRUxTRVNfQU5EX0hBVkVfQUNDRVNTOlxuICAgICAgICBpZiAoIWFsbG93Q3Jvc3NBY2NvdW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYOKdl+KdlyBVTkVYUEVDVEVEIEJVQ0tFVCBPV05FUiBERVRFQ1RFRCDinZfinZcgXG4gICAgICAgIFxuICAgICAgICAgICAgICBXZSd2ZSBkZXRlY3RlZCB0aGF0IHRoZSBTMyBidWNrZXQgJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfSB3YXMgXG4gICAgICAgICAgICAgIG9yaWdpbmFsbHkgY3JlYXRlZCBpbiBhY2NvdW50ICR7YXdhaXQgYWNjb3VudCgpfSBhcyBwYXJ0IG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjayBDREtUb29sa2l0LCBcbiAgICAgICAgICAgICAgYnV0IG5vdyByZXNpZGVzIGluIGEgZGlmZmVyZW50IEFXUyBhY2NvdW50LiBUbyBwcmV2ZW50IGNyb3NzLWFjY291bnQgYXNzZXQgYnVja2V0IGFjY2VzcyBvZiB5b3VyIFxuICAgICAgICAgICAgICBkZXBsb3ltZW50cywgQ0RLIHdpbGwgc3RvcCBub3cuXG5cbiAgICAgICAgICAgICAgSWYgdGhpcyBzaXR1YXRpb24gaXMgaW50ZW50aW9uYWwgYW5kIHlvdSBvd24gdGhlIEFXUyBhY2NvdW50IHRoYXQgdGhlIGJ1Y2tldCBoYXMgbW92ZWQgdG8sIHJlbW92ZSB0aGUgXG4gICAgICAgICAgICAgIHJlc291cmNlIG5hbWVkIFN0YWdpbmdCdWNrZXQgZnJvbSB0aGUgdGVtcGxhdGUgb2YgQ2xvdWRGb3JtYXRpb24gc3RhY2sgQ0RLVG9vbGtpdCBhbmQgdHJ5IGFnYWluLiBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIElmIHRoaXMgc2l0dWF0aW9uIGlzIG5vdCBpbnRlbnRpb25hbCwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIGF1ZGl0aW5nIHlvdXIgYWNjb3VudCB0byBtYWtlIHN1cmUgYWxsIFxuICAgICAgICAgICAgICByZXNvdXJjZXMgYXJlIGNvbmZpZ3VyZWQgdGhlIHdheSB5b3UgZXhwZWN0IHRoZW0gWzFdLiBGb3IgcXVlc3Rpb25zIG9yIGNvbmNlcm5zLCBwbGVhc2UgY29udGFjdCBcbiAgICAgICAgICAgICAgQVdTIFN1cHBvcnQgWzJdLiBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFsxXSBodHRwczovL3JlcG9zdC5hd3Mva25vd2xlZGdlLWNlbnRlci9wb3RlbnRpYWwtYWNjb3VudC1jb21wcm9taXNlXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBbMl0gaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9zdXBwb3J0YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGF3YWl0IG9iamVjdEV4aXN0cyhzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSwgZGVzdGluYXRpb24ub2JqZWN0S2V5KSkge1xuICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5GT1VORCwgYEZvdW5kICR7czNVcmx9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWRlbnRpZnkgdGhlIHRoZSBidWNrZXQgZW5jcnlwdGlvbiB0eXBlIHRvIHNldCB0aGUgaGVhZGVyIG9uIHVwbG9hZFxuICAgIC8vIHJlcXVpcmVkIGZvciBTQ1AgcnVsZXMgZGVueWluZyB1cGxvYWRzIHdpdGhvdXQgZW5jcnlwdGlvbiBoZWFkZXJcbiAgICBsZXQgcGFyYW1zRW5jcnlwdGlvbjogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgY29uc3QgZW5jcnlwdGlvbjIgPSBhd2FpdCBidWNrZXRJbmZvLmJ1Y2tldEVuY3J5cHRpb24oczMsIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUpO1xuICAgIHN3aXRjaCAoZW5jcnlwdGlvbjIudHlwZSkge1xuICAgICAgY2FzZSAnbm9fZW5jcnlwdGlvbic6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWVzMjU2JzpcbiAgICAgICAgcGFyYW1zRW5jcnlwdGlvbiA9IHsgU2VydmVyU2lkZUVuY3J5cHRpb246ICdBRVMyNTYnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAna21zJzpcbiAgICAgICAgLy8gV2UgbXVzdCBpbmNsdWRlIHRoZSBrZXkgSUQgb3RoZXJ3aXNlIFMzIHdpbGwgZW5jcnlwdCB3aXRoIHRoZSBkZWZhdWx0IGtleVxuICAgICAgICBwYXJhbXNFbmNyeXB0aW9uID0ge1xuICAgICAgICAgIFNlcnZlclNpZGVFbmNyeXB0aW9uOiAnYXdzOmttcycsXG4gICAgICAgICAgU1NFS01TS2V5SWQ6IGVuY3J5cHRpb24yLmttc0tleUlkLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RvZXNfbm90X2V4aXN0JzpcbiAgICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKFxuICAgICAgICAgIEV2ZW50VHlwZS5ERUJVRyxcbiAgICAgICAgICBgTm8gYnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9Jy4gSXMgYWNjb3VudCAke2FjY291bnR9IGJvb3RzdHJhcHBlZD9gXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWNjZXNzX2RlbmllZCc6XG4gICAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShcbiAgICAgICAgICBFdmVudFR5cGUuREVCVUcsXG4gICAgICAgICAgYENvdWxkIG5vdCByZWFkIGVuY3J5cHRpb24gc2V0dGluZ3Mgb2YgYnVja2V0ICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9JzogdXBsb2FkaW5nIHdpdGggZGVmYXVsdCBzZXR0aW5ncyAoXCJjZGsgYm9vdHN0cmFwXCIgdG8gdmVyc2lvbiA5IGlmIHlvdXIgb3JnYW5pemF0aW9uJ3MgcG9saWNpZXMgcHJldmVudCBhIHN1Y2Nlc3NmdWwgdXBsb2FkIG9yIHRvIGdldCByaWQgb2YgdGhpcyBtZXNzYWdlKS5gXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3QuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwdWJsaXNoRmlsZSA9IHRoaXMuYXNzZXQuc291cmNlLmV4ZWN1dGFibGVcbiAgICAgID8gYXdhaXQgdGhpcy5leHRlcm5hbFBhY2thZ2VGaWxlKHRoaXMuYXNzZXQuc291cmNlLmV4ZWN1dGFibGUpXG4gICAgICA6IGF3YWl0IHRoaXMucGFja2FnZUZpbGUodGhpcy5hc3NldC5zb3VyY2UpO1xuXG4gICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5VUExPQUQsIGBVcGxvYWQgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgQnVja2V0OiBkZXN0aW5hdGlvbi5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IGRlc3RpbmF0aW9uLm9iamVjdEtleSxcbiAgICAgICAgQm9keTogY3JlYXRlUmVhZFN0cmVhbShwdWJsaXNoRmlsZS5wYWNrYWdlZFBhdGgpLFxuICAgICAgICBDb250ZW50VHlwZTogcHVibGlzaEZpbGUuY29udGVudFR5cGUsXG4gICAgICB9LFxuICAgICAgcGFyYW1zRW5jcnlwdGlvblxuICAgICk7XG5cbiAgICBhd2FpdCBzMy51cGxvYWQocGFyYW1zKS5wcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhY2thZ2VGaWxlKHNvdXJjZTogRmlsZVNvdXJjZSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICBpZiAoIXNvdXJjZS5wYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAncGF0aCcgaXMgZXhwZWN0ZWQgaW4gdGhlIEZpbGUgYXNzZXQgc291cmNlLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkoc291cmNlKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMud29ya0Rpciwgc291cmNlLnBhdGgpO1xuXG4gICAgaWYgKHNvdXJjZS5wYWNrYWdpbmcgPT09IEZpbGVBc3NldFBhY2thZ2luZy5aSVBfRElSRUNUT1JZKSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi96aXAnO1xuXG4gICAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmZpbGVDYWNoZVJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc3QgcGFja2FnZWRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmlsZUNhY2hlUm9vdCwgYCR7dGhpcy5hc3NldC5pZC5hc3NldElkfS56aXBgKTtcblxuICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGFja2FnZWRQYXRoKSkge1xuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNBQ0hFRCwgYEZyb20gY2FjaGUgJHtwYWNrYWdlZFBhdGh9YCk7XG4gICAgICAgIHJldHVybiB7IHBhY2thZ2VkUGF0aCwgY29udGVudFR5cGUgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5CVUlMRCwgYFppcCAke2Z1bGxQYXRofSAtPiAke3BhY2thZ2VkUGF0aH1gKTtcbiAgICAgIGF3YWl0IHppcERpcmVjdG9yeShmdWxsUGF0aCwgcGFja2FnZWRQYXRoLCAobSkgPT4gdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5ERUJVRywgbSkpO1xuICAgICAgcmV0dXJuIHsgcGFja2FnZWRQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmdWxsUGF0aCkgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGg6IGZ1bGxQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXh0ZXJuYWxQYWNrYWdlRmlsZShleGVjdXRhYmxlOiBzdHJpbmdbXSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkJVSUxELCBgQnVpbGRpbmcgYXNzZXQgc291cmNlIHVzaW5nIGNvbW1hbmQ6ICcke2V4ZWN1dGFibGV9J2ApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhY2thZ2VkUGF0aDogKGF3YWl0IHNoZWxsKGV4ZWN1dGFibGUsIHsgcXVpZXQ6IHRydWUgfSkpLnRyaW0oKSxcbiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vemlwJyxcbiAgICB9O1xuICB9XG59XG5cbmVudW0gQnVja2V0T3duZXJzaGlwIHtcbiAgRE9FU19OT1RfRVhJU1QsXG4gIE1JTkUsXG4gIE5PX0FDQ0VTUyxcbiAgU09NRU9ORV9FTFNFU19BTkRfSEFWRV9BQ0NFU1MsXG59XG5cbnR5cGUgQnVja2V0RW5jcnlwdGlvbiA9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnbm9fZW5jcnlwdGlvbicgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2FlczI1NicgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2ttcyc7IHJlYWRvbmx5IGttc0tleUlkPzogc3RyaW5nIH1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdhY2Nlc3NfZGVuaWVkJyB9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnZG9lc19ub3RfZXhpc3QnIH07XG5cbmFzeW5jIGZ1bmN0aW9uIG9iamVjdEV4aXN0cyhzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZywga2V5OiBzdHJpbmcpIHtcbiAgLypcbiAgICogVGhlIG9iamVjdCBleGlzdGVuY2UgY2hlY2sgaGVyZSByZWZyYWlucyBmcm9tIHVzaW5nIHRoZSBgaGVhZE9iamVjdGAgb3BlcmF0aW9uIGJlY2F1c2UgdGhpc1xuICAgKiB3b3VsZCBjcmVhdGUgYSBuZWdhdGl2ZSBjYWNoZSBlbnRyeSwgbWFraW5nIEdFVC1hZnRlci1QVVQgZXZlbnR1YWxseSBjb25zaXN0ZW50LiBUaGlzIGhhcyBiZWVuXG4gICAqIG9ic2VydmVkIHRvIHJlc3VsdCBpbiBDbG91ZEZvcm1hdGlvbiBpc3N1aW5nIFwiVmFsaWRhdGlvbkVycm9yOiBTMyBlcnJvcjogQWNjZXNzIERlbmllZFwiLCBmb3JcbiAgICogZXhhbXBsZSBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzY0MzAuXG4gICAqXG4gICAqIFRvIHByZXZlbnQgdGhpcywgd2UgYXJlIGluc3RlYWQgdXNpbmcgdGhlIGxpc3RPYmplY3RzVjIgY2FsbCwgdXNpbmcgdGhlIGxvb2tlZCB1cCBrZXkgYXMgdGhlXG4gICAqIHByZWZpeCwgYW5kIGxpbWl0aW5nIHJlc3VsdHMgdG8gMS4gU2luY2UgdGhlIGxpc3Qgb3BlcmF0aW9uIHJldHVybnMga2V5cyBvcmRlcmVkIGJ5IGJpbmFyeVxuICAgKiBVVEYtOCByZXByZXNlbnRhdGlvbiwgdGhlIGtleSB3ZSBhcmUgbG9va2luZyBmb3IgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUgdGhlIGZpcnN0IG1hdGNoXG4gICAqIHJldHVybmVkIGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogSWYgdGhlIGZpbGUgaXMgdG9vIHNtYWxsLCB3ZSBkaXNjb3VudCBpdCBhcyBhIGNhY2hlIGhpdC4gVGhlcmUgaXMgYW4gaXNzdWVcbiAgICogc29tZXdoZXJlIHRoYXQgc29tZXRpbWVzIHByb2R1Y2VzIGVtcHR5IHppcCBmaWxlcywgYW5kIHdlIHdvdWxkIG90aGVyd2lzZVxuICAgKiBuZXZlciByZXRyeSBidWlsZGluZyB0aG9zZSBhc3NldHMgd2l0aG91dCB1c2VycyBoYXZpbmcgdG8gbWFudWFsbHkgY2xlYXJcbiAgICogdGhlaXIgYnVja2V0LCB3aGljaCBpcyBhIGJhZCBleHBlcmllbmNlLlxuICAgKi9cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzMy5saXN0T2JqZWN0c1YyKHsgQnVja2V0OiBidWNrZXQsIFByZWZpeDoga2V5LCBNYXhLZXlzOiAxIH0pLnByb21pc2UoKTtcbiAgcmV0dXJuIChcbiAgICByZXNwb25zZS5Db250ZW50cyAhPSBudWxsICYmXG4gICAgcmVzcG9uc2UuQ29udGVudHMuc29tZShcbiAgICAgIChvYmplY3QpID0+IG9iamVjdC5LZXkgPT09IGtleSAmJiAob2JqZWN0LlNpemUgPT0gbnVsbCB8fCBvYmplY3QuU2l6ZSA+IEVNUFRZX1pJUF9GSUxFX1NJWkUpXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIEEgcGFja2FnZWQgYXNzZXQgd2hpY2ggY2FuIGJlIHVwbG9hZGVkIChlaXRoZXIgYSBzaW5nbGUgZmlsZSBvciBkaXJlY3RvcnkpXG4gKi9cbmludGVyZmFjZSBQYWNrYWdlZEZpbGVBc3NldCB7XG4gIC8qKlxuICAgKiBQYXRoIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZWRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdHlwZSB0byBiZSBhZGRlZCBpbiB0aGUgUzMgdXBsb2FkIGFjdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNvbnRlbnQgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudFR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FjaGUgZm9yIGJ1Y2tldCBpbmZvcm1hdGlvbiwgc28gd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIGRvaW5nIHRoZSBzYW1lIGNhbGxzIGFnYWluIGFuZCBhZ2FpblxuICpcbiAqIFdlIHNjb3BlIHRoZSBsaWZldGltZSBvZiB0aGUgY2FjaGUgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSBob3N0LCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG9cbiAqIGFueXRoaW5nIHNwZWNpYWwgZm9yIHRlc3RzIGFuZCB5ZXQgdGhlIGNhY2hlIHdpbGwgbGl2ZSBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiB0aGUgYXNzZXRcbiAqIHVwbG9hZCBzZXNzaW9uIHdoZW4gdXNlZCBieSB0aGUgQ0xJLlxuICovXG5jbGFzcyBCdWNrZXRJbmZvcm1hdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yKGhvc3Q6IElIYW5kbGVySG9zdCkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gQnVja2V0SW5mb3JtYXRpb24uY2FjaGVzLmdldChob3N0KTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICBjb25zdCBmcmVzaCA9IG5ldyBCdWNrZXRJbmZvcm1hdGlvbigpO1xuICAgIEJ1Y2tldEluZm9ybWF0aW9uLmNhY2hlcy5zZXQoaG9zdCwgZnJlc2gpO1xuICAgIHJldHVybiBmcmVzaDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNhY2hlcyA9IG5ldyBXZWFrTWFwPElIYW5kbGVySG9zdCwgQnVja2V0SW5mb3JtYXRpb24+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcnNoaXBzID0gbmV3IE1hcDxzdHJpbmcsIEJ1Y2tldE93bmVyc2hpcD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbmNyeXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBCdWNrZXRFbmNyeXB0aW9uPigpO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBidWNrZXRPd25lcnNoaXAoXG4gICAgczM6IEFXUy5TMyxcbiAgICBidWNrZXQ6IHN0cmluZyxcbiAgICBleHBlY3RlZEFjY291bnQ/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxCdWNrZXRPd25lcnNoaXA+IHtcbiAgICByZXR1cm4gY2FjaGVkKHRoaXMub3duZXJzaGlwcywgYnVja2V0LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhbnlBY2NvdW50ID0gYXdhaXQgdGhpcy5fYnVja2V0T3duZXJzaGlwKHMzLCBidWNrZXQpO1xuXG4gICAgICBzd2l0Y2ggKGFueUFjY291bnQpIHtcbiAgICAgICAgY2FzZSBCdWNrZXRPd25lcnNoaXAuTUlORTpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBleHBlY3RlZEFjY291bnQgJiZcbiAgICAgICAgICAgIChhd2FpdCB0aGlzLl9idWNrZXRPd25lcnNoaXAoczMsIGJ1Y2tldCwgZXhwZWN0ZWRBY2NvdW50KSkgPT09IEJ1Y2tldE93bmVyc2hpcC5OT19BQ0NFU1NcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiBNSU5FIGFuZCBOT19BQ0NFU1MgaXMgdGhlIGV4cGVjdGVkIGFjY291bnQsXG4gICAgICAgICAgICAvLyB0aGVuIGl0cyBkZWZpbml0ZWx5IHNvbWVvbmUgZWxzZSdzIGJ1Y2tldC5cbiAgICAgICAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuU09NRU9ORV9FTFNFU19BTkRfSEFWRV9BQ0NFU1M7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuTUlORTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gYW55QWNjb3VudDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBidWNrZXRFbmNyeXB0aW9uKHMzOiBBV1MuUzMsIGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTxCdWNrZXRFbmNyeXB0aW9uPiB7XG4gICAgcmV0dXJuIGNhY2hlZCh0aGlzLmVuY3J5cHRpb25zLCBidWNrZXQsICgpID0+IHRoaXMuX2J1Y2tldEVuY3J5cHRpb24oczMsIGJ1Y2tldCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfYnVja2V0T3duZXJzaGlwKFxuICAgIHMzOiBBV1MuUzMsXG4gICAgYnVja2V0OiBzdHJpbmcsXG4gICAgYWNjb3VudD86IHN0cmluZ1xuICApOiBQcm9taXNlPEJ1Y2tldE93bmVyc2hpcC5NSU5FIHwgQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUIHwgQnVja2V0T3duZXJzaGlwLk5PX0FDQ0VTUz4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzMy5nZXRCdWNrZXRMb2NhdGlvbih7IEJ1Y2tldDogYnVja2V0LCBFeHBlY3RlZEJ1Y2tldE93bmVyOiBhY2NvdW50IH0pLnByb21pc2UoKTtcbiAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuTUlORTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmNvZGUgPT09ICdOb1N1Y2hCdWNrZXQnKSB7XG4gICAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuRE9FU19OT1RfRVhJU1Q7XG4gICAgICB9XG4gICAgICBpZiAoWydBY2Nlc3NEZW5pZWQnLCAnQWxsQWNjZXNzRGlzYWJsZWQnXS5pbmNsdWRlcyhlLmNvZGUpKSB7XG4gICAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuTk9fQUNDRVNTO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9idWNrZXRFbmNyeXB0aW9uKHMzOiBBV1MuUzMsIGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTxCdWNrZXRFbmNyeXB0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuY3J5cHRpb24gPSBhd2FpdCBzMy5nZXRCdWNrZXRFbmNyeXB0aW9uKHsgQnVja2V0OiBidWNrZXQgfSkucHJvbWlzZSgpO1xuICAgICAgY29uc3QgbCA9IGVuY3J5cHRpb24/LlNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbj8uUnVsZXM/Lmxlbmd0aCA/PyAwO1xuICAgICAgaWYgKGwgPiAwKSB7XG4gICAgICAgIGNvbnN0IGFwcGx5ID1cbiAgICAgICAgICBlbmNyeXB0aW9uPy5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/LlJ1bGVzWzBdXG4gICAgICAgICAgICA/LkFwcGx5U2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ7XG4gICAgICAgIGxldCBzc2VhbGdvID0gYXBwbHk/LlNTRUFsZ29yaXRobTtcbiAgICAgICAgaWYgKHNzZWFsZ28gPT09ICdBRVMyNTYnKSByZXR1cm4geyB0eXBlOiAnYWVzMjU2JyB9O1xuICAgICAgICBpZiAoc3NlYWxnbyA9PT0gJ2F3czprbXMnKSByZXR1cm4geyB0eXBlOiAna21zJywga21zS2V5SWQ6IGFwcGx5Py5LTVNNYXN0ZXJLZXlJRCB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vX2VuY3J5cHRpb24nIH07XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5jb2RlID09PSAnTm9TdWNoQnVja2V0Jykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiAnZG9lc19ub3RfZXhpc3QnIH07XG4gICAgICB9XG4gICAgICBpZiAoZS5jb2RlID09PSAnU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uTm90Rm91bmRFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ25vX2VuY3J5cHRpb24nIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChbJ0FjY2Vzc0RlbmllZCcsICdBbGxBY2Nlc3NEaXNhYmxlZCddLmluY2x1ZGVzKGUuY29kZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2FjY2Vzc19kZW5pZWQnIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0eXBlOiAnbm9fZW5jcnlwdGlvbicgfTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FjaGVkPEEsIEI+KGNhY2hlOiBNYXA8QSwgQj4sIGtleTogQSwgZmFjdG9yeTogKHg6IEEpID0+IFByb21pc2U8Qj4pOiBQcm9taXNlPEI+IHtcbiAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgcmV0dXJuIGNhY2hlLmdldChrZXkpITtcbiAgfVxuXG4gIGNvbnN0IGZyZXNoID0gYXdhaXQgZmFjdG9yeShrZXkpO1xuICBjYWNoZS5zZXQoa2V5LCBmcmVzaCk7XG4gIHJldHVybiBmcmVzaDtcbn1cbiJdfQ==
@@ -4076,9 +4076,9 @@
4076
4076
  }
4077
4077
  },
4078
4078
  "node_modules/electron-to-chromium": {
4079
- "version": "1.5.33",
4080
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz",
4081
- "integrity": "sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==",
4079
+ "version": "1.5.35",
4080
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.35.tgz",
4081
+ "integrity": "sha512-hOSRInrIDm0Brzp4IHW2F/VM+638qOL2CzE0DgpnGzKW27C95IqqeqgKz/hxHGnvPxvQGpHUGD5qRVC9EZY2+A==",
4082
4082
  "dev": true,
4083
4083
  "license": "ISC"
4084
4084
  },
package/package.json CHANGED
@@ -78,7 +78,7 @@
78
78
  "publishConfig": {
79
79
  "access": "public"
80
80
  },
81
- "version": "2.155.6",
81
+ "version": "2.155.8",
82
82
  "types": "lib/index.d.ts",
83
83
  "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
84
84
  }