@renaissancerentals/renaissance-component 12.2.6 → 12.2.7
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.
|
@@ -86,7 +86,15 @@ const FloorplanSection = _ref => {
|
|
|
86
86
|
const isAvailableNow = moveInDate => moveInDate.isBefore(tomorrow);
|
|
87
87
|
floorplan.units.forEach(unit => {
|
|
88
88
|
const moveInDate = (0, _Utils.dateToMoment)(unit.moveInDate);
|
|
89
|
-
if (isAvailableNow(moveInDate))
|
|
89
|
+
if (isAvailableNow(moveInDate)) {
|
|
90
|
+
dates.add(today.format(_FloorplanService.MONTH_YEAR_FORMAT));
|
|
91
|
+
if (unit.availabilityExtensionMonths && unit.availabilityExtensionMonths > 0) {
|
|
92
|
+
for (let i = 1; i <= unit.availabilityExtensionMonths; i++) {
|
|
93
|
+
let extensionDate = (0, _moment.default)().add(i, 'month');
|
|
94
|
+
dates.add(extensionDate.format(_FloorplanService.MONTH_YEAR_FORMAT));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
} else {
|
|
90
98
|
dates.add(moveInDate.format(_FloorplanService.MONTH_YEAR_FORMAT));
|
|
91
99
|
if (unit.availabilityExtensionMonths && unit.availabilityExtensionMonths > 0) {
|
|
92
100
|
for (let i = 1; i <= unit.availabilityExtensionMonths; i++) {
|
|
@@ -192,4 +200,4 @@ const FloorplanSection = _ref => {
|
|
|
192
200
|
}))))));
|
|
193
201
|
};
|
|
194
202
|
exports.FloorplanSection = FloorplanSection;
|
|
195
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuIiwiX0Zsb29ycGxhblNlcnZpY2UiLCJfR3JpZEdhbGxlcnlTa2VsZXRvbiIsIl9GbG9vcnBsYW5IZXJvIiwiX1V0aWxzIiwiX0NhcmQiLCJfVGVzdGltb25pYWxzQ2FyZCIsIl9NYXBTZWN0aW9uIiwiX1NpbWlsYXJGbG9vcnBsYW5DYXJkIiwiX211bmNoZXJVaSIsIl9tb21lbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Byb3BlcnR5IiwiX1Nob3J0VGVybUZsb29ycGxhblNlY3Rpb24iLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJGbG9vcnBsYW5TZWN0aW9uIiwiX3JlZiIsIl9mbG9vcnBsYW4kcHJvcGVydHkiLCJfZmxvb3JwbGFuJHByb3BlcnR5MiIsImNvbnRhY3RDbGlja0hhbmRsZXIiLCJhcHBseUNsaWNrSGFuZGxlciIsImZsb29ycGxhbklkIiwibG9jYXRpb25SZWYiLCJoYW5kbGVSZWZUb0xvY2F0aW9uIiwiZmxvb3JwbGFuIiwic2V0Rmxvb3JwbGFuIiwidXNlU3RhdGUiLCJzaW1pbGFyRmxvb3JwbGFucyIsInNldFNpbWlsYXJGbG9vcnBsYW5zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsInNldEZsb29ycGxhblZhcmlhdGlvbnMiLCJ0ZXN0aW1vbmlhbHMiLCJzZXRUZXN0aW1vbmlhbHMiLCJ3ZWJTcGVjaWFscyIsInNldFdlYlNwZWNpYWxzIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiZXJyb3JMb2FkaW5nIiwic2V0RXJyb3JMb2FkaW5nIiwibWFwUmVmIiwidXNlUmVmIiwiaGFuZGxlUmVmVG9NYXAiLCJfbWFwUmVmJGN1cnJlbnQiLCJjdXJyZW50Iiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwidXNlRWZmZWN0IiwiZ2V0Rmxvb3JwbGFuIiwidGhlbiIsImZsb29ycGxhbkRhdGEiLCJ1bml0cyIsImZpbHRlciIsInVuaXQiLCJhY3RpdmUiLCJMZWFzZVR5cGUiLCJTSE9SVF9URVJNIiwicHJvcGVydHkiLCJsZWFzZVR5cGUiLCJQcm9taXNlIiwiYWxsIiwiZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwiZ2V0VGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJkYXRhIiwidG9kYXkiLCJtb21lbnQiLCJ2YWxpZFdlYlNwZWNpYWxzIiwiZm9yRWFjaCIsIndlYlNwZWNpYWwiLCJkYXRlVG9Nb21lbnQiLCJzdGFydERhdGUiLCJpc0JlZm9yZSIsImVuZERhdGUiLCJpc0FmdGVyIiwicHVzaCIsImNhdGNoIiwiZmluYWxseSIsImF2YWlsYWJsZURhdGVzIiwic29ydEF2YWlsYWJsZURhdGVzIiwiYiIsIk1PTlRIX1lFQVJfRk9STUFUIiwiZGlmZiIsImRhdGVzIiwiU2V0IiwidG9tb3Jyb3ciLCJhZGQiLCJpc0F2YWlsYWJsZU5vdyIsIm1vdmVJbkRhdGUiLCJmb3JtYXQiLCJhdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMiLCJleHRlbnNpb25EYXRlIiwiQXJyYXkiLCJmcm9tIiwic29ydCIsInJlc2lkZW50VXRpbGl0eURldGFpbHMiLCJ1dGlsaXR5IiwiYXZlcmFnZU1vbnRobHlCaWxsIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwibmFtZSIsInRvVVNEIiwiaXNBdmVyYWdlTW9udGhseUJpbGxQcmVzZW50IiwidXRpbGl0aWVzIiwidHlwZSIsIlV0aWxpdHlUeXBlIiwiUkVTSURFTlRfVVRJTElUWSIsInNvbWUiLCJpc1dpdGhpblR3ZWx2ZU1vbnRocyIsImRhdGUiLCJ0d2VsdmVNb250aHNGcm9tTm93IiwiY3JlYXRlRWxlbWVudCIsIlNob3J0VGVybUZsb29ycGxhblNlY3Rpb24iLCJjbGFzc05hbWUiLCJHcmlkR2FsbGVyeVNrZWxldG9uIiwiRnJhZ21lbnQiLCJGbG9vcnBsYW5IZXJvIiwiQ2FyZCIsInRpdGxlIiwiYmVkcm9vbSIsImJhdGhyb29tIiwiZW51bVRvU3RyaW5nIiwic3R5bGUiLCJsZW5ndGgiLCJyYW5nZUZyb20iLCJkZXNjcmlwdGlvbiIsImFtZW5pdGllcyIsIlVsIiwiYW1lbml0eSIsImZlYXR1cmVkIiwibWFwIiwiTGkiLCJrZXkiLCJpZCIsImJ1bGxldEljb24iLCJpc0ZlYXR1cmVkIiwidmFyaWF0aW9uIiwiVGVzdGltb25pYWxzQ2FyZCIsInBlcm1pdHRlZFBldHMiLCJwZXQiLCJidWxsZXRDb2xvciIsIm5vdFBlcm1pdHRlZFBldHMiLCJwZXRQb2xpY3kiLCJhdmFpbGFibGVEYXRlIiwiSU5DTFVERURfVVRJTElUWSIsIlNpbWlsYXJGbG9vcnBsYW5DYXJkIiwicGhvbmUiLCJocmVmIiwiZm9ybWF0UGhvbmVOdW1iZXIiLCJCdXR0b24iLCJ2YXJpYW50Iiwib25DbGljayIsInNpemUiLCJyZWYiLCJNYXBTZWN0aW9uIiwic3JjIiwiZmxvb3JwbGFuQWRkcmVzc1RvR29vZ2xlTWFwIiwiZmxvb3JwbGFuQWRkcmVzcyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmxvb3JwbGFuL3NlY3Rpb24vRmxvb3JwbGFuU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFV0aWxpdHlOYW1lLFxuICAgIFV0aWxpdHlUeXBlLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge1xuICAgIGZsb29ycGxhbkFkZHJlc3MsXG4gICAgZ2V0Rmxvb3JwbGFuLFxuICAgIGdldEZsb29ycGxhblZhcmlhdGlvbnMsXG4gICAgZ2V0U2ltaWxhckZsb29ycGxhbnMsXG4gICAgZ2V0VGVzdGltb25pYWxzLFxuICAgIGdldFdlYlNwZWNpYWxzLFxuICAgIE1PTlRIX1lFQVJfRk9STUFULFxuICAgIG5vdFBlcm1pdHRlZFBldHMsXG4gICAgcGVybWl0dGVkUGV0cyxcbiAgICBwZXRQb2xpY3lcbn0gZnJvbSBcIi4uL3NlcnZpY2UvRmxvb3JwbGFuU2VydmljZVwiO1xuaW1wb3J0IFwiLi9hc3NldHMvRmxvb3JwbGFuU2VjdGlvbi5zY3NzXCI7XG5pbXBvcnQge0dyaWRHYWxsZXJ5U2tlbGV0b259IGZyb20gXCIuLi8uLi9nYWxsZXJ5L0dyaWRHYWxsZXJ5U2tlbGV0b25cIjtcbmltcG9ydCB7Rmxvb3JwbGFuSGVyb30gZnJvbSBcIi4vRmxvb3JwbGFuSGVyb1wiO1xuaW1wb3J0IHtcbiAgICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsXG4gICAgZGF0ZVRvTW9tZW50LFxuICAgIGVudW1Ub1N0cmluZyxcbiAgICBmbG9vcnBsYW5BZGRyZXNzVG9Hb29nbGVNYXAsXG4gICAgZm9ybWF0UGhvbmVOdW1iZXIsXG4gICAgcmFuZ2VGcm9tLFxuICAgIHRvVVNEXG59IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtDYXJkfSBmcm9tIFwiLi4vLi4vY2FyZC9DYXJkXCI7XG5pbXBvcnQge1Rlc3RpbW9uaWFsc0NhcmR9IGZyb20gXCIuLi9jYXJkL1Rlc3RpbW9uaWFsc0NhcmRcIjtcbmltcG9ydCB7TWFwU2VjdGlvbn0gZnJvbSBcIi4uLy4uL21hcC9NYXBTZWN0aW9uXCI7XG5pbXBvcnQge1NpbWlsYXJGbG9vcnBsYW5DYXJkfSBmcm9tIFwiLi4vY2FyZC9TaW1pbGFyRmxvb3JwbGFuQ2FyZFwiO1xuaW1wb3J0IHtCdXR0b24sIExpLCBVbH0gZnJvbSBcIkBjb250ZW50bXVuY2gvbXVuY2hlci11aVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQge0xlYXNlVHlwZX0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7U2hvcnRUZXJtRmxvb3JwbGFuU2VjdGlvbn0gZnJvbSBcIi4uLy4uL3Nob3J0LXRlcm0vU2hvcnRUZXJtRmxvb3JwbGFuU2VjdGlvblwiO1xuXG5leHBvcnQgY29uc3QgRmxvb3JwbGFuU2VjdGlvbjogUmVhY3QuRkM8Rmxvb3JwbGFuU2VjdGlvblByb3BzPiA9IChcbiAgICB7XG4gICAgICAgIGNvbnRhY3RDbGlja0hhbmRsZXIsXG4gICAgICAgIGFwcGx5Q2xpY2tIYW5kbGVyLFxuICAgICAgICBmbG9vcnBsYW5JZCxcbiAgICAgICAgbG9jYXRpb25SZWYsXG4gICAgICAgIGhhbmRsZVJlZlRvTG9jYXRpb25cbiAgICB9KSA9PiB7XG4gICAgY29uc3QgW2Zsb29ycGxhbiwgc2V0Rmxvb3JwbGFuXSA9IHVzZVN0YXRlPEZsb29ycGxhbj4oe30gYXMgRmxvb3JwbGFuKTtcbiAgICBjb25zdCBbc2ltaWxhckZsb29ycGxhbnMsIHNldFNpbWlsYXJGbG9vcnBsYW5zXSA9IHVzZVN0YXRlPFNpbWlsYXJGbG9vcnBsYW5bXT4oW10pO1xuICAgIGNvbnN0IFtmbG9vcnBsYW5WYXJpYXRpb25zLCBzZXRGbG9vcnBsYW5WYXJpYXRpb25zXSA9IHVzZVN0YXRlPEZsb29ycGxhblZhcmlhdGlvbltdPihbXSk7XG4gICAgY29uc3QgW3Rlc3RpbW9uaWFscywgc2V0VGVzdGltb25pYWxzXSA9IHVzZVN0YXRlPFRlc3RpbW9uaWFsW10+KFtdKTtcbiAgICBjb25zdCBbd2ViU3BlY2lhbHMsIHNldFdlYlNwZWNpYWxzXSA9IHVzZVN0YXRlPFdlYlNwZWNpYWxbXT4oW10pO1xuXG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBtYXBSZWY6IFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD4gPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVJlZlRvTWFwID0gKCkgPT4ge1xuICAgICAgICBpZiAoaGFuZGxlUmVmVG9Mb2NhdGlvbilcbiAgICAgICAgICAgIGhhbmRsZVJlZlRvTG9jYXRpb24oKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXBSZWYuY3VycmVudD8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICAgICAgICAgIGJsb2NrOiBcInN0YXJ0XCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBnZXRGbG9vcnBsYW4oZmxvb3JwbGFuSWQpLnRoZW4oZmxvb3JwbGFuRGF0YSA9PiB7XG4gICAgICAgICAgICBzZXRGbG9vcnBsYW4oZmxvb3JwbGFuRGF0YSk7XG4gICAgICAgICAgICBmbG9vcnBsYW5EYXRhLnVuaXRzID0gZmxvb3JwbGFuRGF0YS51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgICAgICAgICBpZiAoTGVhc2VUeXBlLlNIT1JUX1RFUk0gPT09IGZsb29ycGxhbkRhdGEucHJvcGVydHkubGVhc2VUeXBlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBnZXRGbG9vcnBsYW5WYXJpYXRpb25zKGZsb29ycGxhbklkKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0U2ltaWxhckZsb29ycGxhbnMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgICAgICAgICBnZXRUZXN0aW1vbmlhbHMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgICAgICAgICBnZXRXZWJTcGVjaWFscyhmbG9vcnBsYW5JZClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZsb29ycGxhblZhcmlhdGlvbnMoZGF0YVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTaW1pbGFyRmxvb3JwbGFucyhkYXRhWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3RpbW9uaWFscyhkYXRhWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkV2ViU3BlY2lhbHM6IFdlYlNwZWNpYWxbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVszXS5mb3JFYWNoKHdlYlNwZWNpYWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlVG9Nb21lbnQod2ViU3BlY2lhbC5zdGFydERhdGUpLmlzQmVmb3JlKHRvZGF5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG9Nb21lbnQod2ViU3BlY2lhbC5lbmREYXRlKS5pc0FmdGVyKHRvZGF5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZFdlYlNwZWNpYWxzLnB1c2god2ViU3BlY2lhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRXZWJTcGVjaWFscyh2YWxpZFdlYlNwZWNpYWxzKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgfSwgW2Zsb29ycGxhbklkXSk7XG5cbiAgICBjb25zdCBhdmFpbGFibGVEYXRlcyA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnRBdmFpbGFibGVEYXRlcyA9IChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gbW9tZW50KGEsIE1PTlRIX1lFQVJfRk9STUFUKS5kaWZmKG1vbWVudChiLCBNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICBjb25zdCBkYXRlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCB0b2RheSA9IG1vbWVudCgpO1xuXG4gICAgICAgIGNvbnN0IHRvbW9ycm93ID0gdG9kYXkuYWRkKDEsIFwiZGF5XCIpO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZU5vdyA9IChtb3ZlSW5EYXRlOiBtb21lbnQuTW9tZW50KSA9PiBtb3ZlSW5EYXRlLmlzQmVmb3JlKHRvbW9ycm93KTtcblxuICAgICAgICBmbG9vcnBsYW4udW5pdHMuZm9yRWFjaCh1bml0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVJbkRhdGUgPSBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKTtcbiAgICAgICAgICAgIGlmIChpc0F2YWlsYWJsZU5vdyhtb3ZlSW5EYXRlKSlcbiAgICAgICAgICAgICAgICBkYXRlcy5hZGQodG9kYXkuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRlcy5hZGQobW92ZUluRGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICBpZiAodW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgJiYgdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25EYXRlID0gZGF0ZVRvTW9tZW50KHVuaXQubW92ZUluRGF0ZSkuYWRkKGksICdtb250aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXMuYWRkKGV4dGVuc2lvbkRhdGUuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZGF0ZXMpLnNvcnQoc29ydEF2YWlsYWJsZURhdGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNpZGVudFV0aWxpdHlEZXRhaWxzID0gKHV0aWxpdHk6IFV0aWxpdHlOYW1lKSA9PlxuICAgICAgICB1dGlsaXR5LmF2ZXJhZ2VNb250aGx5QmlsbCA/XG4gICAgICAgICAgICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodXRpbGl0eS5uYW1lKSArIFwiIC0gQXZnL01vIFwiICsgdG9VU0QodXRpbGl0eS5hdmVyYWdlTW9udGhseUJpbGwpXG4gICAgICAgICAgICA6IGNhcGl0YWxpemVGaXJzdExldHRlcih1dGlsaXR5Lm5hbWUpO1xuXG4gICAgY29uc3QgaXNBdmVyYWdlTW9udGhseUJpbGxQcmVzZW50ID0gKCkgPT4gZmxvb3JwbGFuLnV0aWxpdGllcy5maWx0ZXIodXRpbGl0eSA9PiB1dGlsaXR5LnR5cGUgPT09IFV0aWxpdHlUeXBlLlJFU0lERU5UX1VUSUxJVFkpLnNvbWUodXRpbGl0eSA9PiB1dGlsaXR5LmF2ZXJhZ2VNb250aGx5QmlsbCAhPSBudWxsKTtcblxuXG4gICAgY29uc3QgaXNXaXRoaW5Ud2VsdmVNb250aHMgPSAoZGF0ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBtb21lbnQoZGF0ZSwgXCJNTU0gWVlZWVwiKTtcbiAgICAgICAgY29uc3QgdHdlbHZlTW9udGhzRnJvbU5vdyA9IG1vbWVudCgpLmFkZCgxLCBcInllYXJcIik7XG4gICAgICAgIHJldHVybiBjdXJyZW50LmlzQmVmb3JlKHR3ZWx2ZU1vbnRoc0Zyb21Ob3cpO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIExlYXNlVHlwZS5TSE9SVF9URVJNID09PSBmbG9vcnBsYW4ucHJvcGVydHk/LmxlYXNlVHlwZSA/XG4gICAgICAgICAgICA8U2hvcnRUZXJtRmxvb3JwbGFuU2VjdGlvbiBjb250YWN0Q2xpY2tIYW5kbGVyPXtjb250YWN0Q2xpY2tIYW5kbGVyfSBhcHBseUNsaWNrSGFuZGxlcj17YXBwbHlDbGlja0hhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW5JZD17Zmxvb3JwbGFuSWR9Lz4gOlxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1mbG9vcnBsYW5cIj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyA/IDxzZWN0aW9uIGNsYXNzTmFtZT1cInNlY3Rpb24tZmxvb3JwbGFuLS1oZXJvXCI+PEdyaWRHYWxsZXJ5U2tlbGV0b24vPjwvc2VjdGlvbj4gOiA8PlxuICAgICAgICAgICAgICAgICAgICAgICAge2Vycm9yTG9hZGluZyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwiZGl2LWZ1bGwtLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+VWgtb2gsIHRoaXMgaXMgYSA0MDQ8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGbG9vcnBsYW5IZXJvIGZsb29ycGxhbj17Zmxvb3JwbGFufSBjb250YWN0Q2xpY2tIYW5kbGVyPXtjb250YWN0Q2xpY2tIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJTcGVjaWFscz17d2ViU3BlY2lhbHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5Q2xpY2tIYW5kbGVyPXthcHBseUNsaWNrSGFuZGxlcn0gaGFuZGxlUmVmVG9NYXA9e2hhbmRsZVJlZlRvTWFwfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tY2FyZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZCB0aXRsZT1cIkRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLWNhcmQtLWZlYXR1cmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLmJlZHJvb219IEJlZHJvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwge2Zsb29ycGxhbi5iYXRocm9vbX0gQmF0aHJvb20ge2VudW1Ub1N0cmluZyhmbG9vcnBsYW4uc3R5bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4udW5pdHMubGVuZ3RoID4gMCA/IDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY2FyZC0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmFuZ2VGcm9tKGZsb29ycGxhbi51bml0cywgXCJzcXVhcmVGb290XCIpfSBTcXVhcmUgRmVldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLWNhcmQtLWZlYXR1cmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtyYW5nZUZyb20oZmxvb3JwbGFuLnVuaXRzLCBcInJlbnRcIil9L21vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY2FyZC0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3JhbmdlRnJvbShmbG9vcnBsYW4udW5pdHMsIFwiZGVwb3NpdFwiKX0gU2VjdXJpdHkgRGVwb3NpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz4gOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4uZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4uYW1lbml0aWVzLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJBbWVuaXRpZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi5hbWVuaXRpZXMuZmlsdGVyKGFtZW5pdHkgPT4gYW1lbml0eS5mZWF0dXJlZCkubWFwKGFtZW5pdHkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGkga2V5PXtcImZsb29ycGxhbi1hbWVuaXR5LVwiICsgYW1lbml0eS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGV0SWNvbj1cInN0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZlYXR1cmVkPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FtZW5pdHkubmFtZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4uYW1lbml0aWVzLmZpbHRlcihhbWVuaXR5ID0+ICFhbWVuaXR5LmZlYXR1cmVkKS5tYXAoYW1lbml0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLWFtZW5pdHktXCIgKyBhbWVuaXR5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXRJY29uPVwiZG90XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthbWVuaXR5Lm5hbWV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhblZhcmlhdGlvbnMubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5WYXJpYXRpb25zPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhblZhcmlhdGlvbnMubWFwKCh2YXJpYXRpb24sIGkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4tdmFyaWF0aW9uLVwiICsgaX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXJpYXRpb24udmFyaWF0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz4gOiBcIlwifVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+IDogPD48Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFscy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXN0aW1vbmlhbHNDYXJkIHRlc3RpbW9uaWFscz17dGVzdGltb25pYWxzfS8+IDogPD48Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIHRpdGxlPVwiUGV0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+UGVybWl0dGVkPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZFBldHMoZmxvb3JwbGFuKS5tYXAoKHBldCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4tcGVybWl0dGVkLXBldC1cIiArIGl9IGJ1bGxldEljb249XCJjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXRDb2xvcj1cImdyZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGV0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25vdFBlcm1pdHRlZFBldHMoZmxvb3JwbGFuKS5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+PGg1Pk5vdCBQZXJtaXR0ZWQ8L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90UGVybWl0dGVkUGV0cyhmbG9vcnBsYW4pLm1hcCgocGV0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLW5vdC1wZXJtaXR0ZWQtcGV0LVwiICsgaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGV0Q29sb3I9XCJicm93blwiIGJ1bGxldEljb249XCJjbG9zZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGV0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXRQb2xpY3koZmxvb3JwbGFuKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PkFkZGl0aW9uYWwgSW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57cGV0UG9saWN5KGZsb29ycGxhbil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi51bml0cy5sZW5ndGggPiAwID8gPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJBdmFpbGFiaWxpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZURhdGVzKCkuZmlsdGVyKGF2YWlsYWJsZURhdGUgPT4gaXNXaXRoaW5Ud2VsdmVNb250aHMoYXZhaWxhYmxlRGF0ZSkpLm1hcChhdmFpbGFibGVEYXRlID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGkga2V5PXtcImZsb29ycGxhbi11bml0LWF2YWlsYWJpbGl0eS1cIiArIGF2YWlsYWJsZURhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGV0SWNvbj1cImNhbGVuZGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPHN0cm9uZz57Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGF2YWlsYWJsZURhdGUpfTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIHRpdGxlPVwiVXRpbGl0aWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+UGFpZCBCeSBMYW5kbG9yZDwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4udXRpbGl0aWVzLmZpbHRlcih1dGlsaXR5ID0+IHV0aWxpdHkudHlwZSA9PT0gVXRpbGl0eVR5cGUuSU5DTFVERURfVVRJTElUWSkubWFwKHV0aWxpdHkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLWluY2x1ZGVkLXV0aWxpdHktXCIgKyB1dGlsaXR5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGxldEljb249XCJob21lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcGl0YWxpemVGaXJzdExldHRlcih1dGlsaXR5Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+UGFpZCBCeSBSZXNpZGVudDwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4udXRpbGl0aWVzLmZpbHRlcih1dGlsaXR5ID0+IHV0aWxpdHkudHlwZSA9PT0gVXRpbGl0eVR5cGUuUkVTSURFTlRfVVRJTElUWSkubWFwKHV0aWxpdHkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLXJlc2lkZW50LXV0aWxpdHktXCIgKyB1dGlsaXR5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGxldEljb249XCJkb2xsYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVzaWRlbnRVdGlsaXR5RGV0YWlscyh1dGlsaXR5KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzQXZlcmFnZU1vbnRobHlCaWxsUHJlc2VudCgpID8gPHA+PGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipBdmVyYWdlIHV0aWxpdGllcyBzaG93biBhYm92ZSBhcmUgYW4gZXN0aW1hdGUuIEFjdHVhbCBtb250aGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvc3RzIGNhbiB2YXJ5IHNpZ25pZmljYW50bHkgYmFzZWQgb24gaW5kaXZpZHVhbCB1c2FnZSwgdGltZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdlYXRoZXIsIGFuZCBvdGhlciBmYWN0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+PC9wPiA6IFwiXCJ9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NpbWlsYXJGbG9vcnBsYW5zLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2ltaWxhckZsb29ycGxhbkNhcmQgc2ltaWxhckZsb29ycGxhbnM9e3NpbWlsYXJGbG9vcnBsYW5zfS8+IDogXCJcIn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFjdC1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIGZlYXR1cmVkPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpPlF1ZXN0aW9ucz88L2k+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PGk+Q2FsbCBvciB0ZXh0IHVzIGFueXRpbWU6PC9pPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4ucHJvcGVydHk/LnBob25lID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtcInRlbDpcIiArIGZsb29ycGxhbi5wcm9wZXJ0eS5waG9uZX0+e2Zvcm1hdFBob25lTnVtYmVyKGZsb29ycGxhbi5wcm9wZXJ0eS5waG9uZSl9PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG9uQ2xpY2s9e2NvbnRhY3RDbGlja0hhbmRsZXJ9IHNpemU9XCJsYXJnZVwiPkNvbnRhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIMK7PC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e2xvY2F0aW9uUmVmID8gbG9jYXRpb25SZWYgOiBtYXBSZWZ9IGlkPVwibG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVmZXJlbmNlXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFwU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2Zsb29ycGxhbkFkZHJlc3NUb0dvb2dsZU1hcChmbG9vcnBsYW5BZGRyZXNzKGZsb29ycGxhbikpfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5TZWN0aW9uUHJvcHMge1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgZmxvb3JwbGFuSWQ6IHN0cmluZztcbiAgICBsb2NhdGlvblJlZj86IFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgaGFuZGxlUmVmVG9Mb2NhdGlvbj86ICgpID0+IHZvaWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQVNBLElBQUFFLGlCQUFBLEdBQUFGLE9BQUE7QUFZQUEsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFTQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMscUJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQVosT0FBQTtBQUNBLElBQUFhLFNBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLDBCQUFBLEdBQUFkLE9BQUE7QUFBcUYsU0FBQVksdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBcEIsd0JBQUFvQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUgsVUFB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
|
|
203
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuIiwiX0Zsb29ycGxhblNlcnZpY2UiLCJfR3JpZEdhbGxlcnlTa2VsZXRvbiIsIl9GbG9vcnBsYW5IZXJvIiwiX1V0aWxzIiwiX0NhcmQiLCJfVGVzdGltb25pYWxzQ2FyZCIsIl9NYXBTZWN0aW9uIiwiX1NpbWlsYXJGbG9vcnBsYW5DYXJkIiwiX211bmNoZXJVaSIsIl9tb21lbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Byb3BlcnR5IiwiX1Nob3J0VGVybUZsb29ycGxhblNlY3Rpb24iLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJGbG9vcnBsYW5TZWN0aW9uIiwiX3JlZiIsIl9mbG9vcnBsYW4kcHJvcGVydHkiLCJfZmxvb3JwbGFuJHByb3BlcnR5MiIsImNvbnRhY3RDbGlja0hhbmRsZXIiLCJhcHBseUNsaWNrSGFuZGxlciIsImZsb29ycGxhbklkIiwibG9jYXRpb25SZWYiLCJoYW5kbGVSZWZUb0xvY2F0aW9uIiwiZmxvb3JwbGFuIiwic2V0Rmxvb3JwbGFuIiwidXNlU3RhdGUiLCJzaW1pbGFyRmxvb3JwbGFucyIsInNldFNpbWlsYXJGbG9vcnBsYW5zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsInNldEZsb29ycGxhblZhcmlhdGlvbnMiLCJ0ZXN0aW1vbmlhbHMiLCJzZXRUZXN0aW1vbmlhbHMiLCJ3ZWJTcGVjaWFscyIsInNldFdlYlNwZWNpYWxzIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiZXJyb3JMb2FkaW5nIiwic2V0RXJyb3JMb2FkaW5nIiwibWFwUmVmIiwidXNlUmVmIiwiaGFuZGxlUmVmVG9NYXAiLCJfbWFwUmVmJGN1cnJlbnQiLCJjdXJyZW50Iiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwidXNlRWZmZWN0IiwiZ2V0Rmxvb3JwbGFuIiwidGhlbiIsImZsb29ycGxhbkRhdGEiLCJ1bml0cyIsImZpbHRlciIsInVuaXQiLCJhY3RpdmUiLCJMZWFzZVR5cGUiLCJTSE9SVF9URVJNIiwicHJvcGVydHkiLCJsZWFzZVR5cGUiLCJQcm9taXNlIiwiYWxsIiwiZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwiZ2V0VGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJkYXRhIiwidG9kYXkiLCJtb21lbnQiLCJ2YWxpZFdlYlNwZWNpYWxzIiwiZm9yRWFjaCIsIndlYlNwZWNpYWwiLCJkYXRlVG9Nb21lbnQiLCJzdGFydERhdGUiLCJpc0JlZm9yZSIsImVuZERhdGUiLCJpc0FmdGVyIiwicHVzaCIsImNhdGNoIiwiZmluYWxseSIsImF2YWlsYWJsZURhdGVzIiwic29ydEF2YWlsYWJsZURhdGVzIiwiYiIsIk1PTlRIX1lFQVJfRk9STUFUIiwiZGlmZiIsImRhdGVzIiwiU2V0IiwidG9tb3Jyb3ciLCJhZGQiLCJpc0F2YWlsYWJsZU5vdyIsIm1vdmVJbkRhdGUiLCJmb3JtYXQiLCJhdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMiLCJleHRlbnNpb25EYXRlIiwiQXJyYXkiLCJmcm9tIiwic29ydCIsInJlc2lkZW50VXRpbGl0eURldGFpbHMiLCJ1dGlsaXR5IiwiYXZlcmFnZU1vbnRobHlCaWxsIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwibmFtZSIsInRvVVNEIiwiaXNBdmVyYWdlTW9udGhseUJpbGxQcmVzZW50IiwidXRpbGl0aWVzIiwidHlwZSIsIlV0aWxpdHlUeXBlIiwiUkVTSURFTlRfVVRJTElUWSIsInNvbWUiLCJpc1dpdGhpblR3ZWx2ZU1vbnRocyIsImRhdGUiLCJ0d2VsdmVNb250aHNGcm9tTm93IiwiY3JlYXRlRWxlbWVudCIsIlNob3J0VGVybUZsb29ycGxhblNlY3Rpb24iLCJjbGFzc05hbWUiLCJHcmlkR2FsbGVyeVNrZWxldG9uIiwiRnJhZ21lbnQiLCJGbG9vcnBsYW5IZXJvIiwiQ2FyZCIsInRpdGxlIiwiYmVkcm9vbSIsImJhdGhyb29tIiwiZW51bVRvU3RyaW5nIiwic3R5bGUiLCJsZW5ndGgiLCJyYW5nZUZyb20iLCJkZXNjcmlwdGlvbiIsImFtZW5pdGllcyIsIlVsIiwiYW1lbml0eSIsImZlYXR1cmVkIiwibWFwIiwiTGkiLCJrZXkiLCJpZCIsImJ1bGxldEljb24iLCJpc0ZlYXR1cmVkIiwidmFyaWF0aW9uIiwiVGVzdGltb25pYWxzQ2FyZCIsInBlcm1pdHRlZFBldHMiLCJwZXQiLCJidWxsZXRDb2xvciIsIm5vdFBlcm1pdHRlZFBldHMiLCJwZXRQb2xpY3kiLCJhdmFpbGFibGVEYXRlIiwiSU5DTFVERURfVVRJTElUWSIsIlNpbWlsYXJGbG9vcnBsYW5DYXJkIiwicGhvbmUiLCJocmVmIiwiZm9ybWF0UGhvbmVOdW1iZXIiLCJCdXR0b24iLCJ2YXJpYW50Iiwib25DbGljayIsInNpemUiLCJyZWYiLCJNYXBTZWN0aW9uIiwic3JjIiwiZmxvb3JwbGFuQWRkcmVzc1RvR29vZ2xlTWFwIiwiZmxvb3JwbGFuQWRkcmVzcyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmxvb3JwbGFuL3NlY3Rpb24vRmxvb3JwbGFuU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFV0aWxpdHlOYW1lLFxuICAgIFV0aWxpdHlUeXBlLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge1xuICAgIGZsb29ycGxhbkFkZHJlc3MsXG4gICAgZ2V0Rmxvb3JwbGFuLFxuICAgIGdldEZsb29ycGxhblZhcmlhdGlvbnMsXG4gICAgZ2V0U2ltaWxhckZsb29ycGxhbnMsXG4gICAgZ2V0VGVzdGltb25pYWxzLFxuICAgIGdldFdlYlNwZWNpYWxzLFxuICAgIE1PTlRIX1lFQVJfRk9STUFULFxuICAgIG5vdFBlcm1pdHRlZFBldHMsXG4gICAgcGVybWl0dGVkUGV0cyxcbiAgICBwZXRQb2xpY3lcbn0gZnJvbSBcIi4uL3NlcnZpY2UvRmxvb3JwbGFuU2VydmljZVwiO1xuaW1wb3J0IFwiLi9hc3NldHMvRmxvb3JwbGFuU2VjdGlvbi5zY3NzXCI7XG5pbXBvcnQge0dyaWRHYWxsZXJ5U2tlbGV0b259IGZyb20gXCIuLi8uLi9nYWxsZXJ5L0dyaWRHYWxsZXJ5U2tlbGV0b25cIjtcbmltcG9ydCB7Rmxvb3JwbGFuSGVyb30gZnJvbSBcIi4vRmxvb3JwbGFuSGVyb1wiO1xuaW1wb3J0IHtcbiAgICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsXG4gICAgZGF0ZVRvTW9tZW50LFxuICAgIGVudW1Ub1N0cmluZyxcbiAgICBmbG9vcnBsYW5BZGRyZXNzVG9Hb29nbGVNYXAsXG4gICAgZm9ybWF0UGhvbmVOdW1iZXIsXG4gICAgcmFuZ2VGcm9tLFxuICAgIHRvVVNEXG59IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtDYXJkfSBmcm9tIFwiLi4vLi4vY2FyZC9DYXJkXCI7XG5pbXBvcnQge1Rlc3RpbW9uaWFsc0NhcmR9IGZyb20gXCIuLi9jYXJkL1Rlc3RpbW9uaWFsc0NhcmRcIjtcbmltcG9ydCB7TWFwU2VjdGlvbn0gZnJvbSBcIi4uLy4uL21hcC9NYXBTZWN0aW9uXCI7XG5pbXBvcnQge1NpbWlsYXJGbG9vcnBsYW5DYXJkfSBmcm9tIFwiLi4vY2FyZC9TaW1pbGFyRmxvb3JwbGFuQ2FyZFwiO1xuaW1wb3J0IHtCdXR0b24sIExpLCBVbH0gZnJvbSBcIkBjb250ZW50bXVuY2gvbXVuY2hlci11aVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQge0xlYXNlVHlwZX0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7U2hvcnRUZXJtRmxvb3JwbGFuU2VjdGlvbn0gZnJvbSBcIi4uLy4uL3Nob3J0LXRlcm0vU2hvcnRUZXJtRmxvb3JwbGFuU2VjdGlvblwiO1xuXG5leHBvcnQgY29uc3QgRmxvb3JwbGFuU2VjdGlvbjogUmVhY3QuRkM8Rmxvb3JwbGFuU2VjdGlvblByb3BzPiA9IChcbiAgICB7XG4gICAgICAgIGNvbnRhY3RDbGlja0hhbmRsZXIsXG4gICAgICAgIGFwcGx5Q2xpY2tIYW5kbGVyLFxuICAgICAgICBmbG9vcnBsYW5JZCxcbiAgICAgICAgbG9jYXRpb25SZWYsXG4gICAgICAgIGhhbmRsZVJlZlRvTG9jYXRpb25cbiAgICB9KSA9PiB7XG4gICAgY29uc3QgW2Zsb29ycGxhbiwgc2V0Rmxvb3JwbGFuXSA9IHVzZVN0YXRlPEZsb29ycGxhbj4oe30gYXMgRmxvb3JwbGFuKTtcbiAgICBjb25zdCBbc2ltaWxhckZsb29ycGxhbnMsIHNldFNpbWlsYXJGbG9vcnBsYW5zXSA9IHVzZVN0YXRlPFNpbWlsYXJGbG9vcnBsYW5bXT4oW10pO1xuICAgIGNvbnN0IFtmbG9vcnBsYW5WYXJpYXRpb25zLCBzZXRGbG9vcnBsYW5WYXJpYXRpb25zXSA9IHVzZVN0YXRlPEZsb29ycGxhblZhcmlhdGlvbltdPihbXSk7XG4gICAgY29uc3QgW3Rlc3RpbW9uaWFscywgc2V0VGVzdGltb25pYWxzXSA9IHVzZVN0YXRlPFRlc3RpbW9uaWFsW10+KFtdKTtcbiAgICBjb25zdCBbd2ViU3BlY2lhbHMsIHNldFdlYlNwZWNpYWxzXSA9IHVzZVN0YXRlPFdlYlNwZWNpYWxbXT4oW10pO1xuXG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBtYXBSZWY6IFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD4gPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVJlZlRvTWFwID0gKCkgPT4ge1xuICAgICAgICBpZiAoaGFuZGxlUmVmVG9Mb2NhdGlvbilcbiAgICAgICAgICAgIGhhbmRsZVJlZlRvTG9jYXRpb24oKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXBSZWYuY3VycmVudD8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICAgICAgICAgIGJsb2NrOiBcInN0YXJ0XCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBnZXRGbG9vcnBsYW4oZmxvb3JwbGFuSWQpLnRoZW4oZmxvb3JwbGFuRGF0YSA9PiB7XG4gICAgICAgICAgICBzZXRGbG9vcnBsYW4oZmxvb3JwbGFuRGF0YSk7XG4gICAgICAgICAgICBmbG9vcnBsYW5EYXRhLnVuaXRzID0gZmxvb3JwbGFuRGF0YS51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgICAgICAgICBpZiAoTGVhc2VUeXBlLlNIT1JUX1RFUk0gPT09IGZsb29ycGxhbkRhdGEucHJvcGVydHkubGVhc2VUeXBlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICBnZXRGbG9vcnBsYW5WYXJpYXRpb25zKGZsb29ycGxhbklkKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0U2ltaWxhckZsb29ycGxhbnMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgICAgICAgICBnZXRUZXN0aW1vbmlhbHMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgICAgICAgICBnZXRXZWJTcGVjaWFscyhmbG9vcnBsYW5JZClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZsb29ycGxhblZhcmlhdGlvbnMoZGF0YVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTaW1pbGFyRmxvb3JwbGFucyhkYXRhWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3RpbW9uaWFscyhkYXRhWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkV2ViU3BlY2lhbHM6IFdlYlNwZWNpYWxbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVszXS5mb3JFYWNoKHdlYlNwZWNpYWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlVG9Nb21lbnQod2ViU3BlY2lhbC5zdGFydERhdGUpLmlzQmVmb3JlKHRvZGF5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG9Nb21lbnQod2ViU3BlY2lhbC5lbmREYXRlKS5pc0FmdGVyKHRvZGF5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZFdlYlNwZWNpYWxzLnB1c2god2ViU3BlY2lhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRXZWJTcGVjaWFscyh2YWxpZFdlYlNwZWNpYWxzKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgfSwgW2Zsb29ycGxhbklkXSk7XG5cbiAgICBjb25zdCBhdmFpbGFibGVEYXRlcyA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnRBdmFpbGFibGVEYXRlcyA9IChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gbW9tZW50KGEsIE1PTlRIX1lFQVJfRk9STUFUKS5kaWZmKG1vbWVudChiLCBNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICBjb25zdCBkYXRlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCB0b2RheSA9IG1vbWVudCgpO1xuXG4gICAgICAgIGNvbnN0IHRvbW9ycm93ID0gdG9kYXkuYWRkKDEsIFwiZGF5XCIpO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZU5vdyA9IChtb3ZlSW5EYXRlOiBtb21lbnQuTW9tZW50KSA9PiBtb3ZlSW5EYXRlLmlzQmVmb3JlKHRvbW9ycm93KTtcblxuICAgICAgICBmbG9vcnBsYW4udW5pdHMuZm9yRWFjaCh1bml0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVJbkRhdGUgPSBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKTtcbiAgICAgICAgICAgIGlmIChpc0F2YWlsYWJsZU5vdyhtb3ZlSW5EYXRlKSkge1xuICAgICAgICAgICAgICAgIGRhdGVzLmFkZCh0b2RheS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICBpZiAodW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgJiYgdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25EYXRlID0gbW9tZW50KCkuYWRkKGksICdtb250aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXMuYWRkKGV4dGVuc2lvbkRhdGUuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGVzLmFkZChtb3ZlSW5EYXRlLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbkRhdGUgPSBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKS5hZGQoaSwgJ21vbnRoJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlcy5hZGQoZXh0ZW5zaW9uRGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkYXRlcykuc29ydChzb3J0QXZhaWxhYmxlRGF0ZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2lkZW50VXRpbGl0eURldGFpbHMgPSAodXRpbGl0eTogVXRpbGl0eU5hbWUpID0+XG4gICAgICAgIHV0aWxpdHkuYXZlcmFnZU1vbnRobHlCaWxsID9cbiAgICAgICAgICAgIGNhcGl0YWxpemVGaXJzdExldHRlcih1dGlsaXR5Lm5hbWUpICsgXCIgLSBBdmcvTW8gXCIgKyB0b1VTRCh1dGlsaXR5LmF2ZXJhZ2VNb250aGx5QmlsbClcbiAgICAgICAgICAgIDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHV0aWxpdHkubmFtZSk7XG5cbiAgICBjb25zdCBpc0F2ZXJhZ2VNb250aGx5QmlsbFByZXNlbnQgPSAoKSA9PiBmbG9vcnBsYW4udXRpbGl0aWVzLmZpbHRlcih1dGlsaXR5ID0+IHV0aWxpdHkudHlwZSA9PT0gVXRpbGl0eVR5cGUuUkVTSURFTlRfVVRJTElUWSkuc29tZSh1dGlsaXR5ID0+IHV0aWxpdHkuYXZlcmFnZU1vbnRobHlCaWxsICE9IG51bGwpO1xuXG5cbiAgICBjb25zdCBpc1dpdGhpblR3ZWx2ZU1vbnRocyA9IChkYXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1vbWVudChkYXRlLCBcIk1NTSBZWVlZXCIpO1xuICAgICAgICBjb25zdCB0d2VsdmVNb250aHNGcm9tTm93ID0gbW9tZW50KCkuYWRkKDEsIFwieWVhclwiKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQuaXNCZWZvcmUodHdlbHZlTW9udGhzRnJvbU5vdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgTGVhc2VUeXBlLlNIT1JUX1RFUk0gPT09IGZsb29ycGxhbi5wcm9wZXJ0eT8ubGVhc2VUeXBlID9cbiAgICAgICAgICAgIDxTaG9ydFRlcm1GbG9vcnBsYW5TZWN0aW9uIGNvbnRhY3RDbGlja0hhbmRsZXI9e2NvbnRhY3RDbGlja0hhbmRsZXJ9IGFwcGx5Q2xpY2tIYW5kbGVyPXthcHBseUNsaWNrSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbklkPXtmbG9vcnBsYW5JZH0vPiA6XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJzZWN0aW9uLWZsb29ycGxhblwiPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nID8gPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1mbG9vcnBsYW4tLWhlcm9cIj48R3JpZEdhbGxlcnlTa2VsZXRvbi8+PC9zZWN0aW9uPiA6IDw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXJyb3JMb2FkaW5nID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJkaXYtZnVsbC0tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5VaC1vaCwgdGhpcyBpcyBhIDQwNDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZsb29ycGxhbkhlcm8gZmxvb3JwbGFuPXtmbG9vcnBsYW59IGNvbnRhY3RDbGlja0hhbmRsZXI9e2NvbnRhY3RDbGlja0hhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNwZWNpYWxzPXt3ZWJTcGVjaWFsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlDbGlja0hhbmRsZXI9e2FwcGx5Q2xpY2tIYW5kbGVyfSBoYW5kbGVSZWZUb01hcD17aGFuZGxlUmVmVG9NYXB9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLS1jYXJkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIHRpdGxlPVwiRGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY2FyZC0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4uYmVkcm9vbX0gQmVkcm9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7Zmxvb3JwbGFuLmJhdGhyb29tfSBCYXRocm9vbSB7ZW51bVRvU3RyaW5nKGZsb29ycGxhbi5zdHlsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi51bml0cy5sZW5ndGggPiAwID8gPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi1jYXJkLS1mZWF0dXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyYW5nZUZyb20oZmxvb3JwbGFuLnVuaXRzLCBcInNxdWFyZUZvb3RcIil9IFNxdWFyZSBGZWV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY2FyZC0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3JhbmdlRnJvbShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKX0vbW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi1jYXJkLS1mZWF0dXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cmFuZ2VGcm9tKGZsb29ycGxhbi51bml0cywgXCJkZXBvc2l0XCIpfSBTZWN1cml0eSBEZXBvc2l0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi5hbWVuaXRpZXMubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZCB0aXRsZT1cIkFtZW5pdGllc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvb3JwbGFuLmFtZW5pdGllcy5maWx0ZXIoYW1lbml0eSA9PiBhbWVuaXR5LmZlYXR1cmVkKS5tYXAoYW1lbml0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLWFtZW5pdHktXCIgKyBhbWVuaXR5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXRJY29uPVwic3RhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmVhdHVyZWQ9e3RydWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YW1lbml0eS5uYW1lfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi5hbWVuaXRpZXMuZmlsdGVyKGFtZW5pdHkgPT4gIWFtZW5pdHkuZmVhdHVyZWQpLm1hcChhbWVuaXR5ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4tYW1lbml0eS1cIiArIGFtZW5pdHkuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGxldEljb249XCJkb3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FtZW5pdHkubmFtZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvb3JwbGFuVmFyaWF0aW9ucy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PlZhcmlhdGlvbnM8L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvb3JwbGFuVmFyaWF0aW9ucy5tYXAoKHZhcmlhdGlvbiwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGkga2V5PXtcImZsb29ycGxhbi12YXJpYXRpb24tXCIgKyBpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcmlhdGlvbi52YXJpYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJ9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD4gOiA8PjwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGltb25pYWxzLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRlc3RpbW9uaWFsc0NhcmQgdGVzdGltb25pYWxzPXt0ZXN0aW1vbmlhbHN9Lz4gOiA8PjwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJQZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5QZXJtaXR0ZWQ8L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWl0dGVkUGV0cyhmbG9vcnBsYW4pLm1hcCgocGV0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGkga2V5PXtcImZsb29ycGxhbi1wZXJtaXR0ZWQtcGV0LVwiICsgaX0gYnVsbGV0SWNvbj1cImNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGxldENvbG9yPVwiZ3JlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwZXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bm90UGVybWl0dGVkUGV0cyhmbG9vcnBsYW4pLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD48aDU+Tm90IFBlcm1pdHRlZDwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RQZXJtaXR0ZWRQZXRzKGZsb29ycGxhbikubWFwKChwZXQsIGkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4tbm90LXBlcm1pdHRlZC1wZXQtXCIgKyBpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXRDb2xvcj1cImJyb3duXCIgYnVsbGV0SWNvbj1cImNsb3NlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwZXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz4gOiBcIlwifVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBldFBvbGljeShmbG9vcnBsYW4pID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDU+QWRkaXRpb25hbCBJbmZvcm1hdGlvbjwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPntwZXRQb2xpY3koZmxvb3JwbGFuKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLnVuaXRzLmxlbmd0aCA+IDAgPyA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZCB0aXRsZT1cIkF2YWlsYWJpbGl0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlRGF0ZXMoKS5maWx0ZXIoYXZhaWxhYmxlRGF0ZSA9PiBpc1dpdGhpblR3ZWx2ZU1vbnRocyhhdmFpbGFibGVEYXRlKSkubWFwKGF2YWlsYWJsZURhdGUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaSBrZXk9e1wiZmxvb3JwbGFuLXVuaXQtYXZhaWxhYmlsaXR5LVwiICsgYXZhaWxhYmxlRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWxsZXRJY29uPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiA8c3Ryb25nPntjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYXZhaWxhYmxlRGF0ZSl9PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJVdGlsaXRpZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5QYWlkIEJ5IExhbmRsb3JkPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi51dGlsaXRpZXMuZmlsdGVyKHV0aWxpdHkgPT4gdXRpbGl0eS50eXBlID09PSBVdGlsaXR5VHlwZS5JTkNMVURFRF9VVElMSVRZKS5tYXAodXRpbGl0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4taW5jbHVkZWQtdXRpbGl0eS1cIiArIHV0aWxpdHkuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGV0SWNvbj1cImhvbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHV0aWxpdHkubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5QYWlkIEJ5IFJlc2lkZW50PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi51dGlsaXRpZXMuZmlsdGVyKHV0aWxpdHkgPT4gdXRpbGl0eS50eXBlID09PSBVdGlsaXR5VHlwZS5SRVNJREVOVF9VVElMSVRZKS5tYXAodXRpbGl0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpIGtleT17XCJmbG9vcnBsYW4tcmVzaWRlbnQtdXRpbGl0eS1cIiArIHV0aWxpdHkuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGV0SWNvbj1cImRvbGxhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXNpZGVudFV0aWxpdHlEZXRhaWxzKHV0aWxpdHkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNBdmVyYWdlTW9udGhseUJpbGxQcmVzZW50KCkgPyA8cD48aT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKkF2ZXJhZ2UgdXRpbGl0aWVzIHNob3duIGFib3ZlIGFyZSBhbiBlc3RpbWF0ZS4gQWN0dWFsIG1vbnRobHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29zdHMgY2FuIHZhcnkgc2lnbmlmaWNhbnRseSBiYXNlZCBvbiBpbmRpdmlkdWFsIHVzYWdlLCB0aW1lIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2VhdGhlciwgYW5kIG90aGVyIGZhY3RvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT48L3A+IDogXCJcIn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2ltaWxhckZsb29ycGxhbnMubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaW1pbGFyRmxvb3JwbGFuQ2FyZCBzaW1pbGFyRmxvb3JwbGFucz17c2ltaWxhckZsb29ycGxhbnN9Lz4gOiBcIlwifVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWN0LWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgZmVhdHVyZWQ9e3RydWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PGk+UXVlc3Rpb25zPzwvaT48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48aT5DYWxsIG9yIHRleHQgdXMgYW55dGltZTo8L2k+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi5wcm9wZXJ0eT8ucGhvbmUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e1widGVsOlwiICsgZmxvb3JwbGFuLnByb3BlcnR5LnBob25lfT57Zm9ybWF0UGhvbmVOdW1iZXIoZmxvb3JwbGFuLnByb3BlcnR5LnBob25lKX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRlcnRpYXJ5XCIgb25DbGljaz17Y29udGFjdENsaWNrSGFuZGxlcn0gc2l6ZT1cImxhcmdlXCI+Q29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrs8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bG9jYXRpb25SZWYgPyBsb2NhdGlvblJlZiA6IG1hcFJlZn0gaWQ9XCJsb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWZlcmVuY2VcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBTZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Zmxvb3JwbGFuQWRkcmVzc1RvR29vZ2xlTWFwKGZsb29ycGxhbkFkZHJlc3MoZmxvb3JwbGFuKSl9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb29ycGxhblNlY3Rpb25Qcm9wcyB7XG4gICAgY29udGFjdENsaWNrSGFuZGxlcjogKCkgPT4gdm9pZDtcbiAgICBhcHBseUNsaWNrSGFuZGxlcjogKCkgPT4gdm9pZDtcbiAgICBmbG9vcnBsYW5JZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uUmVmPzogUmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBoYW5kbGVSZWZUb0xvY2F0aW9uPzogKCkgPT4gdm9pZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBU0EsSUFBQUUsaUJBQUEsR0FBQUYsT0FBQTtBQVlBQSxPQUFBO0FBQ0EsSUFBQUcsb0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQVNBLElBQUFNLEtBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxxQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsT0FBQSxHQUFBQyxzQkFBQSxDQUFBWixPQUFBO0FB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
|
|
@@ -14,6 +14,8 @@ var _RoundRobin = require("../../service/RoundRobin");
|
|
|
14
14
|
var _RenaissanceData = require("../../data/RenaissanceData");
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
16
|
const AVAILABLE_NOW = exports.AVAILABLE_NOW = "Available Now";
|
|
17
|
+
const today = (0, _moment.default)();
|
|
18
|
+
const tomorrow = today.add(1, "day");
|
|
17
19
|
const convertToHttps = url => {
|
|
18
20
|
if (url === null) return "";
|
|
19
21
|
return url.replace(/^http:\/\//i, 'https://');
|
|
@@ -68,37 +70,30 @@ const sortAndFilter = (floorplans, currentFilters) => {
|
|
|
68
70
|
};
|
|
69
71
|
exports.sortAndFilter = sortAndFilter;
|
|
70
72
|
const isDateWithinTwelveMonths = date => {
|
|
71
|
-
const today = (0, _moment.default)();
|
|
72
73
|
const diff = (0, _moment.default)(date, "YYYY-MM-DD").diff(today, 'months', false);
|
|
73
74
|
return diff >= 0 && diff <= 12;
|
|
74
75
|
};
|
|
75
76
|
exports.isDateWithinTwelveMonths = isDateWithinTwelveMonths;
|
|
76
77
|
const isDateAfterToday = date => {
|
|
77
|
-
const today = (0, _moment.default)();
|
|
78
78
|
return (0, _moment.default)(date, "YYYY-MM-DD").isAfter(today);
|
|
79
79
|
};
|
|
80
80
|
exports.isDateAfterToday = isDateAfterToday;
|
|
81
81
|
const MONTH_YEAR_FORMAT = exports.MONTH_YEAR_FORMAT = "MMMM YYYY";
|
|
82
82
|
const dateToMonthYear = dateString => (0, _moment.default)(dateString, "YYYY-MM-DD").format(MONTH_YEAR_FORMAT);
|
|
83
|
+
const isAvailableNow = moveInDate => moveInDate.isBefore(tomorrow);
|
|
83
84
|
const defaultAvailabilityToMonthYear = dateString => AVAILABLE_NOW === dateString ? dateString : (0, _moment.default)(dateString, "MM-YYYY").format(MONTH_YEAR_FORMAT);
|
|
84
85
|
exports.defaultAvailabilityToMonthYear = defaultAvailabilityToMonthYear;
|
|
85
86
|
const momentToMonthYear = date => date.format(MONTH_YEAR_FORMAT);
|
|
86
87
|
exports.momentToMonthYear = momentToMonthYear;
|
|
87
88
|
const isAvailable = (floorplan, availabilityFilters) => {
|
|
88
89
|
return availabilityFilters.length === 0 ? true : floorplan.units.some(unit => {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (availabilityFilters.indexOf(momentToMonthYear(today)) > -1) {
|
|
95
|
-
if (isBeforeToday(unit.moveInDate)) {
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
90
|
+
const isUnitAvailableNow = isAvailableNow((0, _moment.default)(unit.moveInDate));
|
|
91
|
+
if (availabilityFilters.indexOf(AVAILABLE_NOW) > -1 || availabilityFilters.indexOf(momentToMonthYear(today)) > -1) {
|
|
92
|
+
if (isUnitAvailableNow) return true;
|
|
98
93
|
}
|
|
99
94
|
if (unit.availabilityExtensionMonths && unit.availabilityExtensionMonths > 0) {
|
|
100
95
|
for (let i = 1; i <= unit.availabilityExtensionMonths; i++) {
|
|
101
|
-
let extensionDate = (0, _Utils.dateToMoment)(unit.moveInDate).add(i, 'month').format(MONTH_YEAR_FORMAT);
|
|
96
|
+
let extensionDate = isUnitAvailableNow ? (0, _moment.default)().add(i, 'month').format(MONTH_YEAR_FORMAT) : (0, _Utils.dateToMoment)(unit.moveInDate).add(i, 'month').format(MONTH_YEAR_FORMAT);
|
|
102
97
|
if (availabilityFilters.indexOf(extensionDate) > -1) {
|
|
103
98
|
return true;
|
|
104
99
|
}
|
|
@@ -107,7 +102,6 @@ const isAvailable = (floorplan, availabilityFilters) => {
|
|
|
107
102
|
return availabilityFilters.indexOf(dateToMonthYear(unit.moveInDate)) > -1;
|
|
108
103
|
});
|
|
109
104
|
};
|
|
110
|
-
const isBeforeToday = date => (0, _moment.default)(date).isBefore(today);
|
|
111
105
|
const isBedroomsMatch = (floorplan, bedroomFilters) => {
|
|
112
106
|
return bedroomFilters.length === 0 ? true : bedroomFilters.indexOf(floorplan.bedroom) > -1;
|
|
113
107
|
};
|
|
@@ -144,7 +138,16 @@ const filtersFrom = floorplans => {
|
|
|
144
138
|
bedroomFilters.add(floorplan.bedroom);
|
|
145
139
|
styleFilters.add(floorplan.style);
|
|
146
140
|
floorplan.units.forEach(unit => {
|
|
147
|
-
|
|
141
|
+
const isUnitAvailableNow = isAvailableNow((0, _moment.default)(unit.moveInDate));
|
|
142
|
+
if (unit.moveInDate && isUnitAvailableNow) {
|
|
143
|
+
if (unit.availabilityExtensionMonths && unit.availabilityExtensionMonths > 0) {
|
|
144
|
+
for (let i = 1; i <= unit.availabilityExtensionMonths; i++) {
|
|
145
|
+
let extensionDate = (0, _moment.default)().add(i, 'month');
|
|
146
|
+
availabilityFilters.add(extensionDate.format(MONTH_YEAR_FORMAT));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (unit.moveInDate && !isUnitAvailableNow && isDateWithinTwelveMonths(unit.moveInDate)) {
|
|
148
151
|
availabilityFilters.add(dateToMonthYear(unit.moveInDate));
|
|
149
152
|
if (unit.availabilityExtensionMonths && unit.availabilityExtensionMonths > 0) {
|
|
150
153
|
for (let i = 1; i <= unit.availabilityExtensionMonths; i++) {
|
|
@@ -178,7 +181,6 @@ const getSimilarFloorplans = floorplanId => (0, _RoundRobin.get)("similarFloorpl
|
|
|
178
181
|
exports.getSimilarFloorplans = getSimilarFloorplans;
|
|
179
182
|
const getFloorplanVariations = floorplanId => (0, _RoundRobin.get)("floorplanVariations/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.floorplanVariations);
|
|
180
183
|
exports.getFloorplanVariations = getFloorplanVariations;
|
|
181
|
-
const today = (0, _moment.default)();
|
|
182
184
|
const isFloorplanAvailable = floorplan => floorplan.units.some(unit => today.isAfter((0, _Utils.dateToMoment)(unit.moveInDate)));
|
|
183
185
|
exports.isFloorplanAvailable = isFloorplanAvailable;
|
|
184
186
|
const getTestimonials = floorplanId => (0, _RoundRobin.get)("testimonials/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.testimonials);
|
|
@@ -245,4 +247,4 @@ const floorplanAddress = currentFloorplan => {
|
|
|
245
247
|
};
|
|
246
248
|
};
|
|
247
249
|
exports.floorplanAddress = floorplanAddress;
|
|
248
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfUHJvcGVydHkiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX1JlbmFpc3NhbmNlRGF0YSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQVZBSUxBQkxFX05PVyIsImV4cG9ydHMiLCJjb252ZXJ0VG9IdHRwcyIsInVybCIsInJlcGxhY2UiLCJjb252ZXJ0VG9GbG9vcnBsYW5DYXJkRGF0YSIsImZsb29ycGxhbkRldGFpbHMiLCJpZCIsIm5hbWUiLCJhY3RpdmUiLCJiZWRyb29tIiwiYmF0aHJvb20iLCJjb3ZlckltYWdlIiwiZmVhdHVyZWQiLCJzdHlsZSIsInNwZWNpYWxSZW50Iiwic3BlY2lhbFJlbnRTdGFydERhdGUiLCJzcGVjaWFsUmVudEVuZERhdGUiLCJhZGRyZXNzIiwiemlwY29kZSIsInZpcnR1YWxUb3VyTGluayIsInZpZGVvVG91ckxpbmsiLCJwaG90b3NGb2xkZXJJZCIsInVuaXRzIiwid2ViU3BlY2lhbHMiLCJmaWx0ZXIiLCJ3ZWJTcGVjaWFsIiwidG9kYXkiLCJpc0JldHdlZW4iLCJkYXRlVG9Nb21lbnQiLCJzdGFydERhdGUiLCJlbmREYXRlIiwibWFwIiwiZGVzY3JpcHRpb24iLCJnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGEiLCJyZXNwb25zZSIsImdldCIsInByb3BlcnRpZXMiLCJkYXRhIiwicHJvcGVydHkiLCJsZWFzZVR5cGUiLCJMZWFzZVR5cGUiLCJZRUFSTFkiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZm9yRWFjaCIsImZsb29ycGxhbnMiLCJmbG9vcnBsYW4iLCJ1bml0IiwiZ2V0Rmxvb3JwbGFuc0ZpbHRlckRhdGEiLCJwcm9wZXJ0eUlkIiwic29ydEFuZEZpbHRlciIsImN1cnJlbnRGaWx0ZXJzIiwic29ydEZsb29ycGxhbnMiLCJmaWx0ZXJNYXRjaGVzIiwic29ydEJ5IiwiaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzIiwiZGF0ZSIsIm1vbWVudCIsImRpZmYiLCJpc0RhdGVBZnRlclRvZGF5IiwiaXNBZnRlciIsIk1PTlRIX1lFQVJfRk9STUFUIiwiZGF0ZVRvTW9udGhZZWFyIiwiZGF0ZVN0cmluZyIsImZvcm1hdCIsImRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciIsIm1vbWVudFRvTW9udGhZZWFyIiwiaXNBdmFpbGFibGUiLCJhdmFpbGFiaWxpdHlGaWx0ZXJzIiwibGVuZ3RoIiwic29tZSIsImluZGV4T2YiLCJpc0JlZm9yZVRvZGF5IiwibW92ZUluRGF0ZSIsImF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyIsImkiLCJleHRlbnNpb25EYXRlIiwiYWRkIiwiaXNCZWZvcmUiLCJpc0JlZHJvb21zTWF0Y2giLCJiZWRyb29tRmlsdGVycyIsImlzU3R5bGVNYXRjaCIsInN0eWxlRmlsdGVycyIsImlzSW5QcmljZVJhbmdlIiwibWluUmVudCIsIm1heFJlbnQiLCJtaW5NYXgiLCJtaW5pbXVtTWF4aW11bSIsIm1pbiIsIm1heCIsImlzRmxvb3JwbGFuSWRzTWF0Y2giLCJmbG9vcnBsYW5JZHMiLCJTb3J0RmllbGRzIiwic29ydEZpZWxkIiwib3JkZXIiLCJzb3J0IiwiYSIsImIiLCJtaW5SYXRlU29ydGVkIiwiXyIsIm9yZGVyQnkiLCJmaWx0ZXJzRnJvbSIsIlNldCIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsIl9lbWJlZGRlZCIsImdldEFsbEFjdGl2ZUZsb29ycGxhbnMiLCJmbG9vcnBsYW5fMSIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwidGhlbiIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwic2ltaWxhckZsb29ycGxhbnMiLCJnZXRGbG9vcnBsYW5WYXJpYXRpb25zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsImlzRmxvb3JwbGFuQXZhaWxhYmxlIiwiZ2V0VGVzdGltb25pYWxzIiwidGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJwZXJtaXR0ZWRQZXRzIiwidW5pdFdpdGhNb3N0QWxsb3dlZFBldCIsImFsbG93ZWRQZXQiLCJQZXQiLCJMQVJHRV9ET0dfU01BTExfRE9HX0NBVCIsIlNNQUxMX0RPR19DQVQiLCJDQVQiLCJub3RQZXJtaXR0ZWRQZXRzIiwiTk9fUEVUIiwicGV0UG9saWN5IiwicGV0T3JkaW5hbCIsInBldCIsIk9iamVjdCIsImtleXMiLCJwb3AiLCJmbG9vcnBsYW5BZGRyZXNzIiwiY3VycmVudEZsb29ycGxhbiIsImNpdHkiLCJyZW5haXNzYW5jZSIsInN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge2RhdGVUb01vbWVudCwgbWluaW11bU1heGltdW19IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtMZWFzZVR5cGUsIFByb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtyZW5haXNzYW5jZX0gZnJvbSBcIi4uLy4uL2RhdGEvUmVuYWlzc2FuY2VEYXRhXCI7XG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfTk9XID0gXCJBdmFpbGFibGUgTm93XCI7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9IdHRwcyA9ICh1cmw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgaWYgKHVybCA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKC9eaHR0cDpcXC9cXC8vaSwgJ2h0dHBzOi8vJyk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvRmxvb3JwbGFuQ2FyZERhdGEgPSAoZmxvb3JwbGFuRGV0YWlsczogRmxvb3JwbGFuRGV0YWlscyk6IEZsb29ycGxhbkNhcmREYXRhID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZmxvb3JwbGFuRGV0YWlscy5pZCxcbiAgICAgICAgbmFtZTogZmxvb3JwbGFuRGV0YWlscy5uYW1lLFxuICAgICAgICBhY3RpdmU6IGZsb29ycGxhbkRldGFpbHMuYWN0aXZlLFxuICAgICAgICBiZWRyb29tOiBmbG9vcnBsYW5EZXRhaWxzLmJlZHJvb20sXG4gICAgICAgIGJhdGhyb29tOiBmbG9vcnBsYW5EZXRhaWxzLmJhdGhyb29tLFxuICAgICAgICBjb3ZlckltYWdlOiBmbG9vcnBsYW5EZXRhaWxzLmNvdmVySW1hZ2UsXG4gICAgICAgIGZlYXR1cmVkOiBmbG9vcnBsYW5EZXRhaWxzLmZlYXR1cmVkLFxuICAgICAgICBzdHlsZTogZmxvb3JwbGFuRGV0YWlscy5zdHlsZSxcbiAgICAgICAgc3BlY2lhbFJlbnQ6IGZsb29ycGxhbkRldGFpbHMuc3BlY2lhbFJlbnQsXG4gICAgICAgIHNwZWNpYWxSZW50U3RhcnREYXRlOiBmbG9vcnBsYW5EZXRhaWxzLnNwZWNpYWxSZW50U3RhcnREYXRlLFxuICAgICAgICBzcGVjaWFsUmVudEVuZERhdGU6IGZsb29ycGxhbkRldGFpbHMuc3BlY2lhbFJlbnRFbmREYXRlLFxuICAgICAgICBhZGRyZXNzOiBmbG9vcnBsYW5EZXRhaWxzLmFkZHJlc3MsXG4gICAgICAgIHppcGNvZGU6IGZsb29ycGxhbkRldGFpbHMuemlwY29kZSxcbiAgICAgICAgdmlydHVhbFRvdXJMaW5rOiBmbG9vcnBsYW5EZXRhaWxzLnZpcnR1YWxUb3VyTGluayxcbiAgICAgICAgdmlkZW9Ub3VyTGluazogZmxvb3JwbGFuRGV0YWlscy52aWRlb1RvdXJMaW5rLFxuICAgICAgICBwaG90b3NGb2xkZXJJZDogZmxvb3JwbGFuRGV0YWlscy5waG90b3NGb2xkZXJJZCxcbiAgICAgICAgdW5pdHM6IGZsb29ycGxhbkRldGFpbHMudW5pdHMsXG4gICAgICAgIHdlYlNwZWNpYWxzOiBmbG9vcnBsYW5EZXRhaWxzLndlYlNwZWNpYWxzXG4gICAgICAgICAgICAuZmlsdGVyKHdlYlNwZWNpYWwgPT4gdG9kYXkuaXNCZXR3ZWVuKGRhdGVUb01vbWVudCh3ZWJTcGVjaWFsLnN0YXJ0RGF0ZSksIGRhdGVUb01vbWVudCh3ZWJTcGVjaWFsLmVuZERhdGUpKSlcbiAgICAgICAgICAgIC5tYXAod2ViU3BlY2lhbCA9PiB3ZWJTcGVjaWFsLmRlc2NyaXB0aW9uKVxuICAgIH0gYXMgRmxvb3JwbGFuQ2FyZERhdGE7XG59XG5leHBvcnQgY29uc3QgZ2V0QWxsUHJvcGVydHlGaWx0ZXJEYXRhID0gYXN5bmMgKCk6IFByb21pc2U8UHJvcGVydHlGaWx0ZXJEYXRhW10+ID0+IHtcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBnZXQoXCJwcm9wZXJ0aWVzL2ZpbHRlclwiKTtcblxuICAgIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnR5RmlsdGVyRGF0YVtdID0gcmVzcG9uc2UuZGF0YVxuICAgICAgICAuZmlsdGVyKChwcm9wZXJ0eTogUHJvcGVydHlGaWx0ZXJEYXRhKSA9PiBwcm9wZXJ0eS5hY3RpdmUpXG4gICAgICAgIC5maWx0ZXIoKHByb3BlcnR5OiBQcm9wZXJ0eUZpbHRlckRhdGEpID0+IHByb3BlcnR5LmxlYXNlVHlwZSA9PT0gTGVhc2VUeXBlLllFQVJMWSlcbiAgICAgICAgLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gIXByb3BlcnR5Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImdhcmFnZVwiKSk7XG5cbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuICAgICAgICBwcm9wZXJ0eS5mbG9vcnBsYW5zID0gcHJvcGVydHkuZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuICAgICAgICBwcm9wZXJ0eS5mbG9vcnBsYW5zLmZvckVhY2goZmxvb3JwbGFuID0+IHtcbiAgICAgICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuc0ZpbHRlckRhdGEgPSBhc3luYyAocHJvcGVydHlJZDogUHJvcGVydHlJZCk6IFByb21pc2U8Rmxvb3JwbGFuQ2FyZERhdGFbXT4gPT4ge1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcInByb3BlcnRpZXMvXCIgKyBwcm9wZXJ0eUlkICsgXCIvZmxvb3JwbGFucy9maWx0ZXJcIik7XG5cbiAgICBjb25zdCBmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0gcmVzcG9uc2UuZGF0YVxuICAgICAgICAuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhKSA9PiBmbG9vcnBsYW4uYWN0aXZlKTtcblxuICAgIGZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICBmbG9vcnBsYW4udW5pdHMgPSBmbG9vcnBsYW4udW5pdHMuZmlsdGVyKHVuaXQgPT4gdW5pdC5hY3RpdmUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZsb29ycGxhbnM7XG59O1xuZXhwb3J0IGNvbnN0IHNvcnRBbmRGaWx0ZXIgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgY3VycmVudEZpbHRlcnM6IEN1cnJlbnRGaWx0ZXJzKTogRmxvb3JwbGFuQ2FyZERhdGFbXSA9PiB7XG4gICAgcmV0dXJuIHNvcnRGbG9vcnBsYW5zKGZsb29ycGxhbnMuZmlsdGVyKGZsb29ycGxhbiA9PiBmaWx0ZXJNYXRjaGVzKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMpKSwgY3VycmVudEZpbHRlcnMuc29ydEJ5KTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IGlzRGF0ZVdpdGhpblR3ZWx2ZU1vbnRocyA9IChkYXRlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG1vbWVudCgpO1xuICAgIGNvbnN0IGRpZmYgPSBtb21lbnQoZGF0ZSwgXCJZWVlZLU1NLUREXCIpLmRpZmYodG9kYXksICdtb250aHMnLCBmYWxzZSk7XG4gICAgcmV0dXJuIGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzRGF0ZUFmdGVyVG9kYXkgPSAoZGF0ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKTtcbiAgICByZXR1cm4gbW9tZW50KGRhdGUsIFwiWVlZWS1NTS1ERFwiKS5pc0FmdGVyKHRvZGF5KTtcbn1cbmV4cG9ydCBjb25zdCBNT05USF9ZRUFSX0ZPUk1BVCA9IFwiTU1NTSBZWVlZXCI7XG5jb25zdCBkYXRlVG9Nb250aFllYXIgPSAoZGF0ZVN0cmluZzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyA9PiBtb21lbnQoZGF0ZVN0cmluZywgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0QXZhaWxhYmlsaXR5VG9Nb250aFllYXIgPSAoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgQVZBSUxBQkxFX05PVyA9PT0gZGF0ZVN0cmluZyA/IGRhdGVTdHJpbmcgOiBtb21lbnQoZGF0ZVN0cmluZywgXCJNTS1ZWVlZXCIpLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCk7XG5cbmV4cG9ydCBjb25zdCBtb21lbnRUb01vbnRoWWVhciA9IChkYXRlOiBNb21lbnQpID0+IGRhdGUuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcbmNvbnN0IGlzQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGF2YWlsYWJpbGl0eUZpbHRlcnM6IE1vbnRoW10pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOlxuXG4gICAgICAgIGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihBVkFJTEFCTEVfTk9XKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZVRvZGF5KHVuaXQubW92ZUluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YobW9tZW50VG9Nb250aFllYXIodG9kYXkpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZVRvZGF5KHVuaXQubW92ZUluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzICYmIHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uRGF0ZSA9IGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpLmFkZChpLCAnbW9udGgnKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihleHRlbnNpb25EYXRlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihkYXRlVG9Nb250aFllYXIodW5pdC5tb3ZlSW5EYXRlKSkgPiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbn07XG5cbmNvbnN0IGlzQmVmb3JlVG9kYXkgPSAoZGF0ZTogc3RyaW5nKSA9PiBtb21lbnQoZGF0ZSkuaXNCZWZvcmUodG9kYXkpO1xuY29uc3QgaXNCZWRyb29tc01hdGNoID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGJlZHJvb21GaWx0ZXJzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBiZWRyb29tRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogYmVkcm9vbUZpbHRlcnMuaW5kZXhPZihmbG9vcnBsYW4uYmVkcm9vbSkgPiAtMTtcbn07XG5jb25zdCBpc1N0eWxlTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgc3R5bGVGaWx0ZXJzOiBGbG9vcnBsYW5TdHlsZVtdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN0eWxlRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogc3R5bGVGaWx0ZXJzLmluZGV4T2YoZmxvb3JwbGFuLnN0eWxlKSA+IC0xO1xufVxuY29uc3QgaXNJblByaWNlUmFuZ2UgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgbWluUmVudDogbnVtYmVyLCBtYXhSZW50OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBtaW5NYXggPSBtaW5pbXVtTWF4aW11bShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKTtcbiAgICByZXR1cm4gbWluTWF4Lm1pbiA+PSBtaW5SZW50ICYmIG1pbk1heC5tYXggPD0gbWF4UmVudDtcbn1cbmNvbnN0IGlzRmxvb3JwbGFuSWRzTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgZmxvb3JwbGFuSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBmbG9vcnBsYW5JZHMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZsb29ycGxhbklkcy5pbmRleE9mKGZsb29ycGxhbi5pZCkgPiAtMTtcbn07XG5jb25zdCBmaWx0ZXJNYXRjaGVzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGN1cnJlbnRGaWx0ZXJzOiBDdXJyZW50RmlsdGVycykgPT4ge1xuICAgIHJldHVybiBpc0F2YWlsYWJsZShmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmF2YWlsYWJpbGl0eUZpbHRlcnMpICYmXG4gICAgICAgIGlzSW5QcmljZVJhbmdlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMubWluUmVudCwgY3VycmVudEZpbHRlcnMubWF4UmVudCkgJiZcbiAgICAgICAgaXNTdHlsZU1hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuc3R5bGVGaWx0ZXJzKSAmJlxuICAgICAgICBpc0JlZHJvb21zTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5iZWRyb29tRmlsdGVycykgJiZcbiAgICAgICAgaXNGbG9vcnBsYW5JZHNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmZsb29ycGxhbklkcyk7XG59XG5leHBvcnQgY29uc3Qgc29ydEZsb29ycGxhbnMgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgc29ydEJ5OiBTb3J0QnkpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcblxuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiZGVzY1wiKSB7XG4gICAgICAgIHJldHVybiBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbmltdW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5SYXRlU29ydGVkID0gZmxvb3JwbGFucy5zb3J0KChhLCBiKSA9PiBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWluaW11bU1heGltdW0oYi51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJhc2NcIikge1xuICAgICAgICByZXR1cm4gbWluUmF0ZVNvcnRlZFxuICAgIH1cbiAgICByZXR1cm4gXy5vcmRlckJ5KG1pblJhdGVTb3J0ZWQsIFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQsIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlcik7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJzRnJvbSA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdKTogRmxvb3JwbGFuRmlsdGVycyA9PiB7XG5cbiAgICBjb25zdCBiZWRyb29tRmlsdGVycyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUZpbHRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBzdHlsZUZpbHRlcnMgPSBuZXcgU2V0PEZsb29ycGxhblN0eWxlPigpO1xuXG4gICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQoQVZBSUxBQkxFX05PVyk7XG4gICAgZmxvb3JwbGFucy5mb3JFYWNoKGZsb29ycGxhbiA9PiB7XG4gICAgICAgIGJlZHJvb21GaWx0ZXJzLmFkZChmbG9vcnBsYW4uYmVkcm9vbSk7XG4gICAgICAgIHN0eWxlRmlsdGVycy5hZGQoZmxvb3JwbGFuLnN0eWxlKTtcblxuICAgICAgICBmbG9vcnBsYW4udW5pdHMuZm9yRWFjaCgodW5pdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHVuaXQubW92ZUluRGF0ZSAmJiBpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHModW5pdC5tb3ZlSW5EYXRlKSAmJiBpc0RhdGVBZnRlclRvZGF5KHVuaXQubW92ZUluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChkYXRlVG9Nb250aFllYXIodW5pdC5tb3ZlSW5EYXRlKSk7XG4gICAgICAgICAgICAgICAgaWYgKHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzICYmIHVuaXQuYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uRGF0ZSA9IGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpLmFkZChpLCAnbW9udGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKGV4dGVuc2lvbkRhdGUuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYmVkcm9vbTogYmVkcm9vbUZpbHRlcnMsXG4gICAgICAgIGF2YWlsYWJpbGl0eTogYXZhaWxhYmlsaXR5RmlsdGVycyxcbiAgICAgICAgc3R5bGU6IHN0eWxlRmlsdGVyc1xuICAgIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IGdldEZlYXR1cmVkRmxvb3JwbGFucyA9IGFzeW5jICgpOiBQcm9taXNlPEZsb29ycGxhblNwb3RsaWdodFtdPiA9PiB7XG5cbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBnZXQoXCJmbG9vcnBsYW5zP3Byb2plY3Rpb249c3BvdGxpZ2h0JnNpemU9MjAwXCIpO1xuICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5zLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW5TcG90bGlnaHQpID0+IGZsb29ycGxhbi5mZWF0dXJlZCAmJiBmbG9vcnBsYW4ucHJvcGVydHkuYWN0aXZlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxBY3RpdmVGbG9vcnBsYW5zID0gYXN5bmMgKCk6IFByb21pc2U8Rmxvb3JwbGFuRGV0YWlsc1tdPiA9PiB7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldChcImZsb29ycGxhbnM/cHJvamVjdGlvbj1kZXRhaWxzJnNpemU9MjAwXCIpO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5zXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW4uYWN0aXZlKVxuICAgICAgICAuZmlsdGVyKChmbG9vcnBsYW5fMTogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW5fMS5zdHlsZSAhPT0gXCJHQVJBR0VcIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhbj4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5zL1wiICsgZmxvb3JwbGFuSWQgKyBcIj9wcm9qZWN0aW9uPXdpdGhJZFwiKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2ltaWxhckZsb29ycGxhbnMgPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8U2ltaWxhckZsb29ycGxhbltdPiA9PlxuICAgIGdldChcInNpbWlsYXJGbG9vcnBsYW5zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuc2ltaWxhckZsb29ycGxhbnMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxGbG9vcnBsYW5WYXJpYXRpb25bXT4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5WYXJpYXRpb25zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuZmxvb3JwbGFuVmFyaWF0aW9ucyk7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuZXhwb3J0IGNvbnN0IGdldFdlYlNwZWNpYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFdlYlNwZWNpYWxbXT4gPT5cbiAgICBnZXQoXCJ3ZWJTcGVjaWFscy9zZWFyY2gvYnlGbG9vcnBsYW5JZD9wcm9qZWN0aW9uPXdpdGhJZCZmbG9vcnBsYW5JZD1cIiArIGZsb29ycGxhbklkKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLndlYlNwZWNpYWxzKTtcblxuZXhwb3J0IGNvbnN0IHBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICBzd2l0Y2ggKHVuaXQ/LmFsbG93ZWRQZXQpIHtcbiAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbJ05vbmUnXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBub3RQZXJtaXR0ZWRQZXRzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nW10gPT4ge1xuXG4gICAgY29uc3QgdW5pdCA9IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQoWy4uLmZsb29ycGxhbi51bml0c10pO1xuXG4gICAgc3dpdGNoICh1bml0Py5hbGxvd2VkUGV0KSB7XG4gICAgICAgIGNhc2UgUGV0LkxBUkdFX0RPR19TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJ107XG4gICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0xhcmdlIERvZycsICdTbWFsbCBEb2cnXTtcbiAgICAgICAgY2FzZSBQZXQuTk9fUEVUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgcGV0UG9saWN5ID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG4gICAgcmV0dXJuIHVuaXQ/LnBldFBvbGljeTtcbn1cbmNvbnN0IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQgPSAodW5pdHM6IFVuaXRbXSk6IFVuaXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHBldE9yZGluYWwgPSAocGV0OiBQZXQpID0+IE9iamVjdC5rZXlzKFBldCkuaW5kZXhPZihwZXQpO1xuICAgIHJldHVybiB1bml0cy5zb3J0KChhLCBiKSA9PiBwZXRPcmRpbmFsKGIuYWxsb3dlZFBldCkgLSBwZXRPcmRpbmFsKGEuYWxsb3dlZFBldCkpLnBvcCgpO1xufVxuXG5leHBvcnQgY29uc3QgZmxvb3JwbGFuQWRkcmVzcyA9IChjdXJyZW50Rmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBGbG9vcnBsYW5BZGRyZXNzID0+IHtcbiAgICBjb25zdCBhZGRyZXNzOiBGbG9vcnBsYW5BZGRyZXNzID0ge2FkZHJlc3M6IFwiXCIsIGNpdHk6IHJlbmFpc3NhbmNlLmNpdHksIHN0YXRlOiByZW5haXNzYW5jZS5zdGF0ZSwgemlwY29kZTogXCJcIn07XG4gICAgaWYgKGN1cnJlbnRGbG9vcnBsYW4udW5pdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLmFkZHJlc3MsXG4gICAgICAgICAgICB6aXBjb2RlOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLnppcGNvZGVcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnByb3BlcnR5LmFkZHJlc3MsXG4gICAgICAgIHppcGNvZGU6IGN1cnJlbnRGbG9vcnBsYW4ucHJvcGVydHkuemlwY29kZVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5BZGRyZXNzIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgY2l0eTogc3RyaW5nO1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBWUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQTtBQUF1RCxTQUFBRCx1QkFBQVMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVoRCxNQUFNRyxhQUFhLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHLGVBQWU7QUFFckMsTUFBTUUsY0FBYyxHQUFJQyxHQUFXLElBQWE7RUFDbkQsSUFBSUEsR0FBRyxLQUFLLElBQUksRUFDWixPQUFPLEVBQUU7RUFDYixPQUFPQSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO0FBQ2pELENBQUM7QUFBQ0gsT0FBQSxDQUFBQyxjQUFBLEdBQUFBLGNBQUE7QUFFSyxNQUFNRywwQkFBMEIsR0FBSUMsZ0JBQWtDLElBQXdCO0VBQ2pHLE9BQU87SUFDSEMsRUFBRSxFQUFFRCxnQkFBZ0IsQ0FBQ0MsRUFBRTtJQUN2QkMsSUFBSSxFQUFFRixnQkFBZ0IsQ0FBQ0UsSUFBSTtJQUMzQkMsTUFBTSxFQUFFSCxnQkFBZ0IsQ0FBQ0csTUFBTTtJQUMvQkMsT0FBTyxFQUFFSixnQkFBZ0IsQ0FBQ0ksT0FBTztJQUNqQ0MsUUFBUSxFQUFFTCxnQkFBZ0IsQ0FBQ0ssUUFBUTtJQUNuQ0MsVUFBVSxFQUFFTixnQkFBZ0IsQ0FBQ00sVUFBVTtJQUN2Q0MsUUFBUSxFQUFFUCxnQkFBZ0IsQ0FBQ08sUUFBUTtJQUNuQ0MsS0FBSyxFQUFFUixnQkFBZ0IsQ0FBQ1EsS0FBSztJQUM3QkMsV0FBVyxFQUFFVCxnQkFBZ0IsQ0FBQ1MsV0FBVztJQUN6Q0Msb0JBQW9CLEVBQUVWLGdCQUFnQixDQUFDVSxvQkFBb0I7SUFDM0RDLGtCQUFrQixFQUFFWCxnQkFBZ0IsQ0FBQ1csa0JBQWtCO0lBQ3ZEQyxPQUFPLEVBQUVaLGdCQUFnQixDQUFDWSxPQUFPO0lBQ2pDQyxPQUFPLEVBQUViLGdCQUFnQixDQUFDYSxPQUFPO0lBQ2pDQyxlQUFlLEVBQUVkLGdCQUFnQixDQUFDYyxlQUFlO0lBQ2pEQyxhQUFhLEVBQUVmLGdCQUFnQixDQUFDZSxhQUFhO0lBQzdDQyxjQUFjLEVBQUVoQixnQkFBZ0IsQ0FBQ2dCLGNBQWM7SUFDL0NDLEtBQUssRUFBRWpCLGdCQUFnQixDQUFDaUIsS0FBSztJQUM3QkMsV0FBVyxFQUFFbEIsZ0JBQWdCLENBQUNrQixXQUFXLENBQ3BDQyxNQUFNLENBQUNDLFVBQVUsSUFBSUMsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBQUMsbUJBQVksRUFBQ0gsVUFBVSxDQUFDSSxTQUFTLENBQUMsRUFBRSxJQUFBRCxtQkFBWSxFQUFDSCxVQUFVLENBQUNLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDM0dDLEdBQUcsQ0FBQ04sVUFBVSxJQUFJQSxVQUFVLENBQUNPLFdBQVc7RUFDakQsQ0FBQztBQUNMLENBQUM7QUFBQWhDLE9BQUEsQ0FBQUksMEJBQUEsR0FBQUEsMEJBQUE7QUFDTSxNQUFNNkIsd0JBQXdCLEdBQUcsTUFBQUEsQ0FBQSxLQUEyQztFQUMvRSxJQUFJQyxRQUFRLEdBQUcsTUFBTSxJQUFBQyxlQUFHLEVBQUMsbUJBQW1CLENBQUM7RUFFN0MsTUFBTUMsVUFBZ0MsR0FBR0YsUUFBUSxDQUFDRyxJQUFJLENBQ2pEYixNQUFNLENBQUVjLFFBQTRCLElBQUtBLFFBQVEsQ0FBQzlCLE1BQU0sQ0FBQyxDQUN6RGdCLE1BQU0sQ0FBRWMsUUFBNEIsSUFBS0EsUUFBUSxDQUFDQyxTQUFTLEtBQUtDLG1CQUFTLENBQUNDLE1BQU0sQ0FBQyxDQUNqRmpCLE1BQU0sQ0FBRWMsUUFBNEIsSUFBSyxDQUFDQSxRQUFRLENBQUMvQixJQUFJLENBQUNtQyxXQUFXLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7RUFFOUZQLFVBQVUsQ0FBQ1EsT0FBTyxDQUFDTixRQUFRLElBQUk7SUFDM0JBLFFBQVEsQ0FBQ08sVUFBVSxHQUFHUCxRQUFRLENBQUNPLFVBQVUsQ0FBQ3JCLE1BQU0sQ0FBQ3NCLFNBQVMsSUFBSUEsU0FBUyxDQUFDdEMsTUFBTSxDQUFDO0lBQy9FOEIsUUFBUSxDQUFDTyxVQUFVLENBQUNELE9BQU8sQ0FBQ0UsU0FBUyxJQUFJO01BQ3JDQSxTQUFTLENBQUN4QixLQUFLLEdBQUd3QixTQUFTLENBQUN4QixLQUFLLENBQUNFLE1BQU0sQ0FBQ3VCLElBQUksSUFBSUEsSUFBSSxDQUFDdkMsTUFBTSxDQUFDO0lBQ2pFLENBQUMsQ0FBQztFQUNOLENBQUMsQ0FBQztFQUVGLE9BQU80QixVQUFVO0FBQ3JCLENBQUM7QUFBQXBDLE9BQUEsQ0FBQWlDLHdCQUFBLEdBQUFBLHdCQUFBO0FBQ00sTUFBTWUsdUJBQXVCLEdBQUcsTUFBT0MsVUFBc0IsSUFBbUM7RUFDbkcsSUFBSWYsUUFBUSxHQUFHLE1BQU0sSUFBQUMsZUFBRyxFQUFDLGFBQWEsR0FBR2MsVUFBVSxHQUFHLG9CQUFvQixDQUFDO0VBRTNFLE1BQU1KLFVBQStCLEdBQUdYLFFBQVEsQ0FBQ0csSUFBSSxDQUNoRGIsTUFBTSxDQUFFc0IsU0FBNEIsSUFBS0EsU0FBUyxDQUFDdEMsTUFBTSxDQUFDO0VBRS9EcUMsVUFBVSxDQUFDRCxPQUFPLENBQUNFLFNBQVMsSUFBSTtJQUM1QkEsU0FBUyxDQUFDeEIsS0FBSyxHQUFHd0IsU0FBUyxDQUFDeEIsS0FBSyxDQUFDRSxNQUFNLENBQUN1QixJQUFJLElBQUlBLElBQUksQ0FBQ3ZDLE1BQU0sQ0FBQztFQUNqRSxDQUFDLENBQUM7RUFFRixPQUFPcUMsVUFBVTtBQUNyQixDQUFDO0FBQUM3QyxPQUFBLENBQUFnRCx1QkFBQSxHQUFBQSx1QkFBQTtBQUNLLE1BQU1FLGFBQWEsR0FBR0EsQ0FBQ0wsVUFBK0IsRUFBRU0sY0FBOEIsS0FBMEI7RUFDbkgsT0FBT0MsY0FBYyxDQUFDUCxVQUFVLENBQUNyQixNQUFNLENBQUNzQixTQUFTLElBQUlPLGFBQWEsQ0FBQ1AsU0FBUyxFQUFFSyxjQUFjLENBQUMsQ0FBQyxFQUFFQSxjQUFjLENBQUNHLE1BQU0sQ0FBQztBQUMxSCxDQUFDO0FBQUN0RCxPQUFBLENBQUFrRCxhQUFBLEdBQUFBLGFBQUE7QUFHSyxNQUFNSyx3QkFBd0IsR0FBSUMsSUFBWSxJQUFLO0VBQ3RELE1BQU05QixLQUFLLEdBQUcsSUFBQStCLGVBQU0sRUFBQyxDQUFDO0VBQ3RCLE1BQU1DLElBQUksR0FBRyxJQUFBRCxlQUFNLEVBQUNELElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQ0UsSUFBSSxDQUFDaEMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7RUFDcEUsT0FBT2dDLElBQUksSUFBSSxDQUFDLElBQUlBLElBQUksSUFBSSxFQUFFO0FBQ2xDLENBQUM7QUFBQTFELE9BQUEsQ0FBQXVELHdCQUFBLEdBQUFBLHdCQUFBO0FBQ00sTUFBTUksZ0JBQWdCLEdBQUlILElBQVksSUFBSztFQUM5QyxNQUFNOUIsS0FBSyxHQUFHLElBQUErQixlQUFNLEVBQUMsQ0FBQztFQUN0QixPQUFPLElBQUFBLGVBQU0sRUFBQ0QsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDSSxPQUFPLENBQUNsQyxLQUFLLENBQUM7QUFDcEQsQ0FBQztBQUFBMUIsT0FBQSxDQUFBMkQsZ0JBQUEsR0FBQUEsZ0JBQUE7QUFDTSxNQUFNRSxpQkFBaUIsR0FBQTdELE9BQUEsQ0FBQTZELGlCQUFBLEdBQUcsV0FBVztBQUM1QyxNQUFNQyxlQUFlLEdBQUlDLFVBQXlCLElBQWEsSUFBQU4sZUFBTSxFQUFDTSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUNDLE1BQU0sQ0FBQ0gsaUJBQWlCLENBQUM7QUFFbEgsTUFBTUksOEJBQThCLEdBQUlGLFVBQWtCLElBQzdEaEUsYUFBYSxLQUFLZ0UsVUFBVSxHQUFHQSxVQUFVLEdBQUcsSUFBQU4sZUFBTSxFQUFDTSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0gsaUJBQWlCLENBQUM7QUFBQzdELE9BQUEsQ0FBQWlFLDhCQUFBLEdBQUFBLDhCQUFBO0FBRWpHLE1BQU1DLGlCQUFpQixHQUFJVixJQUFZLElBQUtBLElBQUksQ0FBQ1EsTUFBTSxDQUFDSCxpQkFBaUIsQ0FBQztBQUFDN0QsT0FBQSxDQUFBa0UsaUJBQUEsR0FBQUEsaUJBQUE7QUFDbEYsTUFBTUMsV0FBVyxHQUFHQSxDQUFDckIsU0FBNEIsRUFBRXNCLG1CQUE0QixLQUFjO0VBRXpGLE9BQU9BLG1CQUFtQixDQUFDQyxNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksR0FFMUN2QixTQUFTLENBQUN4QixLQUFLLENBQUNnRCxJQUFJLENBQUV2QixJQUFJLElBQUs7SUFDdkIsSUFBSXFCLG1CQUFtQixDQUFDRyxPQUFPLENBQUN4RSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUNqRCxJQUFJeUUsYUFBYSxDQUFDekIsSUFBSSxDQUFDMEIsVUFBVSxDQUFDLEVBQUU7UUFDaEMsT0FBTyxJQUFJO01BQ2Y7SUFDSjtJQUNBLElBQUlMLG1CQUFtQixDQUFDRyxPQUFPLENBQUNMLGlCQUFpQixDQUFDeEMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUM1RCxJQUFJOEMsYUFBYSxDQUFDekIsSUFBSSxDQUFDMEIsVUFBVSxDQUFDLEVBQUU7UUFDaEMsT0FBTyxJQUFJO01BQ2Y7SUFDSjtJQUVBLElBQUkxQixJQUFJLENBQUMyQiwyQkFBMkIsSUFBSTNCLElBQUksQ0FBQzJCLDJCQUEyQixHQUFHLENBQUMsRUFBRTtNQUMxRSxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsSUFBSTVCLElBQUksQ0FBQzJCLDJCQUEyQixFQUFFQyxDQUFDLEVBQUUsRUFBRTtRQUN4RCxJQUFJQyxhQUFhLEdBQUcsSUFBQWhELG1CQUFZLEVBQUNtQixJQUFJLENBQUMwQixVQUFVLENBQUMsQ0FBQ0ksR0FBRyxDQUFDRixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUNYLE1BQU0sQ0FBQ0gsaUJBQWlCLENBQUM7UUFDM0YsSUFBSU8sbUJBQW1CLENBQUNHLE9BQU8sQ0FBQ0ssYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7VUFDakQsT0FBTyxJQUFJO1FBQ2Y7TUFDSjtJQUNKO0lBQ0EsT0FBT1IsbUJBQW1CLENBQUNHLE9BQU8sQ0FBQ1QsZUFBZSxDQUFDZixJQUFJLENBQUMwQixVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUM3RSxDQUNKLENBQUM7QUFDVCxDQUFDO0FBRUQsTUFBTUQsYUFBYSxHQUFJaEIsSUFBWSxJQUFLLElBQUFDLGVBQU0sRUFBQ0QsSUFBSSxDQUFDLENBQUNzQixRQUFRLENBQUNwRCxLQUFLLENBQUM7QUFDcEUsTUFBTXFELGVBQWUsR0FBR0EsQ0FBQ2pDLFNBQTRCLEVBQUVrQyxjQUF3QixLQUFjO0VBQ3pGLE9BQU9BLGNBQWMsQ0FBQ1gsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUdXLGNBQWMsQ0FBQ1QsT0FBTyxDQUFDekIsU0FBUyxDQUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFDRCxNQUFNd0UsWUFBWSxHQUFHQSxDQUFDbkMsU0FBNEIsRUFBRW9DLFlBQThCLEtBQWM7RUFDNUYsT0FBT0EsWUFBWSxDQUFDYixNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBR2EsWUFBWSxDQUFDWCxPQUFPLENBQUN6QixTQUFTLENBQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUNELE1BQU1zRSxjQUFjLEdBQUdBLENBQUNyQyxTQUE0QixFQUFFc0MsT0FBZSxFQUFFQyxPQUFlLEtBQWM7RUFDaEcsTUFBTUMsTUFBTSxHQUFHLElBQUFDLHFCQUFjLEVBQUN6QyxTQUFTLENBQUN4QixLQUFLLEVBQUUsTUFBTSxDQUFDO0VBQ3RELE9BQU9nRSxNQUFNLENBQUNFLEdBQUcsSUFBSUosT0FBTyxJQUFJRSxNQUFNLENBQUNHLEdBQUcsSUFBSUosT0FBTztBQUN6RCxDQUFDO0FBQ0QsTUFBTUssbUJBQW1CLEdBQUdBLENBQUM1QyxTQUE0QixFQUFFNkMsWUFBc0IsS0FBYztFQUMzRixPQUFPQSxZQUFZLENBQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBR3NCLFlBQVksQ0FBQ3BCLE9BQU8sQ0FBQ3pCLFNBQVMsQ0FBQ3hDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBQ0QsTUFBTStDLGFBQWEsR0FBR0EsQ0FBQ1AsU0FBNEIsRUFBRUssY0FBOEIsS0FBSztFQUNwRixPQUFPZ0IsV0FBVyxDQUFDckIsU0FBUyxFQUFFSyxjQUFjLENBQUNpQixtQkFBbUIsQ0FBQyxJQUM3RGUsY0FBYyxDQUFDckMsU0FBUyxFQUFFSyxjQUFjLENBQUNpQyxPQUFPLEVBQUVqQyxjQUFjLENBQUNrQyxPQUFPLENBQUMsSUFDekVKLFlBQVksQ0FBQ25DLFNBQVMsRUFBRUssY0FBYyxDQUFDK0IsWUFBWSxDQUFDLElBQ3BESCxlQUFlLENBQUNqQyxTQUFTLEVBQUVLLGNBQWMsQ0FBQzZCLGNBQWMsQ0FBQyxJQUN6RFUsbUJBQW1CLENBQUM1QyxTQUFTLEVBQUVLLGNBQWMsQ0FBQ3dDLFlBQVksQ0FBQztBQUNuRSxDQUFDO0FBQ00sTUFBTXZDLGNBQWMsR0FBR0EsQ0FBQ1AsVUFBK0IsRUFBRVMsTUFBYyxLQUEwQjtFQUVwRyxJQUFJc0MsNEJBQVUsQ0FBQ3RDLE1BQU0sQ0FBQyxDQUFDdUMsU0FBUyxLQUFLLFNBQVMsSUFBSUQsNEJBQVUsQ0FBQ3RDLE1BQU0sQ0FBQyxDQUFDd0MsS0FBSyxLQUFLLE1BQU0sRUFBRTtJQUNuRixPQUFPakQsVUFBVSxDQUFDa0QsSUFBSSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLLElBQUFWLHFCQUFjLEVBQUNVLENBQUMsQ0FBQzNFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQ2tFLEdBQUcsR0FBRyxJQUFBRCxxQkFBYyxFQUFDUyxDQUFDLENBQUMxRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUNrRSxHQUFHLENBQUM7RUFDL0c7RUFFQSxNQUFNVSxhQUFhLEdBQUdyRCxVQUFVLENBQUNrRCxJQUFJLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUssSUFBQVYscUJBQWMsRUFBQ1MsQ0FBQyxDQUFDMUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDa0UsR0FBRyxHQUFHLElBQUFELHFCQUFjLEVBQUNVLENBQUMsQ0FBQzNFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQ2tFLEdBQUcsQ0FBQztFQUMxSCxJQUFJSSw0QkFBVSxDQUFDdEMsTUFBTSxDQUFDLENBQUN1QyxTQUFTLEtBQUssU0FBUyxJQUFJRCw0QkFBVSxDQUFDdEMsTUFBTSxDQUFDLENBQUN3QyxLQUFLLEtBQUssS0FBSyxFQUFFO0lBQ2xGLE9BQU9JLGFBQWE7RUFDeEI7RUFDQSxPQUFPQyxlQUFDLENBQUNDLE9BQU8sQ0FBQ0YsYUFBYSxFQUFFTiw0QkFBVSxDQUFDdEMsTUFBTSxDQUFDLENBQUN1QyxTQUFTLEVBQUVELDRCQUFVLENBQUN0QyxNQUFNLENBQUMsQ0FBQ3dDLEtBQUssQ0FBQztBQUMzRixDQUFDO0FBQUM5RixPQUFBLENBQUFvRCxjQUFBLEdBQUFBLGNBQUE7QUFHSyxNQUFNaUQsV0FBVyxHQUFJeEQsVUFBK0IsSUFBdUI7RUFFOUUsTUFBTW1DLGNBQWMsR0FBRyxJQUFJc0IsR0FBRyxDQUFTLENBQUM7RUFDeEMsTUFBTWxDLG1CQUFtQixHQUFHLElBQUlrQyxHQUFHLENBQVMsQ0FBQztFQUM3QyxNQUFNcEIsWUFBWSxHQUFHLElBQUlvQixHQUFHLENBQWlCLENBQUM7RUFFOUNsQyxtQkFBbUIsQ0FBQ1MsR0FBRyxDQUFDOUUsYUFBYSxDQUFDO0VBQ3RDOEMsVUFBVSxDQUFDRCxPQUFPLENBQUNFLFNBQVMsSUFBSTtJQUM1QmtDLGNBQWMsQ0FBQ0gsR0FBRyxDQUFDL0IsU0FBUyxDQUFDckMsT0FBTyxDQUFDO0lBQ3JDeUUsWUFBWSxDQUFDTCxHQUFHLENBQUMvQixTQUFTLENBQUNqQyxLQUFLLENBQUM7SUFFakNpQyxTQUFTLENBQUN4QixLQUFLLENBQUNzQixPQUFPLENBQUVHLElBQUksSUFBSztNQUM5QixJQUFJQSxJQUFJLENBQUMwQixVQUFVLElBQUlsQix3QkFBd0IsQ0FBQ1IsSUFBSSxDQUFDMEIsVUFBVSxDQUFDLElBQUlkLGdCQUFnQixDQUFDWixJQUFJLENBQUMwQixVQUFVLENBQUMsRUFBRTtRQUNuR0wsbUJBQW1CLENBQUNTLEdBQUcsQ0FBQ2YsZUFBZSxDQUFDZixJQUFJLENBQUMwQixVQUFVLENBQUMsQ0FBQztRQUN6RCxJQUFJMUIsSUFBSSxDQUFDMkIsMkJBQTJCLElBQUkzQixJQUFJLENBQUMyQiwyQkFBMkIsR0FBRyxDQUFDLEVBQUU7VUFDMUUsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLElBQUk1QixJQUFJLENBQUMyQiwyQkFBMkIsRUFBRUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSUMsYUFBYSxHQUFHLElBQUFoRCxtQkFBWSxFQUFDbUIsSUFBSSxDQUFDMEIsVUFBVSxDQUFDLENBQUNJLEdBQUcsQ0FBQ0YsQ0FBQyxFQUFFLE9BQU8sQ0FBQztZQUNqRVAsbUJBQW1CLENBQUNTLEdBQUcsQ0FBQ0QsYUFBYSxDQUFDWixNQUFNLENBQUNILGlCQUFpQixDQUFDLENBQUM7VUFDcEU7UUFDSjtNQUNKO0lBRUosQ0FBQyxDQUFDO0VBQ04sQ0FBQyxDQUFDO0VBQ0YsT0FBTztJQUNIcEQsT0FBTyxFQUFFdUUsY0FBYztJQUN2QnVCLFlBQVksRUFBRW5DLG1CQUFtQjtJQUNqQ3ZELEtBQUssRUFBRXFFO0VBQ1gsQ0FBQztBQUNMLENBQUM7QUFBQ2xGLE9BQUEsQ0FBQXFHLFdBQUEsR0FBQUEsV0FBQTtBQUdLLE1BQU1HLHFCQUFxQixHQUFHLE1BQUFBLENBQUEsS0FBMkM7RUFFNUUsSUFBSXRFLFFBQVEsR0FBRyxNQUFNLElBQUFDLGVBQUcsRUFBQywwQ0FBMEMsQ0FBQztFQUNwRSxPQUFPLE1BQU1ELFFBQVEsQ0FBQ0csSUFBSSxDQUFDb0UsU0FBUyxDQUFDNUQsVUFBVSxDQUFDckIsTUFBTSxDQUFFc0IsU0FBNkIsSUFBS0EsU0FBUyxDQUFDbEMsUUFBUSxJQUFJa0MsU0FBUyxDQUFDUixRQUFRLENBQUM5QixNQUFNLENBQUM7QUFDOUksQ0FBQztBQUFDUixPQUFBLENBQUF3RyxxQkFBQSxHQUFBQSxxQkFBQTtBQUVLLE1BQU1FLHNCQUFzQixHQUFHLE1BQUFBLENBQUEsS0FBeUM7RUFFM0UsTUFBTXhFLFFBQVEsR0FBRyxNQUFNLElBQUFDLGVBQUcsRUFBQyx3Q0FBd0MsQ0FBQztFQUNwRSxPQUFPRCxRQUFRLENBQUNHLElBQUksQ0FBQ29FLFNBQVMsQ0FBQzVELFVBQVUsQ0FDcENyQixNQUFNLENBQUVzQixTQUFvQixJQUFLQSxTQUFTLENBQUN0QyxNQUFNLENBQUMsQ0FDbERnQixNQUFNLENBQUVtRixXQUFzQixJQUFLQSxXQUFXLENBQUM5RixLQUFLLEtBQUssUUFBUSxDQUFDO0FBQzNFLENBQUM7QUFBQ2IsT0FBQSxDQUFBMEcsc0JBQUEsR0FBQUEsc0JBQUE7QUFFSyxNQUFNRSxZQUFZLEdBQUlDLFdBQW1CLElBQzVDLElBQUExRSxlQUFHLEVBQUMsYUFBYSxHQUFHMEUsV0FBVyxHQUFHLG9CQUFvQixDQUFDLENBQUNDLElBQUksQ0FBQzVFLFFBQVEsSUFBSUEsUUFBUSxDQUFDRyxJQUFJLENBQUM7QUFBQ3JDLE9BQUEsQ0FBQTRHLFlBQUEsR0FBQUEsWUFBQTtBQUVyRixNQUFNRyxvQkFBb0IsR0FBSUYsV0FBbUIsSUFDcEQsSUFBQTFFLGVBQUcsRUFBQyx1RUFBdUUsR0FBRzBFLFdBQVcsQ0FBQyxDQUFDQyxJQUFJLENBQUM1RSxRQUFRLElBQUlBLFFBQVEsQ0FBQ0csSUFBSSxDQUFDb0UsU0FBUyxDQUFDTyxpQkFBaUIsQ0FBQztBQUFDaEgsT0FBQSxDQUFBK0csb0JBQUEsR0FBQUEsb0JBQUE7QUFFcEosTUFBTUUsc0JBQXNCLEdBQUlKLFdBQW1CLElBQ3RELElBQUExRSxlQUFHLEVBQUMseUVBQXlFLEdBQUcwRSxXQUFXLENBQUMsQ0FBQ0MsSUFBSSxDQUFDNUUsUUFBUSxJQUFJQSxRQUFRLENBQUNHLElBQUksQ0FBQ29FLFNBQVMsQ0FBQ1MsbUJBQW1CLENBQUM7QUFBQ2xILE9BQUEsQ0FBQWlILHNCQUFBLEdBQUFBLHNCQUFBO0FBQy9KLE1BQU12RixLQUFLLEdBQUcsSUFBQStCLGVBQU0sRUFBQyxDQUFDO0FBQ2YsTUFBTTBELG9CQUFvQixHQUFJckUsU0FBd0MsSUFBY0EsU0FBUyxDQUFDeEIsS0FBSyxDQUFDZ0QsSUFBSSxDQUFFdkIsSUFBSSxJQUFLckIsS0FBSyxDQUFDa0MsT0FBTyxDQUFDLElBQUFoQyxtQkFBWSxFQUFDbUIsSUFBSSxDQUFDMEIsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUFDekUsT0FBQSxDQUFBbUgsb0JBQUEsR0FBQUEsb0JBQUE7QUFDakssTUFBTUMsZUFBZSxHQUFJUCxXQUFtQixJQUMvQyxJQUFBMUUsZUFBRyxFQUFDLGtFQUFrRSxHQUFHMEUsV0FBVyxDQUFDLENBQUNDLElBQUksQ0FBQzVFLFFBQVEsSUFBSUEsUUFBUSxDQUFDRyxJQUFJLENBQUNvRSxTQUFTLENBQUNZLFlBQVksQ0FBQztBQUFDckgsT0FBQSxDQUFBb0gsZUFBQSxHQUFBQSxlQUFBO0FBRTFJLE1BQU1FLGNBQWMsR0FBSVQsV0FBbUIsSUFDOUMsSUFBQTFFLGVBQUcsRUFBQyxpRUFBaUUsR0FBRzBFLFdBQVcsQ0FBQyxDQUFDQyxJQUFJLENBQUM1RSxRQUFRLElBQUlBLFFBQVEsQ0FBQ0csSUFBSSxDQUFDb0UsU0FBUyxDQUFDbEYsV0FBVyxDQUFDO0FBQUN2QixPQUFBLENBQUFzSCxjQUFBLEdBQUFBLGNBQUE7QUFFeEksTUFBTUMsYUFBYSxHQUFJekUsU0FBb0IsSUFBZTtFQUU3RCxNQUFNQyxJQUFJLEdBQUd5RSxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcxRSxTQUFTLENBQUN4QixLQUFLLENBQUMsQ0FBQztFQUV6RCxRQUFReUIsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUUwRSxVQUFVO0lBQ3BCLEtBQUtDLFNBQUcsQ0FBQ0MsdUJBQXVCO01BQzVCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUM1QyxLQUFLRCxTQUFHLENBQUNFLGFBQWE7TUFDbEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7SUFDL0IsS0FBS0YsU0FBRyxDQUFDRyxHQUFHO01BQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNsQjtNQUNJLE9BQU8sQ0FBQyxNQUFNLENBQUM7RUFDdkI7QUFDSixDQUFDO0FBQUE3SCxPQUFBLENBQUF1SCxhQUFBLEdBQUFBLGFBQUE7QUFFTSxNQUFNTyxnQkFBZ0IsR0FBSWhGLFNBQW9CLElBQWU7RUFFaEUsTUFBTUMsSUFBSSxHQUFHeUUsc0JBQXNCLENBQUMsQ0FBQyxHQUFHMUUsU0FBUyxDQUFDeEIsS0FBSyxDQUFDLENBQUM7RUFFekQsUUFBUXlCLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFMEUsVUFBVTtJQUNwQixLQUFLQyxTQUFHLENBQUNDLHVCQUF1QjtNQUM1QixPQUFPLEVBQUU7SUFDYixLQUFLRCxTQUFHLENBQUNFLGFBQWE7TUFDbEIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUN4QixLQUFLRixTQUFHLENBQUNHLEdBQUc7TUFDUixPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUNyQyxLQUFLSCxTQUFHLENBQUNLLE1BQU07TUFDWCxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7SUFDNUM7TUFDSSxPQUFPLEVBQUU7RUFDakI7QUFDSixDQUFDO0FBQUEvSCxPQUFBLENBQUE4SCxnQkFBQSxHQUFBQSxnQkFBQTtBQUNNLE1BQU1FLFNBQVMsR0FBSWxGLFNBQW9CLElBQXlCO0VBQ25FLE1BQU1DLElBQUksR0FBR3lFLHNCQUFzQixDQUFDLENBQUMsR0FBRzFFLFNBQVMsQ0FBQ3hCLEtBQUssQ0FBQyxDQUFDO0VBQ3pELE9BQU95QixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRWlGLFNBQVM7QUFDMUIsQ0FBQztBQUFBaEksT0FBQSxDQUFBZ0ksU0FBQSxHQUFBQSxTQUFBO0FBQ0QsTUFBTVIsc0JBQXNCLEdBQUlsRyxLQUFhLElBQXVCO0VBQ2hFLE1BQU0yRyxVQUFVLEdBQUlDLEdBQVEsSUFBS0MsTUFBTSxDQUFDQyxJQUFJLENBQUNWLFNBQUcsQ0FBQyxDQUFDbkQsT0FBTyxDQUFDMkQsR0FBRyxDQUFDO0VBQzlELE9BQU81RyxLQUFLLENBQUN5RSxJQUFJLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUtnQyxVQUFVLENBQUNoQyxDQUFDLENBQUN3QixVQUFVLENBQUMsR0FBR1EsVUFBVSxDQUFDakMsQ0FBQyxDQUFDeUIsVUFBVSxDQUFDLENBQUMsQ0FBQ1ksR0FBRyxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUVNLE1BQU1DLGdCQUFnQixHQUFJQyxnQkFBMkIsSUFBdUI7RUFDL0UsTUFBTXRILE9BQXlCLEdBQUc7SUFBQ0EsT0FBTyxFQUFFLEVBQUU7SUFBRXVILElBQUksRUFBRUMsNEJBQVcsQ0FBQ0QsSUFBSTtJQUFFRSxLQUFLLEVBQUVELDRCQUFXLENBQUNDLEtBQUs7SUFBRXhILE9BQU8sRUFBRTtFQUFFLENBQUM7RUFDOUcsSUFBSXFILGdCQUFnQixDQUFDakgsS0FBSyxDQUFDK0MsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUNyQyxPQUFPO01BQ0gsR0FBR3BELE9BQU87TUFBRUEsT0FBTyxFQUFFc0gsZ0JBQWdCLENBQUNqSCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNMLE9BQU87TUFDdERDLE9BQU8sRUFBRXFILGdCQUFnQixDQUFDakgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDSjtJQUN2QyxDQUFDO0VBQ0w7RUFDQSxPQUFPO0lBQ0gsR0FBR0QsT0FBTztJQUFFQSxPQUFPLEVBQUVzSCxnQkFBZ0IsQ0FBQ2pHLFFBQVEsQ0FBQ3JCLE9BQU87SUFDdERDLE9BQU8sRUFBRXFILGdCQUFnQixDQUFDakcsUUFBUSxDQUFDcEI7RUFDdkMsQ0FBQztBQUNMLENBQUM7QUFBQWxCLE9BQUEsQ0FBQXNJLGdCQUFBLEdBQUFBLGdCQUFBIn0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfUHJvcGVydHkiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX1JlbmFpc3NhbmNlRGF0YSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQVZBSUxBQkxFX05PVyIsImV4cG9ydHMiLCJ0b2RheSIsIm1vbWVudCIsInRvbW9ycm93IiwiYWRkIiwiY29udmVydFRvSHR0cHMiLCJ1cmwiLCJyZXBsYWNlIiwiY29udmVydFRvRmxvb3JwbGFuQ2FyZERhdGEiLCJmbG9vcnBsYW5EZXRhaWxzIiwiaWQiLCJuYW1lIiwiYWN0aXZlIiwiYmVkcm9vbSIsImJhdGhyb29tIiwiY292ZXJJbWFnZSIsImZlYXR1cmVkIiwic3R5bGUiLCJzcGVjaWFsUmVudCIsInNwZWNpYWxSZW50U3RhcnREYXRlIiwic3BlY2lhbFJlbnRFbmREYXRlIiwiYWRkcmVzcyIsInppcGNvZGUiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ2aWRlb1RvdXJMaW5rIiwicGhvdG9zRm9sZGVySWQiLCJ1bml0cyIsIndlYlNwZWNpYWxzIiwiZmlsdGVyIiwid2ViU3BlY2lhbCIsImlzQmV0d2VlbiIsImRhdGVUb01vbWVudCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJtYXAiLCJkZXNjcmlwdGlvbiIsImdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSIsInJlc3BvbnNlIiwiZ2V0IiwicHJvcGVydGllcyIsImRhdGEiLCJwcm9wZXJ0eSIsImxlYXNlVHlwZSIsIkxlYXNlVHlwZSIsIllFQVJMWSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiZmxvb3JwbGFucyIsImZsb29ycGxhbiIsInVuaXQiLCJnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSIsInByb3BlcnR5SWQiLCJzb3J0QW5kRmlsdGVyIiwiY3VycmVudEZpbHRlcnMiLCJzb3J0Rmxvb3JwbGFucyIsImZpbHRlck1hdGNoZXMiLCJzb3J0QnkiLCJpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHMiLCJkYXRlIiwiZGlmZiIsImlzRGF0ZUFmdGVyVG9kYXkiLCJpc0FmdGVyIiwiTU9OVEhfWUVBUl9GT1JNQVQiLCJkYXRlVG9Nb250aFllYXIiLCJkYXRlU3RyaW5nIiwiZm9ybWF0IiwiaXNBdmFpbGFibGVOb3ciLCJtb3ZlSW5EYXRlIiwiaXNCZWZvcmUiLCJkZWZhdWx0QXZhaWxhYmlsaXR5VG9Nb250aFllYXIiLCJtb21lbnRUb01vbnRoWWVhciIsImlzQXZhaWxhYmxlIiwiYXZhaWxhYmlsaXR5RmlsdGVycyIsImxlbmd0aCIsInNvbWUiLCJpc1VuaXRBdmFpbGFibGVOb3ciLCJpbmRleE9mIiwiYXZhaWxhYmlsaXR5RXh0ZW5zaW9uTW9udGhzIiwiaSIsImV4dGVuc2lvbkRhdGUiLCJpc0JlZHJvb21zTWF0Y2giLCJiZWRyb29tRmlsdGVycyIsImlzU3R5bGVNYXRjaCIsInN0eWxlRmlsdGVycyIsImlzSW5QcmljZVJhbmdlIiwibWluUmVudCIsIm1heFJlbnQiLCJtaW5NYXgiLCJtaW5pbXVtTWF4aW11bSIsIm1pbiIsIm1heCIsImlzRmxvb3JwbGFuSWRzTWF0Y2giLCJmbG9vcnBsYW5JZHMiLCJTb3J0RmllbGRzIiwic29ydEZpZWxkIiwib3JkZXIiLCJzb3J0IiwiYSIsImIiLCJtaW5SYXRlU29ydGVkIiwiXyIsIm9yZGVyQnkiLCJmaWx0ZXJzRnJvbSIsIlNldCIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsIl9lbWJlZGRlZCIsImdldEFsbEFjdGl2ZUZsb29ycGxhbnMiLCJmbG9vcnBsYW5fMSIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwidGhlbiIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwic2ltaWxhckZsb29ycGxhbnMiLCJnZXRGbG9vcnBsYW5WYXJpYXRpb25zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsImlzRmxvb3JwbGFuQXZhaWxhYmxlIiwiZ2V0VGVzdGltb25pYWxzIiwidGVzdGltb25pYWxzIiwiZ2V0V2ViU3BlY2lhbHMiLCJwZXJtaXR0ZWRQZXRzIiwidW5pdFdpdGhNb3N0QWxsb3dlZFBldCIsImFsbG93ZWRQZXQiLCJQZXQiLCJMQVJHRV9ET0dfU01BTExfRE9HX0NBVCIsIlNNQUxMX0RPR19DQVQiLCJDQVQiLCJub3RQZXJtaXR0ZWRQZXRzIiwiTk9fUEVUIiwicGV0UG9saWN5IiwicGV0T3JkaW5hbCIsInBldCIsIk9iamVjdCIsImtleXMiLCJwb3AiLCJmbG9vcnBsYW5BZGRyZXNzIiwiY3VycmVudEZsb29ycGxhbiIsImNpdHkiLCJyZW5haXNzYW5jZSIsInN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsLFxuICAgIFdlYlNwZWNpYWxcbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge2RhdGVUb01vbWVudCwgbWluaW11bU1heGltdW19IGZyb20gXCIuLi8uLi91dGlscy9VdGlsc1wiO1xuaW1wb3J0IHtMZWFzZVR5cGUsIFByb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtyZW5haXNzYW5jZX0gZnJvbSBcIi4uLy4uL2RhdGEvUmVuYWlzc2FuY2VEYXRhXCI7XG5cbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfTk9XID0gXCJBdmFpbGFibGUgTm93XCI7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuY29uc3QgdG9tb3Jyb3cgPSB0b2RheS5hZGQoMSwgXCJkYXlcIik7XG5cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0h0dHBzID0gKHVybDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAodXJsID09PSBudWxsKVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwOlxcL1xcLy9pLCAnaHR0cHM6Ly8nKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9GbG9vcnBsYW5DYXJkRGF0YSA9IChmbG9vcnBsYW5EZXRhaWxzOiBGbG9vcnBsYW5EZXRhaWxzKTogRmxvb3JwbGFuQ2FyZERhdGEgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBmbG9vcnBsYW5EZXRhaWxzLmlkLFxuICAgICAgICBuYW1lOiBmbG9vcnBsYW5EZXRhaWxzLm5hbWUsXG4gICAgICAgIGFjdGl2ZTogZmxvb3JwbGFuRGV0YWlscy5hY3RpdmUsXG4gICAgICAgIGJlZHJvb206IGZsb29ycGxhbkRldGFpbHMuYmVkcm9vbSxcbiAgICAgICAgYmF0aHJvb206IGZsb29ycGxhbkRldGFpbHMuYmF0aHJvb20sXG4gICAgICAgIGNvdmVySW1hZ2U6IGZsb29ycGxhbkRldGFpbHMuY292ZXJJbWFnZSxcbiAgICAgICAgZmVhdHVyZWQ6IGZsb29ycGxhbkRldGFpbHMuZmVhdHVyZWQsXG4gICAgICAgIHN0eWxlOiBmbG9vcnBsYW5EZXRhaWxzLnN0eWxlLFxuICAgICAgICBzcGVjaWFsUmVudDogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudCxcbiAgICAgICAgc3BlY2lhbFJlbnRTdGFydERhdGU6IGZsb29ycGxhbkRldGFpbHMuc3BlY2lhbFJlbnRTdGFydERhdGUsXG4gICAgICAgIHNwZWNpYWxSZW50RW5kRGF0ZTogZmxvb3JwbGFuRGV0YWlscy5zcGVjaWFsUmVudEVuZERhdGUsXG4gICAgICAgIGFkZHJlc3M6IGZsb29ycGxhbkRldGFpbHMuYWRkcmVzcyxcbiAgICAgICAgemlwY29kZTogZmxvb3JwbGFuRGV0YWlscy56aXBjb2RlLFxuICAgICAgICB2aXJ0dWFsVG91ckxpbms6IGZsb29ycGxhbkRldGFpbHMudmlydHVhbFRvdXJMaW5rLFxuICAgICAgICB2aWRlb1RvdXJMaW5rOiBmbG9vcnBsYW5EZXRhaWxzLnZpZGVvVG91ckxpbmssXG4gICAgICAgIHBob3Rvc0ZvbGRlcklkOiBmbG9vcnBsYW5EZXRhaWxzLnBob3Rvc0ZvbGRlcklkLFxuICAgICAgICB1bml0czogZmxvb3JwbGFuRGV0YWlscy51bml0cyxcbiAgICAgICAgd2ViU3BlY2lhbHM6IGZsb29ycGxhbkRldGFpbHMud2ViU3BlY2lhbHNcbiAgICAgICAgICAgIC5maWx0ZXIod2ViU3BlY2lhbCA9PiB0b2RheS5pc0JldHdlZW4oZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuc3RhcnREYXRlKSwgZGF0ZVRvTW9tZW50KHdlYlNwZWNpYWwuZW5kRGF0ZSkpKVxuICAgICAgICAgICAgLm1hcCh3ZWJTcGVjaWFsID0+IHdlYlNwZWNpYWwuZGVzY3JpcHRpb24pXG4gICAgfSBhcyBGbG9vcnBsYW5DYXJkRGF0YTtcbn1cbmV4cG9ydCBjb25zdCBnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGEgPSBhc3luYyAoKTogUHJvbWlzZTxQcm9wZXJ0eUZpbHRlckRhdGFbXT4gPT4ge1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcInByb3BlcnRpZXMvZmlsdGVyXCIpO1xuXG4gICAgY29uc3QgcHJvcGVydGllczogUHJvcGVydHlGaWx0ZXJEYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKHByb3BlcnR5OiBQcm9wZXJ0eUZpbHRlckRhdGEpID0+IHByb3BlcnR5LmFjdGl2ZSlcbiAgICAgICAgLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gcHJvcGVydHkubGVhc2VUeXBlID09PSBMZWFzZVR5cGUuWUVBUkxZKVxuICAgICAgICAuZmlsdGVyKChwcm9wZXJ0eTogUHJvcGVydHlGaWx0ZXJEYXRhKSA9PiAhcHJvcGVydHkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiZ2FyYWdlXCIpKTtcblxuICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMgPSBwcm9wZXJ0eS5mbG9vcnBsYW5zLmZpbHRlcihmbG9vcnBsYW4gPT4gZmxvb3JwbGFuLmFjdGl2ZSk7XG4gICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgZmxvb3JwbGFuLnVuaXRzID0gZmxvb3JwbGFuLnVuaXRzLmZpbHRlcih1bml0ID0+IHVuaXQuYWN0aXZlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbn1cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSA9IGFzeW5jIChwcm9wZXJ0eUlkOiBQcm9wZXJ0eUlkKTogUHJvbWlzZTxGbG9vcnBsYW5DYXJkRGF0YVtdPiA9PiB7XG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwicHJvcGVydGllcy9cIiArIHByb3BlcnR5SWQgKyBcIi9mbG9vcnBsYW5zL2ZpbHRlclwiKTtcblxuICAgIGNvbnN0IGZsb29ycGxhbnM6IEZsb29ycGxhbkNhcmREYXRhW10gPSByZXNwb25zZS5kYXRhXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEpID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuXG4gICAgZmxvb3JwbGFucy5mb3JFYWNoKGZsb29ycGxhbiA9PiB7XG4gICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmxvb3JwbGFucztcbn07XG5leHBvcnQgY29uc3Qgc29ydEFuZEZpbHRlciA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBjdXJyZW50RmlsdGVyczogQ3VycmVudEZpbHRlcnMpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcbiAgICByZXR1cm4gc29ydEZsb29ycGxhbnMoZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZpbHRlck1hdGNoZXMoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycykpLCBjdXJyZW50RmlsdGVycy5zb3J0QnkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzID0gKGRhdGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGRpZmYgPSBtb21lbnQoZGF0ZSwgXCJZWVlZLU1NLUREXCIpLmRpZmYodG9kYXksICdtb250aHMnLCBmYWxzZSk7XG4gICAgcmV0dXJuIGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzRGF0ZUFmdGVyVG9kYXkgPSAoZGF0ZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIG1vbWVudChkYXRlLCBcIllZWVktTU0tRERcIikuaXNBZnRlcih0b2RheSk7XG59XG5leHBvcnQgY29uc3QgTU9OVEhfWUVBUl9GT1JNQVQgPSBcIk1NTU0gWVlZWVwiO1xuY29uc3QgZGF0ZVRvTW9udGhZZWFyID0gKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gbW9tZW50KGRhdGVTdHJpbmcsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5jb25zdCBpc0F2YWlsYWJsZU5vdyA9IChtb3ZlSW5EYXRlOiBtb21lbnQuTW9tZW50KSA9PiBtb3ZlSW5EYXRlLmlzQmVmb3JlKHRvbW9ycm93KTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciA9IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBBVkFJTEFCTEVfTk9XID09PSBkYXRlU3RyaW5nID8gZGF0ZVN0cmluZyA6IG1vbWVudChkYXRlU3RyaW5nLCBcIk1NLVlZWVlcIikuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcblxuZXhwb3J0IGNvbnN0IG1vbWVudFRvTW9udGhZZWFyID0gKGRhdGU6IE1vbWVudCkgPT4gZGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpO1xuXG5cbmNvbnN0IGlzQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGF2YWlsYWJpbGl0eUZpbHRlcnM6IE1vbnRoW10pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOlxuXG4gICAgICAgIGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpXG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihBVkFJTEFCTEVfTk9XKSA+IC0xIHx8IGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihtb21lbnRUb01vbnRoWWVhcih0b2RheSkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5pdEF2YWlsYWJsZU5vdylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbkRhdGUgPSBpc1VuaXRBdmFpbGFibGVOb3cgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmFkZChpLCAnbW9udGgnKS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG9Nb21lbnQodW5pdC5tb3ZlSW5EYXRlKS5hZGQoaSwgJ21vbnRoJykuZm9ybWF0KE1PTlRIX1lFQVJfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZXh0ZW5zaW9uRGF0ZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZGF0ZVRvTW9udGhZZWFyKHVuaXQubW92ZUluRGF0ZSkpID4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG59O1xuY29uc3QgaXNCZWRyb29tc01hdGNoID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGJlZHJvb21GaWx0ZXJzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBiZWRyb29tRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogYmVkcm9vbUZpbHRlcnMuaW5kZXhPZihmbG9vcnBsYW4uYmVkcm9vbSkgPiAtMTtcbn07XG5jb25zdCBpc1N0eWxlTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgc3R5bGVGaWx0ZXJzOiBGbG9vcnBsYW5TdHlsZVtdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN0eWxlRmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDogc3R5bGVGaWx0ZXJzLmluZGV4T2YoZmxvb3JwbGFuLnN0eWxlKSA+IC0xO1xufVxuY29uc3QgaXNJblByaWNlUmFuZ2UgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgbWluUmVudDogbnVtYmVyLCBtYXhSZW50OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBtaW5NYXggPSBtaW5pbXVtTWF4aW11bShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKTtcbiAgICByZXR1cm4gbWluTWF4Lm1pbiA+PSBtaW5SZW50ICYmIG1pbk1heC5tYXggPD0gbWF4UmVudDtcbn1cbmNvbnN0IGlzRmxvb3JwbGFuSWRzTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgZmxvb3JwbGFuSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBmbG9vcnBsYW5JZHMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZsb29ycGxhbklkcy5pbmRleE9mKGZsb29ycGxhbi5pZCkgPiAtMTtcbn07XG5jb25zdCBmaWx0ZXJNYXRjaGVzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGN1cnJlbnRGaWx0ZXJzOiBDdXJyZW50RmlsdGVycykgPT4ge1xuICAgIHJldHVybiBpc0F2YWlsYWJsZShmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmF2YWlsYWJpbGl0eUZpbHRlcnMpICYmXG4gICAgICAgIGlzSW5QcmljZVJhbmdlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMubWluUmVudCwgY3VycmVudEZpbHRlcnMubWF4UmVudCkgJiZcbiAgICAgICAgaXNTdHlsZU1hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuc3R5bGVGaWx0ZXJzKSAmJlxuICAgICAgICBpc0JlZHJvb21zTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5iZWRyb29tRmlsdGVycykgJiZcbiAgICAgICAgaXNGbG9vcnBsYW5JZHNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmZsb29ycGxhbklkcyk7XG59XG5leHBvcnQgY29uc3Qgc29ydEZsb29ycGxhbnMgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgc29ydEJ5OiBTb3J0QnkpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcblxuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiZGVzY1wiKSB7XG4gICAgICAgIHJldHVybiBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbmltdW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5SYXRlU29ydGVkID0gZmxvb3JwbGFucy5zb3J0KChhLCBiKSA9PiBtaW5pbXVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWluaW11bU1heGltdW0oYi51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJhc2NcIikge1xuICAgICAgICByZXR1cm4gbWluUmF0ZVNvcnRlZFxuICAgIH1cbiAgICByZXR1cm4gXy5vcmRlckJ5KG1pblJhdGVTb3J0ZWQsIFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQsIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlcik7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJzRnJvbSA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdKTogRmxvb3JwbGFuRmlsdGVycyA9PiB7XG5cbiAgICAgICAgY29uc3QgYmVkcm9vbUZpbHRlcnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5RmlsdGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCBzdHlsZUZpbHRlcnMgPSBuZXcgU2V0PEZsb29ycGxhblN0eWxlPigpO1xuXG4gICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKEFWQUlMQUJMRV9OT1cpO1xuICAgICAgICBmbG9vcnBsYW5zLmZvckVhY2goZmxvb3JwbGFuID0+IHtcbiAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVycy5hZGQoZmxvb3JwbGFuLmJlZHJvb20pO1xuICAgICAgICAgICAgICAgIHN0eWxlRmlsdGVycy5hZGQoZmxvb3JwbGFuLnN0eWxlKTtcblxuICAgICAgICAgICAgICAgIGZsb29ycGxhbi51bml0cy5mb3JFYWNoKCh1bml0KSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNVbml0QXZhaWxhYmxlTm93ID0gaXNBdmFpbGFibGVOb3cobW9tZW50KHVuaXQubW92ZUluRGF0ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh1bml0Lm1vdmVJbkRhdGUgJiYgaXNVbml0QXZhaWxhYmxlTm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgJiYgdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdW5pdC5hdmFpbGFiaWxpdHlFeHRlbnNpb25Nb250aHM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uRGF0ZSA9IG1vbWVudCgpLmFkZChpLCAnbW9udGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQoZXh0ZW5zaW9uRGF0ZS5mb3JtYXQoTU9OVEhfWUVBUl9GT1JNQVQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaXQubW92ZUluRGF0ZSAmJiAhaXNVbml0QXZhaWxhYmxlTm93ICYmIGlzRGF0ZVdpdGhpblR3ZWx2ZU1vbnRocyh1bml0Lm1vdmVJbkRhdGUpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKGRhdGVUb01vbnRoWWVhcih1bml0Lm1vdmVJbkRhdGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyAmJiB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRocyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB1bml0LmF2YWlsYWJpbGl0eUV4dGVuc2lvbk1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25EYXRlID0gZGF0ZVRvTW9tZW50KHVuaXQubW92ZUluRGF0ZSkuYWRkKGksICdtb250aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChleHRlbnNpb25EYXRlLmZvcm1hdChNT05USF9ZRUFSX0ZPUk1BVCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiZWRyb29tOiBiZWRyb29tRmlsdGVycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eTogYXZhaWxhYmlsaXR5RmlsdGVycyxcbiAgICAgICAgICAgIHN0eWxlOiBzdHlsZUZpbHRlcnNcbiAgICAgICAgfVxuICAgIH1cbjtcblxuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZWRGbG9vcnBsYW5zID0gYXN5bmMgKCk6IFByb21pc2U8Rmxvb3JwbGFuU3BvdGxpZ2h0W10+ID0+IHtcblxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGdldChcImZsb29ycGxhbnM/cHJvamVjdGlvbj1zcG90bGlnaHQmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnMuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhblNwb3RsaWdodCkgPT4gZmxvb3JwbGFuLmZlYXR1cmVkICYmIGZsb29ycGxhbi5wcm9wZXJ0eS5hY3RpdmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEFjdGl2ZUZsb29ycGxhbnMgPSBhc3luYyAoKTogUHJvbWlzZTxGbG9vcnBsYW5EZXRhaWxzW10+ID0+IHtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0KFwiZmxvb3JwbGFucz9wcm9qZWN0aW9uPWRldGFpbHMmc2l6ZT0yMDBcIik7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLmZsb29ycGxhbnNcbiAgICAgICAgLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbi5hY3RpdmUpXG4gICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbl8xOiBGbG9vcnBsYW4pID0+IGZsb29ycGxhbl8xLnN0eWxlICE9PSBcIkdBUkFHRVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW4gPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8Rmxvb3JwbGFuPiA9PlxuICAgIGdldChcImZsb29ycGxhbnMvXCIgKyBmbG9vcnBsYW5JZCArIFwiP3Byb2plY3Rpb249d2l0aElkXCIpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTaW1pbGFyRmxvb3JwbGFucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxTaW1pbGFyRmxvb3JwbGFuW10+ID0+XG4gICAgZ2V0KFwic2ltaWxhckZsb29ycGxhbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5zaW1pbGFyRmxvb3JwbGFucyk7XG5cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5WYXJpYXRpb25zID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhblZhcmlhdGlvbltdPiA9PlxuICAgIGdldChcImZsb29ycGxhblZhcmlhdGlvbnMvc2VhcmNoL2J5Rmxvb3JwbGFuSWQ/cHJvamVjdGlvbj13aXRoSWQmZmxvb3JwbGFuSWQ9XCIgKyBmbG9vcnBsYW5JZCkudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5WYXJpYXRpb25zKTtcblxuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuZXhwb3J0IGNvbnN0IGdldFdlYlNwZWNpYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFdlYlNwZWNpYWxbXT4gPT5cbiAgICBnZXQoXCJ3ZWJTcGVjaWFscy9zZWFyY2gvYnlGbG9vcnBsYW5JZD9wcm9qZWN0aW9uPXdpdGhJZCZmbG9vcnBsYW5JZD1cIiArIGZsb29ycGxhbklkKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEuX2VtYmVkZGVkLndlYlNwZWNpYWxzKTtcblxuZXhwb3J0IGNvbnN0IHBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICBzd2l0Y2ggKHVuaXQ/LmFsbG93ZWRQZXQpIHtcbiAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBjYXNlIFBldC5DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbJ05vbmUnXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBub3RQZXJtaXR0ZWRQZXRzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nW10gPT4ge1xuXG4gICAgY29uc3QgdW5pdCA9IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQoWy4uLmZsb29ycGxhbi51bml0c10pO1xuXG4gICAgc3dpdGNoICh1bml0Py5hbGxvd2VkUGV0KSB7XG4gICAgICAgIGNhc2UgUGV0LkxBUkdFX0RPR19TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjYXNlIFBldC5TTUFMTF9ET0dfQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJ107XG4gICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0xhcmdlIERvZycsICdTbWFsbCBEb2cnXTtcbiAgICAgICAgY2FzZSBQZXQuTk9fUEVUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZycsICdDYXQnXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgcGV0UG9saWN5ID0gKGZsb29ycGxhbjogRmxvb3JwbGFuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG4gICAgcmV0dXJuIHVuaXQ/LnBldFBvbGljeTtcbn1cbmNvbnN0IHVuaXRXaXRoTW9zdEFsbG93ZWRQZXQgPSAodW5pdHM6IFVuaXRbXSk6IFVuaXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHBldE9yZGluYWwgPSAocGV0OiBQZXQpID0+IE9iamVjdC5rZXlzKFBldCkuaW5kZXhPZihwZXQpO1xuICAgIHJldHVybiB1bml0cy5zb3J0KChhLCBiKSA9PiBwZXRPcmRpbmFsKGIuYWxsb3dlZFBldCkgLSBwZXRPcmRpbmFsKGEuYWxsb3dlZFBldCkpLnBvcCgpO1xufVxuXG5leHBvcnQgY29uc3QgZmxvb3JwbGFuQWRkcmVzcyA9IChjdXJyZW50Rmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBGbG9vcnBsYW5BZGRyZXNzID0+IHtcbiAgICBjb25zdCBhZGRyZXNzOiBGbG9vcnBsYW5BZGRyZXNzID0ge2FkZHJlc3M6IFwiXCIsIGNpdHk6IHJlbmFpc3NhbmNlLmNpdHksIHN0YXRlOiByZW5haXNzYW5jZS5zdGF0ZSwgemlwY29kZTogXCJcIn07XG4gICAgaWYgKGN1cnJlbnRGbG9vcnBsYW4udW5pdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLmFkZHJlc3MsXG4gICAgICAgICAgICB6aXBjb2RlOiBjdXJyZW50Rmxvb3JwbGFuLnVuaXRzWzBdLnppcGNvZGVcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5hZGRyZXNzLCBhZGRyZXNzOiBjdXJyZW50Rmxvb3JwbGFuLnByb3BlcnR5LmFkZHJlc3MsXG4gICAgICAgIHppcGNvZGU6IGN1cnJlbnRGbG9vcnBsYW4ucHJvcGVydHkuemlwY29kZVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5BZGRyZXNzIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgY2l0eTogc3RyaW5nO1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgemlwY29kZTogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBWUEsSUFBQUcsTUFB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
|