@bitgo-beta/sdk-coin-xlm 2.0.5-beta.580 → 2.0.5-beta.582

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.
@@ -15,15 +15,25 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getStellarKeys = void 0;
36
+ exports.getStellarKeys = getStellarKeys;
27
37
  const stellar = __importStar(require("stellar-sdk"));
28
38
  const lib_1 = require("./lib");
29
39
  function getStellarKeys(bitgo, params) {
@@ -79,5 +89,4 @@ function getStellarKeys(bitgo, params) {
79
89
  }
80
90
  return keys;
81
91
  }
82
- exports.getStellarKeys = getStellarKeys;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3RlbGxhcktleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2V0U3RlbGxhcktleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxxREFBdUM7QUFDdkMsK0JBQThCO0FBRTlCLFNBQWdCLGNBQWMsQ0FBQyxLQUFnQixFQUFFLE1BQStCO0lBQzlFLE1BQU0sSUFBSSxHQUFzQixFQUFFLENBQUM7SUFDbkMsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3QixJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBRWpDLG1GQUFtRjtJQUNuRixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0UsSUFBSTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4RCxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDdEIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7YUFDbEMsQ0FBQyxDQUFDO1lBRUgsOEZBQThGO1lBQzlGLElBQUksV0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4QyxPQUFPLEdBQUcsV0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM1RTtpQkFBTSxJQUFJLFdBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDOUMsT0FBTyxHQUFHLFdBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5RDtTQUNGO1FBRUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUN4QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0tBQzFFO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BFLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7YUFDbEMsQ0FBQyxDQUFDO1lBRUgsNkZBQTZGO1lBQzdGLElBQUksV0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMxQyxTQUFTLEdBQUcsV0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNoRjtpQkFBTSxJQUFJLFdBQUssQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDaEQsU0FBUyxHQUFHLFdBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNsRTtTQUNGO1FBRUQsSUFBSSxhQUFhLElBQUksZUFBZSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztLQUM1RTtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXZERCx3Q0F1REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UsIEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4vbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZWxsYXJLZXlzKGJpdGdvOiBCaXRHb0Jhc2UsIHBhcmFtczogSW5pdGlhdGVSZWNvdmVyeU9wdGlvbnMpOiBzdGVsbGFyLktleXBhaXJbXSB7XG4gIGNvbnN0IGtleXM6IHN0ZWxsYXIuS2V5cGFpcltdID0gW107XG4gIGxldCB1c2VyS2V5ID0gcGFyYW1zLnVzZXJLZXk7XG4gIGxldCBiYWNrdXBLZXkgPSBwYXJhbXMuYmFja3VwS2V5O1xuXG4gIC8vIFN0ZWxsYXIncyBFZDI1NTE5IHB1YmxpYyBrZXlzIHN0YXJ0IHdpdGggYSBHLCB3aGlsZSBwcml2YXRlIGtleXMgc3RhcnQgd2l0aCBhbiBTXG4gIGNvbnN0IGlzS3JzUmVjb3ZlcnkgPSBiYWNrdXBLZXkuc3RhcnRzV2l0aCgnRycpICYmICF1c2VyS2V5LnN0YXJ0c1dpdGgoJ0cnKTtcbiAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gYmFja3VwS2V5LnN0YXJ0c1dpdGgoJ0cnKSAmJiB1c2VyS2V5LnN0YXJ0c1dpdGgoJ0cnKTtcblxuICB0cnkge1xuICAgIGlmICghdXNlcktleS5zdGFydHNXaXRoKCdTJykgJiYgIXVzZXJLZXkuc3RhcnRzV2l0aCgnRycpKSB7XG4gICAgICB1c2VyS2V5ID0gYml0Z28uZGVjcnlwdCh7XG4gICAgICAgIGlucHV0OiB1c2VyS2V5LFxuICAgICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9KTtcblxuICAgICAgLy8gQWZ0ZXIgZGVjcnlwdGlvbiwgd2UgY291bGQgaGF2ZSBhIHJvb3Qga2V5LCBzbyB3ZSBuZWVkIHRvIGVuY29kZSBpdCB0byBhIFN0ZWxsYXIgZm9ybWF0IGtleVxuICAgICAgaWYgKFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleSh1c2VyS2V5KSkge1xuICAgICAgICB1c2VyS2V5ID0gVXRpbHMuZW5jb2RlUHJpdmF0ZUtleShCdWZmZXIuZnJvbSh1c2VyS2V5LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgICAgIH0gZWxzZSBpZiAoVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkodXNlcktleSkpIHtcbiAgICAgICAgdXNlcktleSA9IFV0aWxzLmVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbSh1c2VyS2V5LCAnaGV4JykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0gaXNVbnNpZ25lZFN3ZWVwID8gc3RlbGxhci5LZXlwYWlyLmZyb21QdWJsaWNLZXkodXNlcktleSkgOiBzdGVsbGFyLktleXBhaXIuZnJvbVNlY3JldCh1c2VyS2V5KTtcbiAgICBrZXlzLnB1c2godXNlcktleVBhaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCB1c2VyIGtleSB3aXRoIHBhc3Njb2RlIC0gdHJ5IGFnYWluIScpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWJhY2t1cEtleS5zdGFydHNXaXRoKCdTJykgJiYgIWlzS3JzUmVjb3ZlcnkgJiYgIWlzVW5zaWduZWRTd2VlcCkge1xuICAgICAgYmFja3VwS2V5ID0gYml0Z28uZGVjcnlwdCh7XG4gICAgICAgIGlucHV0OiBiYWNrdXBLZXksXG4gICAgICAgIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZnRlciBkZWNyeXB0aW9uIHdlIGNvdWxkIGhhdmUgYSByb290IGtleSwgc28gd2UgbmVlZCB0byBlbmNvZGUgaXQgdG8gYSBTdGVsbGFyIGZvcm1hdCBrZXlcbiAgICAgIGlmIChVdGlscy5pc1ZhbGlkUm9vdFByaXZhdGVLZXkoYmFja3VwS2V5KSkge1xuICAgICAgICBiYWNrdXBLZXkgPSBVdGlscy5lbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKGJhY2t1cEtleS5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgICB9IGVsc2UgaWYgKFV0aWxzLmlzVmFsaWRSb290UHVibGljS2V5KGJhY2t1cEtleSkpIHtcbiAgICAgICAgYmFja3VwS2V5ID0gVXRpbHMuZW5jb2RlUHVibGljS2V5KEJ1ZmZlci5mcm9tKGJhY2t1cEtleSwgJ2hleCcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNLcnNSZWNvdmVyeSB8fCBpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIGtleXMucHVzaChzdGVsbGFyLktleXBhaXIuZnJvbVB1YmxpY0tleShiYWNrdXBLZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cy5wdXNoKHN0ZWxsYXIuS2V5cGFpci5mcm9tU2VjcmV0KGJhY2t1cEtleSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgYmFja3VwIGtleSB3aXRoIHBhc3Njb2RlIC0gdHJ5IGFnYWluIScpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3RlbGxhcktleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2V0U3RlbGxhcktleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSx3Q0F1REM7QUExREQscURBQXVDO0FBQ3ZDLCtCQUE4QjtBQUU5QixTQUFnQixjQUFjLENBQUMsS0FBZ0IsRUFBRSxNQUErQjtJQUM5RSxNQUFNLElBQUksR0FBc0IsRUFBRSxDQUFDO0lBQ25DLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDN0IsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUVqQyxtRkFBbUY7SUFDbkYsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdFLElBQUksQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN0QixLQUFLLEVBQUUsT0FBTztnQkFDZCxRQUFRLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjthQUNsQyxDQUFDLENBQUM7WUFFSCw4RkFBOEY7WUFDOUYsSUFBSSxXQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsT0FBTyxHQUFHLFdBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0UsQ0FBQztpQkFBTSxJQUFJLFdBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxPQUFPLEdBQUcsV0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyRSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO2FBQ2xDLENBQUMsQ0FBQztZQUVILDZGQUE2RjtZQUM3RixJQUFJLFdBQUssQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxTQUFTLEdBQUcsV0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRixDQUFDO2lCQUFNLElBQUksV0FBSyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELFNBQVMsR0FBRyxXQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGFBQWEsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UsIEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4vbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZWxsYXJLZXlzKGJpdGdvOiBCaXRHb0Jhc2UsIHBhcmFtczogSW5pdGlhdGVSZWNvdmVyeU9wdGlvbnMpOiBzdGVsbGFyLktleXBhaXJbXSB7XG4gIGNvbnN0IGtleXM6IHN0ZWxsYXIuS2V5cGFpcltdID0gW107XG4gIGxldCB1c2VyS2V5ID0gcGFyYW1zLnVzZXJLZXk7XG4gIGxldCBiYWNrdXBLZXkgPSBwYXJhbXMuYmFja3VwS2V5O1xuXG4gIC8vIFN0ZWxsYXIncyBFZDI1NTE5IHB1YmxpYyBrZXlzIHN0YXJ0IHdpdGggYSBHLCB3aGlsZSBwcml2YXRlIGtleXMgc3RhcnQgd2l0aCBhbiBTXG4gIGNvbnN0IGlzS3JzUmVjb3ZlcnkgPSBiYWNrdXBLZXkuc3RhcnRzV2l0aCgnRycpICYmICF1c2VyS2V5LnN0YXJ0c1dpdGgoJ0cnKTtcbiAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gYmFja3VwS2V5LnN0YXJ0c1dpdGgoJ0cnKSAmJiB1c2VyS2V5LnN0YXJ0c1dpdGgoJ0cnKTtcblxuICB0cnkge1xuICAgIGlmICghdXNlcktleS5zdGFydHNXaXRoKCdTJykgJiYgIXVzZXJLZXkuc3RhcnRzV2l0aCgnRycpKSB7XG4gICAgICB1c2VyS2V5ID0gYml0Z28uZGVjcnlwdCh7XG4gICAgICAgIGlucHV0OiB1c2VyS2V5LFxuICAgICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICB9KTtcblxuICAgICAgLy8gQWZ0ZXIgZGVjcnlwdGlvbiwgd2UgY291bGQgaGF2ZSBhIHJvb3Qga2V5LCBzbyB3ZSBuZWVkIHRvIGVuY29kZSBpdCB0byBhIFN0ZWxsYXIgZm9ybWF0IGtleVxuICAgICAgaWYgKFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleSh1c2VyS2V5KSkge1xuICAgICAgICB1c2VyS2V5ID0gVXRpbHMuZW5jb2RlUHJpdmF0ZUtleShCdWZmZXIuZnJvbSh1c2VyS2V5LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgICAgIH0gZWxzZSBpZiAoVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkodXNlcktleSkpIHtcbiAgICAgICAgdXNlcktleSA9IFV0aWxzLmVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbSh1c2VyS2V5LCAnaGV4JykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0gaXNVbnNpZ25lZFN3ZWVwID8gc3RlbGxhci5LZXlwYWlyLmZyb21QdWJsaWNLZXkodXNlcktleSkgOiBzdGVsbGFyLktleXBhaXIuZnJvbVNlY3JldCh1c2VyS2V5KTtcbiAgICBrZXlzLnB1c2godXNlcktleVBhaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCB1c2VyIGtleSB3aXRoIHBhc3Njb2RlIC0gdHJ5IGFnYWluIScpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIWJhY2t1cEtleS5zdGFydHNXaXRoKCdTJykgJiYgIWlzS3JzUmVjb3ZlcnkgJiYgIWlzVW5zaWduZWRTd2VlcCkge1xuICAgICAgYmFja3VwS2V5ID0gYml0Z28uZGVjcnlwdCh7XG4gICAgICAgIGlucHV0OiBiYWNrdXBLZXksXG4gICAgICAgIHBhc3N3b3JkOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZnRlciBkZWNyeXB0aW9uIHdlIGNvdWxkIGhhdmUgYSByb290IGtleSwgc28gd2UgbmVlZCB0byBlbmNvZGUgaXQgdG8gYSBTdGVsbGFyIGZvcm1hdCBrZXlcbiAgICAgIGlmIChVdGlscy5pc1ZhbGlkUm9vdFByaXZhdGVLZXkoYmFja3VwS2V5KSkge1xuICAgICAgICBiYWNrdXBLZXkgPSBVdGlscy5lbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKGJhY2t1cEtleS5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgICB9IGVsc2UgaWYgKFV0aWxzLmlzVmFsaWRSb290UHVibGljS2V5KGJhY2t1cEtleSkpIHtcbiAgICAgICAgYmFja3VwS2V5ID0gVXRpbHMuZW5jb2RlUHVibGljS2V5KEJ1ZmZlci5mcm9tKGJhY2t1cEtleSwgJ2hleCcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNLcnNSZWNvdmVyeSB8fCBpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIGtleXMucHVzaChzdGVsbGFyLktleXBhaXIuZnJvbVB1YmxpY0tleShiYWNrdXBLZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cy5wdXNoKHN0ZWxsYXIuS2V5cGFpci5mcm9tU2VjcmV0KGJhY2t1cEtleSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgYmFja3VwIGtleSB3aXRoIHBhc3Njb2RlIC0gdHJ5IGFnYWluIScpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
@@ -15,17 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.Utils = exports.KeyPair = void 0;
27
37
  const Utils = __importStar(require("./utils"));
28
38
  exports.Utils = Utils;
29
39
  var keyPair_1 = require("./keyPair");
30
40
  Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBR3hCLHNCQUFLO0FBRGQscUNBQW9DO0FBQTNCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFV0aWxzIH07XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUd4QixzQkFBSztBQURkLHFDQUFvQztBQUEzQixrR0FBQSxPQUFPLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBVdGlscyB9O1xuIl19
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.KeyPair = void 0;
27
37
  const stellar = __importStar(require("stellar-sdk"));
@@ -78,4 +88,4 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
78
88
  }
79
89
  }
80
90
  exports.KeyPair = KeyPair;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF1QztBQUN2QyxtREFBK0Y7QUFDL0YsbUNBQStGO0FBRS9GLE1BQWEsT0FBUSxTQUFRLHlCQUFjO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxLQUFLO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUEsdUJBQWUsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxNQUFNLEdBQWdCO1lBQzFCLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUEsdUJBQWUsRUFBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEUsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUEsd0JBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7U0FDOUU7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFVBQVU7UUFDUixPQUFPLElBQUEsdUJBQWUsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1Q0FBdUMsQ0FBQyxHQUFXO1FBQ2pELElBQUk7WUFDRixNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDM0M7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELElBQUk7WUFDRixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPO2dCQUNMLEdBQUcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQ2hDLENBQUM7U0FDSDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLHFCQUFVLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0NBQ0Y7QUFyREQsMEJBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBEZWZhdWx0S2V5cywgRWQyNTUxOUtleVBhaXIsIEludmFsaWRLZXksIEtleVBhaXJPcHRpb25zIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlUHJpdmF0ZUtleSwgZGVjb2RlUHVibGljS2V5LCBlbmNvZGVQcml2YXRlS2V5LCBlbmNvZGVQdWJsaWNLZXkgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICBnZXRLZXlzKHJhdyA9IGZhbHNlKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHViLCAnaGV4JykpO1xuICAgIGNvbnN0IHJlc3VsdDogRGVmYXVsdEtleXMgPSB7XG4gICAgICBwdWI6IHJhdyA/IGRlY29kZVB1YmxpY0tleShwdWJsaWNLZXkpLnRvU3RyaW5nKCdoZXgnKSA6IHB1YmxpY0tleSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBlbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wcnYsICdoZXgnKSk7XG4gICAgICByZXN1bHQucHJ2ID0gcmF3ID8gZGVjb2RlUHJpdmF0ZUtleShwcml2YXRlS2V5KS50b1N0cmluZygnaGV4JykgOiBwcml2YXRlS2V5O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnB1YiwgJ2hleCcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleUluUHJvdG9jb2xGb3JtYXQocHViOiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZVB1YmxpY0tleShwdWIpO1xuICAgICAgcmV0dXJuIHsgcHViOiBwdWJsaWNLZXkudG9TdHJpbmcoJ2hleCcpIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ0ludmFsaWQgcHVibGljIGtleTogJyArIHB1Yik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGtwID0gc3RlbGxhci5LZXlwYWlyLmZyb21TZWNyZXQocHJ2KTtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZVB1YmxpY0tleShrcC5wdWJsaWNLZXkoKSk7XG4gICAgICBjb25zdCBwcml2YXRlS2V5ID0gZGVjb2RlUHJpdmF0ZUtleShrcC5zZWNyZXQoKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwdWI6IHB1YmxpY0tleS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHBydjogcHJpdmF0ZUtleS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkS2V5KCdJbnZhbGlkIHByaXZhdGUga2V5OiAnICsgcHJ2KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUM7QUFDdkMsbURBQStGO0FBQy9GLG1DQUErRjtBQUUvRixNQUFhLE9BQVEsU0FBUSx5QkFBYztJQUN6Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFnQjtZQUMxQixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFBLHVCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xFLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUEsd0JBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDL0UsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVTtRQUNSLE9BQU8sSUFBQSx1QkFBZSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHVDQUF1QyxDQUFDLEdBQVc7UUFDakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHFCQUFVLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQXdDLENBQUMsR0FBVztRQUNsRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPO2dCQUNMLEdBQUcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQ2hDLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyREQsMEJBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBEZWZhdWx0S2V5cywgRWQyNTUxOUtleVBhaXIsIEludmFsaWRLZXksIEtleVBhaXJPcHRpb25zIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlUHJpdmF0ZUtleSwgZGVjb2RlUHVibGljS2V5LCBlbmNvZGVQcml2YXRlS2V5LCBlbmNvZGVQdWJsaWNLZXkgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICBnZXRLZXlzKHJhdyA9IGZhbHNlKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHViLCAnaGV4JykpO1xuICAgIGNvbnN0IHJlc3VsdDogRGVmYXVsdEtleXMgPSB7XG4gICAgICBwdWI6IHJhdyA/IGRlY29kZVB1YmxpY0tleShwdWJsaWNLZXkpLnRvU3RyaW5nKCdoZXgnKSA6IHB1YmxpY0tleSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBlbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wcnYsICdoZXgnKSk7XG4gICAgICByZXN1bHQucHJ2ID0gcmF3ID8gZGVjb2RlUHJpdmF0ZUtleShwcml2YXRlS2V5KS50b1N0cmluZygnaGV4JykgOiBwcml2YXRlS2V5O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnB1YiwgJ2hleCcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleUluUHJvdG9jb2xGb3JtYXQocHViOiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZVB1YmxpY0tleShwdWIpO1xuICAgICAgcmV0dXJuIHsgcHViOiBwdWJsaWNLZXkudG9TdHJpbmcoJ2hleCcpIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ0ludmFsaWQgcHVibGljIGtleTogJyArIHB1Yik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGtwID0gc3RlbGxhci5LZXlwYWlyLmZyb21TZWNyZXQocHJ2KTtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZVB1YmxpY0tleShrcC5wdWJsaWNLZXkoKSk7XG4gICAgICBjb25zdCBwcml2YXRlS2V5ID0gZGVjb2RlUHJpdmF0ZUtleShrcC5zZWNyZXQoKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwdWI6IHB1YmxpY0tleS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHBydjogcHJpdmF0ZUtleS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkS2V5KCdJbnZhbGlkIHByaXZhdGUga2V5OiAnICsgcHJ2KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import * as stellar from 'stellar-sdk';
