@tricoteuses/assemblee 0.26.2 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/loaders.mjs CHANGED
@@ -12,7 +12,7 @@ import { Convert as AmendementsConvert } from "./types/amendements.mjs";
12
12
  import { Convert as DossiersLegislatifsConvert } from "./types/dossiers_legislatifs.mjs";
13
13
  import { Legislature } from "./types/legislatures.mjs";
14
14
  import { Convert as ScrutinsConvert } from "./types/scrutins.mjs";
15
- const documentUidRegex = /^(ACIN|AVCE|AVIS|DECL|ETDI|LETT|PION|PNRE|PRJL|RAPP|RINF)(AN|SN)(R\d+)[LS](\d+)(B|BTA|BTC)(\d+)(-.*)?$/;
15
+ const documentUidRegex = /^(ACIN|AVCE|AVIS|DECL|ETDI|LETT|PION|PNRE|PRJL|RAPP|RINF|RION)(AN|SN)(R\d+)[LS](\d+)(B|BTA|BTC|TAP)(\d+)(-.*)?$/;
16
16
  const dossierUidRegex = /^DL(R\d+)(L\d+)N(\d+)$/;
17
17
  const reunionUidRegex = /^RU(AN|CG|SN)(R\d+)(L\d+)([AS]\d{4})(IDC|IDFL?|IDS)(\d+)$/;
18
18
  const scrutinUidRegex = /^VTAN(R\d+)(L\d+)V(\d+)$/;
@@ -675,4 +675,4 @@ export function pathFromScrutinUid(scrutinsDir, uid) {
675
675
  fs.ensureDirSync(numeroMilliersDir);
676
676
  return path.join(numeroMilliersDir, uid);
677
677
  }
678
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUF5QkwsS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7QUFDQSxNQUFJUSxNQUFNLEdBQUcsV0FBV1IsS0FBSyxDQUFFLENBQUYsQ0FBN0I7QUFDQVEsRUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDL0csTUFBUCxHQUFnQixDQUE5QixDQUFUO0FBQ0EsUUFBTWlILGlCQUFpQixHQUFHbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVa0gsY0FBVixFQUEwQkUsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixDQUFqQixDQUExQixDQUExQjtBQUNBbEosRUFBQUEsRUFBRSxDQUFDb0osYUFBSCxDQUFpQkQsaUJBQWpCO0FBQ0EsU0FBT2xKLElBQUksQ0FBQzRCLElBQUwsQ0FBVXNILGlCQUFWLEVBQTZCeEcsR0FBN0IsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIExvYWQgZGF0YSBmcm9tIGZpbGVzXG5cbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuZXhwb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GKShBTnxTTikoUlxcZCspW0xTXShcXGQrKShCfEJUQXxCVEMpKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl19
678
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUF5QkwsS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7QUFDQSxNQUFJUSxNQUFNLEdBQUcsV0FBV1IsS0FBSyxDQUFFLENBQUYsQ0FBN0I7QUFDQVEsRUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDL0csTUFBUCxHQUFnQixDQUE5QixDQUFUO0FBQ0EsUUFBTWlILGlCQUFpQixHQUFHbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVa0gsY0FBVixFQUEwQkUsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixDQUFqQixDQUExQixDQUExQjtBQUNBbEosRUFBQUEsRUFBRSxDQUFDb0osYUFBSCxDQUFpQkQsaUJBQWpCO0FBQ0EsU0FBT2xKLElBQUksQ0FBQzRCLElBQUwsQ0FBVXNILGlCQUFWLEVBQTZCeEcsR0FBN0IsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIExvYWQgZGF0YSBmcm9tIGZpbGVzXG5cbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuZXhwb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQ3xUQVApKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl19
@@ -110,7 +110,8 @@ export declare enum Code {
110
110
  }
111
111
  export declare enum StatutAdoption {
112
112
  Adoptcom = "ADOPTCOM",
113
- Adoptseance = "ADOPTSEANCE"
113
+ Adoptseance = "ADOPTSEANCE",
114
+ Rejetseance = "REJETSEANCE"
114
115
  }
115
116
  export interface CoSignataires {
116
117
  coSignataire: CoSignataireElement[] | CoSignataireElement;
@@ -157,7 +158,8 @@ export declare enum DocumentDenominationStructurelle {
157
158
  PropositionDeLoi = "Proposition de loi",
158
159
  PropositionDeRésolution = "Proposition de r\u00E9solution",
159
160
  Rapport = "Rapport",
160
- RapportDInformation = "Rapport d'information"
161
+ RapportDInformation = "Rapport d'information",
162
+ Résolution = "R\u00E9solution"
161
163
  }
162
164
  export interface DepotAmendements {
163
165
  amendementsSeance: AmendementsSeance;