4
2
  /**
5
3
  * Creates a Stellar keypair from a public key.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAaxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAaxE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAaxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAaxE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -15,15 +15,38 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.decodePrivateKey = exports.decodePublicKey = exports.encodePrivateKey = exports.encodePublicKey = exports.isValidRootPrivateKey = exports.isValidPrivateKey = exports.isValidStellarPrivateKey = exports.isValidStellarPrv = exports.isValidRootPublicKey = exports.isValidPublicKey = exports.isValidStellarPublicKey = exports.isValidStellarPub = exports.createStellarKeypairFromPrv = exports.createStellarKeypairFromPub = void 0;
36
+ exports.createStellarKeypairFromPub = createStellarKeypairFromPub;
37
+ exports.createStellarKeypairFromPrv = createStellarKeypairFromPrv;
38
+ exports.isValidStellarPub = isValidStellarPub;
39
+ exports.isValidStellarPublicKey = isValidStellarPublicKey;
40
+ exports.isValidPublicKey = isValidPublicKey;
41
+ exports.isValidRootPublicKey = isValidRootPublicKey;
42
+ exports.isValidStellarPrv = isValidStellarPrv;
43
+ exports.isValidStellarPrivateKey = isValidStellarPrivateKey;
44
+ exports.isValidPrivateKey = isValidPrivateKey;
45
+ exports.isValidRootPrivateKey = isValidRootPrivateKey;
46
+ exports.encodePublicKey = encodePublicKey;
47
+ exports.encodePrivateKey = encodePrivateKey;
48
+ exports.decodePublicKey = decodePublicKey;
49
+ exports.decodePrivateKey = decodePrivateKey;
27
50
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
28
51
  const stellar = __importStar(require("stellar-sdk"));
29
52
  /**
@@ -45,7 +68,6 @@ function createStellarKeypairFromPub(pub) {
45
68
  }
46
69
  return stellar.Keypair.fromPublicKey(encodedPub);
47
70
  }
48
- exports.createStellarKeypairFromPub = createStellarKeypairFromPub;
49
71
  /**
50
72
  * Creates a Stellar keypair from a private key.
51
73
  * Private key can be either a raw root private key (hex string) or a Stellar private key (prefixed with 'S').
@@ -65,7 +87,6 @@ function createStellarKeypairFromPrv(prv) {
65
87
  }
66
88
  return stellar.Keypair.fromSecret(encodedPrv);
67
89
  }
68
- exports.createStellarKeypairFromPrv = createStellarKeypairFromPrv;
69
90
  /**
70
91
  * @deprecated Use isValidStellarPublicKey instead
71
92
  *
@@ -77,7 +98,6 @@ exports.createStellarKeypairFromPrv = createStellarKeypairFromPrv;
77
98
  function isValidStellarPub(pub) {
78
99
  return stellar.StrKey.isValidEd25519PublicKey(pub);
79
100
  }
80
- exports.isValidStellarPub = isValidStellarPub;
81
101
  /**
82
102
  * Validates a Stellar public key
83
103
  * Stellar public keys are prefixed with 'G'
@@ -87,7 +107,6 @@ exports.isValidStellarPub = isValidStellarPub;
87
107
  function isValidStellarPublicKey(pub) {
88
108
  return stellar.StrKey.isValidEd25519PublicKey(pub);
89
109
  }
90
- exports.isValidStellarPublicKey = isValidStellarPublicKey;
91
110
  /**
92
111
  * @deprecated Use isValidRootPublicKey instead
93
112
  *
@@ -98,7 +117,6 @@ exports.isValidStellarPublicKey = isValidStellarPublicKey;
98
117
  function isValidPublicKey(pub) {
99
118
  return (0, sdk_core_1.isValidEd25519PublicKey)(pub);
100
119
  }
101
- exports.isValidPublicKey = isValidPublicKey;
102
120
  /**
103
121
  * Validates a ed25519 root public key
104
122
  * @param pub A hexadecimal public key to validate
@@ -107,7 +125,6 @@ exports.isValidPublicKey = isValidPublicKey;
107
125
  function isValidRootPublicKey(pub) {
108
126
  return (0, sdk_core_1.isValidEd25519PublicKey)(pub);
109
127
  }
110
- exports.isValidRootPublicKey = isValidRootPublicKey;
111
128
  /**
112
129
  * @deprecated Use isValidStellarPrivateKey instead
113
130
  *
@@ -119,7 +136,6 @@ exports.isValidRootPublicKey = isValidRootPublicKey;
119
136
  function isValidStellarPrv(seed) {
120
137
  return stellar.StrKey.isValidEd25519SecretSeed(seed);
121
138
  }
122
- exports.isValidStellarPrv = isValidStellarPrv;
123
139
  /**
124
140
  * Validates a Stellar private key
125
141
  * Stellar private keys are prefixed with 'S'
@@ -129,7 +145,6 @@ exports.isValidStellarPrv = isValidStellarPrv;
129
145
  function isValidStellarPrivateKey(seed) {
130
146
  return stellar.StrKey.isValidEd25519SecretSeed(seed);
131
147
  }
132
- exports.isValidStellarPrivateKey = isValidStellarPrivateKey;
133
148
  /**
134
149
  * @deprecated Use isValidRootPrivateKey instead
135
150
  *
@@ -140,7 +155,6 @@ exports.isValidStellarPrivateKey = isValidStellarPrivateKey;
140
155
  function isValidPrivateKey(prv) {
141
156
  return (0, sdk_core_1.isValidEd25519SecretKey)(prv);
142
157
  }
143
- exports.isValidPrivateKey = isValidPrivateKey;
144
158
  /**
145
159
  * Validates a ed25519 root private key
146
160
  * @param prv A hexadecimal private key to validate
@@ -149,7 +163,6 @@ exports.isValidPrivateKey = isValidPrivateKey;
149
163
  function isValidRootPrivateKey(prv) {
150
164
  return (0, sdk_core_1.isValidEd25519SecretKey)(prv);
151
165
  }
152
- exports.isValidRootPrivateKey = isValidRootPrivateKey;
153
166
  /**
154
167
  * Encodes a raw public key to a G-prefixed Stellar public key
155
168
  * @param pub Raw public key
@@ -158,7 +171,6 @@ exports.isValidRootPrivateKey = isValidRootPrivateKey;
158
171
  function encodePublicKey(pub) {
159
172
  return stellar.StrKey.encodeEd25519PublicKey(pub);
160
173
  }
161
- exports.encodePublicKey = encodePublicKey;
162
174
  /**
163
175
  * Encodes a raw private key to a S-prefixed Stellar private key
164
176
  * @param prv Raw private key
@@ -167,7 +179,6 @@ exports.encodePublicKey = encodePublicKey;
167
179
  function encodePrivateKey(prv) {
168
180
  return stellar.StrKey.encodeEd25519SecretSeed(prv);
169
181
  }
170
- exports.encodePrivateKey = encodePrivateKey;
171
182
  /**
172
183
  * Decodes a Stellar public key to a raw public key
173
184
  * @param pub Encoded Stellar G-prefixed public key
@@ -176,7 +187,6 @@ exports.encodePrivateKey = encodePrivateKey;
176
187
  function decodePublicKey(pub) {
177
188
  return stellar.StrKey.decodeEd25519PublicKey(pub);
178
189
  }
179
- exports.decodePublicKey = decodePublicKey;
180
190
  /**
181
191
  * Decodes a Stellar private key to a raw private key
182
192
  * @param prv Encoded Stellar S-prefixed private key
@@ -185,5 +195,4 @@ exports.decodePublicKey = decodePublicKey;
185
195
  function decodePrivateKey(prv) {
186
196
  return stellar.StrKey.decodeEd25519SecretSeed(prv);
187
197
  }
188
- exports.decodePrivateKey = decodePrivateKey;
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQXdGO0FBQ3hGLHFEQUF1QztBQUV2Qzs7Ozs7R0FLRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEdBQVc7SUFDckQsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0M7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzNDO0lBRUQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM1QztJQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQWJELGtFQWFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxHQUFXO0lBQ3JELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN4QztJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzdDO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBYkQsa0VBYUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUZELDhDQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxHQUFXO0lBQ2pELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRkQsMERBRUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sSUFBQSxrQ0FBdUIsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsNENBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsR0FBVztJQUM5QyxPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUZELG9EQUVDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFGRCw4Q0FFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsSUFBWTtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELDREQUVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUZELDhDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEdBQVc7SUFDL0MsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxzREFFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBVztJQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUZELDBDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFGRCw0Q0FFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBVztJQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUZELDBDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFGRCw0Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LCBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTdGVsbGFyIGtleXBhaXIgZnJvbSBhIHB1YmxpYyBrZXkuXG4gKiBQdWJsaWMga2V5IGNhbiBiZSBlaXRoZXIgYSByYXcgcm9vdCBwdWJsaWMga2V5IChoZXggc3RyaW5nKSBvciBhIFN0ZWxsYXIgcHVibGljIGtleSAocHJlZml4ZWQgd2l0aCAnRycpXG4gKiBAcGFyYW0gcHViIEVpdGhlciBoZXggcm9vdCBwdWJsaWMga2V5IG9yIFN0ZWxsYXIgcHVibGljIGtleVxuICogQHJldHVybnMgU3RlbGxhciBrZXlwYWlyIGZyb20gdGhlIHByb3ZpZGVkIHB1YlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHViKHB1Yjogc3RyaW5nKTogc3RlbGxhci5LZXlwYWlyIHtcbiAgaWYgKHB1Yi5zdGFydHNXaXRoKCdHJykpIHtcbiAgICBpZiAoIWlzVmFsaWRTdGVsbGFyUHVibGljS2V5KHB1YikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTdGVsbGFyIHB1YmxpYyBrZXknKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ZWxsYXIuS2V5cGFpci5mcm9tUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICBjb25zdCBlbmNvZGVkUHViID0gZW5jb2RlUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgaWYgKCFpc1ZhbGlkU3RlbGxhclB1YmxpY0tleShlbmNvZGVkUHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb290IHB1YmxpYyBrZXknKTtcbiAgfVxuICByZXR1cm4gc3RlbGxhci5LZXlwYWlyLmZyb21QdWJsaWNLZXkoZW5jb2RlZFB1Yik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFN0ZWxsYXIga2V5cGFpciBmcm9tIGEgcHJpdmF0ZSBrZXkuXG4gKiBQcml2YXRlIGtleSBjYW4gYmUgZWl0aGVyIGEgcmF3IHJvb3QgcHJpdmF0ZSBrZXkgKGhleCBzdHJpbmcpIG9yIGEgU3RlbGxhciBwcml2YXRlIGtleSAocHJlZml4ZWQgd2l0aCAnUycpLlxuICogQHBhcmFtIHNlY3JldCBFaXRoZXIgaGV4IHJvb3QgcHJpdmF0ZSBrZXkgb3IgU3RlbGxhciBwcml2YXRlIGtleVxuICogQHJldHVybnMgU3RlbGxhciBrZXlwYWlyIGZyb20gdGhlIHByb3ZpZGVkIHBydlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHJ2KHBydjogc3RyaW5nKTogc3RlbGxhci5LZXlwYWlyIHtcbiAgaWYgKHBydi5zdGFydHNXaXRoKCdTJykpIHtcbiAgICBpZiAoIWlzVmFsaWRTdGVsbGFyUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU3RlbGxhciBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICByZXR1cm4gc3RlbGxhci5LZXlwYWlyLmZyb21TZWNyZXQocHJ2KTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZWRQcnYgPSBlbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydi5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gIGlmICghaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5KGVuY29kZWRQcnYpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJvb3QgcHJpdmF0ZSBrZXknKTtcbiAgfVxuICByZXR1cm4gc3RlbGxhci5LZXlwYWlyLmZyb21TZWNyZXQoZW5jb2RlZFBydik7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGlzVmFsaWRTdGVsbGFyUHVibGljS2V5IGluc3RlYWRcbiAqXG4gKiBWYWxpZGF0ZXMgYSBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqIFN0ZWxsYXIgcHVibGljIGtleXMgYXJlIHByZWZpeGVkIHdpdGggJ0cnXG4gKiBAcGFyYW0gcHViIEEgU3RlbGxhciBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIFN0ZWxsYXIgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFN0ZWxsYXJQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgU3RlbGxhciBwdWJsaWMga2V5XG4gKiBTdGVsbGFyIHB1YmxpYyBrZXlzIGFyZSBwcmVmaXhlZCB3aXRoICdHJ1xuICogQHBhcmFtIHB1YiBBIFN0ZWxsYXIgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGVsbGFyUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpc1ZhbGlkUm9vdFB1YmxpY0tleSBpbnN0ZWFkXG4gKlxuICogVmFsaWRhdGVzIGEgZWQyNTUxOSByb290IHB1YmxpYyBrZXlcbiAqIEBwYXJhbSBwdWIgQSBoZXhhZGVjaW1hbCBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgZWQyNTUxOSByb290IHB1YmxpYyBrZXlcbiAqIEBwYXJhbSBwdWIgQSBoZXhhZGVjaW1hbCBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSb290UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkgaW5zdGVhZFxuICpcbiAqIFZhbGlkYXRlcyBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqIFN0ZWxsYXIgcHJpdmF0ZSBrZXlzIGFyZSBwcmVmaXhlZCB3aXRoICdTJ1xuICogQHBhcmFtIHNlZWQgQSBTdGVsbGFyIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGVsbGFyUHJ2KHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlTZWNyZXRTZWVkKHNlZWQpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqIFN0ZWxsYXIgcHJpdmF0ZSBrZXlzIGFyZSBwcmVmaXhlZCB3aXRoICdTJ1xuICogQHBhcmFtIHNlZWQgQSBTdGVsbGFyIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGVsbGFyUHJpdmF0ZUtleShzZWVkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5U2VjcmV0U2VlZChzZWVkKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgaXNWYWxpZFJvb3RQcml2YXRlS2V5IGluc3RlYWRcbiAqXG4gKiBWYWxpZGF0ZXMgYSBlZDI1NTE5IHJvb3QgcHJpdmF0ZSBrZXlcbiAqIEBwYXJhbSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KHBydik7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgZWQyNTUxOSByb290IHByaXZhdGUga2V5XG4gKiBAcGFyYW0gcHJ2IEEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSb290UHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkocHJ2KTtcbn1cblxuLyoqXG4gKiBFbmNvZGVzIGEgcmF3IHB1YmxpYyBrZXkgdG8gYSBHLXByZWZpeGVkIFN0ZWxsYXIgcHVibGljIGtleVxuICogQHBhcmFtIHB1YiBSYXcgcHVibGljIGtleVxuICogQHJldHVybnMgRW5jb2RlZCBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVB1YmxpY0tleShwdWI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5lbmNvZGVFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogRW5jb2RlcyBhIHJhdyBwcml2YXRlIGtleSB0byBhIFMtcHJlZml4ZWQgU3RlbGxhciBwcml2YXRlIGtleVxuICogQHBhcmFtIHBydiBSYXcgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm5zIEVuY29kZWQgU3RlbGxhciBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUHJpdmF0ZUtleShwcnY6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5lbmNvZGVFZDI1NTE5U2VjcmV0U2VlZChwcnYpO1xufVxuXG4vKipcbiAqIERlY29kZXMgYSBTdGVsbGFyIHB1YmxpYyBrZXkgdG8gYSByYXcgcHVibGljIGtleVxuICogQHBhcmFtIHB1YiBFbmNvZGVkIFN0ZWxsYXIgRy1wcmVmaXhlZCBwdWJsaWMga2V5XG4gKiBAcmV0dXJucyBSYXcgaGV4YWRlY2ltYWwgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUHVibGljS2V5KHB1Yjogc3RyaW5nKTogQnVmZmVyIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgU3RlbGxhciBwcml2YXRlIGtleSB0byBhIHJhdyBwcml2YXRlIGtleVxuICogQHBhcmFtIHBydiBFbmNvZGVkIFN0ZWxsYXIgUy1wcmVmaXhlZCBwcml2YXRlIGtleVxuICogQHJldHVybnMgUmF3IGhleGFkZWNpbWFsIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVQcml2YXRlS2V5KHBydjogc3RyaW5nKTogQnVmZmVyIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlTZWNyZXRTZWVkKHBydik7XG59XG4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0Esa0VBYUM7QUFRRCxrRUFhQztBQVVELDhDQUVDO0FBUUQsMERBRUM7QUFTRCw0Q0FFQztBQU9ELG9EQUVDO0FBVUQsOENBRUM7QUFRRCw0REFFQztBQVNELDhDQUVDO0FBT0Qsc0RBRUM7QUFPRCwwQ0FFQztBQU9ELDRDQUVDO0FBT0QsMENBRUM7QUFPRCw0Q0FFQztBQW5LRCxtREFBd0Y7QUFDeEYscURBQXVDO0FBRXZDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsR0FBVztJQUNyRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxHQUFXO0lBQ3JELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLEdBQVc7SUFDakQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sSUFBQSxrQ0FBdUIsRUFBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEdBQVc7SUFDOUMsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsSUFBWTtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsR0FBVztJQUMvQyxPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBVztJQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFXO0lBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgU3RlbGxhciBrZXlwYWlyIGZyb20gYSBwdWJsaWMga2V5LlxuICogUHVibGljIGtleSBjYW4gYmUgZWl0aGVyIGEgcmF3IHJvb3QgcHVibGljIGtleSAoaGV4IHN0cmluZykgb3IgYSBTdGVsbGFyIHB1YmxpYyBrZXkgKHByZWZpeGVkIHdpdGggJ0cnKVxuICogQHBhcmFtIHB1YiBFaXRoZXIgaGV4IHJvb3QgcHVibGljIGtleSBvciBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqIEByZXR1cm5zIFN0ZWxsYXIga2V5cGFpciBmcm9tIHRoZSBwcm92aWRlZCBwdWJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVB1YihwdWI6IHN0cmluZyk6IHN0ZWxsYXIuS2V5cGFpciB7XG4gIGlmIChwdWIuc3RhcnRzV2l0aCgnRycpKSB7XG4gICAgaWYgKCFpc1ZhbGlkU3RlbGxhclB1YmxpY0tleShwdWIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU3RlbGxhciBwdWJsaWMga2V5Jyk7XG4gICAgfVxuICAgIHJldHVybiBzdGVsbGFyLktleXBhaXIuZnJvbVB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgY29uc3QgZW5jb2RlZFB1YiA9IGVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gIGlmICghaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkoZW5jb2RlZFB1YikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcm9vdCBwdWJsaWMga2V5Jyk7XG4gIH1cbiAgcmV0dXJuIHN0ZWxsYXIuS2V5cGFpci5mcm9tUHVibGljS2V5KGVuY29kZWRQdWIpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBTdGVsbGFyIGtleXBhaXIgZnJvbSBhIHByaXZhdGUga2V5LlxuICogUHJpdmF0ZSBrZXkgY2FuIGJlIGVpdGhlciBhIHJhdyByb290IHByaXZhdGUga2V5IChoZXggc3RyaW5nKSBvciBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXkgKHByZWZpeGVkIHdpdGggJ1MnKS5cbiAqIEBwYXJhbSBzZWNyZXQgRWl0aGVyIGhleCByb290IHByaXZhdGUga2V5IG9yIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm5zIFN0ZWxsYXIga2V5cGFpciBmcm9tIHRoZSBwcm92aWRlZCBwcnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVBydihwcnY6IHN0cmluZyk6IHN0ZWxsYXIuS2V5cGFpciB7XG4gIGlmIChwcnYuc3RhcnRzV2l0aCgnUycpKSB7XG4gICAgaWYgKCFpc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkocHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFN0ZWxsYXIgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ZWxsYXIuS2V5cGFpci5mcm9tU2VjcmV0KHBydik7XG4gIH1cblxuICBjb25zdCBlbmNvZGVkUHJ2ID0gZW5jb2RlUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYuc2xpY2UoMCwgNjQpLCAnaGV4JykpO1xuICBpZiAoIWlzVmFsaWRTdGVsbGFyUHJpdmF0ZUtleShlbmNvZGVkUHJ2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb290IHByaXZhdGUga2V5Jyk7XG4gIH1cbiAgcmV0dXJuIHN0ZWxsYXIuS2V5cGFpci5mcm9tU2VjcmV0KGVuY29kZWRQcnYpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpc1ZhbGlkU3RlbGxhclB1YmxpY0tleSBpbnN0ZWFkXG4gKlxuICogVmFsaWRhdGVzIGEgU3RlbGxhciBwdWJsaWMga2V5XG4gKiBTdGVsbGFyIHB1YmxpYyBrZXlzIGFyZSBwcmVmaXhlZCB3aXRoICdHJ1xuICogQHBhcmFtIHB1YiBBIFN0ZWxsYXIgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGVsbGFyUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIFN0ZWxsYXIgcHVibGljIGtleVxuICogU3RlbGxhciBwdWJsaWMga2V5cyBhcmUgcHJlZml4ZWQgd2l0aCAnRydcbiAqIEBwYXJhbSBwdWIgQSBTdGVsbGFyIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgU3RlbGxhciBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3RlbGxhclB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgaXNWYWxpZFJvb3RQdWJsaWNLZXkgaW5zdGVhZFxuICpcbiAqIFZhbGlkYXRlcyBhIGVkMjU1MTkgcm9vdCBwdWJsaWMga2V5XG4gKiBAcGFyYW0gcHViIEEgaGV4YWRlY2ltYWwgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIGVkMjU1MTkgcm9vdCBwdWJsaWMga2V5XG4gKiBAcGFyYW0gcHViIEEgaGV4YWRlY2ltYWwgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUm9vdFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgaXNWYWxpZFN0ZWxsYXJQcml2YXRlS2V5IGluc3RlYWRcbiAqXG4gKiBWYWxpZGF0ZXMgYSBTdGVsbGFyIHByaXZhdGUga2V5XG4gKiBTdGVsbGFyIHByaXZhdGUga2V5cyBhcmUgcHJlZml4ZWQgd2l0aCAnUydcbiAqIEBwYXJhbSBzZWVkIEEgU3RlbGxhciBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBTdGVsbGFyIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3RlbGxhclBydihzZWVkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5U2VjcmV0U2VlZChzZWVkKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBTdGVsbGFyIHByaXZhdGUga2V5XG4gKiBTdGVsbGFyIHByaXZhdGUga2V5cyBhcmUgcHJlZml4ZWQgd2l0aCAnUydcbiAqIEBwYXJhbSBzZWVkIEEgU3RlbGxhciBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBTdGVsbGFyIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVNlY3JldFNlZWQoc2VlZCk7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGlzVmFsaWRSb290UHJpdmF0ZUtleSBpbnN0ZWFkXG4gKlxuICogVmFsaWRhdGVzIGEgZWQyNTUxOSByb290IHByaXZhdGUga2V5XG4gKiBAcGFyYW0gcHJ2IEEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShwcnYpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIGVkMjU1MTkgcm9vdCBwcml2YXRlIGtleVxuICogQHBhcmFtIHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUm9vdFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KHBydik7XG59XG5cbi8qKlxuICogRW5jb2RlcyBhIHJhdyBwdWJsaWMga2V5IHRvIGEgRy1wcmVmaXhlZCBTdGVsbGFyIHB1YmxpYyBrZXlcbiAqIEBwYXJhbSBwdWIgUmF3IHB1YmxpYyBrZXlcbiAqIEByZXR1cm5zIEVuY29kZWQgU3RlbGxhciBwdWJsaWMga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQdWJsaWNLZXkocHViOiBCdWZmZXIpOiBzdHJpbmcge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZW5jb2RlRWQyNTUxOVB1YmxpY0tleShwdWIpO1xufVxuXG4vKipcbiAqIEVuY29kZXMgYSByYXcgcHJpdmF0ZSBrZXkgdG8gYSBTLXByZWZpeGVkIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqIEBwYXJhbSBwcnYgUmF3IHByaXZhdGUga2V5XG4gKiBAcmV0dXJucyBFbmNvZGVkIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVByaXZhdGVLZXkocHJ2OiBCdWZmZXIpOiBzdHJpbmcge1xuICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZW5jb2RlRWQyNTUxOVNlY3JldFNlZWQocHJ2KTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgU3RlbGxhciBwdWJsaWMga2V5IHRvIGEgcmF3IHB1YmxpYyBrZXlcbiAqIEBwYXJhbSBwdWIgRW5jb2RlZCBTdGVsbGFyIEctcHJlZml4ZWQgcHVibGljIGtleVxuICogQHJldHVybnMgUmF3IGhleGFkZWNpbWFsIHB1YmxpYyBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVB1YmxpY0tleShwdWI6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KHB1Yik7XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIFN0ZWxsYXIgcHJpdmF0ZSBrZXkgdG8gYSByYXcgcHJpdmF0ZSBrZXlcbiAqIEBwYXJhbSBwcnYgRW5jb2RlZCBTdGVsbGFyIFMtcHJlZml4ZWQgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm5zIFJhdyBoZXhhZGVjaW1hbCBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIHJldHVybiBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5U2VjcmV0U2VlZChwcnYpO1xufVxuIl19
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.StellarToken = void 0;
27
37
  /**
@@ -96,4 +106,4 @@ class StellarToken extends xlm_1.Xlm {
96
106
  }
97
107
  exports.StellarToken = StellarToken;
98
108
  StellarToken.tokenPattern = /[A-Z]{1,12}-G[A-Z0-9]{55}/;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlbGxhclRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZWxsYXJUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLCtCQUE0QjtBQUM1QixtREFBc0c7QUFDdEcscURBQXVDO0FBQ3ZDLGlEQUFpRTtBQUlqRSxNQUFhLFlBQWEsU0FBUSxTQUFHO0lBTW5DLFlBQVksS0FBZ0IsRUFBRSxXQUErQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDekYsSUFBSSxTQUFTLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRTtZQUNsQyxNQUFNLElBQUksdUJBQVksQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JELE1BQU0sSUFBSSx1QkFBWSxDQUFDLGtCQUFrQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbkU7UUFDRCxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBMEI7UUFDdEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QjtRQUM1QixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEUsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3JHLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQS9FSCxvQ0FnRkM7QUEvRWlCLHlCQUFZLEdBQVcsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBYbG0gfSBmcm9tICcuL3hsbSc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UsIEJpdEdvSnNFcnJvciwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0IHsgU3RlbGxhclRva2VuQ29uZmlnLCB0b2tlbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IHsgU3RlbGxhclRva2VuQ29uZmlnIH07XG5cbmV4cG9ydCBjbGFzcyBTdGVsbGFyVG9rZW4gZXh0ZW5kcyBYbG0ge1xuICBzdGF0aWMgcmVhZG9ubHkgdG9rZW5QYXR0ZXJuOiBSZWdFeHAgPSAvW0EtWl17MSwxMn0tR1tBLVowLTldezU1fS87XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkNvbmZpZzogU3RlbGxhclRva2VuQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2RlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzc3Vlcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBTdGVsbGFyVG9rZW5Db25maWcpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgdGhpcy50b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnO1xuXG4gICAgY29uc3QgW3Rva2VuQ29pbiwgdG9rZW5dID0gXy5zcGxpdCh0aGlzLnRva2VuQ29uZmlnLnR5cGUsIFhsbS5jb2luVG9rZW5QYXR0ZXJuU2VwYXJhdG9yKTtcbiAgICBpZiAodG9rZW5Db2luICE9PSB0b2tlbkNvbmZpZy5jb2luKSB7XG4gICAgICB0aHJvdyBuZXcgQml0R29Kc0Vycm9yKGBpbnZhbGlkIGNvaW4gZm91bmQgaW4gdG9rZW46ICR7dGhpcy50b2tlbkNvbmZpZy50eXBlfWApO1xuICAgIH1cbiAgICBpZiAoIXRva2VuIHx8ICF0b2tlbi5tYXRjaChTdGVsbGFyVG9rZW4udG9rZW5QYXR0ZXJuKSkge1xuICAgICAgdGhyb3cgbmV3IEJpdEdvSnNFcnJvcihgaW52YWxpZCB0b2tlbjogJHt0aGlzLnRva2VuQ29uZmlnLnR5cGV9YCk7XG4gICAgfVxuICAgIFt0aGlzLl9jb2RlLCB0aGlzLl9pc3N1ZXJdID0gXy5zcGxpdCh0b2tlbiwgJy0nKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogU3RlbGxhclRva2VuQ29uZmlnKTogQ29pbkNvbnN0cnVjdG9yIHtcbiAgICByZXR1cm4gKGJpdGdvOiBCaXRHb0Jhc2UpID0+IG5ldyBTdGVsbGFyVG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgY29uc3QgdG9rZW5zQ3RvcnM6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIFsuLi50b2tlbnMuYml0Y29pbi54bG0udG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC54bG0udG9rZW5zXSkge1xuICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IFN0ZWxsYXJUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuKTtcbiAgICAgIHRva2Vuc0N0b3JzLnB1c2goeyBuYW1lOiB0b2tlbi50eXBlLCBjb2luQ29uc3RydWN0b3I6IHRva2VuQ29uc3RydWN0b3IgfSk7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbnNDdG9ycztcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLnR5cGU7XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuY29pbjtcbiAgfVxuXG4gIGdldCBuZXR3b3JrKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5ldHdvcms7XG4gIH1cblxuICBnZXQgY29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29kZTtcbiAgfVxuXG4gIGdldCBpc3N1ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzc3VlcjtcbiAgfVxuXG4gIGdldCBkZWNpbWFsUGxhY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmRlY2ltYWxQbGFjZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U3RlbGxhck5ldHdvcmsoKTogc3RlbGxhci5OZXR3b3JrcyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmV0d29yayA9PT0gJ1Rlc3RuZXQnID8gc3RlbGxhci5OZXR3b3Jrcy5URVNUTkVUIDogc3RlbGxhci5OZXR3b3Jrcy5QVUJMSUM7XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuICdTdGVsbGFyIFRva2VuJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIGZvciBzZW5kaW5nIHZhbHVlIG9mIDBcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgb2theSB0byBzZW5kIDAgdmFsdWUsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlbGxhclRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZWxsYXJUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILDBDQUE0QjtBQUM1QiwrQkFBNEI7QUFDNUIsbURBQXNHO0FBQ3RHLHFEQUF1QztBQUN2QyxpREFBaUU7QUFJakUsTUFBYSxZQUFhLFNBQVEsU0FBRztJQU1uQyxZQUFZLEtBQWdCLEVBQUUsV0FBK0I7UUFDM0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksU0FBUyxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksdUJBQVksQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLElBQUksdUJBQVksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBMEI7UUFDdEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QjtRQUM1QixNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNyRyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7QUEvRUgsb0NBZ0ZDO0FBL0VpQix5QkFBWSxHQUFXLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgWGxtIH0gZnJvbSAnLi94bG0nO1xuaW1wb3J0IHsgQml0R29CYXNlLCBCaXRHb0pzRXJyb3IsIENvaW5Db25zdHJ1Y3RvciwgTmFtZWRDb2luQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCB7IFN0ZWxsYXJUb2tlbkNvbmZpZywgdG9rZW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmV4cG9ydCB7IFN0ZWxsYXJUb2tlbkNvbmZpZyB9O1xuXG5leHBvcnQgY2xhc3MgU3RlbGxhclRva2VuIGV4dGVuZHMgWGxtIHtcbiAgc3RhdGljIHJlYWRvbmx5IHRva2VuUGF0dGVybjogUmVnRXhwID0gL1tBLVpdezEsMTJ9LUdbQS1aMC05XXs1NX0vO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IFN0ZWxsYXJUb2tlbkNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBfY29kZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc3N1ZXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogU3RlbGxhclRva2VuQ29uZmlnKSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICAgIHRoaXMudG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZztcblxuICAgIGNvbnN0IFt0b2tlbkNvaW4sIHRva2VuXSA9IF8uc3BsaXQodGhpcy50b2tlbkNvbmZpZy50eXBlLCBYbG0uY29pblRva2VuUGF0dGVyblNlcGFyYXRvcik7XG4gICAgaWYgKHRva2VuQ29pbiAhPT0gdG9rZW5Db25maWcuY29pbikge1xuICAgICAgdGhyb3cgbmV3IEJpdEdvSnNFcnJvcihgaW52YWxpZCBjb2luIGZvdW5kIGluIHRva2VuOiAke3RoaXMudG9rZW5Db25maWcudHlwZX1gKTtcbiAgICB9XG4gICAgaWYgKCF0b2tlbiB8fCAhdG9rZW4ubWF0Y2goU3RlbGxhclRva2VuLnRva2VuUGF0dGVybikpIHtcbiAgICAgIHRocm93IG5ldyBCaXRHb0pzRXJyb3IoYGludmFsaWQgdG9rZW46ICR7dGhpcy50b2tlbkNvbmZpZy50eXBlfWApO1xuICAgIH1cbiAgICBbdGhpcy5fY29kZSwgdGhpcy5faXNzdWVyXSA9IF8uc3BsaXQodG9rZW4sICctJyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IFN0ZWxsYXJUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgU3RlbGxhclRva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIGNvbnN0IHRva2Vuc0N0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiBbLi4udG9rZW5zLmJpdGNvaW4ueGxtLnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQueGxtLnRva2Vuc10pIHtcbiAgICAgIGNvbnN0IHRva2VuQ29uc3RydWN0b3IgPSBTdGVsbGFyVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbik7XG4gICAgICB0b2tlbnNDdG9ycy5wdXNoKHsgbmFtZTogdG9rZW4udHlwZSwgY29pbkNvbnN0cnVjdG9yOiB0b2tlbkNvbnN0cnVjdG9yIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zQ3RvcnM7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmFtZTtcbiAgfVxuXG4gIGdldCBjb2luKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmNvaW47XG4gIH1cblxuICBnZXQgbmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgZ2V0IGNvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvZGU7XG4gIH1cblxuICBnZXQgaXNzdWVyKCkge1xuICAgIHJldHVybiB0aGlzLl9pc3N1ZXI7XG4gIH1cblxuICBnZXQgZGVjaW1hbFBsYWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFN0ZWxsYXJOZXR3b3JrKCk6IHN0ZWxsYXIuTmV0d29ya3Mge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5ldHdvcmsgPT09ICdUZXN0bmV0JyA/IHN0ZWxsYXIuTmV0d29ya3MuVEVTVE5FVCA6IHN0ZWxsYXIuTmV0d29ya3MuUFVCTElDO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCkge1xuICAgIHJldHVybiAnU3RlbGxhciBUb2tlbic7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
package/dist/src/xlm.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import * as stellar from 'stellar-sdk';
4
2
  import { BaseCoin, BitGoBase, ExtraPrebuildParamsOptions, ITransactionRecipient, KeyPair, ParsedTransaction, ParseTransactionOptions, SignTransactionOptions as BaseSignTransactionOptions, TokenEnablementConfig, TransactionExplanation as BaseTransactionExplanation, TransactionParams as BaseTransactionParams, TransactionPrebuild as BaseTransactionPrebuild, VerifyAddressOptions as BaseVerifyAddressOptions, VerifyTransactionOptions as BaseVerifyTransactionOptions, Wallet } from '@bitgo-beta/sdk-core';
5
3
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"xlm.d.ts","sourceRoot":"","sources":["../../src/xlm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlm.d.ts","sourceRoot":"","sources":["../../src/xlm.ts"],"names":[],"mappings":"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"}
package/dist/src/xlm.js CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -956,4 +966,4 @@ Xlm.maxTrustlineLimit = '9223372036854775807';
956
966
  * @param tx transaction to convert
957
967
  */
958
968
  Xlm.txToString = (tx) => tx.toEnvelope().toXDR('base64');
959
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3hsbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBNEI7QUFDNUIseURBQTJDO0FBQzNDLHlDQUEyQjtBQUMzQixvREFBc0M7QUFDdEMscURBQXVDO0FBQ3ZDLCtDQUF5QztBQUN6QyxtREFBcUM7QUFDckMsMkNBQTBEO0FBRTFELG1EQTBCOEI7QUFDOUIsaURBQXFEO0FBQ3JELHFEQUFrRDtBQWlIbEQsTUFBYSxHQUFJLFNBQVEsbUJBQVE7SUFRL0IsWUFBWSxLQUFnQjtRQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLHFDQUFxQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQjtRQUNwQyxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCO1FBQ3BCLE9BQU8saUJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0lBQzdFLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLDZCQUE2QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsZUFBZSxDQUFDLElBQWE7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFjLEVBQUUsQ0FBQztRQUMzRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBYTtRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWMsRUFBRSxDQUFDO1FBQzNFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDcEIsNkZBQTZGO1FBQzdGLHNEQUFzRDtRQUN0RCxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDcEIsOEZBQThGO1FBQzlGLDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSTtZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1lBQ3BFLFlBQVksR0FBRyxJQUFJLHdCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFRO1FBQy9CLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUk7WUFDRixnREFBZ0Q7WUFDaEQsa0RBQWtEO1lBQ2xELGdGQUFnRjtZQUNoRixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQWU7UUFDN0IsSUFBSTtZQUNGLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG1CQUFtQixDQUFDLE9BQWU7UUFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJO1lBQ0YsaURBQWlEO1lBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUV4RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUM5RTtRQUVELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztRQUV6RSwrREFBK0Q7UUFDL0QsT0FBTyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMscUJBQXFCO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUV4RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUM5RTtRQUVELE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLE9BQWU7UUFDL0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRCxPQUFPO29CQUNMLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFO29CQUNuRCxPQUFPO29CQUNQLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO29CQUNyQixNQUFNLEVBQUUsU0FBUztpQkFDbEIsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQywwQkFBMEIsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNwRTtTQUNGO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDdEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNoRDtRQUNELGlDQUFpQztRQUNqQyxJQUFJLGtCQUFrQixDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDM0MsT0FBTztnQkFDTCxXQUFXLEVBQUUsT0FBTztnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE1BQU0sRUFBRSxTQUFTO2FBQ2xCLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDN0IsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN4Qix1RkFBdUY7WUFDdkYsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksOEJBQW1CLENBQzNCLG9EQUFvRCxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLE9BQU8sRUFBRSxDQUNqSCxDQUFDO1NBQ0g7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRSwrQ0FBK0M7WUFDL0MsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9CQUFvQixPQUFPLG9DQUFvQyxDQUFDLENBQUM7U0FDaEc7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLE1BQU0sSUFBSSw2QkFBa0IsQ0FBQyxxQkFBcUIsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDO1NBQ3BGO1FBRUQsT0FBTztZQUNMLFdBQVcsRUFBRSxrQkFBa0I7WUFDL0IsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixFQUFFLEVBQUUsU0FBUztZQUNiLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBa0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxPQUFPLEdBQUcsT0FBTyxXQUFXLE1BQU0sRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSTtZQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RCxPQUFPLE9BQU8sS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDMUQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDRCQUE0QixDQUFDLEtBQW9CO1FBQy9DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLG1CQUFRLENBQUMseUJBQXlCLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUMvRyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxzQkFBc0IsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QjtRQUN0Qiw4RUFBOEU7UUFDOUUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQzdCLE9BQU8sRUFDUCxTQUFTLEdBSVY7UUFDQyxJQUFJO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN6RCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxPQUFPLE1BQU0sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNLElBQUksU0FBUyxFQUFFO2dCQUNwQixPQUFPLE1BQU0sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO2FBQ2xGO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDL0MsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLDZDQUFrQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQWU7UUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsMkJBQTJCLENBQUMsU0FBaUI7UUFDakQsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBd0I7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsTUFBTSxJQUFJLDhCQUFtQixDQUFDLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELElBQUksY0FBYyxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7WUFDN0QsTUFBTSxJQUFJLGlDQUFzQixDQUM5QiwrQkFBK0IsY0FBYyxDQUFDLFdBQVcsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FDN0YsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFdBQXVDO1FBQ2xFLE1BQU0sTUFBTSxHQUE4QyxFQUFFLENBQUM7UUFDN0QsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUNwQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUN4QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLE1BQXVCO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUF1QjtRQUNuQyx1RkFBdUY7UUFDdkYsSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDMUY7YUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckQsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pELE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDOUY7YUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkQsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsbUZBQW1GO1FBQ25GLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0YsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBQSwyQkFBZ0IsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDcEQsTUFBTSxJQUFJLDhCQUFtQixDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLElBQUEsK0JBQWMsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEYsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEYsTUFBTSxjQUFjLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFeEYsSUFBSSxXQUFXLENBQUM7UUFDaEIsSUFBSTtZQUNGLFdBQVcsR0FBRyxNQUFNLElBQUEsd0JBQWMsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDMUU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNyRTtRQUVELHVEQUF1RDtRQUN2RCxJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJO1lBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ25DO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUNwQiwyRUFBMkU7Z0JBQzNFLG1CQUFtQixHQUFHLElBQUksQ0FBQzthQUM1QjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztTQUM3RjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5RSxzSEFBc0g7UUFDdEgsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBRS9HLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7U0FDN0U7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JELE1BQU0sY0FBYyxHQUFHLGFBQWEsR0FBRyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2xFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXBGLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtZQUN4RCxHQUFHLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQzVDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLG1CQUFtQjtZQUNuQyxDQUFDLENBQUMsOENBQThDO2dCQUM5QyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztvQkFDOUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7b0JBQ3ZDLGVBQWUsRUFBRSx1QkFBdUI7aUJBQ3pDLENBQUM7WUFDSixDQUFDLENBQUMsK0RBQStEO2dCQUMvRCxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztvQkFDeEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7b0JBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDN0IsTUFBTSxFQUFFLHVCQUF1QjtpQkFDaEMsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXpGLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxFQUFFLElBQUksd0JBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRztTQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsTUFBTSxXQUFXLEdBQXdCO1lBQ3ZDLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1QixjQUFjO1NBQ2YsQ0FBQztRQUVGLElBQUksYUFBYSxFQUFFO1lBQ2pCLFdBQVcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUMxQztRQUVELFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLFdBQVcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRTlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUE4Qjs7UUFDbEQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFbkMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLE9BQU8sVUFBVSxFQUFFLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDakU7UUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNsRixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEMsTUFBTSxJQUFJLEdBQUcsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsV0FBVywwQ0FBRSxJQUFJLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsV0FBVywwQ0FBRSxVQUFVLENBQUM7UUFDdkQsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFO2dCQUN4QixJQUFJO2dCQUNKLFVBQVU7YUFDWCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyx3QkFBd0IsQ0FDNUIsWUFBNkM7UUFFN0MsSUFBSSxJQUFJLENBQUM7UUFDVCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUN6RTtZQUNELElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQywwQ0FBMEM7UUFDMUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzFDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBWSxFQUFFLE9BQXdCO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdCLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxlQUFlLENBQUMsR0FBVyxFQUFFLE9BQXdCLEVBQUUsU0FBaUI7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdCLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFpQztRQUN4RCxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLEVBQUUsR0FBb0MsU0FBUyxDQUFDO1FBRXBELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO1NBQ25HO1FBRUQsSUFBSTtZQUNGLElBQUksS0FBSyxFQUFFO2dCQUNULEVBQUUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7YUFDdEc7aUJBQU0sSUFBSSxRQUFRLEVBQUU7Z0JBQ25CLEVBQUUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7YUFDbEU7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUNELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMscUVBQXFFO1FBQ3JFLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FDUixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUM7WUFDdEQsQ0FBQyxDQUFDO2dCQUNFLEtBQUssRUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RELElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUM7YUFDaEM7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVQsSUFBSSxXQUFXLEdBQUcsSUFBSSx3QkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQztRQUM1RCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztRQUVELE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQTJCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjtRQUV4RSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFxQixFQUFFLEVBQUU7WUFDakQsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDeEQsa0NBQWtDO2dCQUNsQyxpREFBaUQ7Z0JBQ2pELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwRyxJQUFJLEtBQUssQ0FBQztnQkFDVixJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUN6QixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssdUJBQXVCLEVBQUU7d0JBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztxQkFDdkM7b0JBQ0QsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFzQixDQUFDO2lCQUNuQztxQkFBTTtvQkFDTCxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDaEM7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CO2dCQUMxRSxNQUFNLE1BQU0sR0FBc0I7b0JBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQzdCLEVBQXNDLENBQUMsZUFBZSxJQUFLLEVBQWdDLENBQUMsTUFBTSxDQUNwRztvQkFDRCxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxNQUFNO29CQUNoQyxJQUFJO2lCQUNMLENBQUM7Z0JBRUYsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDN0Q7cUJBQU07b0JBQ0wsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksd0JBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ25EO2dCQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNwQixXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQy9DO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtnQkFDcEMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLHVCQUF1QixFQUFFO29CQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFxQixDQUFDO2dCQUV2QyxVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNkLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSTtvQkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQztvQkFDOUMsS0FBSztvQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQzFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sR0FBRyxHQUFHO1lBQ1YsR0FBRyxFQUFFLElBQUksd0JBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsSUFBSTtZQUNiLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUVGLE9BQU87WUFDTCxZQUFZLEVBQUU7Z0JBQ1osSUFBSTtnQkFDSixjQUFjO2dCQUNkLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCxTQUFTO2dCQUNULGVBQWU7Z0JBQ2YsS0FBSztnQkFDTCxNQUFNO2dCQUNOLFlBQVk7YUFDYjtZQUNELEVBQUU7WUFDRixPQUFPO1lBQ1AsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixJQUFJO1lBQ0osR0FBRztZQUNILFVBQVU7U0FDSixDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2QkFBNkIsQ0FBQyxVQUErQixFQUFFLFFBQTJCO1FBQ3hGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQW9DLENBQUM7UUFDN0csSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBcUIsRUFBRSxFQUFFO1lBQ3ZELElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyx1QkFBdUIsRUFBRTtnQkFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQXFCLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMvRCw0Q0FBNEM7Z0JBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsZ0VBQWdFO2dCQUNoRSxPQUFPLFNBQVMsQ0FBQyxTQUFTLEtBQUssT0FBTyxJQUFJLGdCQUFnQixLQUFLLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztZQUN2RixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQzthQUNsRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwyQkFBMkIsQ0FBQyxVQUErQixFQUFFLFFBQTJCO1FBQ3RGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQW9DLENBQUM7UUFDN0csSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBcUIsRUFBRSxFQUFFO1lBQ3ZELElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyx1QkFBdUIsRUFBRTtnQkFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQXFCLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMvRCw0Q0FBNEM7Z0JBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsc0NBQXNDO2dCQUN0QywwR0FBMEc7Z0JBQzFHLHdFQUF3RTtnQkFDeEUsOENBQThDO2dCQUM5QyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsTUFBTSw0QkFBNEIsR0FBRyxTQUFTLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsaUJBQWlCLENBQUM7Z0JBQzlHLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLGdCQUFnQixLQUFLLEdBQUcsQ0FBQztnQkFDbEYsT0FBTyxDQUNMLFNBQVMsQ0FBQyxLQUFLLEtBQUssT0FBTztvQkFDM0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLGdCQUFnQixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsNEJBQTRCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUN6RyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7YUFDbEY7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWlDO1FBQ3ZELDJEQUEyRDtRQUMzRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUVsRixJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUN6RDtRQUVELDBHQUEwRztRQUMxRyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQy9CLEVBQUUsQ0FBQyxVQUFVLEVBQ2IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUNsRixDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtZQUNuQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7YUFDdEU7WUFFRCxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3ZELE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEYsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQyxPQUFPLENBQUM7Z0JBQ25FLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBZ0UsQ0FBQztnQkFDdEcsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLHFCQUFxQixFQUFFO29CQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7aUJBQzNFO2dCQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSx3QkFBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEUscUhBQXFIO2dCQUNySCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUNwRyxNQUFNLFlBQVksR0FBRyxJQUFJLHdCQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztnQkFFakYsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRTtvQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO2lCQUN4RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbkQsMENBQTBDO1lBQzFDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2FBQzlEO2lCQUFNLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JCLFNBQVMsR0FBRyxNQUFNLElBQUEsdUJBQVksRUFBQztvQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLHFCQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDcEUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLHFCQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztpQkFDekUsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQzthQUNyRTtZQUVELElBQUEsZ0JBQU0sRUFBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN0RDtZQUNELElBQUEsZ0JBQU0sRUFBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsaUJBQWlCO1FBQ2YsTUFBTSxJQUFJLHVCQUFZLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUNuRixDQUFDO0lBVUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQStCO1FBQ3BELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU87WUFDTCx1QkFBdUIsRUFBRSxJQUFJO1lBQzdCLGdDQUFnQyxFQUFFLEtBQUs7U0FDeEMsQ0FBQztJQUNKLENBQUM7O0FBdGdDSCxrQkF1Z0NDO0FBcmdDd0IseUJBQXFCLEdBQUcsR0FBRyxDQUFDLENBQUMsc0NBQXNDO0FBQzFFLGFBQVMsR0FBVyxvQkFBb0IsQ0FBQyxDQUFDLG9EQUFvRDtBQUM5RyxxREFBcUQ7QUFDckQsMEdBQTBHO0FBQzFGLHFCQUFpQixHQUFXLHFCQUFxQixDQUFDO0FBeStCbEU7Ozs7R0FJRztBQUNjLGNBQVUsR0FBRyxDQUFDLEVBQXVCLEVBQVUsRUFBRSxDQUMvRCxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBK0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIHF1ZXJ5c3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJztcbmltcG9ydCAqIGFzIHVybCBmcm9tICd1cmwnO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCAqIGFzIHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0IHsgQmlnTnVtYmVyIH0gZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgYXMgU3RlbGxhcktleVBhaXIgfSBmcm9tICcuL2xpYi9rZXlQYWlyJztcblxuaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgY2hlY2tLcnNQcm92aWRlcixcbiAgY29tbW9uLFxuICBFeHRyYVByZWJ1aWxkUGFyYW1zT3B0aW9ucyxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgSW52YWxpZE1lbW9JZEVycm9yLFxuICBJVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIEtleUluZGljZXMsXG4gIEtleVBhaXIsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgcHJvbWlzZVByb3BzLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTdGVsbGFyRmVkZXJhdGlvblVzZXJOb3RGb3VuZEVycm9yLFxuICBUb2tlbkVuYWJsZW1lbnRDb25maWcsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uUGFyYW1zIGFzIEJhc2VUcmFuc2FjdGlvblBhcmFtcyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCBhcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQgYXMgQmFzZVRyYW5zYWN0aW9uT3V0cHV0LFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyBhcyBCYXNlVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBXYWxsZXQsXG4gIE5vdFN1cHBvcnRlZCxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgdG9CaXRnb1JlcXVlc3QgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IGdldFN0ZWxsYXJLZXlzIH0gZnJvbSAnLi9nZXRTdGVsbGFyS2V5cyc7XG5cbi8qKlxuICogWExNIGFjY291bnRzIHN1cHBvcnQgdmlydHVhbCAobXV4ZWQpIGFkZHJlc3Nlc1xuICogQSBiYXNlIGFkZHJlc3Mgc3RhcnRzIHdpdGggXCJHXCIgYW5kIGlzIHRpZWQgdG8gdGhlIHVuZGVybHlpbmcgXCJyZWFsXCIgYWNjb3VudFxuICogQSBtdXhlZCBhZGRyZXNzIHN0YXJ0cyB3aXRoIFwiTVwiIGFuZCBjb21iaW5lcyB0aGUgYmFzZSBhZGRyZXNzIHdpdGggYSA2NC1iaXQgaW50ZWdlciBJRCBpbiBvcmRlciB0byBwcm92aWRlXG4gKiBhbiBhbHRlcm5hdGl2ZSB0byBtZW1vIGlkcy5cbiAqL1xuaW50ZXJmYWNlIEFkZHJlc3NEZXRhaWxzIHtcbiAgYmFzZUFkZHJlc3M6IHN0cmluZztcbiAgYWRkcmVzczogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgbWVtb0lkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgTWVtbyB7XG4gIHR5cGU6IHN0ZWxsYXIuTWVtb1R5cGU7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbml0aWF0ZVJlY292ZXJ5T3B0aW9ucyB7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIHJlY292ZXJ5RGVzdGluYXRpb246IHN0cmluZztcbiAga3JzUHJvdmlkZXI/OiBzdHJpbmc7XG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZWNvdmVyeU9wdGlvbnMgZXh0ZW5kcyBJbml0aWF0ZVJlY292ZXJ5T3B0aW9ucyB7XG4gIHJvb3RBZGRyZXNzPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVjb3ZlcnlUcmFuc2FjdGlvbiB7XG4gIHR4QmFzZTY0OiBzdHJpbmc7XG4gIHJlY292ZXJ5QW1vdW50OiBudW1iZXI7XG4gIGNvaW4/OiBzdHJpbmc7XG4gIGJhY2t1cEtleT86IHN0cmluZztcbiAgdHhJbmZvPzogYW55O1xuICBmZWVJbmZvPzogYW55O1xufVxuXG5pbnRlcmZhY2UgQnVpbGRPcHRpb25zIHtcbiAgd2FsbGV0PzogV2FsbGV0O1xuICByZWNpcGllbnRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdO1xuICB0eXBlPzogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEJhc2U2NDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIYWxmU2lnbmVkVHJhbnNhY3Rpb24ge1xuICBoYWxmU2lnbmVkOiB7XG4gICAgdHhCYXNlNjQ6IHN0cmluZztcbiAgfTtcbiAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3VwcGxlbWVudEdlbmVyYXRlV2FsbGV0T3B0aW9ucyB7XG4gIHJvb3RQcml2YXRlS2V5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICB0eEJhc2U2ND86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uTWVtbyB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25PcGVyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGNvaW46IHN0cmluZztcbiAgbGltaXQ/OiBzdHJpbmc7XG4gIGFzc2V0Pzogc3RlbGxhci5Bc3NldDtcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uT3V0cHV0IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uT3V0cHV0IHtcbiAgY29pbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgbWVtbzogVHJhbnNhY3Rpb25NZW1vO1xufVxuXG5pbnRlcmZhY2UgVmVyaWZ5QWRkcmVzc09wdGlvbnMgZXh0ZW5kcyBCYXNlVmVyaWZ5QWRkcmVzc09wdGlvbnMge1xuICByb290QWRkcmVzczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJ1c3RsaW5lT3B0aW9ucyB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBsaW1pdD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uUGFyYW1zIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHJ1c3RsaW5lcz86IFRydXN0bGluZU9wdGlvbnNbXTtcbn1cblxuaW50ZXJmYWNlIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXM7XG59XG5cbmV4cG9ydCBjbGFzcyBYbG0gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHB1YmxpYyByZWFkb25seSBob21lRG9tYWluOiBzdHJpbmc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdG9rZW5QYXR0ZXJuU2VwYXJhdG9yID0gJy0nOyAvLyBzZXBhcmF0b3IgZm9yIHRva2VuIGNvZGUgYW5kIGlzc3VlclxuICBzdGF0aWMgcmVhZG9ubHkgbWF4TWVtb0lkOiBzdHJpbmcgPSAnMHhGRkZGRkZGRkZGRkZGRkZGJzsgLy8gbWF4IHVuc2lnbmVkIDY0LWJpdCBudW1iZXIgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNVxuICAvLyBtYXggaW50NjQgbnVtYmVyIHN1cHBvcnRlZCBieSB0aGUgbmV0d29yayAoMl42MyktMVxuICAvLyBTZWU6IGh0dHBzOi8vd3d3LnN0ZWxsYXIub3JnL2RldmVsb3BlcnMvZ3VpZGVzL2NvbmNlcHRzL2Fzc2V0cy5odG1sI2Ftb3VudC1wcmVjaXNpb24tYW5kLXJlcHJlc2VudGF0aW9uXG4gIHN0YXRpYyByZWFkb25seSBtYXhUcnVzdGxpbmVMaW1pdDogc3RyaW5nID0gJzkyMjMzNzIwMzY4NTQ3NzU4MDcnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgdGhpcy5ob21lRG9tYWluID0gJ2JpdGdvLmNvbSc7IC8vIHVzZWQgZm9yIHJldmVyc2UgZmVkZXJhdGlvbiBsb29rdXBcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlKTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgWGxtKGJpdGdvKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTdGVsbGFyTmV0d29yaygpOiBzdGVsbGFyLk5ldHdvcmtzIHtcbiAgICByZXR1cm4gc3RlbGxhci5OZXR3b3Jrcy5QVUJMSUM7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yIGJldHdlZW4gdGhlIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YmRpdmlzb25cbiAgICovXG4gIGdldEJhc2VGYWN0b3IoKSB7XG4gICAgcmV0dXJuIDFlNztcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgYmxvY2tjaGFpbiB3aGljaCBzdXBwb3J0cyB0aGlzIGNvaW5cbiAgICovXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd4bG0nO1xuICB9XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRoZSBjb2luIGZhbWlseVxuICAgKi9cbiAgZ2V0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd4bG0nO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhpcyBjb2luXG4gICAqL1xuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnU3RlbGxhcic7XG4gIH1cblxuICAvKipcbiAgICogVXJsIGF0IHdoaWNoIHRoZSBzdGVsbGFyIGZlZGVyYXRpb24gc2VydmVyIGNhbiBiZSByZWFjaGVkXG4gICAqL1xuICBnZXRGZWRlcmF0aW9uU2VydmVyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uc3RlbGxhckZlZGVyYXRpb25TZXJ2ZXJVcmw7XG4gIH1cblxuICAvKipcbiAgICogVXJsIGF0IHdoaWNoIGhvcml6b24gY2FuIGJlIHJlYWNoZWRcbiAgICovXG4gIGdldEhvcml6b25VcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2h0dHBzOi8vaG9yaXpvbi5zdGVsbGFyLm9yZyc7XG4gIH1cblxuICAvKiogaW5oZXJpdGRvYyAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN0ZWxsYXJLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBTdGVsbGFyS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4geyBwdWI6IGtleXMucHViLCBwcnY6IGtleXMucHJ2IH07XG4gIH1cblxuICBnZW5lcmF0ZVJvb3RLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBTdGVsbGFyS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3RlbGxhcktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKHRydWUpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7IHBydjoga2V5cy5wcnYgKyBrZXlzLnB1YiwgcHViOiBrZXlzLnB1YiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbmNvZGVkIGVkMjU1MTkgcHVibGljIGtleSBmcm9tIHJhdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBwdWIgUmF3IHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMgRW5jb2RlZCBwdWJsaWMga2V5XG4gICAqL1xuICBnZXRQdWJGcm9tUmF3KHB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZW5jb2RlZCBlZDI1NTE5IHByaXZhdGUga2V5IGZyb20gcmF3IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHBydiBSYXcgcHJpdmF0ZSBrZXlcbiAgICogQHJldHVybnMgRW5jb2RlZCBwcml2YXRlIGtleVxuICAgKi9cbiAgZ2V0UHJ2RnJvbVJhdyhwcnY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gU3RlbGxhcidzIHZhbGlkYXRpb24gbWV0aG9kIG9ubHkgYWxsb3dzIGtleXMgaW4gU3RlbGxhci1zcGVjaWZpYyBmb3JtYXQsIHdpdGggYSAnRycgcHJlZml4XG4gICAgLy8gV2UgbmVlZCB0byBhbGxvdyBmb3IgYm90aCBTdGVsbGFyIGFuZCByYXcgcm9vdCBrZXlzXG4gICAgcmV0dXJuIFV0aWxzLmlzVmFsaWRSb290UHVibGljS2V5KHB1YikgfHwgVXRpbHMuaXNWYWxpZFN0ZWxsYXJQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHJpdmF0ZSBrZXkgZm9yIHRoZSBjb2luXG4gICAqXG4gICAqIEBwYXJhbSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFBydihwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIFN0ZWxsYXIncyB2YWxpZGF0aW9uIG1ldGhvZCBvbmx5IGFsbG93cyBrZXlzIGluIFN0ZWxsYXItc3BlY2lmaWMgZm9ybWF0LCB3aXRoIGFuICdTJyBwcmVmaXhcbiAgICAvLyBXZSBuZWVkIHRvIGFsbG93IGZvciBib3RoIFN0ZWxsYXIgYW5kIHJhdyByb290IHByaXZhdGUga2V5c1xuICAgIHJldHVybiBVdGlscy5pc1ZhbGlkUm9vdFByaXZhdGVLZXkocHJ2KSB8fCBVdGlscy5pc1ZhbGlkU3RlbGxhclByaXZhdGVLZXkocHJ2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYSBtZW1vIGlkIGlzIHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSBtZW1vSWQgbWVtbyBpZFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIG1lbW8gaWQgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRNZW1vSWQobWVtb0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgbWVtb0lkTnVtYmVyO1xuICAgIHRyeSB7XG4gICAgICBzdGVsbGFyLk1lbW8uaWQobWVtb0lkKTsgLy8gdGhyb3dzIGlmIHRoZSB2YWx1ZSBpcyBub3QgdmFsaWQgbWVtbyBpZFxuICAgICAgbWVtb0lkTnVtYmVyID0gbmV3IEJpZ051bWJlcihtZW1vSWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb0lkTnVtYmVyLmd0ZSgwKSAmJiBtZW1vSWROdW1iZXIubHQoWGxtLm1heE1lbW9JZCk7XG4gIH1cblxuICBzdXBwb3J0c0Rlcml2ZUtleVdpdGhTZWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgd2hldGhlciBhIG1lbW8gaXMgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBtZW1vXG4gICAqIEBwYXJhbSB0eXBlIHR5cGUgb2YgdGhlIG1lbW9cbiAgICogQHJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBhbmQgdHlwZSBhcmUgYSB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZE1lbW8oeyB2YWx1ZSwgdHlwZSB9OiBNZW1vKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gdGhyb3dzIGlmIHRoZSB2YWx1ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSB0eXBlXG4gICAgICAvLyB2YWxpZCB0eXBlcyBhcmU6ICdpZCcsICd0ZXh0JywgJ2hhc2gnLCAncmV0dXJuJ1xuICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnN0ZWxsYXIub3JnL2RldmVsb3BlcnMvZ3VpZGVzL2NvbmNlcHRzL3RyYW5zYWN0aW9ucy5odG1sI21lbW9cbiAgICAgIHN0ZWxsYXIuTWVtb1t0eXBlXSh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgaW5zdGFuY2Ugb2Ygc3RlbGxhci5NdXhlZEFjY291bnQgZnJvbSBNIGFkZHJlc3NcbiAgICogU2VlOiBodHRwczovL2RldmVsb3BlcnMuc3RlbGxhci5vcmcvZG9jcy9nbG9zc2FyeS9tdXhlZC1hY2NvdW50c1xuICAgKi9cbiAgZ2V0TXV4ZWRBY2NvdW50KGFkZHJlc3M6IHN0cmluZyk6IHN0ZWxsYXIuTXV4ZWRBY2NvdW50IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHN0ZWxsYXIuTXV4ZWRBY2NvdW50LmZyb21BZGRyZXNzKGFkZHJlc3MsICcwJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG11eGVkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgbXV4ZWQgYWRkcmVzcyBpcyB2YWxpZFxuICAgKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5zdGVsbGFyLm9yZy9kb2NzL2dsb3NzYXJ5L211eGVkLWFjY291bnRzXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNWYWxpZE11eGVkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcoYWRkcmVzcykgfHwgIWFkZHJlc3Muc3RhcnRzV2l0aCgnTScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIHJldHVybiB0cnVlIGlmIG11eGVkIGFjY291bnQgaXMgdmFsaWQgb3IgdGhyb3dcbiAgICAgIHJldHVybiAhIXN0ZWxsYXIuTXV4ZWRBY2NvdW50LmZyb21BZGRyZXNzKGFkZHJlc3MsICcwJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGJhbGFuY2Ugb2YgYSAyLW9mLTMgbXVsdGlzaWcgd2FsbGV0XG4gICAqIEByZXR1cm5zIG1pbmltdW0gYmFsYW5jZSBpbiBzdHJvb3BzXG4gICAqL1xuICBhc3luYyBnZXRNaW5pbXVtUmVzZXJ2ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHNlcnZlciA9IG5ldyBzdGVsbGFyLlNlcnZlcih0aGlzLmdldEhvcml6b25VcmwoKSk7XG5cbiAgICBjb25zdCBob3Jpem9uTGVkZ2VySW5mbyA9IGF3YWl0IHNlcnZlci5sZWRnZXJzKCkub3JkZXIoJ2Rlc2MnKS5saW1pdCgxKS5jYWxsKCk7XG5cbiAgICBpZiAoIWhvcml6b25MZWRnZXJJbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBjb25uZWN0IHRvIEhvcml6b24gZm9yIHJlc2VydmUgcmVxdWlyZW1lbnQgZGF0YScpO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VSZXNlcnZlID0gaG9yaXpvbkxlZGdlckluZm8ucmVjb3Jkc1swXS5iYXNlX3Jlc2VydmVfaW5fc3Ryb29wcztcblxuICAgIC8vIDItb2YtMyB3YWxsZXRzIGhhdmUgYSBtaW5pbXVtIHJlc2VydmUgb2YgNXggdGhlIGJhc2UgcmVzZXJ2ZVxuICAgIHJldHVybiA1ICogYmFzZVJlc2VydmU7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNhY3Rpb24gZmVlIGZvciBlYWNoIG9wZXJhdGlvblxuICAgKiBAcmV0dXJucyB0cmFuc2FjdGlvbiBmZWUgaW4gc3Ryb29wc1xuICAgKi9cbiAgYXN5bmMgZ2V0QmFzZVRyYW5zYWN0aW9uRmVlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc2VydmVyID0gbmV3IHN0ZWxsYXIuU2VydmVyKHRoaXMuZ2V0SG9yaXpvblVybCgpKTtcblxuICAgIGNvbnN0IGhvcml6b25MZWRnZXJJbmZvID0gYXdhaXQgc2VydmVyLmxlZGdlcnMoKS5vcmRlcignZGVzYycpLmxpbWl0KDEpLmNhbGwoKTtcblxuICAgIGlmICghaG9yaXpvbkxlZGdlckluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGNvbm5lY3QgdG8gSG9yaXpvbiBmb3IgcmVzZXJ2ZSByZXF1aXJlbWVudCBkYXRhJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvcml6b25MZWRnZXJJbmZvLnJlY29yZHNbMF0uYmFzZV9mZWVfaW5fc3Ryb29wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFkZHJlc3MgaW50byBhZGRyZXNzIGFuZCBtZW1vIGlkXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAgICovXG4gIGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCdNJykpIHtcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRNdXhlZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgICAgY29uc3QgbXV4ZWRBY2NvdW50ID0gdGhpcy5nZXRNdXhlZEFjY291bnQoYWRkcmVzcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYmFzZUFkZHJlc3M6IG11eGVkQWNjb3VudC5iYXNlQWNjb3VudCgpLmFjY291bnRJZCgpLFxuICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgICAgaWQ6IG11eGVkQWNjb3VudC5pZCgpLFxuICAgICAgICAgIG1lbW9JZDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgbXV4ZWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uRGV0YWlscyA9IHVybC5wYXJzZShhZGRyZXNzKTtcbiAgICBjb25zdCBkZXN0aW5hdGlvbkFkZHJlc3MgPSBkZXN0aW5hdGlvbkRldGFpbHMucGF0aG5hbWUgfHwgJyc7XG4gICAgaWYgKCFkZXN0aW5hdGlvbkFkZHJlc3MgfHwgIXN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICAgIC8vIGFkZHJlc3MgZG9lc24ndCBoYXZlIGEgbWVtbyBpZFxuICAgIGlmIChkZXN0aW5hdGlvbkRldGFpbHMucGF0aG5hbWUgPT09IGFkZHJlc3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2VBZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICBpZDogdW5kZWZpbmVkLFxuICAgICAgICBtZW1vSWQ6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFkZXN0aW5hdGlvbkRldGFpbHMucXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeURldGFpbHMgPSBxdWVyeXN0cmluZy5wYXJzZShkZXN0aW5hdGlvbkRldGFpbHMucXVlcnkpO1xuICAgIGlmICghcXVlcnlEZXRhaWxzLm1lbW9JZCkge1xuICAgICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgcHJvcGVydGllcywgdGhlIHF1ZXJ5IGRldGFpbHMgbmVlZCB0byBjb250YWluIHRoZSBtZW1vIGlkIHByb3BlcnR5XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnlEZXRhaWxzLm1lbW9JZCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKFxuICAgICAgICBgbWVtb0lkIG1heSBvbmx5IGJlIGdpdmVuIGF0IG1vc3Qgb25jZSwgYnV0IGZvdW5kICR7cXVlcnlEZXRhaWxzLm1lbW9JZC5sZW5ndGh9IGluc3RhbmNlcyBpbiBhZGRyZXNzICR7YWRkcmVzc31gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHF1ZXJ5RGV0YWlscy5tZW1vSWQpICYmIHF1ZXJ5RGV0YWlscy5tZW1vSWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAvLyB2YWxpZCBhZGRyZXNzZXMgY2FuIG9ubHkgY29udGFpbiBvbmUgbWVtbyBpZFxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzcyAnJHthZGRyZXNzfScsIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBtZW1vSWRgKTtcbiAgICB9XG5cbiAgICBjb25zdCBbbWVtb0lkXSA9IF8uY2FzdEFycmF5KHF1ZXJ5RGV0YWlscy5tZW1vSWQpIHx8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZE1lbW9JZChtZW1vSWQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZE1lbW9JZEVycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICcke2FkZHJlc3N9JywgbWVtb0lkIGlzIG5vdCB2YWxpZGApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBiYXNlQWRkcmVzczogZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgYWRkcmVzczogZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgIG1lbW9JZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuZCByZXR1cm4gYWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWQgb3IgbXV4ZWQgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyBhZGRyZXNzXG4gICAqIEBwYXJhbSBtZW1vSWQgbWVtbyBpZFxuICAgKiBAcmV0dXJucyBhZGRyZXNzIHdpdGggbWVtbyBpZFxuICAgKi9cbiAgbm9ybWFsaXplQWRkcmVzcyh7IGFkZHJlc3MsIG1lbW9JZCB9OiBBZGRyZXNzRGV0YWlscyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZE11eGVkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIGFkZHJlc3M7XG4gICAgfVxuICAgIGlmICghc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhZGRyZXNzIGRldGFpbHM6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgaWYgKG1lbW9JZCAmJiB0aGlzLmlzVmFsaWRNZW1vSWQobWVtb0lkKSkge1xuICAgICAgcmV0dXJuIGAke2FkZHJlc3N9P21lbW9JZD0ke21lbW9JZH1gO1xuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHVibGljIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgdGhlIHB1YiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgICAgIHJldHVybiBhZGRyZXNzID09PSB0aGlzLm5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzc0RldGFpbHMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgU3RlbGxhciBBc3NldCBpbiBjb2luOnRva2VuIGZvcm0gKGkuZS4gKHQpeGxtOjxjb2RlPi08aXNzdWVyPilcbiAgICogSWYgdGhlIGFzc2V0IGlzIFhMTSwgcmV0dXJuIHRoZSBjaGFpblxuICAgKiBAcGFyYW0ge3N0ZWxsYXIuQXNzZXR9IGFzc2V0IC0gaW5zdGFuY2Ugb2YgU3RlbGxhciBBc3NldFxuICAgKi9cbiAgZ2V0VG9rZW5OYW1lRnJvbVN0ZWxsYXJBc3NldChhc3NldDogc3RlbGxhci5Bc3NldCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IGFzc2V0LmdldENvZGUoKTtcbiAgICBjb25zdCBpc3N1ZXIgPSBhc3NldC5nZXRJc3N1ZXIoKTtcbiAgICBpZiAoYXNzZXQuaXNOYXRpdmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hhaW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0Q2hhaW4oKX0ke0Jhc2VDb2luLmNvaW5Ub2tlblBhdHRlcm5TZXBhcmF0b3J9JHtjb2RlfSR7WGxtLnRva2VuUGF0dGVyblNlcGFyYXRvcn0ke2lzc3Vlcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIHdoZXRoZXIgYSBzdGVsbGFyIHVzZXJuYW1lIGhhcyB2YWxpZCBmb3JtYXRcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgY2xpZW50IHdoZW4gYSBzdGVsbGFyIGFkZHJlc3MgaXMgYmVpbmcgYWRkZWQgdG8gYSB3YWxsZXRcbiAgICogRXhhbXBsZSBvZiBhIGNvbW1vbiBzdGVsbGFyIHVzZXJuYW1lOiBmb29AYmFyLmJhelxuICAgKiBUaGUgYWJvdmUgZXhhbXBsZSB3b3VsZCByZXN1bHQgaW4gdGhlIFN0ZWxsYXIgYWRkcmVzczogZm9vQGJhci5iYXoqYml0Z28uY29tXG4gICAqXG4gICAqIEBwYXJhbSB1c2VybmFtZSAtIHN0ZWxsYXIgdXNlcm5hbWVcbiAgICogQHJldHVybiB0cnVlIGlmIHN0ZWxsYXIgdXNlcm5hbWUgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRTdGVsbGFyVXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXlthLXowLTlcXC1fLitAXSskLy50ZXN0KHVzZXJuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gaW5zdGFuY2Ugb2YgRmVkZXJhdGlvblNlcnZlciBmb3IgQml0R28gbG9va3Vwc1xuICAgKlxuICAgKiBAcmV0dXJucyBpbnN0YW5jZSBvZiBCaXRHbyBGZWRlcmF0aW9uIFNlcnZlclxuICAgKi9cbiAgZ2V0Qml0R29GZWRlcmF0aW9uU2VydmVyKCk6IHN0ZWxsYXIuRmVkZXJhdGlvblNlcnZlciB7XG4gICAgLy8gSWRlbnRpZnkgdGhlIFVSSSBzY2hlbWUgaW4gY2FzZSB3ZSBuZWVkIHRvIGFsbG93IGNvbm5lY3RpbmcgdG8gSFRUUCBzZXJ2ZXIuXG4gICAgY29uc3QgaXNOb25TZWN1cmVFbnYgPSAhXy5zdGFydHNXaXRoKGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5lbnZdLnVyaSwgJ2h0dHBzJyk7XG4gICAgY29uc3QgZmVkZXJhdGlvblNlcnZlck9wdGlvbnMgPSB7IGFsbG93SHR0cDogaXNOb25TZWN1cmVFbnYgfTtcbiAgICByZXR1cm4gbmV3IHN0ZWxsYXIuRmVkZXJhdGlvblNlcnZlcih0aGlzLmdldEZlZGVyYXRpb25TZXJ2ZXJVcmwoKSwgJ2JpdGdvLmNvbScsIGZlZGVyYXRpb25TZXJ2ZXJPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGZlZGVyYXRpb24gbG9va3Vwc1xuICAgKiBPdXIgZmVkZXJhdGlvbiBzZXJ2ZXIgaGFuZGxlcyBsb29rdXBzIGZvciBiaXRnbyBhcyB3ZWxsIGFzIGZvciBvdGhlciBmZWRlcmF0aW9uIGRvbWFpbnNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IFthZGRyZXNzXSAtIGFkZHJlc3MgdG8gbG9vayB1cFxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2FjY291bnRJZF0gLSBhY2NvdW50IGlkIHRvIGxvb2sgdXBcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmVkZXJhdGlvbkxvb2t1cCh7XG4gICAgYWRkcmVzcyxcbiAgICBhY2NvdW50SWQsXG4gIH06IHtcbiAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgIGFjY291bnRJZD86IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RlbGxhci5GZWRlcmF0aW9uU2VydmVyLlJlY29yZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWRlcmF0aW9uU2VydmVyID0gdGhpcy5nZXRCaXRHb0ZlZGVyYXRpb25TZXJ2ZXIoKTtcbiAgICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmZWRlcmF0aW9uU2VydmVyLnJlc29sdmVBZGRyZXNzKGFkZHJlc3MpO1xuICAgICAgfSBlbHNlIGlmIChhY2NvdW50SWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZlZGVyYXRpb25TZXJ2ZXIucmVzb2x2ZUFjY291bnRJZChhY2NvdW50SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFyZ3VtZW50IC0gbXVzdCBwcm92aWRlIFN0ZWxsYXIgYWRkcmVzcyBvciBhY2NvdW50IGlkJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBfLmdldChlLCAncmVzcG9uc2UuZGF0YS5kZXRhaWwnKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgU3RlbGxhckZlZGVyYXRpb25Vc2VyTm90Rm91bmRFcnJvcihlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHJlc29sdmUgYSBzdGVsbGFyIGFkZHJlc3MgaW50byBhIHN0ZWxsYXIgYWNjb3VudFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIHN0ZWxsYXIgYWRkcmVzcyB0byBsb29rIGZvclxuICAgKi9cbiAgYXN5bmMgZmVkZXJhdGlvbkxvb2t1cEJ5TmFtZShhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPHN0ZWxsYXIuRmVkZXJhdGlvblNlcnZlci5SZWNvcmQ+IHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBTdGVsbGFyIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mZWRlcmF0aW9uTG9va3VwKHsgYWRkcmVzcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHJlc29sdmUgYW4gYWNjb3VudCBpZCBpbnRvIGEgc3RlbGxhciBhY2NvdW50XG4gICAqIE9ubHkgd29ya3MgZm9yIGFjY291bnRzIHRoYXQgY2FuIGJlIHJlc29sdmVkIGJ5IG91ciBmZWRlcmF0aW9uIHNlcnZlclxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWNjb3VudElkIC0gc3RlbGxhciBhY2NvdW50IGlkXG4gICAqL1xuICBhc3luYyBmZWRlcmF0aW9uTG9va3VwQnlBY2NvdW50SWQoYWNjb3VudElkOiBzdHJpbmcpOiBQcm9taXNlPHN0ZWxsYXIuRmVkZXJhdGlvblNlcnZlci5SZWNvcmQ+IHtcbiAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIFN0ZWxsYXIgYWNjb3VudCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5mZWRlcmF0aW9uTG9va3VwKHsgYWNjb3VudElkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFkZHJlc3MgaXMgYSB2YWxpZCBYTE0gYWRkcmVzcywgYW5kIHRoZW4gbWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIHJvb3QgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3Mge1N0cmluZ30gdGhlIGFkZHJlc3MgdG8gdmVyaWZ5XG4gICAqIEBwYXJhbSByb290QWRkcmVzcyB7U3RyaW5nfSB0aGUgd2FsbGV0J3Mgcm9vdCBhZGRyZXNzXG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MoeyBhZGRyZXNzLCByb290QWRkcmVzcyB9OiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgICBjb25zdCByb290QWRkcmVzc0RldGFpbHMgPSB0aGlzLmdldEFkZHJlc3NEZXRhaWxzKHJvb3RBZGRyZXNzKTtcbiAgICBpZiAoYWRkcmVzc0RldGFpbHMuYmFzZUFkZHJlc3MgIT09IHJvb3RBZGRyZXNzRGV0YWlscy5hZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihcbiAgICAgICAgYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiAke2FkZHJlc3NEZXRhaWxzLmJhc2VBZGRyZXNzfSB2cyAke3Jvb3RBZGRyZXNzRGV0YWlscy5hZGRyZXNzfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV4dHJhIHBhcmFtZXRlcnMgZm9yIHByZWJ1aWxkaW5nIGEgdHhcbiAgICogU2V0IGVtcHR5IHJlY2lwaWVudHMgYXJyYXkgaW4gdHJ1c3RsaW5lIHR4c1xuICAgKi9cbiAgYXN5bmMgZ2V0RXh0cmFQcmVidWlsZFBhcmFtcyhidWlsZFBhcmFtczogRXh0cmFQcmVidWlsZFBhcmFtc09wdGlvbnMpOiBQcm9taXNlPEJ1aWxkT3B0aW9ucz4ge1xuICAgIGNvbnN0IHBhcmFtczogeyByZWNpcGllbnRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdIH0gPSB7fTtcbiAgICBpZiAoYnVpbGRQYXJhbXMudHlwZSA9PT0gJ3RydXN0bGluZScpIHtcbiAgICAgIHBhcmFtcy5yZWNpcGllbnRzID0gW107XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGluaXRpYXRlUmVjb3ZlcnkocGFyYW1zOiBSZWNvdmVyeU9wdGlvbnMpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIG1ldGhvZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGZ1bmRzIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgQml0R29cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiAtIHVzZXJLZXk6IFtlbmNyeXB0ZWRdIFN0ZWxsYXIgcHJpdmF0ZSBrZXlcbiAgICogLSBiYWNrdXBLZXk6IFtlbmNyeXB0ZWRdIFN0ZWxsYXIgcHJpdmF0ZSBrZXksIG9yIHB1YmxpYyBrZXkgaWYgdGhlIHByaXZhdGUga2V5IGlzIGhlbGQgYnkgYSBLUlMgcHJvdmlkZXJcbiAgICogLSB3YWxsZXRQYXNzcGhyYXNlOiBuZWNlc3NhcnkgaWYgb25lIG9mIHRoZSBwcml2YXRlIGtleXMgaXMgZW5jcnlwdGVkXG4gICAqIC0gcm9vdEFkZHJlc3M6IGJhc2UgYWRkcmVzcyBvZiB0aGUgd2FsbGV0IHRvIHJlY292ZXIgZnVuZHMgZnJvbVxuICAgKiAtIGtyc1Byb3ZpZGVyOiBuZWNlc3NhcnkgaWYgYmFja3VwIGtleSBpcyBoZWxkIGJ5IEtSU1xuICAgKiAtIHJlY292ZXJ5RGVzdGluYXRpb246IHRhcmdldCBhZGRyZXNzIHRvIHNlbmQgcmVjb3ZlcmVkIGZ1bmRzIHRvXG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxSZWNvdmVyeVRyYW5zYWN0aW9uPiB7XG4gICAgLy8gQ2hlY2sgaWYgdW5lbmNyeXB0ZWQgcm9vdCBrZXlzIHdlcmUgcHJvdmlkZWQsIGNvbnZlcnQgdG8gU3RlbGxhciBmb3JtYXQgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleShwYXJhbXMudXNlcktleSkpIHtcbiAgICAgIHBhcmFtcy51c2VyS2V5ID0gVXRpbHMuZW5jb2RlUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwYXJhbXMudXNlcktleS5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfSBlbHNlIGlmIChVdGlscy5pc1ZhbGlkUm9vdFB1YmxpY0tleShwYXJhbXMudXNlcktleSkpIHtcbiAgICAgIHBhcmFtcy51c2VyS2V5ID0gVXRpbHMuZW5jb2RlUHVibGljS2V5KEJ1ZmZlci5mcm9tKHBhcmFtcy51c2VyS2V5LCAnaGV4JykpO1xuICAgIH1cblxuICAgIGlmIChVdGlscy5pc1ZhbGlkUm9vdFByaXZhdGVLZXkocGFyYW1zLmJhY2t1cEtleSkpIHtcbiAgICAgIHBhcmFtcy5iYWNrdXBLZXkgPSBVdGlscy5lbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBhcmFtcy5iYWNrdXBLZXkuc2xpY2UoMCwgNjQpLCAnaGV4JykpO1xuICAgIH0gZWxzZSBpZiAoVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkocGFyYW1zLmJhY2t1cEtleSkpIHtcbiAgICAgIHBhcmFtcy5iYWNrdXBLZXkgPSBVdGlscy5lbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20ocGFyYW1zLmJhY2t1cEtleSwgJ2hleCcpKTtcbiAgICB9XG5cbiAgICAvLyBTdGVsbGFyJ3MgRWQyNTUxOSBwdWJsaWMga2V5cyBzdGFydCB3aXRoIGEgRywgd2hpbGUgcHJpdmF0ZSBrZXlzIHN0YXJ0IHdpdGggYW4gU1xuICAgIGNvbnN0IGlzS3JzUmVjb3ZlcnkgPSBwYXJhbXMuYmFja3VwS2V5LnN0YXJ0c1dpdGgoJ0cnKSAmJiAhcGFyYW1zLnVzZXJLZXkuc3RhcnRzV2l0aCgnRycpO1xuICAgIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9IHBhcmFtcy5iYWNrdXBLZXkuc3RhcnRzV2l0aCgnRycpICYmIHBhcmFtcy51c2VyS2V5LnN0YXJ0c1dpdGgoJ0cnKTtcblxuICAgIGlmIChpc0tyc1JlY292ZXJ5KSB7XG4gICAgICBjaGVja0tyc1Byb3ZpZGVyKHRoaXMsIHBhcmFtcy5rcnNQcm92aWRlcik7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoJ0ludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcyEnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbdXNlcktleSwgYmFja3VwS2V5XSA9IGdldFN0ZWxsYXJLZXlzKHRoaXMuYml0Z28sIHBhcmFtcyk7XG5cbiAgICBpZiAoIXBhcmFtcy5yb290QWRkcmVzcyB8fCAhc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocGFyYW1zLnJvb3RBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdhbGxldCBhZGRyZXNzOiAke3BhcmFtcy5yb290QWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50RGF0YVVybCA9IGAke3RoaXMuZ2V0SG9yaXpvblVybCgpfS9hY2NvdW50cy8ke3BhcmFtcy5yb290QWRkcmVzc31gO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uVXJsID0gYCR7dGhpcy5nZXRIb3Jpem9uVXJsKCl9L2FjY291bnRzLyR7cGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb259YDtcblxuICAgIGxldCBhY2NvdW50RGF0YTtcbiAgICB0cnkge1xuICAgICAgYWNjb3VudERhdGEgPSBhd2FpdCB0b0JpdGdvUmVxdWVzdChyZXF1ZXN0LmdldChhY2NvdW50RGF0YVVybCkpLnJlc3VsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlYWNoIHRoZSBTdGVsbGFyIG5ldHdvcmsgdmlhIEhvcml6b24uJyk7XG4gICAgfVxuXG4gICAgLy8gTm93IGNoZWNrIGlmIHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGlzIGVtcHR5IG9yIG5vdFxuICAgIGxldCB1bmZ1bmRlZERlc3RpbmF0aW9uID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJlcXVlc3QuZ2V0KGRlc3RpbmF0aW9uVXJsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAvLyBJZiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBkb2VzIG5vdCB5ZXQgZXhpc3QsIGhvcml6b24gcmVzcG9uZHMgd2l0aCA0MDRcbiAgICAgICAgdW5mdW5kZWREZXN0aW5hdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFhY2NvdW50RGF0YS5zZXF1ZW5jZSB8fCAhYWNjb3VudERhdGEuYmFsYW5jZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9yaXpvbiBzZXJ2ZXIgZXJyb3IgLSB1bmFibGUgdG8gcmV0cmlldmUgc2VxdWVuY2UgSUQgb3IgYWNjb3VudCBiYWxhbmNlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjb3VudCA9IG5ldyBzdGVsbGFyLkFjY291bnQocGFyYW1zLnJvb3RBZGRyZXNzLCBhY2NvdW50RGF0YS5zZXF1ZW5jZSk7XG5cbiAgICAvLyBTdGVsbGFyIHN1cHBvcnRzIG11bHRpcGxlIGFzc2V0cyBvbiBjaGFpbiwgd2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBiYWxhbmNlcyBlbnRyeSB3aG9zZSB0eXBlIGlzIFwibmF0aXZlXCIgKFhMTSlcbiAgICBjb25zdCBuYXRpdmVCYWxhbmNlSW5mbyA9IGFjY291bnREYXRhLmJhbGFuY2VzLmZpbmQoKGFzc2V0QmFsYW5jZSkgPT4gYXNzZXRCYWxhbmNlWydhc3NldF90eXBlJ10gPT09ICduYXRpdmUnKTtcblxuICAgIGlmICghbmF0aXZlQmFsYW5jZUluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgd2FsbGV0IGhhcyBhIGJhbGFuY2Ugb2YgMCBYTE0sIHJlY292ZXJ5IGFib3J0ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB3YWxsZXRCYWxhbmNlID0gTnVtYmVyKHRoaXMuYmlnVW5pdHNUb0Jhc2VVbml0cyhuYXRpdmVCYWxhbmNlSW5mby5iYWxhbmNlKSk7XG4gICAgY29uc3QgbWluaW11bVJlc2VydmUgPSBhd2FpdCB0aGlzLmdldE1pbmltdW1SZXNlcnZlKCk7XG4gICAgY29uc3QgYmFzZVR4RmVlID0gYXdhaXQgdGhpcy5nZXRCYXNlVHJhbnNhY3Rpb25GZWUoKTtcbiAgICBjb25zdCByZWNvdmVyeUFtb3VudCA9IHdhbGxldEJhbGFuY2UgLSBtaW5pbXVtUmVzZXJ2ZSAtIGJhc2VUeEZlZTtcbiAgICBjb25zdCBmb3JtYXR0ZWRSZWNvdmVyeUFtb3VudCA9IHRoaXMuYmFzZVVuaXRzVG9CaWdVbml0cyhyZWNvdmVyeUFtb3VudCkudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBzdGVsbGFyLlRyYW5zYWN0aW9uQnVpbGRlcihhY2NvdW50LCB7XG4gICAgICBmZWU6IGJhc2VUeEZlZS50b0ZpeGVkKDApLFxuICAgICAgbmV0d29ya1Bhc3NwaHJhc2U6IHRoaXMuZ2V0U3RlbGxhck5ldHdvcmsoKSxcbiAgICB9KTtcbiAgICBjb25zdCBvcGVyYXRpb24gPSB1bmZ1bmRlZERlc3RpbmF0aW9uXG4gICAgICA/IC8vIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFjY291bnRcbiAgICAgICAgc3RlbGxhci5PcGVyYXRpb24uY3JlYXRlQWNjb3VudCh7XG4gICAgICAgICAgZGVzdGluYXRpb246IHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICAgIHN0YXJ0aW5nQmFsYW5jZTogZm9ybWF0dGVkUmVjb3ZlcnlBbW91bnQsXG4gICAgICAgIH0pXG4gICAgICA6IC8vIE90aGVyd2lzZSBpZiB0aGUgYWNjb3VudCBhbHJlYWR5IGV4aXN0cywgd2UgZG8gYSBub3JtYWwgc2VuZFxuICAgICAgICBzdGVsbGFyLk9wZXJhdGlvbi5wYXltZW50KHtcbiAgICAgICAgICBkZXN0aW5hdGlvbjogcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgYXNzZXQ6IHN0ZWxsYXIuQXNzZXQubmF0aXZlKCksXG4gICAgICAgICAgYW1vdW50OiBmb3JtYXR0ZWRSZWNvdmVyeUFtb3VudCxcbiAgICAgICAgfSk7XG4gICAgY29uc3QgdHggPSB0eEJ1aWxkZXIuYWRkT3BlcmF0aW9uKG9wZXJhdGlvbikuc2V0VGltZW91dChzdGVsbGFyLlRpbWVvdXRJbmZpbml0ZSkuYnVpbGQoKTtcblxuICAgIGNvbnN0IGZlZUluZm8gPSB7XG4gICAgICBmZWU6IG5ldyBCaWdOdW1iZXIodHguZmVlKS50b051bWJlcigpLFxuICAgICAgZmVlU3RyaW5nOiB0eC5mZWUsXG4gICAgfTtcblxuICAgIGlmICghaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICB0eC5zaWduKHVzZXJLZXkpO1xuICAgIH1cblxuICAgIGlmICghaXNLcnNSZWNvdmVyeSAmJiAhaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICB0eC5zaWduKGJhY2t1cEtleSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNhY3Rpb246IFJlY292ZXJ5VHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eEJhc2U2NDogWGxtLnR4VG9TdHJpbmcodHgpLFxuICAgICAgcmVjb3ZlcnlBbW91bnQsXG4gICAgfTtcblxuICAgIGlmIChpc0tyc1JlY292ZXJ5KSB7XG4gICAgICB0cmFuc2FjdGlvbi5iYWNrdXBLZXkgPSBwYXJhbXMuYmFja3VwS2V5O1xuICAgIH1cblxuICAgIHRyYW5zYWN0aW9uLmNvaW4gPSB0aGlzLmdldENoYWluKCk7XG4gICAgdHJhbnNhY3Rpb24uZmVlSW5mbyA9IGZlZUluZm87XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQXNzZW1ibGUga2V5Y2hhaW4gYW5kIGhhbGYtc2lnbiBwcmVidWlsdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMudHhQcmVidWlsZCB7T2JqZWN0fSBwcmVidWlsZCBvYmplY3QgcmV0dXJuZWQgYnkgcGxhdGZvcm1cbiAgICogQHBhcmFtIHBhcmFtcy5wcnYge1N0cmluZ30gdXNlciBwcnZcbiAgICogQHJldHVybnMge1Byb21pc2U8SGFsZlNpZ25lZFRyYW5zYWN0aW9uPn1cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPEhhbGZTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZCwgcHJ2IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQgcGFyYW1ldGVyJyk7XG4gICAgfVxuICAgIGlmICghXy5pc09iamVjdCh0eFByZWJ1aWxkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgdHlwZSAke3R5cGVvZiB0eFByZWJ1aWxkfWApO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHBydikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwcnYgcGFyYW1ldGVyIHRvIHNpZ24gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCFfLmlzU3RyaW5nKHBydikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJ2IG11c3QgYmUgYSBzdHJpbmcsIGdvdCB0eXBlICR7dHlwZW9mIHBydn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlQYWlyID0gVXRpbHMuY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHJ2KHBydik7XG4gICAgY29uc3QgdHggPSBuZXcgc3RlbGxhci5UcmFuc2FjdGlvbih0eFByZWJ1aWxkLnR4QmFzZTY0LCB0aGlzLmdldFN0ZWxsYXJOZXR3b3JrKCkpO1xuICAgIHR4LnNpZ24oa2V5UGFpcik7XG4gICAgY29uc3QgdHhCYXNlNjQgPSBYbG0udHhUb1N0cmluZyh0eCk7XG5cbiAgICBjb25zdCB0eXBlID0gdHhQcmVidWlsZD8uYnVpbGRQYXJhbXM/LnR5cGU7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHR4UHJlYnVpbGQ/LmJ1aWxkUGFyYW1zPy5yZWNpcGllbnRzO1xuICAgIGlmICh0eXBlID09PSAnZW5hYmxldG9rZW4nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoYWxmU2lnbmVkOiB7IHR4QmFzZTY0IH0sXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHJlY2lwaWVudHMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBoYWxmU2lnbmVkOiB7IHR4QmFzZTY0IH0gfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIHdhbGxldFBhcmFtcyB3aXRoIGV4dHJhIHBhcmFtcyByZXF1aXJlZCBmb3IgZ2VuZXJhdGluZyBhbiBYTE0gd2FsbGV0XG4gICAqXG4gICAqIFN0ZWxsYXIgd2FsbGV0cyBoYXZlIHRocmVlIGtleWNoYWlucyBvbiB0aGVtLiBUd28gYXJlIGdlbmVyYXRlZCBieSB0aGUgcGxhdGZvcm0sIGFuZCB0aGUgbGFzdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIHVzZXIuXG4gICAqIEluaXRpYWxseSwgd2UgbmVlZCBhIHJvb3QgcHJ2IHRvIGdlbmVyYXRlIHRoZSBhY2NvdW50LCB3aGljaCBtdXN0IGJlIGRpc3RpbmN0IGZyb20gYWxsIHRocmVlIGtleWNoYWlucyBvbiB0aGUgd2FsbGV0LlxuICAgKiBJZiBhIHJvb3QgcHJ2IGlzIG5vdCBwcm92aWRlZCwgYSByYW5kb20gb25lIGlzIGdlbmVyYXRlZC5cbiAgICovXG4gIGFzeW5jIHN1cHBsZW1lbnRHZW5lcmF0ZVdhbGxldChcbiAgICB3YWxsZXRQYXJhbXM6IFN1cHBsZW1lbnRHZW5lcmF0ZVdhbGxldE9wdGlvbnNcbiAgKTogUHJvbWlzZTxTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zPiB7XG4gICAgbGV0IHNlZWQ7XG4gICAgY29uc3Qgcm9vdFBydiA9IHdhbGxldFBhcmFtcy5yb290UHJpdmF0ZUtleTtcbiAgICBpZiAocm9vdFBydikge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRQcnYocm9vdFBydikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb290UHJpdmF0ZUtleSBuZWVkcyB0byBiZSB2YWxpZCBlZDI1NTE5IHNlY3JldCBzZWVkJyk7XG4gICAgICB9XG4gICAgICBzZWVkID0gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVNlY3JldFNlZWQocm9vdFBydik7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhaXIgPSB0aGlzLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgICAvLyBleHRlbmQgdGhlIHdhbGxldCBpbml0aWFsaXphdGlvbiBwYXJhbXNcbiAgICB3YWxsZXRQYXJhbXMucm9vdFByaXZhdGVLZXkgPSBrZXlQYWlyLnBydjtcbiAgICByZXR1cm4gd2FsbGV0UGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gbWVzc2FnZSB3aXRoIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFBydihrZXkucHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHBydjogJHtrZXkucHJ2fWApO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihtZXNzYWdlKSkge1xuICAgICAgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleXBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYoa2V5LnBydik7XG4gICAgcmV0dXJuIGtleXBhaXIuc2lnbihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBzaWduYXR1cmUgZm9yIG1lc3NhZ2UgaXMgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSBwdWIgcHVibGljIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSBzaWduZWQgbWVzc2FnZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQuXG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUocHViOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB8IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFB1YihwdWIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgcHViOiAke3B1Yn1gKTtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIobWVzc2FnZSkpIHtcbiAgICAgIG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlQYWlyID0gVXRpbHMuY3JlYXRlU3RlbGxhcktleXBhaXJGcm9tUHViKHB1Yik7XG4gICAgcmV0dXJuIGtleVBhaXIudmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbi9wYXJzZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgeyB0eEhleCwgdHhCYXNlNjQgfSA9IHBhcmFtcztcbiAgICBsZXQgdHg6IHN0ZWxsYXIuVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXR4SGV4ICYmICF0eEJhc2U2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBsYWluVHJhbnNhY3Rpb24gbWlzc2luZyB0eEhleCBvciB0eEJhc2U2NCBwYXJhbWV0ZXIsIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHR4SGV4KSB7XG4gICAgICAgIHR4ID0gbmV3IHN0ZWxsYXIuVHJhbnNhY3Rpb24oQnVmZmVyLmZyb20odHhIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0JyksIHRoaXMuZ2V0U3RlbGxhck5ldHdvcmsoKSk7XG4gICAgICB9IGVsc2UgaWYgKHR4QmFzZTY0KSB7XG4gICAgICAgIHR4ID0gbmV3IHN0ZWxsYXIuVHJhbnNhY3Rpb24odHhCYXNlNjQsIHRoaXMuZ2V0U3RlbGxhck5ldHdvcmsoKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eEJhc2U2NCBuZWVkcyB0byBiZSBhIHZhbGlkIHR4IGVuY29kZWQgYXMgYmFzZTY0IHN0cmluZycpO1xuICAgIH1cblxuICAgIGlmICghdHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHggbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiBvcmRlciB0byBleHBsYWluIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gdHguaGFzaCgpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIC8vIEluIGEgU3RlbGxhciB0eCwgdGhlIF9tZW1vIHByb3BlcnR5IGlzIGFuIG9iamVjdCB3aXRoIHRoZSBtZXRob2RzOlxuICAgIC8vIHZhbHVlKCkgYW5kIGFybSgpIHRoYXQgcHJvdmlkZSBtZW1vIHZhbHVlIGFuZCB0eXBlLCByZXNwZWN0aXZlbHkuXG4gICAgY29uc3QgbWVtbzogVHJhbnNhY3Rpb25NZW1vID1cbiAgICAgIF8ucmVzdWx0KHR4LCAnX21lbW8udmFsdWUnKSAmJiBfLnJlc3VsdCh0eCwgJ19tZW1vLmFybScpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgdmFsdWU6IChfLnJlc3VsdCh0eCwgJ19tZW1vLnZhbHVlJykgYXMgYW55KS50b1N0cmluZygpLFxuICAgICAgICAgICAgdHlwZTogXy5yZXN1bHQodHgsICdfbWVtby5hcm0nKSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge307XG5cbiAgICBsZXQgc3BlbmRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApOyAvLyBhbW91bnQgb2YgWExNIHVzZWQgaW4gWExNLW9ubHkgdHhzXG4gICAgY29uc3Qgc3BlbmRBbW91bnRzID0ge307IC8vIHRyYWNrIGJvdGggeGxtIGFuZCB0b2tlbiBhbW91bnRzXG4gICAgaWYgKF8uaXNFbXB0eSh0eC5vcGVyYXRpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIG9wZXJhdGlvbnMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvbk91dHB1dFtdID0gW107XG4gICAgY29uc3Qgb3BlcmF0aW9uczogVHJhbnNhY3Rpb25PcGVyYXRpb25bXSA9IFtdOyAvLyBub24tcGF5bWVudCBvcGVyYXRpb25zXG5cbiAgICBfLmZvckVhY2godHgub3BlcmF0aW9ucywgKG9wOiBzdGVsbGFyLk9wZXJhdGlvbikgPT4ge1xuICAgICAgaWYgKG9wLnR5cGUgPT09ICdjcmVhdGVBY2NvdW50JyB8fCBvcC50eXBlID09PSAncGF5bWVudCcpIHtcbiAgICAgICAgLy8gVE9ETyBSZW1vdmUgbWVtb0lkIGZyb20gYWRkcmVzc1xuICAgICAgICAvLyBHZXQgbWVtbyB0byBhdHRhY2ggdG8gYWRkcmVzcywgaWYgdHlwZSBpcyAnaWQnXG4gICAgICAgIGNvbnN0IG1lbW9JZCA9IF8uZ2V0KG1lbW8sICd0eXBlJykgPT09ICdpZCcgJiYgIV8uZ2V0KG1lbW8sICd2YWx1ZScpID8gYD9tZW1vSWQ9JHttZW1vLnZhbHVlfWAgOiAnJztcbiAgICAgICAgbGV0IGFzc2V0O1xuICAgICAgICBpZiAob3AudHlwZSA9PT0gJ3BheW1lbnQnKSB7XG4gICAgICAgICAgaWYgKG9wLmFzc2V0LmdldEFzc2V0VHlwZSgpID09PSAnbGlxdWlkaXR5X3Bvb2xfc2hhcmVzJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFzc2V0IHR5cGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzZXQgPSBvcC5hc3NldCBhcyBzdGVsbGFyLkFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFzc2V0ID0gc3RlbGxhci5Bc3NldC5uYXRpdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2luID0gdGhpcy5nZXRUb2tlbk5hbWVGcm9tU3RlbGxhckFzc2V0KGFzc2V0KTsgLy8gY29pbiBvciB0b2tlbiBpZFxuICAgICAgICBjb25zdCBvdXRwdXQ6IFRyYW5zYWN0aW9uT3V0cHV0ID0ge1xuICAgICAgICAgIGFtb3VudDogdGhpcy5iaWdVbml0c1RvQmFzZVVuaXRzKFxuICAgICAgICAgICAgKG9wIGFzIHN0ZWxsYXIuT3BlcmF0aW9uLkNyZWF0ZUFjY291bnQpLnN0YXJ0aW5nQmFsYW5jZSB8fCAob3AgYXMgc3RlbGxhci5PcGVyYXRpb24uUGF5bWVudCkuYW1vdW50XG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRyZXNzOiBvcC5kZXN0aW5hdGlvbiArIG1lbW9JZCxcbiAgICAgICAgICBjb2luLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzcGVuZEFtb3VudHNbY29pbl0pKSB7XG4gICAgICAgICAgc3BlbmRBbW91bnRzW2NvaW5dID0gc3BlbmRBbW91bnRzW2NvaW5dLnBsdXMob3V0cHV0LmFtb3VudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3BlbmRBbW91bnRzW2NvaW5dID0gbmV3IEJpZ051bWJlcihvdXRwdXQuYW1vdW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXNzZXQuaXNOYXRpdmUoKSkge1xuICAgICAgICAgIHNwZW5kQW1vdW50ID0gc3BlbmRBbW91bnQucGx1cyhvdXRwdXQuYW1vdW50KTtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXRzLnB1c2gob3V0cHV0KTtcbiAgICAgIH0gZWxzZSBpZiAob3AudHlwZSA9PT0gJ2NoYW5nZVRydXN0Jykge1xuICAgICAgICBpZiAob3AubGluZS5nZXRBc3NldFR5cGUoKSA9PT0gJ2xpcXVpZGl0eV9wb29sX3NoYXJlcycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHlwZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gb3AubGluZSBhcyBzdGVsbGFyLkFzc2V0O1xuXG4gICAgICAgIG9wZXJhdGlvbnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogb3AudHlwZSxcbiAgICAgICAgICBjb2luOiB0aGlzLmdldFRva2VuTmFtZUZyb21TdGVsbGFyQXNzZXQoYXNzZXQpLFxuICAgICAgICAgIGFzc2V0LFxuICAgICAgICAgIGxpbWl0OiB0aGlzLmJpZ1VuaXRzVG9CYXNlVW5pdHMob3AubGltaXQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IHNwZW5kQW1vdW50LnRvRml4ZWQoMCk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50cyA9IF8ubWFwVmFsdWVzKHNwZW5kQW1vdW50cywgKGFtb3VudDogQmlnTnVtYmVyKSA9PiBhbW91bnQudG9GaXhlZCgwKSk7XG4gICAgY29uc3QgZmVlID0ge1xuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKHR4LmZlZSkudG9GaXhlZCgwKSxcbiAgICAgIGZlZVJhdGU6IG51bGwsXG4gICAgICBzaXplOiBudWxsLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICdpZCcsXG4gICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAnb3V0cHV0QW1vdW50cycsXG4gICAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgICAnb3V0cHV0cycsXG4gICAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgICAgJ29wZXJhdGlvbnMnLFxuICAgICAgXSxcbiAgICAgIGlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dEFtb3VudHMsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgbWVtbyxcbiAgICAgIGZlZSxcbiAgICAgIG9wZXJhdGlvbnMsXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgYSB0eCBwcmVidWlsZCdzIG9wZXJhdGlvbnMgY29tcGx5IHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKiBAcGFyYW0ge3N0ZWxsYXIuT3BlcmF0aW9ufSBvcGVyYXRpb25zIC0gdHggb3BlcmF0aW9uc1xuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zfSB0eFBhcmFtcyAtIHBhcmFtcyB1c2VkIHRvIGJ1aWxkIHRoZSB0eFxuICAgKi9cbiAgdmVyaWZ5RW5hYmxlVG9rZW5UeE9wZXJhdGlvbnMob3BlcmF0aW9uczogc3RlbGxhci5PcGVyYXRpb25bXSwgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgdHJ1c3RsaW5lT3BlcmF0aW9ucyA9IF8uZmlsdGVyKG9wZXJhdGlvbnMsIFsndHlwZScsICdjaGFuZ2VUcnVzdCddKSBhcyBzdGVsbGFyLk9wZXJhdGlvbi5DaGFuZ2VUcnVzdFtdO1xuICAgIGlmICh0cnVzdGxpbmVPcGVyYXRpb25zLmxlbmd0aCAhPT0gXy5nZXQodHhQYXJhbXMsICdyZWNpcGllbnRzJywgW10pLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBwcmVidWlsZCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCB0cnVzdGxpbmUgb3BlcmF0aW9ucycpO1xuICAgIH1cbiAgICBfLmZvckVhY2godHJ1c3RsaW5lT3BlcmF0aW9ucywgKG9wOiBzdGVsbGFyLk9wZXJhdGlvbikgPT4ge1xuICAgICAgaWYgKG9wLnR5cGUgIT09ICdjaGFuZ2VUcnVzdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFzc2V0IHR5cGUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC5saW5lLmdldEFzc2V0VHlwZSgpID09PSAnbGlxdWlkaXR5X3Bvb2xfc2hhcmVzJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHlwZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgYXNzZXQgPSBvcC5saW5lIGFzIHN0ZWxsYXIuQXNzZXQ7XG4gICAgICBjb25zdCBvcFRva2VuID0gdGhpcy5nZXRUb2tlbk5hbWVGcm9tU3RlbGxhckFzc2V0KGFzc2V0KTtcbiAgICAgIGNvbnN0IHRva2VuVHJ1c3RsaW5lID0gXy5maW5kKHR4UGFyYW1zLnJlY2lwaWVudHMsIChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgLy8gdHJ1c3RsaW5lIHBhcmFtcyB1c2UgbGltaXRzIGluIGJhc2UgdW5pdHNcbiAgICAgICAgY29uc3Qgb3BMaW1pdEJhc2VVbml0cyA9IHRoaXMuYmlnVW5pdHNUb0Jhc2VVbml0cyhvcC5saW1pdCk7XG4gICAgICAgIC8vIEVuYWJsZSB0b2tlbiBsaW1pdCBpcyBzZXQgdG8gWGxtLm1heFRydXN0bGluZUxpbWl0IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIHJlY2lwaWVudC50b2tlbk5hbWUgPT09IG9wVG9rZW4gJiYgb3BMaW1pdEJhc2VVbml0cyA9PT0gWGxtLm1heFRydXN0bGluZUxpbWl0O1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRva2VuVHJ1c3RsaW5lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gcHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgdHJ1c3RsaW5lIHRva2VucycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGEgdHggcHJlYnVpbGQncyBvcGVyYXRpb25zIGNvbXBseSB3aXRoIHRoZSBvcmlnaW5hbCBpbnRlbnRpb25cbiAgICogQHBhcmFtIHtzdGVsbGFyLk9wZXJhdGlvbn0gb3BlcmF0aW9ucyAtIHR4IG9wZXJhdGlvbnNcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc30gdHhQYXJhbXMgLSBwYXJhbXMgdXNlZCB0byBidWlsZCB0aGUgdHhcbiAgICovXG4gIHZlcmlmeVRydXN0bGluZVR4T3BlcmF0aW9ucyhvcGVyYXRpb25zOiBzdGVsbGFyLk9wZXJhdGlvbltdLCB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXMpOiB2b2lkIHtcbiAgICBjb25zdCB0cnVzdGxpbmVPcGVyYXRpb25zID0gXy5maWx0ZXIob3BlcmF0aW9ucywgWyd0eXBlJywgJ2NoYW5nZVRydXN0J10pIGFzIHN0ZWxsYXIuT3BlcmF0aW9uLkNoYW5nZVRydXN0W107XG4gICAgaWYgKHRydXN0bGluZU9wZXJhdGlvbnMubGVuZ3RoICE9PSBfLmdldCh0eFBhcmFtcywgJ3RydXN0bGluZXMnLCBbXSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHRydXN0bGluZSBvcGVyYXRpb25zJyk7XG4gICAgfVxuICAgIF8uZm9yRWFjaCh0cnVzdGxpbmVPcGVyYXRpb25zLCAob3A6IHN0ZWxsYXIuT3BlcmF0aW9uKSA9PiB7XG4gICAgICBpZiAob3AudHlwZSAhPT0gJ2NoYW5nZVRydXN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHlwZScpO1xuICAgICAgfVxuICAgICAgaWYgKG9wLmxpbmUuZ2V0QXNzZXRUeXBlKCkgPT09ICdsaXF1aWRpdHlfcG9vbF9zaGFyZXMnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhc3NldCB0eXBlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhc3NldCA9IG9wLmxpbmUgYXMgc3RlbGxhci5Bc3NldDtcbiAgICAgIGNvbnN0IG9wVG9rZW4gPSB0aGlzLmdldFRva2VuTmFtZUZyb21TdGVsbGFyQXNzZXQoYXNzZXQpO1xuICAgICAgY29uc3QgdG9rZW5UcnVzdGxpbmUgPSBfLmZpbmQodHhQYXJhbXMudHJ1c3RsaW5lcywgKHRydXN0bGluZSkgPT4ge1xuICAgICAgICAvLyB0cnVzdGxpbmUgcGFyYW1zIHVzZSBsaW1pdHMgaW4gYmFzZSB1bml0c1xuICAgICAgICBjb25zdCBvcExpbWl0QmFzZVVuaXRzID0gdGhpcy5iaWdVbml0c1RvQmFzZVVuaXRzKG9wLmxpbWl0KTtcbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgY29uZGl0aW9ucyB0byBjaGVjayBmb3JcbiAgICAgICAgLy8gTGltaXQgd2lsbCBhbHdheXMgYmUgc2V0IGluIHRoZSBvcGVyYXRpb24sIGV2ZW4gaWYgaXQgd2FzIG9taXR0ZWQgZnJvbSB0eFBhcmFtcyBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBBY3Rpb24gaXMgJ2FkZCcgLSBsaW1pdCBpcyBzZXQgdG8gWGxtLm1heFRydXN0bGluZUxpbWl0IGJ5IGRlZmF1bHRcbiAgICAgICAgLy8gMi4gQWN0aW9uIGlzICdyZW1vdmUnIC0gbGltaXQgaXMgc2V0IHRvICcwJ1xuICAgICAgICBjb25zdCBub0xpbWl0ID0gXy5pc1VuZGVmaW5lZCh0cnVzdGxpbmUubGltaXQpO1xuICAgICAgICBjb25zdCBhZGRUcnVzdGxpbmVXaXRoRGVmYXVsdExpbWl0ID0gdHJ1c3RsaW5lLmFjdGlvbiA9PT0gJ2FkZCcgJiYgb3BMaW1pdEJhc2VVbml0cyA9PT0gWGxtLm1heFRydXN0bGluZUxpbWl0O1xuICAgICAgICBjb25zdCByZW1vdmVUcnVzdGxpbmUgPSB0cnVzdGxpbmUuYWN0aW9uID09PSAncmVtb3ZlJyAmJiBvcExpbWl0QmFzZVVuaXRzID09PSAnMCc7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdHJ1c3RsaW5lLnRva2VuID09PSBvcFRva2VuICYmXG4gICAgICAgICAgKHRydXN0bGluZS5saW1pdCA9PT0gb3BMaW1pdEJhc2VVbml0cyB8fCAobm9MaW1pdCAmJiAoYWRkVHJ1c3RsaW5lV2l0aERlZmF1bHRMaW1pdCB8fCByZW1vdmVUcnVzdGxpbmUpKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCF0b2tlblRydXN0bGluZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHRydXN0bGluZSB0b2tlbnMnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbXBsaWVzIHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy50eFByZWJ1aWxkIHByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBwbGF0Zm9ybVxuICAgKiBAcGFyYW0gb3B0aW9ucy50eFByZWJ1aWxkLnR4QmFzZTY0IHByZWJ1aWx0IHRyYW5zYWN0aW9uIGVuY29kZWQgYXMgYmFzZTY0IHN0cmluZ1xuICAgKiBAcGFyYW0gb3B0aW9ucy53YWxsZXQgd2FsbGV0IG9iamVjdCB0byBvYnRhaW4ga2V5cyB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKiBAcGFyYW0gb3B0aW9ucy52ZXJpZmljYXRpb24gc3BlY2lmeWluZyBzb21lIHZlcmlmaWNhdGlvbiBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRpb25zLnZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZyBEaXNhbGxvdyBmZXRjaGluZyBhbnkgZGF0YSBmcm9tIHRoZSBpbnRlcm5ldCBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzXG4gICAqIEBwYXJhbSBvcHRpb25zLnZlcmlmaWNhdGlvbi5rZXljaGFpbnMgUGFzcyBrZXljaGFpbnMgbWFudWFsbHkgcmF0aGVyIHRoYW4gZmV0Y2hpbmcgdGhlbSBieSBpZFxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ob3B0aW9uczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETyBCRy01NjAwIEFkZCBwYXJzZVRyYW5zYWN0aW9uIC8gaW1wcm92ZSB2ZXJpZmljYXRpb25cbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9IH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG5cbiAgICBpZiAoIXR4UHJlYnVpbGQudHhCYXNlNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEJhc2U2NCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4ID0gbmV3IHN0ZWxsYXIuVHJhbnNhY3Rpb24odHhQcmVidWlsZC50eEJhc2U2NCwgdGhpcy5nZXRTdGVsbGFyTmV0d29yaygpKTtcblxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3Qgc3BlY2lmeSBtb3JlIHRoYW4gMSByZWNpcGllbnQnKTtcbiAgICB9XG5cbiAgICAvLyBTdGVsbGFyIHR4cyBhcmUgbWFkZSB1cCBvZiBvcGVyYXRpb25zLiBXZSBvbmx5IGNhcmUgYWJvdXQgQ3JlYXRlIEFjY291bnQgYW5kIFBheW1lbnQgZm9yIHNlbmRpbmcgZnVuZHMuXG4gICAgY29uc3Qgb3V0cHV0T3BlcmF0aW9ucyA9IF8uZmlsdGVyKFxuICAgICAgdHgub3BlcmF0aW9ucyxcbiAgICAgIChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi50eXBlID09PSAnY3JlYXRlQWNjb3VudCcgfHwgb3BlcmF0aW9uLnR5cGUgPT09ICdwYXltZW50J1xuICAgICk7XG5cbiAgICBpZiAodHhQYXJhbXMudHlwZSA9PT0gJ2VuYWJsZXRva2VuJykge1xuICAgICAgdGhpcy52ZXJpZnlFbmFibGVUb2tlblR4T3BlcmF0aW9ucyh0eC5vcGVyYXRpb25zLCB0eFBhcmFtcyk7XG4gICAgfSBlbHNlIGlmICh0eFBhcmFtcy50eXBlID09PSAndHJ1c3RsaW5lJykge1xuICAgICAgdGhpcy52ZXJpZnlUcnVzdGxpbmVUeE9wZXJhdGlvbnModHgub3BlcmF0aW9ucywgdHhQYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXy5pc0VtcHR5KG91dHB1dE9wZXJhdGlvbnMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gcHJlYnVpbGQgZG9lcyBub3QgaGF2ZSBhbnkgb3BlcmF0aW9ucycpO1xuICAgICAgfVxuXG4gICAgICBfLmZvckVhY2godHhQYXJhbXMucmVjaXBpZW50cywgKGV4cGVjdGVkT3V0cHV0LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBleHBlY3RlZE91dHB1dEFkZHJlc3NEZXRhaWxzID0gdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhleHBlY3RlZE91dHB1dC5hZGRyZXNzKTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXRBZGRyZXNzID0gZXhwZWN0ZWRPdXRwdXRBZGRyZXNzRGV0YWlscy5hZGRyZXNzO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRPcGVyYXRpb25zW2luZGV4XSBhcyBzdGVsbGFyLk9wZXJhdGlvbi5QYXltZW50IHwgc3RlbGxhci5PcGVyYXRpb24uQ3JlYXRlQWNjb3VudDtcbiAgICAgICAgaWYgKG91dHB1dC5kZXN0aW5hdGlvbiAhPT0gZXhwZWN0ZWRPdXRwdXRBZGRyZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBwcmVidWlsZCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCByZWNpcGllbnQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0QW1vdW50ID0gbmV3IEJpZ051bWJlcihleHBlY3RlZE91dHB1dC5hbW91bnQpO1xuICAgICAgICAvLyBUaGUgb3V0cHV0IGFtb3VudCBpcyBleHByZXNzZWQgYXMgc3RhcnRpbmdCYWxhbmNlIGluIGNyZWF0ZUFjY291bnQgb3BlcmF0aW9ucyBhbmQgYXMgYW1vdW50IGluIHBheW1lbnQgb3BlcmF0aW9ucy5cbiAgICAgICAgY29uc3Qgb3V0cHV0QW1vdW50U3RyaW5nID0gb3V0cHV0LnR5cGUgPT09ICdjcmVhdGVBY2NvdW50JyA/IG91dHB1dC5zdGFydGluZ0JhbGFuY2UgOiBvdXRwdXQuYW1vdW50O1xuICAgICAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKHRoaXMuYmlnVW5pdHNUb0Jhc2VVbml0cyhvdXRwdXRBbW91bnRTdHJpbmcpKTtcblxuICAgICAgICBpZiAoIW91dHB1dEFtb3VudC5lcShleHBlY3RlZE91dHB1dEFtb3VudCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIGFtb3VudCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgdGhlIHVzZXIgc2lnbmF0dXJlLCBpZiB0aGUgdHggaXMgaGFsZi1zaWduZWRcbiAgICBpZiAoIV8uaXNFbXB0eSh0eC5zaWduYXR1cmVzKSkge1xuICAgICAgY29uc3QgdXNlclNpZ25hdHVyZSA9IHR4LnNpZ25hdHVyZXNbMF0uc2lnbmF0dXJlKCk7XG5cbiAgICAgIC8vIG9idGFpbiB0aGUga2V5Y2hhaW5zIGFuZCBrZXkgc2lnbmF0dXJlc1xuICAgICAgbGV0IGtleWNoYWlucyA9IHZlcmlmaWNhdGlvbi5rZXljaGFpbnM7XG4gICAgICBpZiAoIWtleWNoYWlucyAmJiBkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmZXRjaCBrZXljaGFpbnMgd2l0aG91dCBuZXR3b3JraW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKCFrZXljaGFpbnMpIHtcbiAgICAgICAga2V5Y2hhaW5zID0gYXdhaXQgcHJvbWlzZVByb3BzKHtcbiAgICAgICAgICB1c2VyOiB0aGlzLmtleWNoYWlucygpLmdldCh7IGlkOiB3YWxsZXQua2V5SWRzKClbS2V5SW5kaWNlcy5VU0VSXSB9KSxcbiAgICAgICAgICBiYWNrdXA6IHRoaXMua2V5Y2hhaW5zKCkuZ2V0KHsgaWQ6IHdhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLkJBQ0tVUF0gfSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWtleWNoYWlucyB8fCAha2V5Y2hhaW5zLmJhY2t1cCB8fCAha2V5Y2hhaW5zLnVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdrZXljaGFpbnMgYXJlIHJlcXVpcmVkLCBidXQgY291bGQgbm90IGJlIGZldGNoZWQnKTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KGtleWNoYWlucy5iYWNrdXAucHViKTtcbiAgICAgIGlmICh0aGlzLnZlcmlmeVNpZ25hdHVyZShrZXljaGFpbnMuYmFja3VwLnB1YiwgdHguaGFzaCgpLCB1c2VyU2lnbmF0dXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHdyb25nIGtleScpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGtleWNoYWlucy51c2VyLnB1Yik7XG4gICAgICBpZiAoIXRoaXMudmVyaWZ5U2lnbmF0dXJlKGtleWNoYWlucy51c2VyLnB1YiwgdHguaGFzaCgpLCB1c2VyU2lnbmF0dXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHNpZ25hdHVyZSBpbnZhbGlkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGRvYyAqL1xuICBkZXJpdmVLZXlXaXRoU2VlZCgpOiB7IGRlcml2YXRpb25QYXRoOiBzdHJpbmc7IGtleTogc3RyaW5nIH0ge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ21ldGhvZCBkZXJpdmVLZXlXaXRoU2VlZCBub3Qgc3VwcG9ydGVkIGZvciBlZGRzYSBjdXJ2ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0ZWxsYXItc2RrIGhhcyB0d28gb3ZlcmxvYWRzIGZvciB0b1hEUiwgYW5kIHR5cGVzY3JpcHQgY2FuJ3Qgc2VlbSB0byBmaWd1cmUgb3V0IHRoZVxuICAgKiBjb3JyZWN0IG9uZSB0byB1c2UsIHNvIHdlIGhhdmUgdG8gYmUgdmVyeSBleHBsaWNpdCBhcyB0byB3aGljaCBvbmUgd2Ugd2FudC5cbiAgICogQHBhcmFtIHR4IHRyYW5zYWN0aW9uIHRvIGNvbnZlcnRcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgdHhUb1N0cmluZyA9ICh0eDogc3RlbGxhci5UcmFuc2FjdGlvbik6IHN0cmluZyA9PlxuICAgICh0eC50b0VudmVsb3BlKCkudG9YRFIgYXMgKF86IHN0cmluZykgPT4gc3RyaW5nKSgnYmFzZTY0Jyk7XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNvbmZpZyBmb3IgaG93IHRva2VuIGVuYWJsZW1lbnRzIHdvcmsgZm9yIHRoaXMgY29pblxuICAgKiBAcmV0dXJuc1xuICAgKiAgICByZXF1aXJlc1Rva2VuRW5hYmxlbWVudDogVHJ1ZSBpZiB0b2tlbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvaW5cbiAgICogICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IFRydWUgaWYgbXVsdGlwbGUgdG9rZW5zIGNhbiBiZSBlbmFibGVkIGluIG9uZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk6IFRva2VuRW5hYmxlbWVudENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
969
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3hsbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMENBQTRCO0FBQzVCLHlEQUEyQztBQUMzQyx5Q0FBMkI7QUFDM0Isb0RBQXNDO0FBQ3RDLHFEQUF1QztBQUN2QywrQ0FBeUM7QUFDekMsbURBQXFDO0FBQ3JDLDJDQUEwRDtBQUUxRCxtREEwQjhCO0FBQzlCLGlEQUFxRDtBQUNyRCxxREFBa0Q7QUFpSGxELE1BQWEsR0FBSSxTQUFRLG1CQUFRO0lBUS9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxxQ0FBcUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLGlCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztJQUM3RSxDQUFDO0lB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Q0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixpQkFBaUI7UUFDZixNQUFNLElBQUksdUJBQVksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFVRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBK0I7UUFDcEQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTztZQUNMLHVCQUF1QixFQUFFLElBQUk7WUFDN0IsZ0NBQWdDLEVBQUUsS0FBSztTQUN4QyxDQUFDO0lBQ0osQ0FBQzs7QUF0Z0NILGtCQXVnQ0M7QUFyZ0N3Qix5QkFBcUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxzQ0FBc0M7QUFDMUUsYUFBUyxHQUFXLG9CQUFvQixDQUFDLENBQUMsb0RBQW9EO0FBQzlHLHFEQUFxRDtBQUNyRCwwR0FBMEc7QUFDMUYscUJBQWlCLEdBQVcscUJBQXFCLENBQUM7QUF5K0JsRTs7OztHQUlHO0FBQ2MsY0FBVSxHQUFHLENBQUMsRUFBdUIsRUFBVSxFQUFFLENBQy9ELEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgcXVlcnlzdHJpbmcgZnJvbSAncXVlcnlzdHJpbmcnO1xuaW1wb3J0ICogYXMgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBCaWdOdW1iZXIgfSBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBTdGVsbGFyS2V5UGFpciB9IGZyb20gJy4vbGliL2tleVBhaXInO1xuXG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBjaGVja0tyc1Byb3ZpZGVyLFxuICBjb21tb24sXG4gIEV4dHJhUHJlYnVpbGRQYXJhbXNPcHRpb25zLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBJbnZhbGlkTWVtb0lkRXJyb3IsXG4gIElUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgS2V5SW5kaWNlcyxcbiAgS2V5UGFpcixcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBwcm9taXNlUHJvcHMsXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFN0ZWxsYXJGZWRlcmF0aW9uVXNlck5vdEZvdW5kRXJyb3IsXG4gIFRva2VuRW5hYmxlbWVudENvbmZpZyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNhY3Rpb25QYXJhbXMgYXMgQmFzZVRyYW5zYWN0aW9uUGFyYW1zLFxuICBUcmFuc2FjdGlvblByZWJ1aWxkIGFzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCBhcyBCYXNlVHJhbnNhY3Rpb25PdXRwdXQsXG4gIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zIGFzIEJhc2VWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFdhbGxldCxcbiAgTm90U3VwcG9ydGVkLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyB0b0JpdGdvUmVxdWVzdCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgZ2V0U3RlbGxhcktleXMgfSBmcm9tICcuL2dldFN0ZWxsYXJLZXlzJztcblxuLyoqXG4gKiBYTE0gYWNjb3VudHMgc3VwcG9ydCB2aXJ0dWFsIChtdXhlZCkgYWRkcmVzc2VzXG4gKiBBIGJhc2UgYWRkcmVzcyBzdGFydHMgd2l0aCBcIkdcIiBhbmQgaXMgdGllZCB0byB0aGUgdW5kZXJseWluZyBcInJlYWxcIiBhY2NvdW50XG4gKiBBIG11eGVkIGFkZHJlc3Mgc3RhcnRzIHdpdGggXCJNXCIgYW5kIGNvbWJpbmVzIHRoZSBiYXNlIGFkZHJlc3Mgd2l0aCBhIDY0LWJpdCBpbnRlZ2VyIElEIGluIG9yZGVyIHRvIHByb3ZpZGVcbiAqIGFuIGFsdGVybmF0aXZlIHRvIG1lbW8gaWRzLlxuICovXG5pbnRlcmZhY2UgQWRkcmVzc0RldGFpbHMge1xuICBiYXNlQWRkcmVzczogc3RyaW5nO1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBtZW1vSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBNZW1vIHtcbiAgdHlwZTogc3RlbGxhci5NZW1vVHlwZTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zIHtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICBrcnNQcm92aWRlcj86IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlY292ZXJ5T3B0aW9ucyBleHRlbmRzIEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zIHtcbiAgcm9vdEFkZHJlc3M/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZWNvdmVyeVRyYW5zYWN0aW9uIHtcbiAgdHhCYXNlNjQ6IHN0cmluZztcbiAgcmVjb3ZlcnlBbW91bnQ6IG51bWJlcjtcbiAgY29pbj86IHN0cmluZztcbiAgYmFja3VwS2V5Pzogc3RyaW5nO1xuICB0eEluZm8/OiBhbnk7XG4gIGZlZUluZm8/OiBhbnk7XG59XG5cbmludGVyZmFjZSBCdWlsZE9wdGlvbnMge1xuICB3YWxsZXQ/OiBXYWxsZXQ7XG4gIHJlY2lwaWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W107XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4QmFzZTY0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhhbGZTaWduZWRUcmFuc2FjdGlvbiB7XG4gIGhhbGZTaWduZWQ6IHtcbiAgICB0eEJhc2U2NDogc3RyaW5nO1xuICB9O1xuICByZWNpcGllbnRzPzogSVRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zIHtcbiAgcm9vdFByaXZhdGVLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIHR4QmFzZTY0Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25NZW1vIHtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xuICBsaW1pdD86IHN0cmluZztcbiAgYXNzZXQ/OiBzdGVsbGFyLkFzc2V0O1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25PdXRwdXQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25PdXRwdXQge1xuICBjb2luOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICBtZW1vOiBUcmFuc2FjdGlvbk1lbW87XG59XG5cbmludGVyZmFjZSBWZXJpZnlBZGRyZXNzT3B0aW9ucyBleHRlbmRzIEJhc2VWZXJpZnlBZGRyZXNzT3B0aW9ucyB7XG4gIHJvb3RBZGRyZXNzOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBUcnVzdGxpbmVPcHRpb25zIHtcbiAgdG9rZW46IHN0cmluZztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIGxpbWl0Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25QYXJhbXMgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QYXJhbXMge1xuICB0cnVzdGxpbmVzPzogVHJ1c3RsaW5lT3B0aW9uc1tdO1xufVxuXG5pbnRlcmZhY2UgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcztcbn1cblxuZXhwb3J0IGNsYXNzIFhsbSBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHVibGljIHJlYWRvbmx5IGhvbWVEb21haW46IHN0cmluZztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0b2tlblBhdHRlcm5TZXBhcmF0b3IgPSAnLSc7IC8vIHNlcGFyYXRvciBmb3IgdG9rZW4gY29kZSBhbmQgaXNzdWVyXG4gIHN0YXRpYyByZWFkb25seSBtYXhNZW1vSWQ6IHN0cmluZyA9ICcweEZGRkZGRkZGRkZGRkZGRkYnOyAvLyBtYXggdW5zaWduZWQgNjQtYml0IG51bWJlciA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1XG4gIC8vIG1heCBpbnQ2NCBudW1iZXIgc3VwcG9ydGVkIGJ5IHRoZSBuZXR3b3JrICgyXjYzKS0xXG4gIC8vIFNlZTogaHR0cHM6Ly93d3cuc3RlbGxhci5vcmcvZGV2ZWxvcGVycy9ndWlkZXMvY29uY2VwdHMvYXNzZXRzLmh0bWwjYW1vdW50LXByZWNpc2lvbi1hbmQtcmVwcmVzZW50YXRpb25cbiAgc3RhdGljIHJlYWRvbmx5IG1heFRydXN0bGluZUxpbWl0OiBzdHJpbmcgPSAnOTIyMzM3MjAzNjg1NDc3NTgwNyc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgICB0aGlzLmhvbWVEb21haW4gPSAnYml0Z28uY29tJzsgLy8gdXNlZCBmb3IgcmV2ZXJzZSBmZWRlcmF0aW9uIGxvb2t1cFxuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBYbG0oYml0Z28pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFN0ZWxsYXJOZXR3b3JrKCk6IHN0ZWxsYXIuTmV0d29ya3Mge1xuICAgIHJldHVybiBzdGVsbGFyLk5ldHdvcmtzLlBVQkxJQztcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3IgYmV0d2VlbiB0aGUgYmFzZSB1bml0IGFuZCBpdHMgc21hbGxlc3Qgc3ViZGl2aXNvblxuICAgKi9cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gMWU3O1xuICB9XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRoZSBibG9ja2NoYWluIHdoaWNoIHN1cHBvcnRzIHRoaXMgY29pblxuICAgKi9cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3hsbSc7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhlIGNvaW4gZmFtaWx5XG4gICAqL1xuICBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3hsbSc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGxldGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGlzIGNvaW5cbiAgICovXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdTdGVsbGFyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcmwgYXQgd2hpY2ggdGhlIHN0ZWxsYXIgZmVkZXJhdGlvbiBzZXJ2ZXIgY2FuIGJlIHJlYWNoZWRcbiAgICovXG4gIGdldEZlZGVyYXRpb25TZXJ2ZXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5zdGVsbGFyRmVkZXJhdGlvblNlcnZlclVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcmwgYXQgd2hpY2ggaG9yaXpvbiBjYW4gYmUgcmVhY2hlZFxuICAgKi9cbiAgZ2V0SG9yaXpvblVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnaHR0cHM6Ly9ob3Jpem9uLnN0ZWxsYXIub3JnJztcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZG9jICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgU3RlbGxhcktleVBhaXIoeyBzZWVkIH0pIDogbmV3IFN0ZWxsYXJLZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7IHB1Yjoga2V5cy5wdWIsIHBydjoga2V5cy5wcnYgfTtcbiAgfVxuXG4gIGdlbmVyYXRlUm9vdEtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN0ZWxsYXJLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBTdGVsbGFyS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXModHJ1ZSk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcHJ2OiBrZXlzLnBydiArIGtleXMucHViLCBwdWI6IGtleXMucHViIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGVuY29kZWQgZWQyNTUxOSBwdWJsaWMga2V5IGZyb20gcmF3IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHB1YiBSYXcgcHVibGljIGtleVxuICAgKiBAcmV0dXJucyBFbmNvZGVkIHB1YmxpYyBrZXlcbiAgICovXG4gIGdldFB1YkZyb21SYXcocHViOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5lbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbmNvZGVkIGVkMjU1MTkgcHJpdmF0ZSBrZXkgZnJvbSByYXcgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gcHJ2IFJhdyBwcml2YXRlIGtleVxuICAgKiBAcmV0dXJucyBFbmNvZGVkIHByaXZhdGUga2V5XG4gICAqL1xuICBnZXRQcnZGcm9tUmF3KHBydjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYsICdoZXgnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGlucHV0IGlzIHZhbGlkIHB1YmxpYyBrZXkgZm9yIHRoZSBjb2luLlxuICAgKlxuICAgKiBAcGFyYW0gcHViIHRoZSBwdWIgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBTdGVsbGFyJ3MgdmFsaWRhdGlvbiBtZXRob2Qgb25seSBhbGxvd3Mga2V5cyBpbiBTdGVsbGFyLXNwZWNpZmljIGZvcm1hdCwgd2l0aCBhICdHJyBwcmVmaXhcbiAgICAvLyBXZSBuZWVkIHRvIGFsbG93IGZvciBib3RoIFN0ZWxsYXIgYW5kIHJhdyByb290IGtleXNcbiAgICByZXR1cm4gVXRpbHMuaXNWYWxpZFJvb3RQdWJsaWNLZXkocHViKSB8fCBVdGlscy5pc1ZhbGlkU3RlbGxhclB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwcml2YXRlIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHBydiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gU3RlbGxhcidzIHZhbGlkYXRpb24gbWV0aG9kIG9ubHkgYWxsb3dzIGtleXMgaW4gU3RlbGxhci1zcGVjaWZpYyBmb3JtYXQsIHdpdGggYW4gJ1MnIHByZWZpeFxuICAgIC8vIFdlIG5lZWQgdG8gYWxsb3cgZm9yIGJvdGggU3RlbGxhciBhbmQgcmF3IHJvb3QgcHJpdmF0ZSBrZXlzXG4gICAgcmV0dXJuIFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleShwcnYpIHx8IFV0aWxzLmlzVmFsaWRTdGVsbGFyUHJpdmF0ZUtleShwcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhIG1lbW8gaWQgaXMgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIG1lbW9JZCBtZW1vIGlkXG4gICAqIEByZXR1cm5zIHRydWUgaWYgbWVtbyBpZCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZE1lbW9JZChtZW1vSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBtZW1vSWROdW1iZXI7XG4gICAgdHJ5IHtcbiAgICAgIHN0ZWxsYXIuTWVtby5pZChtZW1vSWQpOyAvLyB0aHJvd3MgaWYgdGhlIHZhbHVlIGlzIG5vdCB2YWxpZCBtZW1vIGlkXG4gICAgICBtZW1vSWROdW1iZXIgPSBuZXcgQmlnTnVtYmVyKG1lbW9JZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vSWROdW1iZXIuZ3RlKDApICYmIG1lbW9JZE51bWJlci5sdChYbG0ubWF4TWVtb0lkKTtcbiAgfVxuXG4gIHN1cHBvcnRzRGVyaXZlS2V5V2l0aFNlZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB3aGV0aGVyIGEgbWVtbyBpcyB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIG1lbW9cbiAgICogQHBhcmFtIHR5cGUgdHlwZSBvZiB0aGUgbWVtb1xuICAgKiBAcmV0dXJucyB0cnVlIGlmIHZhbHVlIGFuZCB0eXBlIGFyZSBhIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkTWVtbyh7IHZhbHVlLCB0eXBlIH06IE1lbW8pOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbHVlIHx8ICF0eXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyB0aHJvd3MgaWYgdGhlIHZhbHVlIGlzIG5vdCB2YWxpZCBmb3IgdGhlIHR5cGVcbiAgICAgIC8vIHZhbGlkIHR5cGVzIGFyZTogJ2lkJywgJ3RleHQnLCAnaGFzaCcsICdyZXR1cm4nXG4gICAgICAvLyBTZWUgaHR0cHM6Ly93d3cuc3RlbGxhci5vcmcvZGV2ZWxvcGVycy9ndWlkZXMvY29uY2VwdHMvdHJhbnNhY3Rpb25zLmh0bWwjbWVtb1xuICAgICAgc3RlbGxhci5NZW1vW3R5cGVdKHZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBpbnN0YW5jZSBvZiBzdGVsbGFyLk11eGVkQWNjb3VudCBmcm9tIE0gYWRkcmVzc1xuICAgKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5zdGVsbGFyLm9yZy9kb2NzL2dsb3NzYXJ5L211eGVkLWFjY291bnRzXG4gICAqL1xuICBnZXRNdXhlZEFjY291bnQoYWRkcmVzczogc3RyaW5nKTogc3RlbGxhci5NdXhlZEFjY291bnQge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc3RlbGxhci5NdXhlZEFjY291bnQuZnJvbUFkZHJlc3MoYWRkcmVzcywgJzAnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbXV4ZWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYSBtdXhlZCBhZGRyZXNzIGlzIHZhbGlkXG4gICAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXJzLnN0ZWxsYXIub3JnL2RvY3MvZ2xvc3NhcnkvbXV4ZWQtYWNjb3VudHNcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc1ZhbGlkTXV4ZWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghXy5pc1N0cmluZyhhZGRyZXNzKSB8fCAhYWRkcmVzcy5zdGFydHNXaXRoKCdNJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gcmV0dXJuIHRydWUgaWYgbXV4ZWQgYWNjb3VudCBpcyB2YWxpZCBvciB0aHJvd1xuICAgICAgcmV0dXJuICEhc3RlbGxhci5NdXhlZEFjY291bnQuZnJvbUFkZHJlc3MoYWRkcmVzcywgJzAnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gYmFsYW5jZSBvZiBhIDItb2YtMyBtdWx0aXNpZyB3YWxsZXRcbiAgICogQHJldHVybnMgbWluaW11bSBiYWxhbmNlIGluIHN0cm9vcHNcbiAgICovXG4gIGFzeW5jIGdldE1pbmltdW1SZXNlcnZlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc2VydmVyID0gbmV3IHN0ZWxsYXIuU2VydmVyKHRoaXMuZ2V0SG9yaXpvblVybCgpKTtcblxuICAgIGNvbnN0IGhvcml6b25MZWRnZXJJbmZvID0gYXdhaXQgc2VydmVyLmxlZGdlcnMoKS5vcmRlcignZGVzYycpLmxpbWl0KDEpLmNhbGwoKTtcblxuICAgIGlmICghaG9yaXpvbkxlZGdlckluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGNvbm5lY3QgdG8gSG9yaXpvbiBmb3IgcmVzZXJ2ZSByZXF1aXJlbWVudCBkYXRhJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVJlc2VydmUgPSBob3Jpem9uTGVkZ2VySW5mby5yZWNvcmRzWzBdLmJhc2VfcmVzZXJ2ZV9pbl9zdHJvb3BzO1xuXG4gICAgLy8gMi1vZi0zIHdhbGxldHMgaGF2ZSBhIG1pbmltdW0gcmVzZXJ2ZSBvZiA1eCB0aGUgYmFzZSByZXNlcnZlXG4gICAgcmV0dXJuIDUgKiBiYXNlUmVzZXJ2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2FjdGlvbiBmZWUgZm9yIGVhY2ggb3BlcmF0aW9uXG4gICAqIEByZXR1cm5zIHRyYW5zYWN0aW9uIGZlZSBpbiBzdHJvb3BzXG4gICAqL1xuICBhc3luYyBnZXRCYXNlVHJhbnNhY3Rpb25GZWUoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBuZXcgc3RlbGxhci5TZXJ2ZXIodGhpcy5nZXRIb3Jpem9uVXJsKCkpO1xuXG4gICAgY29uc3QgaG9yaXpvbkxlZGdlckluZm8gPSBhd2FpdCBzZXJ2ZXIubGVkZ2VycygpLm9yZGVyKCdkZXNjJykubGltaXQoMSkuY2FsbCgpO1xuXG4gICAgaWYgKCFob3Jpem9uTGVkZ2VySW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmFibGUgdG8gY29ubmVjdCB0byBIb3Jpem9uIGZvciByZXNlcnZlIHJlcXVpcmVtZW50IGRhdGEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9yaXpvbkxlZGdlckluZm8ucmVjb3Jkc1swXS5iYXNlX2ZlZV9pbl9zdHJvb3BzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYWRkcmVzcyBpbnRvIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgdGhlIGFkZHJlc3NcbiAgICogQHJldHVybnMgb2JqZWN0IGNvbnRhaW5pbmcgYWRkcmVzcyBhbmQgbWVtbyBpZFxuICAgKi9cbiAgZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzczogc3RyaW5nKTogQWRkcmVzc0RldGFpbHMge1xuICAgIGlmIChhZGRyZXNzLnN0YXJ0c1dpdGgoJ00nKSkge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZE11eGVkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgICBjb25zdCBtdXhlZEFjY291bnQgPSB0aGlzLmdldE11eGVkQWNjb3VudChhZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBiYXNlQWRkcmVzczogbXV4ZWRBY2NvdW50LmJhc2VBY2NvdW50KCkuYWNjb3VudElkKCksXG4gICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICBpZDogbXV4ZWRBY2NvdW50LmlkKCksXG4gICAgICAgICAgbWVtb0lkOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBtdXhlZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVzdGluYXRpb25EZXRhaWxzID0gdXJsLnBhcnNlKGFkZHJlc3MpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IGRlc3RpbmF0aW9uRGV0YWlscy5wYXRobmFtZSB8fCAnJztcbiAgICBpZiAoIWRlc3RpbmF0aW9uQWRkcmVzcyB8fCAhc3RlbGxhci5TdHJLZXkuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoZGVzdGluYXRpb25BZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgLy8gYWRkcmVzcyBkb2Vzbid0IGhhdmUgYSBtZW1vIGlkXG4gICAgaWYgKGRlc3RpbmF0aW9uRGV0YWlscy5wYXRobmFtZSA9PT0gYWRkcmVzcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZUFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICAgIGlkOiB1bmRlZmluZWQsXG4gICAgICAgIG1lbW9JZDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIWRlc3RpbmF0aW9uRGV0YWlscy5xdWVyeSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5RGV0YWlscyA9IHF1ZXJ5c3RyaW5nLnBhcnNlKGRlc3RpbmF0aW9uRGV0YWlscy5xdWVyeSk7XG4gICAgaWYgKCFxdWVyeURldGFpbHMubWVtb0lkKSB7XG4gICAgICAvLyBpZiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzLCB0aGUgcXVlcnkgZGV0YWlscyBuZWVkIHRvIGNvbnRhaW4gdGhlIG1lbW8gaWQgcHJvcGVydHlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShxdWVyeURldGFpbHMubWVtb0lkKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoXG4gICAgICAgIGBtZW1vSWQgbWF5IG9ubHkgYmUgZ2l2ZW4gYXQgbW9zdCBvbmNlLCBidXQgZm91bmQgJHtxdWVyeURldGFpbHMubWVtb0lkLmxlbmd0aH0gaW5zdGFuY2VzIGluIGFkZHJlc3MgJHthZGRyZXNzfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnlEZXRhaWxzLm1lbW9JZCkgJiYgcXVlcnlEZXRhaWxzLm1lbW9JZC5sZW5ndGggIT09IDEpIHtcbiAgICAgIC8vIHZhbGlkIGFkZHJlc3NlcyBjYW4gb25seSBjb250YWluIG9uZSBtZW1vIGlkXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzICcke2FkZHJlc3N9JywgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG1lbW9JZGApO1xuICAgIH1cblxuICAgIGNvbnN0IFttZW1vSWRdID0gXy5jYXN0QXJyYXkocXVlcnlEZXRhaWxzLm1lbW9JZCkgfHwgdW5kZWZpbmVkO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkTWVtb0lkKG1lbW9JZCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkTWVtb0lkRXJyb3IoYGludmFsaWQgYWRkcmVzczogJyR7YWRkcmVzc30nLCBtZW1vSWQgaXMgbm90IHZhbGlkYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJhc2VBZGRyZXNzOiBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICBhZGRyZXNzOiBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICBpZDogdW5kZWZpbmVkLFxuICAgICAgbWVtb0lkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYW5kIHJldHVybiBhZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZCBvciBtdXhlZCBhZGRyZXNzXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIGFkZHJlc3NcbiAgICogQHBhcmFtIG1lbW9JZCBtZW1vIGlkXG4gICAqIEByZXR1cm5zIGFkZHJlc3Mgd2l0aCBtZW1vIGlkXG4gICAqL1xuICBub3JtYWxpemVBZGRyZXNzKHsgYWRkcmVzcywgbWVtb0lkIH06IEFkZHJlc3NEZXRhaWxzKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkTXV4ZWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gYWRkcmVzcztcbiAgICB9XG4gICAgaWYgKCFzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFkZHJlc3MgZGV0YWlsczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAobWVtb0lkICYmIHRoaXMuaXNWYWxpZE1lbW9JZChtZW1vSWQpKSB7XG4gICAgICByZXR1cm4gYCR7YWRkcmVzc30/bWVtb0lkPSR7bWVtb0lkfWA7XG4gICAgfVxuICAgIHJldHVybiBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB0aGlzLmdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgICAgcmV0dXJuIGFkZHJlc3MgPT09IHRoaXMubm9ybWFsaXplQWRkcmVzcyhhZGRyZXNzRGV0YWlscyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBTdGVsbGFyIEFzc2V0IGluIGNvaW46dG9rZW4gZm9ybSAoaS5lLiAodCl4bG06PGNvZGU+LTxpc3N1ZXI+KVxuICAgKiBJZiB0aGUgYXNzZXQgaXMgWExNLCByZXR1cm4gdGhlIGNoYWluXG4gICAqIEBwYXJhbSB7c3RlbGxhci5Bc3NldH0gYXNzZXQgLSBpbnN0YW5jZSBvZiBTdGVsbGFyIEFzc2V0XG4gICAqL1xuICBnZXRUb2tlbk5hbWVGcm9tU3RlbGxhckFzc2V0KGFzc2V0OiBzdGVsbGFyLkFzc2V0KTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gYXNzZXQuZ2V0Q29kZSgpO1xuICAgIGNvbnN0IGlzc3VlciA9IGFzc2V0LmdldElzc3VlcigpO1xuICAgIGlmIChhc3NldC5pc05hdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDaGFpbigpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5nZXRDaGFpbigpfSR7QmFzZUNvaW4uY29pblRva2VuUGF0dGVyblNlcGFyYXRvcn0ke2NvZGV9JHtYbG0udG9rZW5QYXR0ZXJuU2VwYXJhdG9yfSR7aXNzdWVyfWA7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgd2hldGhlciBhIHN0ZWxsYXIgdXNlcm5hbWUgaGFzIHZhbGlkIGZvcm1hdFxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBjbGllbnQgd2hlbiBhIHN0ZWxsYXIgYWRkcmVzcyBpcyBiZWluZyBhZGRlZCB0byBhIHdhbGxldFxuICAgKiBFeGFtcGxlIG9mIGEgY29tbW9uIHN0ZWxsYXIgdXNlcm5hbWU6IGZvb0BiYXIuYmF6XG4gICAqIFRoZSBhYm92ZSBleGFtcGxlIHdvdWxkIHJlc3VsdCBpbiB0aGUgU3RlbGxhciBhZGRyZXNzOiBmb29AYmFyLmJheipiaXRnby5jb21cbiAgICpcbiAgICogQHBhcmFtIHVzZXJuYW1lIC0gc3RlbGxhciB1c2VybmFtZVxuICAgKiBAcmV0dXJuIHRydWUgaWYgc3RlbGxhciB1c2VybmFtZSBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZFN0ZWxsYXJVc2VybmFtZSh1c2VybmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eW2EtejAtOVxcLV8uK0BdKyQvLnRlc3QodXNlcm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBpbnN0YW5jZSBvZiBGZWRlcmF0aW9uU2VydmVyIGZvciBCaXRHbyBsb29rdXBzXG4gICAqXG4gICAqIEByZXR1cm5zIGluc3RhbmNlIG9mIEJpdEdvIEZlZGVyYXRpb24gU2VydmVyXG4gICAqL1xuICBnZXRCaXRHb0ZlZGVyYXRpb25TZXJ2ZXIoKTogc3RlbGxhci5GZWRlcmF0aW9uU2VydmVyIHtcbiAgICAvLyBJZGVudGlmeSB0aGUgVVJJIHNjaGVtZSBpbiBjYXNlIHdlIG5lZWQgdG8gYWxsb3cgY29ubmVjdGluZyB0byBIVFRQIHNlcnZlci5cbiAgICBjb25zdCBpc05vblNlY3VyZUVudiA9ICFfLnN0YXJ0c1dpdGgoY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmVudl0udXJpLCAnaHR0cHMnKTtcbiAgICBjb25zdCBmZWRlcmF0aW9uU2VydmVyT3B0aW9ucyA9IHsgYWxsb3dIdHRwOiBpc05vblNlY3VyZUVudiB9O1xuICAgIHJldHVybiBuZXcgc3RlbGxhci5GZWRlcmF0aW9uU2VydmVyKHRoaXMuZ2V0RmVkZXJhdGlvblNlcnZlclVybCgpLCAnYml0Z28uY29tJywgZmVkZXJhdGlvblNlcnZlck9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gZmVkZXJhdGlvbiBsb29rdXBzXG4gICAqIE91ciBmZWRlcmF0aW9uIHNlcnZlciBoYW5kbGVzIGxvb2t1cHMgZm9yIGJpdGdvIGFzIHdlbGwgYXMgZm9yIG90aGVyIGZlZGVyYXRpb24gZG9tYWluc1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2FkZHJlc3NdIC0gYWRkcmVzcyB0byBsb29rIHVwXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbYWNjb3VudElkXSAtIGFjY291bnQgaWQgdG8gbG9vayB1cFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZWRlcmF0aW9uTG9va3VwKHtcbiAgICBhZGRyZXNzLFxuICAgIGFjY291bnRJZCxcbiAgfToge1xuICAgIGFkZHJlc3M/OiBzdHJpbmc7XG4gICAgYWNjb3VudElkPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxzdGVsbGFyLkZlZGVyYXRpb25TZXJ2ZXIuUmVjb3JkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZlZGVyYXRpb25TZXJ2ZXIgPSB0aGlzLmdldEJpdEdvRmVkZXJhdGlvblNlcnZlcigpO1xuICAgICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZlZGVyYXRpb25TZXJ2ZXIucmVzb2x2ZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgICB9IGVsc2UgaWYgKGFjY291bnRJZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZmVkZXJhdGlvblNlcnZlci5yZXNvbHZlQWNjb3VudElkKGFjY291bnRJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYXJndW1lbnQgLSBtdXN0IHByb3ZpZGUgU3RlbGxhciBhZGRyZXNzIG9yIGFjY291bnQgaWQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IF8uZ2V0KGUsICdyZXNwb25zZS5kYXRhLmRldGFpbCcpO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBTdGVsbGFyRmVkZXJhdGlvblVzZXJOb3RGb3VuZEVycm9yKGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gcmVzb2x2ZSBhIHN0ZWxsYXIgYWRkcmVzcyBpbnRvIGEgc3RlbGxhciBhY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzIC0gc3RlbGxhciBhZGRyZXNzIHRvIGxvb2sgZm9yXG4gICAqL1xuICBhc3luYyBmZWRlcmF0aW9uTG9va3VwQnlOYW1lKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8c3RlbGxhci5GZWRlcmF0aW9uU2VydmVyLlJlY29yZD4ge1xuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIFN0ZWxsYXIgYWRkcmVzcycpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZlZGVyYXRpb25Mb29rdXAoeyBhZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gcmVzb2x2ZSBhbiBhY2NvdW50IGlkIGludG8gYSBzdGVsbGFyIGFjY291bnRcbiAgICogT25seSB3b3JrcyBmb3IgYWNjb3VudHMgdGhhdCBjYW4gYmUgcmVzb2x2ZWQgYnkgb3VyIGZlZGVyYXRpb24gc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBhY2NvdW50SWQgLSBzdGVsbGFyIGFjY291bnQgaWRcbiAgICovXG4gIGFzeW5jIGZlZGVyYXRpb25Mb29rdXBCeUFjY291bnRJZChhY2NvdW50SWQ6IHN0cmluZyk6IFByb21pc2U8c3RlbGxhci5GZWRlcmF0aW9uU2VydmVyLlJlY29yZD4ge1xuICAgIGlmICghYWNjb3VudElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgU3RlbGxhciBhY2NvdW50Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZlZGVyYXRpb25Mb29rdXAoeyBhY2NvdW50SWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBpcyBhIHZhbGlkIFhMTSBhZGRyZXNzLCBhbmQgdGhlbiBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgcm9vdCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyB7U3RyaW5nfSB0aGUgYWRkcmVzcyB0byB2ZXJpZnlcbiAgICogQHBhcmFtIHJvb3RBZGRyZXNzIHtTdHJpbmd9IHRoZSB3YWxsZXQncyByb290IGFkZHJlc3NcbiAgICovXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyh7IGFkZHJlc3MsIHJvb3RBZGRyZXNzIH06IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB0aGlzLmdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgIGNvbnN0IHJvb3RBZGRyZXNzRGV0YWlscyA9IHRoaXMuZ2V0QWRkcmVzc0RldGFpbHMocm9vdEFkZHJlc3MpO1xuICAgIGlmIChhZGRyZXNzRGV0YWlscy5iYXNlQWRkcmVzcyAhPT0gcm9vdEFkZHJlc3NEZXRhaWxzLmFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKFxuICAgICAgICBgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc0RldGFpbHMuYmFzZUFkZHJlc3N9IHZzICR7cm9vdEFkZHJlc3NEZXRhaWxzLmFkZHJlc3N9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZXh0cmEgcGFyYW1ldGVycyBmb3IgcHJlYnVpbGRpbmcgYSB0eFxuICAgKiBTZXQgZW1wdHkgcmVjaXBpZW50cyBhcnJheSBpbiB0cnVzdGxpbmUgdHhzXG4gICAqL1xuICBhc3luYyBnZXRFeHRyYVByZWJ1aWxkUGFyYW1zKGJ1aWxkUGFyYW1zOiBFeHRyYVByZWJ1aWxkUGFyYW1zT3B0aW9ucyk6IFByb21pc2U8QnVpbGRPcHRpb25zPiB7XG4gICAgY29uc3QgcGFyYW1zOiB7IHJlY2lwaWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10gfSA9IHt9O1xuICAgIGlmIChidWlsZFBhcmFtcy50eXBlID09PSAndHJ1c3RsaW5lJykge1xuICAgICAgcGFyYW1zLnJlY2lwaWVudHMgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgaW5pdGlhdGVSZWNvdmVyeShwYXJhbXM6IFJlY292ZXJ5T3B0aW9ucyk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgbWV0aG9kJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHb1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIC0gdXNlcktleTogW2VuY3J5cHRlZF0gU3RlbGxhciBwcml2YXRlIGtleVxuICAgKiAtIGJhY2t1cEtleTogW2VuY3J5cHRlZF0gU3RlbGxhciBwcml2YXRlIGtleSwgb3IgcHVibGljIGtleSBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgaGVsZCBieSBhIEtSUyBwcm92aWRlclxuICAgKiAtIHdhbGxldFBhc3NwaHJhc2U6IG5lY2Vzc2FyeSBpZiBvbmUgb2YgdGhlIHByaXZhdGUga2V5cyBpcyBlbmNyeXB0ZWRcbiAgICogLSByb290QWRkcmVzczogYmFzZSBhZGRyZXNzIG9mIHRoZSB3YWxsZXQgdG8gcmVjb3ZlciBmdW5kcyBmcm9tXG4gICAqIC0ga3JzUHJvdmlkZXI6IG5lY2Vzc2FyeSBpZiBiYWNrdXAga2V5IGlzIGhlbGQgYnkgS1JTXG4gICAqIC0gcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGFyZ2V0IGFkZHJlc3MgdG8gc2VuZCByZWNvdmVyZWQgZnVuZHMgdG9cbiAgICovXG4gIGFzeW5jIHJlY292ZXIocGFyYW1zOiBSZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPFJlY292ZXJ5VHJhbnNhY3Rpb24+IHtcbiAgICAvLyBDaGVjayBpZiB1bmVuY3J5cHRlZCByb290IGtleXMgd2VyZSBwcm92aWRlZCwgY29udmVydCB0byBTdGVsbGFyIGZvcm1hdCBpZiBuZWNlc3NhcnlcbiAgICBpZiAoVXRpbHMuaXNWYWxpZFJvb3RQcml2YXRlS2V5KHBhcmFtcy51c2VyS2V5KSkge1xuICAgICAgcGFyYW1zLnVzZXJLZXkgPSBVdGlscy5lbmNvZGVQcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBhcmFtcy51c2VyS2V5LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgICB9IGVsc2UgaWYgKFV0aWxzLmlzVmFsaWRSb290UHVibGljS2V5KHBhcmFtcy51c2VyS2V5KSkge1xuICAgICAgcGFyYW1zLnVzZXJLZXkgPSBVdGlscy5lbmNvZGVQdWJsaWNLZXkoQnVmZmVyLmZyb20ocGFyYW1zLnVzZXJLZXksICdoZXgnKSk7XG4gICAgfVxuXG4gICAgaWYgKFV0aWxzLmlzVmFsaWRSb290UHJpdmF0ZUtleShwYXJhbXMuYmFja3VwS2V5KSkge1xuICAgICAgcGFyYW1zLmJhY2t1cEtleSA9IFV0aWxzLmVuY29kZVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocGFyYW1zLmJhY2t1cEtleS5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfSBlbHNlIGlmIChVdGlscy5pc1ZhbGlkUm9vdFB1YmxpY0tleShwYXJhbXMuYmFja3VwS2V5KSkge1xuICAgICAgcGFyYW1zLmJhY2t1cEtleSA9IFV0aWxzLmVuY29kZVB1YmxpY0tleShCdWZmZXIuZnJvbShwYXJhbXMuYmFja3VwS2V5LCAnaGV4JykpO1xuICAgIH1cblxuICAgIC8vIFN0ZWxsYXIncyBFZDI1NTE5IHB1YmxpYyBrZXlzIHN0YXJ0IHdpdGggYSBHLCB3aGlsZSBwcml2YXRlIGtleXMgc3RhcnQgd2l0aCBhbiBTXG4gICAgY29uc3QgaXNLcnNSZWNvdmVyeSA9IHBhcmFtcy5iYWNrdXBLZXkuc3RhcnRzV2l0aCgnRycpICYmICFwYXJhbXMudXNlcktleS5zdGFydHNXaXRoKCdHJyk7XG4gICAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gcGFyYW1zLmJhY2t1cEtleS5zdGFydHNXaXRoKCdHJykgJiYgcGFyYW1zLnVzZXJLZXkuc3RhcnRzV2l0aCgnRycpO1xuXG4gICAgaWYgKGlzS3JzUmVjb3ZlcnkpIHtcbiAgICAgIGNoZWNrS3JzUHJvdmlkZXIodGhpcywgcGFyYW1zLmtyc1Byb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcignSW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzIScpO1xuICAgIH1cblxuICAgIGNvbnN0IFt1c2VyS2V5LCBiYWNrdXBLZXldID0gZ2V0U3RlbGxhcktleXModGhpcy5iaXRnbywgcGFyYW1zKTtcblxuICAgIGlmICghcGFyYW1zLnJvb3RBZGRyZXNzIHx8ICFzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwYXJhbXMucm9vdEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2FsbGV0IGFkZHJlc3M6ICR7cGFyYW1zLnJvb3RBZGRyZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnREYXRhVXJsID0gYCR7dGhpcy5nZXRIb3Jpem9uVXJsKCl9L2FjY291bnRzLyR7cGFyYW1zLnJvb3RBZGRyZXNzfWA7XG4gICAgY29uc3QgZGVzdGluYXRpb25VcmwgPSBgJHt0aGlzLmdldEhvcml6b25VcmwoKX0vYWNjb3VudHMvJHtwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbn1gO1xuXG4gICAgbGV0IGFjY291bnREYXRhO1xuICAgIHRyeSB7XG4gICAgICBhY2NvdW50RGF0YSA9IGF3YWl0IHRvQml0Z29SZXF1ZXN0KHJlcXVlc3QuZ2V0KGFjY291bnREYXRhVXJsKSkucmVzdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVhY2ggdGhlIFN0ZWxsYXIgbmV0d29yayB2aWEgSG9yaXpvbi4nKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgY2hlY2sgaWYgdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgaXMgZW1wdHkgb3Igbm90XG4gICAgbGV0IHVuZnVuZGVkRGVzdGluYXRpb24gPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmVxdWVzdC5nZXQoZGVzdGluYXRpb25VcmwpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIC8vIElmIHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGRvZXMgbm90IHlldCBleGlzdCwgaG9yaXpvbiByZXNwb25kcyB3aXRoIDQwNFxuICAgICAgICB1bmZ1bmRlZERlc3RpbmF0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFjY291bnREYXRhLnNlcXVlbmNlIHx8ICFhY2NvdW50RGF0YS5iYWxhbmNlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIb3Jpem9uIHNlcnZlciBlcnJvciAtIHVuYWJsZSB0byByZXRyaWV2ZSBzZXF1ZW5jZSBJRCBvciBhY2NvdW50IGJhbGFuY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gbmV3IHN0ZWxsYXIuQWNjb3VudChwYXJhbXMucm9vdEFkZHJlc3MsIGFjY291bnREYXRhLnNlcXVlbmNlKTtcblxuICAgIC8vIFN0ZWxsYXIgc3VwcG9ydHMgbXVsdGlwbGUgYXNzZXRzIG9uIGNoYWluLCB3ZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGJhbGFuY2VzIGVudHJ5IHdob3NlIHR5cGUgaXMgXCJuYXRpdmVcIiAoWExNKVxuICAgIGNvbnN0IG5hdGl2ZUJhbGFuY2VJbmZvID0gYWNjb3VudERhdGEuYmFsYW5jZXMuZmluZCgoYXNzZXRCYWxhbmNlKSA9PiBhc3NldEJhbGFuY2VbJ2Fzc2V0X3R5cGUnXSA9PT0gJ25hdGl2ZScpO1xuXG4gICAgaWYgKCFuYXRpdmVCYWxhbmNlSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCB3YWxsZXQgaGFzIGEgYmFsYW5jZSBvZiAwIFhMTSwgcmVjb3ZlcnkgYWJvcnRlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHdhbGxldEJhbGFuY2UgPSBOdW1iZXIodGhpcy5iaWdVbml0c1RvQmFzZVVuaXRzKG5hdGl2ZUJhbGFuY2VJbmZvLmJhbGFuY2UpKTtcbiAgICBjb25zdCBtaW5pbXVtUmVzZXJ2ZSA9IGF3YWl0IHRoaXMuZ2V0TWluaW11bVJlc2VydmUoKTtcbiAgICBjb25zdCBiYXNlVHhGZWUgPSBhd2FpdCB0aGlzLmdldEJhc2VUcmFuc2FjdGlvbkZlZSgpO1xuICAgIGNvbnN0IHJlY292ZXJ5QW1vdW50ID0gd2FsbGV0QmFsYW5jZSAtIG1pbmltdW1SZXNlcnZlIC0gYmFzZVR4RmVlO1xuICAgIGNvbnN0IGZvcm1hdHRlZFJlY292ZXJ5QW1vdW50ID0gdGhpcy5iYXNlVW5pdHNUb0JpZ1VuaXRzKHJlY292ZXJ5QW1vdW50KS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IHN0ZWxsYXIuVHJhbnNhY3Rpb25CdWlsZGVyKGFjY291bnQsIHtcbiAgICAgIGZlZTogYmFzZVR4RmVlLnRvRml4ZWQoMCksXG4gICAgICBuZXR3b3JrUGFzc3BocmFzZTogdGhpcy5nZXRTdGVsbGFyTmV0d29yaygpLFxuICAgIH0pO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHVuZnVuZGVkRGVzdGluYXRpb25cbiAgICAgID8gLy8gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYWNjb3VudFxuICAgICAgICBzdGVsbGFyLk9wZXJhdGlvbi5jcmVhdGVBY2NvdW50KHtcbiAgICAgICAgICBkZXN0aW5hdGlvbjogcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgc3RhcnRpbmdCYWxhbmNlOiBmb3JtYXR0ZWRSZWNvdmVyeUFtb3VudCxcbiAgICAgICAgfSlcbiAgICAgIDogLy8gT3RoZXJ3aXNlIGlmIHRoZSBhY2NvdW50IGFscmVhZHkgZXhpc3RzLCB3ZSBkbyBhIG5vcm1hbCBzZW5kXG4gICAgICAgIHN0ZWxsYXIuT3BlcmF0aW9uLnBheW1lbnQoe1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbixcbiAgICAgICAgICBhc3NldDogc3RlbGxhci5Bc3NldC5uYXRpdmUoKSxcbiAgICAgICAgICBhbW91bnQ6IGZvcm1hdHRlZFJlY292ZXJ5QW1vdW50LFxuICAgICAgICB9KTtcbiAgICBjb25zdCB0eCA9IHR4QnVpbGRlci5hZGRPcGVyYXRpb24ob3BlcmF0aW9uKS5zZXRUaW1lb3V0KHN0ZWxsYXIuVGltZW91dEluZmluaXRlKS5idWlsZCgpO1xuXG4gICAgY29uc3QgZmVlSW5mbyA9IHtcbiAgICAgIGZlZTogbmV3IEJpZ051bWJlcih0eC5mZWUpLnRvTnVtYmVyKCksXG4gICAgICBmZWVTdHJpbmc6IHR4LmZlZSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIHR4LnNpZ24odXNlcktleSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0tyc1JlY292ZXJ5ICYmICFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIHR4LnNpZ24oYmFja3VwS2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbjogUmVjb3ZlcnlUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR4QmFzZTY0OiBYbG0udHhUb1N0cmluZyh0eCksXG4gICAgICByZWNvdmVyeUFtb3VudCxcbiAgICB9O1xuXG4gICAgaWYgKGlzS3JzUmVjb3ZlcnkpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXk7XG4gICAgfVxuXG4gICAgdHJhbnNhY3Rpb24uY29pbiA9IHRoaXMuZ2V0Q2hhaW4oKTtcbiAgICB0cmFuc2FjdGlvbi5mZWVJbmZvID0gZmVlSW5mbztcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NlbWJsZSBrZXljaGFpbiBhbmQgaGFsZi1zaWduIHByZWJ1aWx0IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIHtPYmplY3R9IHByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBwbGF0Zm9ybVxuICAgKiBAcGFyYW0gcGFyYW1zLnBydiB7U3RyaW5nfSB1c2VyIHBydlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxIYWxmU2lnbmVkVHJhbnNhY3Rpb24+fVxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8SGFsZlNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkLCBwcnYgfSA9IHBhcmFtcztcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHR4UHJlYnVpbGQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHhQcmVidWlsZCBwYXJhbWV0ZXInKTtcbiAgICB9XG4gICAgaWYgKCFfLmlzT2JqZWN0KHR4UHJlYnVpbGQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHR4UHJlYnVpbGQgbXVzdCBiZSBhbiBvYmplY3QsIGdvdCB0eXBlICR7dHlwZW9mIHR4UHJlYnVpbGR9YCk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBydiBwYXJhbWV0ZXIgdG8gc2lnbiB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIV8uaXNTdHJpbmcocHJ2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcnYgbXVzdCBiZSBhIHN0cmluZywgZ290IHR5cGUgJHt0eXBlb2YgcHJ2fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGtleVBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QcnYocHJ2KTtcbiAgICBjb25zdCB0eCA9IG5ldyBzdGVsbGFyLlRyYW5zYWN0aW9uKHR4UHJlYnVpbGQudHhCYXNlNjQsIHRoaXMuZ2V0U3RlbGxhck5ldHdvcmsoKSk7XG4gICAgdHguc2lnbihrZXlQYWlyKTtcbiAgICBjb25zdCB0eEJhc2U2NCA9IFhsbS50eFRvU3RyaW5nKHR4KTtcblxuICAgIGNvbnN0IHR5cGUgPSB0eFByZWJ1aWxkPy5idWlsZFBhcmFtcz8udHlwZTtcbiAgICBjb25zdCByZWNpcGllbnRzID0gdHhQcmVidWlsZD8uYnVpbGRQYXJhbXM/LnJlY2lwaWVudHM7XG4gICAgaWYgKHR5cGUgPT09ICdlbmFibGV0b2tlbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhbGZTaWduZWQ6IHsgdHhCYXNlNjQgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcmVjaXBpZW50cyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IGhhbGZTaWduZWQ6IHsgdHhCYXNlNjQgfSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgd2FsbGV0UGFyYW1zIHdpdGggZXh0cmEgcGFyYW1zIHJlcXVpcmVkIGZvciBnZW5lcmF0aW5nIGFuIFhMTSB3YWxsZXRcbiAgICpcbiAgICogU3RlbGxhciB3YWxsZXRzIGhhdmUgdGhyZWUga2V5Y2hhaW5zIG9uIHRoZW0uIFR3byBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBwbGF0Zm9ybSwgYW5kIHRoZSBsYXN0IGlzIGdlbmVyYXRlZCBieSB0aGUgdXNlci5cbiAgICogSW5pdGlhbGx5LCB3ZSBuZWVkIGEgcm9vdCBwcnYgdG8gZ2VuZXJhdGUgdGhlIGFjY291bnQsIHdoaWNoIG11c3QgYmUgZGlzdGluY3QgZnJvbSBhbGwgdGhyZWUga2V5Y2hhaW5zIG9uIHRoZSB3YWxsZXQuXG4gICAqIElmIGEgcm9vdCBwcnYgaXMgbm90IHByb3ZpZGVkLCBhIHJhbmRvbSBvbmUgaXMgZ2VuZXJhdGVkLlxuICAgKi9cbiAgYXN5bmMgc3VwcGxlbWVudEdlbmVyYXRlV2FsbGV0KFxuICAgIHdhbGxldFBhcmFtczogU3VwcGxlbWVudEdlbmVyYXRlV2FsbGV0T3B0aW9uc1xuICApOiBQcm9taXNlPFN1cHBsZW1lbnRHZW5lcmF0ZVdhbGxldE9wdGlvbnM+IHtcbiAgICBsZXQgc2VlZDtcbiAgICBjb25zdCByb290UHJ2ID0gd2FsbGV0UGFyYW1zLnJvb3RQcml2YXRlS2V5O1xuICAgIGlmIChyb290UHJ2KSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZFBydihyb290UHJ2KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvb3RQcml2YXRlS2V5IG5lZWRzIHRvIGJlIHZhbGlkIGVkMjU1MTkgc2VjcmV0IHNlZWQnKTtcbiAgICAgIH1cbiAgICAgIHNlZWQgPSBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5U2VjcmV0U2VlZChyb290UHJ2KTtcbiAgICB9XG4gICAgY29uc3Qga2V5UGFpciA9IHRoaXMuZ2VuZXJhdGVLZXlQYWlyKHNlZWQpO1xuICAgIC8vIGV4dGVuZCB0aGUgd2FsbGV0IGluaXRpYWxpemF0aW9uIHBhcmFtc1xuICAgIHdhbGxldFBhcmFtcy5yb290UHJpdmF0ZUtleSA9IGtleVBhaXIucHJ2O1xuICAgIHJldHVybiB3YWxsZXRQYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBtZXNzYWdlIHdpdGggcHJpdmF0ZSBrZXlcbiAgICpcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKi9cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uoa2V5OiBLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUHJ2KGtleS5wcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgcHJ2OiAke2tleS5wcnZ9YCk7XG4gICAgfVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG1lc3NhZ2UpKSB7XG4gICAgICBtZXNzYWdlID0gQnVmZmVyLmZyb20obWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5cGFpciA9IFV0aWxzLmNyZWF0ZVN0ZWxsYXJLZXlwYWlyRnJvbVBydihrZXkucHJ2KTtcbiAgICByZXR1cm4ga2V5cGFpci5zaWduKG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHB1YiBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlIHNpZ25lZCBtZXNzYWdlXG4gICAqIEBwYXJhbSBzaWduYXR1cmUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZC5cbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShwdWI6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUHViKHB1YikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdWI6ICR7cHVifWApO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihtZXNzYWdlKSkge1xuICAgICAgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleVBhaXIgPSBVdGlscy5jcmVhdGVTdGVsbGFyS2V5cGFpckZyb21QdWIocHViKTtcbiAgICByZXR1cm4ga2V5UGFpci52ZXJpZnkobWVzc2FnZSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluL3BhcnNlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCB7IHR4SGV4LCB0eEJhc2U2NCB9ID0gcGFyYW1zO1xuICAgIGxldCB0eDogc3RlbGxhci5UcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmICghdHhIZXggJiYgIXR4QmFzZTY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGxhaW5UcmFuc2FjdGlvbiBtaXNzaW5nIHR4SGV4IG9yIHR4QmFzZTY0IHBhcmFtZXRlciwgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZScpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAodHhIZXgpIHtcbiAgICAgICAgdHggPSBuZXcgc3RlbGxhci5UcmFuc2FjdGlvbihCdWZmZXIuZnJvbSh0eEhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKSwgdGhpcy5nZXRTdGVsbGFyTmV0d29yaygpKTtcbiAgICAgIH0gZWxzZSBpZiAodHhCYXNlNjQpIHtcbiAgICAgICAgdHggPSBuZXcgc3RlbGxhci5UcmFuc2FjdGlvbih0eEJhc2U2NCwgdGhpcy5nZXRTdGVsbGFyTmV0d29yaygpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4QmFzZTY0IG5lZWRzIHRvIGJlIGEgdmFsaWQgdHggZW5jb2RlZCBhcyBiYXNlNjQgc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0eCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eCBuZWVkcyB0byBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGV4cGxhaW4gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgaWQgPSB0eC5oYXNoKCkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgLy8gSW4gYSBTdGVsbGFyIHR4LCB0aGUgX21lbW8gcHJvcGVydHkgaXMgYW4gb2JqZWN0IHdpdGggdGhlIG1ldGhvZHM6XG4gICAgLy8gdmFsdWUoKSBhbmQgYXJtKCkgdGhhdCBwcm92aWRlIG1lbW8gdmFsdWUgYW5kIHR5cGUsIHJlc3BlY3RpdmVseS5cbiAgICBjb25zdCBtZW1vOiBUcmFuc2FjdGlvbk1lbW8gPVxuICAgICAgXy5yZXN1bHQodHgsICdfbWVtby52YWx1ZScpICYmIF8ucmVzdWx0KHR4LCAnX21lbW8uYXJtJylcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB2YWx1ZTogKF8ucmVzdWx0KHR4LCAnX21lbW8udmFsdWUnKSBhcyBhbnkpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0eXBlOiBfLnJlc3VsdCh0eCwgJ19tZW1vLmFybScpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fTtcblxuICAgIGxldCBzcGVuZEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7IC8vIGFtb3VudCBvZiBYTE0gdXNlZCBpbiBYTE0tb25seSB0eHNcbiAgICBjb25zdCBzcGVuZEFtb3VudHMgPSB7fTsgLy8gdHJhY2sgYm90aCB4bG0gYW5kIHRva2VuIGFtb3VudHNcbiAgICBpZiAoXy5pc0VtcHR5KHR4Lm9wZXJhdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgb3BlcmF0aW9ucycpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uT3V0cHV0W10gPSBbXTtcbiAgICBjb25zdCBvcGVyYXRpb25zOiBUcmFuc2FjdGlvbk9wZXJhdGlvbltdID0gW107IC8vIG5vbi1wYXltZW50IG9wZXJhdGlvbnNcblxuICAgIF8uZm9yRWFjaCh0eC5vcGVyYXRpb25zLCAob3A6IHN0ZWxsYXIuT3BlcmF0aW9uKSA9PiB7XG4gICAgICBpZiAob3AudHlwZSA9PT0gJ2NyZWF0ZUFjY291bnQnIHx8IG9wLnR5cGUgPT09ICdwYXltZW50Jykge1xuICAgICAgICAvLyBUT0RPIFJlbW92ZSBtZW1vSWQgZnJvbSBhZGRyZXNzXG4gICAgICAgIC8vIEdldCBtZW1vIHRvIGF0dGFjaCB0byBhZGRyZXNzLCBpZiB0eXBlIGlzICdpZCdcbiAgICAgICAgY29uc3QgbWVtb0lkID0gXy5nZXQobWVtbywgJ3R5cGUnKSA9PT0gJ2lkJyAmJiAhXy5nZXQobWVtbywgJ3ZhbHVlJykgPyBgP21lbW9JZD0ke21lbW8udmFsdWV9YCA6ICcnO1xuICAgICAgICBsZXQgYXNzZXQ7XG4gICAgICAgIGlmIChvcC50eXBlID09PSAncGF5bWVudCcpIHtcbiAgICAgICAgICBpZiAob3AuYXNzZXQuZ2V0QXNzZXRUeXBlKCkgPT09ICdsaXF1aWRpdHlfcG9vbF9zaGFyZXMnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHlwZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NldCA9IG9wLmFzc2V0IGFzIHN0ZWxsYXIuQXNzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzZXQgPSBzdGVsbGFyLkFzc2V0Lm5hdGl2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvaW4gPSB0aGlzLmdldFRva2VuTmFtZUZyb21TdGVsbGFyQXNzZXQoYXNzZXQpOyAvLyBjb2luIG9yIHRva2VuIGlkXG4gICAgICAgIGNvbnN0IG91dHB1dDogVHJhbnNhY3Rpb25PdXRwdXQgPSB7XG4gICAgICAgICAgYW1vdW50OiB0aGlzLmJpZ1VuaXRzVG9CYXNlVW5pdHMoXG4gICAgICAgICAgICAob3AgYXMgc3RlbGxhci5PcGVyYXRpb24uQ3JlYXRlQWNjb3VudCkuc3RhcnRpbmdCYWxhbmNlIHx8IChvcCBhcyBzdGVsbGFyLk9wZXJhdGlvbi5QYXltZW50KS5hbW91bnRcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZHJlc3M6IG9wLmRlc3RpbmF0aW9uICsgbWVtb0lkLFxuICAgICAgICAgIGNvaW4sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNwZW5kQW1vdW50c1tjb2luXSkpIHtcbiAgICAgICAgICBzcGVuZEFtb3VudHNbY29pbl0gPSBzcGVuZEFtb3VudHNbY29pbl0ucGx1cyhvdXRwdXQuYW1vdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcGVuZEFtb3VudHNbY29pbl0gPSBuZXcgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhc3NldC5pc05hdGl2ZSgpKSB7XG4gICAgICAgICAgc3BlbmRBbW91bnQgPSBzcGVuZEFtb3VudC5wbHVzKG91dHB1dC5hbW91bnQpO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dHMucHVzaChvdXRwdXQpO1xuICAgICAgfSBlbHNlIGlmIChvcC50eXBlID09PSAnY2hhbmdlVHJ1c3QnKSB7XG4gICAgICAgIGlmIChvcC5saW5lLmdldEFzc2V0VHlwZSgpID09PSAnbGlxdWlkaXR5X3Bvb2xfc2hhcmVzJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhc3NldCB0eXBlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXNzZXQgPSBvcC5saW5lIGFzIHN0ZWxsYXIuQXNzZXQ7XG5cbiAgICAgICAgb3BlcmF0aW9ucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBvcC50eXBlLFxuICAgICAgICAgIGNvaW46IHRoaXMuZ2V0VG9rZW5OYW1lRnJvbVN0ZWxsYXJBc3NldChhc3NldCksXG4gICAgICAgICAgYXNzZXQsXG4gICAgICAgICAgbGltaXQ6IHRoaXMuYmlnVW5pdHNUb0Jhc2VVbml0cyhvcC5saW1pdCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gc3BlbmRBbW91bnQudG9GaXhlZCgwKTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnRzID0gXy5tYXBWYWx1ZXMoc3BlbmRBbW91bnRzLCAoYW1vdW50OiBCaWdOdW1iZXIpID0+IGFtb3VudC50b0ZpeGVkKDApKTtcbiAgICBjb25zdCBmZWUgPSB7XG4gICAgICBmZWU6IG5ldyBCaWdOdW1iZXIodHguZmVlKS50b0ZpeGVkKDApLFxuICAgICAgZmVlUmF0ZTogbnVsbCxcbiAgICAgIHNpemU6IG51bGwsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAgICdvdXRwdXRBbW91bnRzJyxcbiAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAnZmVlJyxcbiAgICAgICAgJ21lbW8nLFxuICAgICAgICAnb3BlcmF0aW9ucycsXG4gICAgICBdLFxuICAgICAgaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0QW1vdW50cyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBtZW1vLFxuICAgICAgZmVlLFxuICAgICAgb3BlcmF0aW9ucyxcbiAgICB9IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHR4IHByZWJ1aWxkJ3Mgb3BlcmF0aW9ucyBjb21wbHkgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uXG4gICAqIEBwYXJhbSB7c3RlbGxhci5PcGVyYXRpb259IG9wZXJhdGlvbnMgLSB0eCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QYXJhbXN9IHR4UGFyYW1zIC0gcGFyYW1zIHVzZWQgdG8gYnVpbGQgdGhlIHR4XG4gICAqL1xuICB2ZXJpZnlFbmFibGVUb2tlblR4T3BlcmF0aW9ucyhvcGVyYXRpb25zOiBzdGVsbGFyLk9wZXJhdGlvbltdLCB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXMpOiB2b2lkIHtcbiAgICBjb25zdCB0cnVzdGxpbmVPcGVyYXRpb25zID0gXy5maWx0ZXIob3BlcmF0aW9ucywgWyd0eXBlJywgJ2NoYW5nZVRydXN0J10pIGFzIHN0ZWxsYXIuT3BlcmF0aW9uLkNoYW5nZVRydXN0W107XG4gICAgaWYgKHRydXN0bGluZU9wZXJhdGlvbnMubGVuZ3RoICE9PSBfLmdldCh0eFBhcmFtcywgJ3JlY2lwaWVudHMnLCBbXSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHRydXN0bGluZSBvcGVyYXRpb25zJyk7XG4gICAgfVxuICAgIF8uZm9yRWFjaCh0cnVzdGxpbmVPcGVyYXRpb25zLCAob3A6IHN0ZWxsYXIuT3BlcmF0aW9uKSA9PiB7XG4gICAgICBpZiAob3AudHlwZSAhPT0gJ2NoYW5nZVRydXN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXNzZXQgdHlwZScpO1xuICAgICAgfVxuICAgICAgaWYgKG9wLmxpbmUuZ2V0QXNzZXRUeXBlKCkgPT09ICdsaXF1aWRpdHlfcG9vbF9zaGFyZXMnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhc3NldCB0eXBlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhc3NldCA9IG9wLmxpbmUgYXMgc3RlbGxhci5Bc3NldDtcbiAgICAgIGNvbnN0IG9wVG9rZW4gPSB0aGlzLmdldFRva2VuTmFtZUZyb21TdGVsbGFyQXNzZXQoYXNzZXQpO1xuICAgICAgY29uc3QgdG9rZW5UcnVzdGxpbmUgPSBfLmZpbmQodHhQYXJhbXMucmVjaXBpZW50cywgKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAvLyB0cnVzdGxpbmUgcGFyYW1zIHVzZSBsaW1pdHMgaW4gYmFzZSB1bml0c1xuICAgICAgICBjb25zdCBvcExpbWl0QmFzZVVuaXRzID0gdGhpcy5iaWdVbml0c1RvQmFzZVVuaXRzKG9wLmxpbWl0KTtcbiAgICAgICAgLy8gRW5hYmxlIHRva2VuIGxpbWl0IGlzIHNldCB0byBYbG0ubWF4VHJ1c3RsaW5lTGltaXQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gcmVjaXBpZW50LnRva2VuTmFtZSA9PT0gb3BUb2tlbiAmJiBvcExpbWl0QmFzZVVuaXRzID09PSBYbG0ubWF4VHJ1c3RsaW5lTGltaXQ7XG4gICAgICB9KTtcbiAgICAgIGlmICghdG9rZW5UcnVzdGxpbmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBwcmVidWlsZCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCB0cnVzdGxpbmUgdG9rZW5zJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoYXQgYSB0eCBwcmVidWlsZCdzIG9wZXJhdGlvbnMgY29tcGx5IHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKiBAcGFyYW0ge3N0ZWxsYXIuT3BlcmF0aW9ufSBvcGVyYXRpb25zIC0gdHggb3BlcmF0aW9uc1xuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zfSB0eFBhcmFtcyAtIHBhcmFtcyB1c2VkIHRvIGJ1aWxkIHRoZSB0eFxuICAgKi9cbiAgdmVyaWZ5VHJ1c3RsaW5lVHhPcGVyYXRpb25zKG9wZXJhdGlvbnM6IHN0ZWxsYXIuT3BlcmF0aW9uW10sIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHRydXN0bGluZU9wZXJhdGlvbnMgPSBfLmZpbHRlcihvcGVyYXRpb25zLCBbJ3R5cGUnLCAnY2hhbmdlVHJ1c3QnXSkgYXMgc3RlbGxhci5PcGVyYXRpb24uQ2hhbmdlVHJ1c3RbXTtcbiAgICBpZiAodHJ1c3RsaW5lT3BlcmF0aW9ucy5sZW5ndGggIT09IF8uZ2V0KHR4UGFyYW1zLCAndHJ1c3RsaW5lcycsIFtdKS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gcHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgdHJ1c3RsaW5lIG9wZXJhdGlvbnMnKTtcbiAgICB9XG4gICAgXy5mb3JFYWNoKHRydXN0bGluZU9wZXJhdGlvbnMsIChvcDogc3RlbGxhci5PcGVyYXRpb24pID0+IHtcbiAgICAgIGlmIChvcC50eXBlICE9PSAnY2hhbmdlVHJ1c3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhc3NldCB0eXBlJyk7XG4gICAgICB9XG4gICAgICBpZiAob3AubGluZS5nZXRBc3NldFR5cGUoKSA9PT0gJ2xpcXVpZGl0eV9wb29sX3NoYXJlcycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFzc2V0IHR5cGUnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFzc2V0ID0gb3AubGluZSBhcyBzdGVsbGFyLkFzc2V0O1xuICAgICAgY29uc3Qgb3BUb2tlbiA9IHRoaXMuZ2V0VG9rZW5OYW1lRnJvbVN0ZWxsYXJBc3NldChhc3NldCk7XG4gICAgICBjb25zdCB0b2tlblRydXN0bGluZSA9IF8uZmluZCh0eFBhcmFtcy50cnVzdGxpbmVzLCAodHJ1c3RsaW5lKSA9PiB7XG4gICAgICAgIC8vIHRydXN0bGluZSBwYXJhbXMgdXNlIGxpbWl0cyBpbiBiYXNlIHVuaXRzXG4gICAgICAgIGNvbnN0IG9wTGltaXRCYXNlVW5pdHMgPSB0aGlzLmJpZ1VuaXRzVG9CYXNlVW5pdHMob3AubGltaXQpO1xuICAgICAgICAvLyBQcmVwYXJlIHRoZSBjb25kaXRpb25zIHRvIGNoZWNrIGZvclxuICAgICAgICAvLyBMaW1pdCB3aWxsIGFsd2F5cyBiZSBzZXQgaW4gdGhlIG9wZXJhdGlvbiwgZXZlbiBpZiBpdCB3YXMgb21pdHRlZCBmcm9tIHR4UGFyYW1zIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEFjdGlvbiBpcyAnYWRkJyAtIGxpbWl0IGlzIHNldCB0byBYbG0ubWF4VHJ1c3RsaW5lTGltaXQgYnkgZGVmYXVsdFxuICAgICAgICAvLyAyLiBBY3Rpb24gaXMgJ3JlbW92ZScgLSBsaW1pdCBpcyBzZXQgdG8gJzAnXG4gICAgICAgIGNvbnN0IG5vTGltaXQgPSBfLmlzVW5kZWZpbmVkKHRydXN0bGluZS5saW1pdCk7XG4gICAgICAgIGNvbnN0IGFkZFRydXN0bGluZVdpdGhEZWZhdWx0TGltaXQgPSB0cnVzdGxpbmUuYWN0aW9uID09PSAnYWRkJyAmJiBvcExpbWl0QmFzZVVuaXRzID09PSBYbG0ubWF4VHJ1c3RsaW5lTGltaXQ7XG4gICAgICAgIGNvbnN0IHJlbW92ZVRydXN0bGluZSA9IHRydXN0bGluZS5hY3Rpb24gPT09ICdyZW1vdmUnICYmIG9wTGltaXRCYXNlVW5pdHMgPT09ICcwJztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0cnVzdGxpbmUudG9rZW4gPT09IG9wVG9rZW4gJiZcbiAgICAgICAgICAodHJ1c3RsaW5lLmxpbWl0ID09PSBvcExpbWl0QmFzZVVuaXRzIHx8IChub0xpbWl0ICYmIChhZGRUcnVzdGxpbmVXaXRoRGVmYXVsdExpbWl0IHx8IHJlbW92ZVRydXN0bGluZSkpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRva2VuVHJ1c3RsaW5lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gcHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgdHJ1c3RsaW5lIHRva2VucycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgY29tcGxpZXMgd2l0aCB0aGUgb3JpZ2luYWwgaW50ZW50aW9uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLnR4UHJlYnVpbGQgcHJlYnVpbGQgb2JqZWN0IHJldHVybmVkIGJ5IHBsYXRmb3JtXG4gICAqIEBwYXJhbSBvcHRpb25zLnR4UHJlYnVpbGQudHhCYXNlNjQgcHJlYnVpbHQgdHJhbnNhY3Rpb24gZW5jb2RlZCBhcyBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBvcHRpb25zLndhbGxldCB3YWxsZXQgb2JqZWN0IHRvIG9idGFpbiBrZXlzIHRvIHZlcmlmeSBhZ2FpbnN0XG4gICAqIEBwYXJhbSBvcHRpb25zLnZlcmlmaWNhdGlvbiBzcGVjaWZ5aW5nIHNvbWUgdmVyaWZpY2F0aW9uIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdGlvbnMudmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nIERpc2FsbG93IGZldGNoaW5nIGFueSBkYXRhIGZyb20gdGhlIGludGVybmV0IGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXNcbiAgICogQHBhcmFtIG9wdGlvbnMudmVyaWZpY2F0aW9uLmtleWNoYWlucyBQYXNzIGtleWNoYWlucyBtYW51YWxseSByYXRoZXIgdGhhbiBmZXRjaGluZyB0aGVtIGJ5IGlkXG4gICAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihvcHRpb25zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBUT0RPIEJHLTU2MDAgQWRkIHBhcnNlVHJhbnNhY3Rpb24gLyBpbXByb3ZlIHZlcmlmaWNhdGlvblxuICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldCwgdmVyaWZpY2F0aW9uID0ge30gfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZGlzYWJsZU5ldHdvcmtpbmcgPSAhIXZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAgIGlmICghdHhQcmVidWlsZC50eEJhc2U2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4QmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSBuZXcgc3RlbGxhci5UcmFuc2FjdGlvbih0eFByZWJ1aWxkLnR4QmFzZTY0LCB0aGlzLmdldFN0ZWxsYXJOZXR3b3JrKCkpO1xuXG4gICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBzcGVjaWZ5IG1vcmUgdGhhbiAxIHJlY2lwaWVudCcpO1xuICAgIH1cblxuICAgIC8vIFN0ZWxsYXIgdHhzIGFyZSBtYWRlIHVwIG9mIG9wZXJhdGlvbnMuIFdlIG9ubHkgY2FyZSBhYm91dCBDcmVhdGUgQWNjb3VudCBhbmQgUGF5bWVudCBmb3Igc2VuZGluZyBmdW5kcy5cbiAgICBjb25zdCBvdXRwdXRPcGVyYXRpb25zID0gXy5maWx0ZXIoXG4gICAgICB0eC5vcGVyYXRpb25zLFxuICAgICAgKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uLnR5cGUgPT09ICdjcmVhdGVBY2NvdW50JyB8fCBvcGVyYXRpb24udHlwZSA9PT0gJ3BheW1lbnQnXG4gICAgKTtcblxuICAgIGlmICh0eFBhcmFtcy50eXBlID09PSAnZW5hYmxldG9rZW4nKSB7XG4gICAgICB0aGlzLnZlcmlmeUVuYWJsZVRva2VuVHhPcGVyYXRpb25zKHR4Lm9wZXJhdGlvbnMsIHR4UGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKHR4UGFyYW1zLnR5cGUgPT09ICd0cnVzdGxpbmUnKSB7XG4gICAgICB0aGlzLnZlcmlmeVRydXN0bGluZVR4T3BlcmF0aW9ucyh0eC5vcGVyYXRpb25zLCB0eFBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzRW1wdHkob3V0cHV0T3BlcmF0aW9ucykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBwcmVidWlsZCBkb2VzIG5vdCBoYXZlIGFueSBvcGVyYXRpb25zJyk7XG4gICAgICB9XG5cbiAgICAgIF8uZm9yRWFjaCh0eFBhcmFtcy5yZWNpcGllbnRzLCAoZXhwZWN0ZWRPdXRwdXQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0QWRkcmVzc0RldGFpbHMgPSB0aGlzLmdldEFkZHJlc3NEZXRhaWxzKGV4cGVjdGVkT3V0cHV0LmFkZHJlc3MpO1xuICAgICAgICBjb25zdCBleHBlY3RlZE91dHB1dEFkZHJlc3MgPSBleHBlY3RlZE91dHB1dEFkZHJlc3NEZXRhaWxzLmFkZHJlc3M7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dE9wZXJhdGlvbnNbaW5kZXhdIGFzIHN0ZWxsYXIuT3BlcmF0aW9uLlBheW1lbnQgfCBzdGVsbGFyLk9wZXJhdGlvbi5DcmVhdGVBY2NvdW50O1xuICAgICAgICBpZiAob3V0cHV0LmRlc3RpbmF0aW9uICE9PSBleHBlY3RlZE91dHB1dEFkZHJlc3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIHByZWJ1aWxkIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIHJlY2lwaWVudCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGV4cGVjdGVkT3V0cHV0LmFtb3VudCk7XG4gICAgICAgIC8vIFRoZSBvdXRwdXQgYW1vdW50IGlzIGV4cHJlc3NlZCBhcyBzdGFydGluZ0JhbGFuY2UgaW4gY3JlYXRlQWNjb3VudCBvcGVyYXRpb25zIGFuZCBhcyBhbW91bnQgaW4gcGF5bWVudCBvcGVyYXRpb25zLlxuICAgICAgICBjb25zdCBvdXRwdXRBbW91bnRTdHJpbmcgPSBvdXRwdXQudHlwZSA9PT0gJ2NyZWF0ZUFjY291bnQnID8gb3V0cHV0LnN0YXJ0aW5nQmFsYW5jZSA6IG91dHB1dC5hbW91bnQ7XG4gICAgICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IG5ldyBCaWdOdW1iZXIodGhpcy5iaWdVbml0c1RvQmFzZVVuaXRzKG91dHB1dEFtb3VudFN0cmluZykpO1xuXG4gICAgICAgIGlmICghb3V0cHV0QW1vdW50LmVxKGV4cGVjdGVkT3V0cHV0QW1vdW50KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gcHJlYnVpbGQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgYW1vdW50Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFZlcmlmeSB0aGUgdXNlciBzaWduYXR1cmUsIGlmIHRoZSB0eCBpcyBoYWxmLXNpZ25lZFxuICAgIGlmICghXy5pc0VtcHR5KHR4LnNpZ25hdHVyZXMpKSB7XG4gICAgICBjb25zdCB1c2VyU2lnbmF0dXJlID0gdHguc2lnbmF0dXJlc1swXS5zaWduYXR1cmUoKTtcblxuICAgICAgLy8gb2J0YWluIHRoZSBrZXljaGFpbnMgYW5kIGtleSBzaWduYXR1cmVzXG4gICAgICBsZXQga2V5Y2hhaW5zID0gdmVyaWZpY2F0aW9uLmtleWNoYWlucztcbiAgICAgIGlmICgha2V5Y2hhaW5zICYmIGRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZldGNoIGtleWNoYWlucyB3aXRob3V0IG5ldHdvcmtpbmcnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWtleWNoYWlucykge1xuICAgICAgICBrZXljaGFpbnMgPSBhd2FpdCBwcm9taXNlUHJvcHMoe1xuICAgICAgICAgIHVzZXI6IHRoaXMua2V5Y2hhaW5zKCkuZ2V0KHsgaWQ6IHdhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLlVTRVJdIH0pLFxuICAgICAgICAgIGJhY2t1cDogdGhpcy5rZXljaGFpbnMoKS5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW0tleUluZGljZXMuQkFDS1VQXSB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgha2V5Y2hhaW5zIHx8ICFrZXljaGFpbnMuYmFja3VwIHx8ICFrZXljaGFpbnMudXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2tleWNoYWlucyBhcmUgcmVxdWlyZWQsIGJ1dCBjb3VsZCBub3QgYmUgZmV0Y2hlZCcpO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQoa2V5Y2hhaW5zLmJhY2t1cC5wdWIpO1xuICAgICAgaWYgKHRoaXMudmVyaWZ5U2lnbmF0dXJlKGtleWNoYWlucy5iYWNrdXAucHViLCB0eC5oYXNoKCksIHVzZXJTaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggd3Jvbmcga2V5Jyk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoa2V5Y2hhaW5zLnVzZXIucHViKTtcbiAgICAgIGlmICghdGhpcy52ZXJpZnlTaWduYXR1cmUoa2V5Y2hhaW5zLnVzZXIucHViLCB0eC5oYXNoKCksIHVzZXJTaWduYXR1cmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gc2lnbmF0dXJlIGludmFsaWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZG9jICovXG4gIGRlcml2ZUtleVdpdGhTZWVkKCk6IHsgZGVyaXZhdGlvblBhdGg6IHN0cmluZzsga2V5OiBzdHJpbmcgfSB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnbWV0aG9kIGRlcml2ZUtleVdpdGhTZWVkIG5vdCBzdXBwb3J0ZWQgZm9yIGVkZHNhIGN1cnZlJyk7XG4gIH1cblxuICAvKipcbiAgICogc3RlbGxhci1zZGsgaGFzIHR3byBvdmVybG9hZHMgZm9yIHRvWERSLCBhbmQgdHlwZXNjcmlwdCBjYW4ndCBzZWVtIHRvIGZpZ3VyZSBvdXQgdGhlXG4gICAqIGNvcnJlY3Qgb25lIHRvIHVzZSwgc28gd2UgaGF2ZSB0byBiZSB2ZXJ5IGV4cGxpY2l0IGFzIHRvIHdoaWNoIG9uZSB3ZSB3YW50LlxuICAgKiBAcGFyYW0gdHggdHJhbnNhY3Rpb24gdG8gY29udmVydFxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyB0eFRvU3RyaW5nID0gKHR4OiBzdGVsbGFyLlRyYW5zYWN0aW9uKTogc3RyaW5nID0+XG4gICAgKHR4LnRvRW52ZWxvcGUoKS50b1hEUiBhcyAoXzogc3RyaW5nKSA9PiBzdHJpbmcpKCdiYXNlNjQnKTtcblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY29uZmlnIGZvciBob3cgdG9rZW4gZW5hYmxlbWVudHMgd29yayBmb3IgdGhpcyBjb2luXG4gICAqIEByZXR1cm5zXG4gICAqICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiBUcnVlIGlmIHRva2VucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgY29pblxuICAgKiAgICBzdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50czogVHJ1ZSBpZiBtdWx0aXBsZSB0b2tlbnMgY2FuIGJlIGVuYWJsZWQgaW4gb25lIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKTogVG9rZW5FbmFibGVtZW50Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZXNUb2tlbkVuYWJsZW1lbnQ6IHRydWUsXG4gICAgICBzdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50czogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-xlm",
3
- "version": "2.0.5-beta.580",
3
+ "version": "2.0.5-beta.582",
4
4
  "description": "BitGo SDK coin library for Xlm",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -40,16 +40,16 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo-beta/sdk-core": "8.2.1-beta.585",
44
- "@bitgo-beta/statics": "15.1.1-beta.588",
43
+ "@bitgo-beta/sdk-core": "8.2.1-beta.587",
44
+ "@bitgo-beta/statics": "15.1.1-beta.590",
45
45
  "bignumber.js": "^9.1.1",
46
46
  "lodash": "^4.17.14",
47
47
  "stellar-sdk": "^10.0.1",
48
48
  "superagent": "^9.0.1"
49
49
  },
50
50
  "devDependencies": {
51
- "@bitgo-beta/sdk-api": "1.10.1-beta.584",
51
+ "@bitgo-beta/sdk-api": "1.10.1-beta.586",
52
52
  "@bitgo-beta/sdk-test": "^8.0.54"
53
53
  },
54
- "gitHead": "fb94adbf9d2c9588e0412c8bee5c773266c6b91a"
54
+ "gitHead": "9b27534af7eb8855d5016b68fc8b47322b14486b"
55
55
  }