.common-title-wrap {
  padding-bottom: 55px;
}

@media screen and (min-width: 768px) {
  .common-title-wrap {
    padding-bottom: 45px;
  }
}

.content-wrap .list-wrap {
  position: relative;
}

.content-wrap .list-wrap li {
  position: relative;
  padding-bottom: 62px;
}

.content-wrap .list-wrap li:before {
  content: "";
  position: absolute;
  left: 1px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background-color: #461da3;
  z-index: 1;
}

.content-wrap .list-wrap li dl {
  position: relative;
  top: -2px;
  padding-left: 24px;
}

.content-wrap .list-wrap li dl dt {
  position: absolute;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.05em;
  color: #461da3;
}

.content-wrap .list-wrap li dl dd {
  padding-left: 168px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.content-wrap .list-wrap:before {
  content: "";
  position: absolute;
  top: 0;
  left: 5px;
  width: 1px;
  height: 100%;
}

.content-wrap .list-wrap.num1:before {
  background-color: #461da3;
}

.content-wrap .list-wrap.num2:before {
  top: -78px;
  height: 78px;
  background: url(/views/res/imgs/page/bg_roadmap_line.png) repeat-y;
}

.content-wrap .list-wrap.num2 li:last-child {
  padding-bottom: 0;
}

.content-wrap .list-wrap.num2 li:before {
  background-color: #00aeff;
}

.content-wrap .list-wrap.num2 dt {
  color: #00aeff;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGMvbGF5b3V0L3BhZ2Uvcm9hZG1hcC9yb2FkbWFwX2xheW91dC5jc3MiLCJzb3VyY2VzIjpbInBjL2xheW91dC9wYWdlL3JvYWRtYXAvcm9hZG1hcF9sYXlvdXQuc2NzcyIsInJlcy9zY3NzL19fdmFyaWFibGVzLnNjc3MiLCJyZXMvc2Nzcy9fX21peGlucy5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL19tZWRpYS1xdWVyeS5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL19tYXAuc2NzcyIsInJlcy9zY3NzL21peGlucy9fY2xlYXIuc2NzcyIsInJlcy9zY3NzL21peGlucy9fZmxvYXQuc2NzcyIsInJlcy9zY3NzL21peGlucy9faG92ZXIuc2NzcyIsInJlcy9zY3NzL21peGlucy9fc2NyZWVucmVhZGVyLnNjc3MiLCJyZXMvc2Nzcy9taXhpbnMvX3Jlc2V0LXRleHQuc2NzcyIsInJlcy9zY3NzL21peGlucy9fcHJlZml4ZXIuc2NzcyIsInJlcy9zY3NzL21peGlucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL19hcmVhLnNjc3MiLCJyZXMvc2Nzcy9taXhpbnMvX2dyaWQuc2NzcyIsInJlcy9zY3NzL21peGlucy9fdHJpYW5nbGUuc2NzcyIsInJlcy9zY3NzL21peGlucy9fYnV0dG9ucy5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL19jYXJkcy5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL19wYWdpbmF0aW9uLnNjc3MiLCJyZXMvc2Nzcy9taXhpbnMvX2Zvcm1zLnNjc3MiLCJyZXMvc2Nzcy9taXhpbnMvX3RhYmxlcy5zY3NzIiwicmVzL3Njc3MvbWl4aW5zL190YWIuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3JlIHZhcmlhYmxlcyBhbmQgbWl4aW5zXHJcbkBpbXBvcnQgXCJyZXMvc2Nzcy9fX3ZhcmlhYmxlcy5zY3NzXCI7XHJcbkBpbXBvcnQgXCJyZXMvc2Nzcy9fX21peGlucy5zY3NzXCI7XHJcblxyXG4uY29tbW9uLXRpdGxlLXdyYXB7XHJcbiAgcGFkZGluZy1ib3R0b206NTVweDtcclxuICBAaW5jbHVkZSBtZWRpYS1xdWVyeS1taW4obWQpe1xyXG4gICAgcGFkZGluZy1ib3R0b206NDVweDtcclxuICB9XHJcbn1cclxuXHJcbi5jb250ZW50LXdyYXB7XHJcbiAgLmxpc3Qtd3JhcHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGxpe1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOjYycHg7XHJcbiAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgIGNvbnRlbnQ6XCJcIjtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDoxcHg7XHJcbiAgICAgICAgd2lkdGg6OXB4O1xyXG4gICAgICAgIGhlaWdodDo5cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRnX3BvaW50LWZvbnQtY29sb3I7XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgfVxyXG4gICAgICBkbHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgdG9wOi0ycHg7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OjI0cHg7XHJcbiAgICAgICAgZHR7XHJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogODAwO1xyXG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcclxuICAgICAgICAgIGNvbG9yOiAkZ19wb2ludC1mb250LWNvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDoxNjhweDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6XCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6MDtcclxuICAgICAgbGVmdDo1cHg7XHJcbiAgICAgIHdpZHRoOjFweDtcclxuICAgICAgaGVpZ2h0OjEwMCU7XHJcbiAgICB9XHJcbiAgICAmLm51bTF7XHJcbiAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRnX3BvaW50LWZvbnQtY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICYubnVtMntcclxuICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgdG9wOi03OHB4O1xyXG4gICAgICAgIGhlaWdodDo3OHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6dXJsKC92aWV3cy9yZXMvaW1ncy9wYWdlL2JnX3JvYWRtYXBfbGluZS5wbmcpcmVwZWF0LXk7XHJcbiAgICAgIH1cclxuICAgICAgbGl7XHJcbiAgICAgICAgJjpsYXN0LWNoaWxke3BhZGRpbmctYm90dG9tOjA7fVxyXG4gICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ19wb2ludC1mb250LWNvbG9yLXNreTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZHR7XHJcbiAgICAgICAgY29sb3I6ICRnX3BvaW50LWZvbnQtY29sb3Itc2t5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiLy8vLy9kZWZhdWx0Ly8vLy9cclxuLy9jb2xvclxyXG4kZ193aGl0ZTogI2ZmZiAhZGVmYXVsdDtcclxuJGdfYmxhY2s6ICMwMDAgIWRlZmF1bHQ7XHJcbiRnX3JlZDogI2ZmMDAwMDtcclxuXHJcbiRnX3BvaW50LWZvbnQtY29sb3I6ICM0NjFkYTM7XHJcbiRnX3BvaW50LWZvbnQtY29sb3Itc2t5OiAjMDBhZWZmO1xyXG4kZ19wb2ludC10aGVtZS1jb2xvcjogIzQ2MWRhMztcclxuXHJcblxyXG4vL2ZvbnRcclxuLy8tZm9udC1mYW1pbHlcclxuJGdfZm9udC1mYW1pbHk6IChcclxuICBzeXN0ZW06ICcgXCLrp5HsnYAg6rOg65SVXCIsIFwiTWFsZ3VuIEdvdGhpY1wiLCBcIuyVoO2UjCBTRCDsgrDrj4zqs6DrlJUgTmVvXCIsIFwiQXBwbGUgU0QgR290aGljIE5lb1wiLCBzYW5zLXNlcmlmICcsXHJcbiAgb3BlbnNhbnMgOiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXHJcbiAgbmFudW1zcXVyZTogJ1wiTkFOVU1TUVVBUkVcIiwgc2Fucy1zZXJpZicsXHJcbiAgZG90dW06ICdcIkRvdHVtXCIsIHNhbnMtc2VyaWYnLFxyXG4gIHJvYm90bzogJ1wiUm9ib3RvXCIsIHNhbnMtc2VyaWYnXHJcbik7XHJcbiRmb250LXN5c3RlbTogI3ttYXAtZ2V0KCRnX2ZvbnQtZmFtaWx5LCBzeXN0ZW0pfTtcclxuJGZvbnQtb3BlbnNhbnM6ICN7bWFwLWdldCgkZ19mb250LWZhbWlseSwgb3BlbnNhbnMpfTtcclxuJGZvbnQtbmFudW1zcXVyZTogI3ttYXAtZ2V0KCRnX2ZvbnQtZmFtaWx5LCBuYW51bXNxdXJlKX07XHJcbiRmb250LWRvdHVtOiAje21hcC1nZXQoJGdfZm9udC1mYW1pbHksIGRvdHVtKX07XHJcbiRmb250LXJvYm90bzogI3ttYXAtZ2V0KCRnX2ZvbnQtZmFtaWx5LCByb2JvdG8pfTtcclxuXHJcbi8vLWZvbnQtc2l6ZVxyXG4kZ19mb250LXNpemU6KFxyXG4gIHhzOiAxMHB4LFxyXG4gIHNtOiAxMnB4LFxyXG4gIG1kOiAxNXB4LFxyXG4gIGxnOiAxOHB4LFxyXG4gIHhsOiAyNHB4LFxyXG4pO1xyXG5cclxuLy8tZm9udC13ZWlnaHRcclxuJGdfZm9udC13ZWlnaHRzOiAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwO1xyXG5cclxuLy8tbGV0dGVyLXNwYWNpbmdcclxuXHJcbi8vLy8vbWVkaWEvLy8vL1xyXG4kZ19tZWRpYS1icmVha3BvaW50czogKFxyXG4gIHhzOiAwLFxyXG4gIHNtOiA1NDRweCxcclxuICBtZDogNzY4cHgsXHJcbiAgbGc6IDk5MnB4LFxyXG4gIHhsOiAxMjAwcHhcclxuKTtcclxuXHJcbi8vLy8vbGF5b3V0Ly8vLy9cclxuLy9ncmlkXHJcbiRnX2dyaWQtY29sdW1uczogMTI7XHJcbiRnX2dyaWQtZ3V0dGVyLXdpZHRoOiAxJTtcclxuXHJcbi8vZ3JpZFxyXG4kZ19ncmlkLWNvbC1pbmZvOiAoXHJcbiAgZ3JpZC1jb2wtY250OiAxMixcclxuICBncmlkLWNvbC1uYW1lOiBudWxsXHJcbik7XHJcbiRncmlkLWNvbDUtaW5mbzogKFxyXG4gIGdyaWQtY29sLWNudDogNSxcclxuICBncmlkLWNvbC1uYW1lOiBmaXZlLVxyXG4pO1xyXG5cclxuLy8vLy9VVElMSVRJRVMvLy8vL1xyXG4vL2NsZWFyXHJcblxyXG4vL3NwYWNpbmdcclxuJHNwYWNlcnM6KFxyXG4gIDA6IDAsXHJcbiAgNTogNXB4LFxyXG4gIDEwOiAxMHB4LFxyXG4gIDIwOiAyMHB4LFxyXG4gIDI1OiAyNXB4LFxyXG4gIDMwOiAzMHB4LFxyXG4gIDQwOiA0MHB4LFxyXG4gIDUwOiA1MHB4LFxyXG4gIDYwOiA2MHB4LFxyXG4gIDcwOiA3MHB4LFxyXG4gIDgwOiA4MHB4LFxyXG4gIDkwOiA5MHB4LFxyXG4gIDEwMDogMTAwcHhcclxuKTtcclxuXHJcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vXHJcblxyXG5cclxuIiwiLy8gVG9nZ2xlc1xyXG4vL1xyXG4vLyBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggZ2xvYmFsIHZhcmlhYmxlcyB0byBlbmFibGUgY2VydGFpbiB0aGVtZSBmZWF0dXJlcy5cclxuXHJcbkBpbXBvcnQgXCJtaXhpbnMvX21lZGlhLXF1ZXJ5XCI7XHJcbkBpbXBvcnQgXCJtaXhpbnMvX21hcFwiO1xyXG5cclxuLy8gVXRpbGl0aWVzXHJcbi8vQGltcG9ydCBcIm1peGlucy9icmVha3BvaW50c1wiO1xyXG5AaW1wb3J0IFwibWl4aW5zL19jbGVhclwiO1xyXG5AaW1wb3J0IFwibWl4aW5zL19mbG9hdFwiO1xyXG5AaW1wb3J0IFwibWl4aW5zL19ob3ZlclwiO1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvaW1hZ2VcIjtcclxuLy9AaW1wb3J0IFwibWl4aW5zL2JhZGdlXCI7XHJcbi8vQGltcG9ydCBcIm1peGlucy9yZXNpemVcIjtcclxuQGltcG9ydCBcIm1peGlucy9fc2NyZWVucmVhZGVyXCI7XHJcbi8vQGltcG9ydCBcIm1peGlucy9zaXplXCI7XHJcbkBpbXBvcnQgXCJtaXhpbnMvX3Jlc2V0LXRleHRcIjtcclxuQGltcG9ydCBcIm1peGlucy9fcHJlZml4ZXJcIjtcclxuLy9AaW1wb3J0IFwibWl4aW5zL3RleHQtZW1waGFzaXNcIjtcclxuLy9AaW1wb3J0IFwibWl4aW5zL3RleHQtaGlkZVwiO1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvdGV4dC10cnVuY2F0ZVwiO1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvdHJhbnNmb3Jtc1wiO1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvdmlzaWJpbGl0eVwiO1xyXG5AaW1wb3J0IFwibWl4aW5zL19ib3JkZXItcmFkaXVzXCI7XHJcblxyXG4vLyAvLyBMYXlvdXRcclxuLy8gQGltcG9ydCBcIm1peGlucy9uYXZiYXItYWxpZ25cIjtcclxuLy9AaW1wb3J0IFwibWl4aW5zL2dyaWQtZnJhbWV3b3JrXCI7XHJcbkBpbXBvcnQgXCJtaXhpbnMvX2FyZWFcIjtcclxuQGltcG9ydCBcIm1peGlucy9fZ3JpZFwiO1xyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ly8vXHJcblxyXG5cclxuLy8gLy8gQ29tcG9uZW50c1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvYWxlcnRcIjtcclxuQGltcG9ydCBcIm1peGlucy9fdHJpYW5nbGVcIjtcclxuQGltcG9ydCBcIm1peGlucy9fYnV0dG9uc1wiO1xyXG5AaW1wb3J0IFwibWl4aW5zL2NhcmRzXCI7XHJcbkBpbXBvcnQgXCJtaXhpbnMvX3BhZ2luYXRpb25cIjtcclxuLy9AaW1wb3J0IFwibWl4aW5zL2xpc3RzXCI7XHJcbi8vQGltcG9ydCBcIm1peGlucy9saXN0LWdyb3VwXCI7XHJcbi8vQGltcG9ydCBcIm1peGlucy9uYXYtZGl2aWRlclwiO1xyXG5AaW1wb3J0IFwibWl4aW5zL19mb3Jtc1wiO1xyXG5AaW1wb3J0IFwibWl4aW5zL3RhYmxlc1wiO1xyXG4vL0BpbXBvcnQgXCJtaXhpbnMvdGFibGUtcm93XCI7XHJcbkBpbXBvcnQgXCJtaXhpbnMvX3RhYlwiO1xyXG5cclxuIiwiLy8gbWVkaWEtcXVlcnktbWluIOuvueyKpOyduFxyXG4vLyBb66ek6rCc67OA7IiYXVxyXG4vLyAkYnJlYWtwb2ludCDquLDrs7jqsJI6IOyXhuydjFxyXG4vLyAkYnJlYWtwb2ludCDsl5Ag6rCA7Jqp6rCA64ql7ZWcIOqwklxyXG4vLyAoMSkgJG1lZGlhLWJyZWFrcG9pbnRzIOydmCDtgqQg6rCSICh4cywgc20sIG1kLCBsZywgeGwgKeykkSDtlZjrgphcclxuLy8gKDIpIOqzoOyglSBweOqwklxyXG4vLyAkYnJlYWtwb2ludCDsoITri6zrkJwg6rCS7JeQIOuUsOudvOyEnCBAbWVkaWEobWluLXdpZHRoOiBcIuunpOqwnOuzgOyImOyXkCDtlbTri7ntlZjripQg6rCSXCIpIOyFi+2Mhe2VtOykjeuLiOuLpC5cclxuLy8gJGJyZWFrcG9pbnQg6rCS7J2EIO2UveyFgOuhnCDrhKPripTri6TrqbQg7ZW064u5IO2UveyFgOqwkuydmCDrr7jrlJTslrTsv7zrpqzrpbwg66eM65Ok7Ja0IOykjeuLiOuLpC5cclxuLy8gZXgpIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5LW1pbihsZykgeyBAY29udGVudCB9XHJcbi8vIGV4KSBAaW5jbHVkZSBtZWRpYS1xdWVyeS1taW4oNTAwcHgpIHsgQGNvbnRlbnQgfVxyXG5AbWl4aW4gbWVkaWEtcXVlcnktbWluKCAkYnJlYWtwb2ludCApIHtcclxuICBAaWYgbWFwX2hhc19rZXkoICRnX21lZGlhLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCApe1xyXG4gICAgQGlmICAkYnJlYWtwb2ludCA9PSBcInhzXCIge1xyXG4gICAgICBAY29udGVudFxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBtYXBfZ2V0KCRnX21lZGlhLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCkpIHtcclxuICAgICAgICBAY29udGVudFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmIHVuaXQoJGJyZWFrcG9pbnQpID09IFwicHhcIiB7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludCl7ICBAY29udGVudCAgfVxyXG4gIH1cclxufVxyXG5AbWl4aW4gbWVkaWEtcXVlcnktbWF4KCAkYnJlYWtwb2ludCApIHtcclxuICBAaWYgbWFwX2hhc19rZXkoICRnX21lZGlhLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCApe1xyXG4gICAgQGlmICAkYnJlYWtwb2ludCA9PSBcInhzXCIge1xyXG4gICAgICBAY29udGVudFxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBtYXBfZ2V0KCRnX21lZGlhLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCkpIHtcclxuICAgICAgICBAY29udGVudFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmIHVuaXQoJGJyZWFrcG9pbnQpID09IFwicHhcIiB7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludCl7ICBAY29udGVudCAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIG1lZGlhLXF1ZXJ5LW1pbi12YWwg7ZWo7IiYXHJcbi8vIOyghOyXreuzgOyImCAkbWVkaWEtYnJlYWtwb2ludHMgbWFw7J2YIHZhbHVl66W8IOuwmO2ZmO2VtCDspI3ri4jri6QuXHJcbi8vIOyjvOuhnCBlYWNoIOusuOqzvCDqsJnsnYAgbG9vcCDrrLjsl5DshJwg7Zmc7Jqp65Cp64uI64ukLlxyXG4vLyBleClcclxuLy8gQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwX2tleXMoJG1lZGlhLWJyZWFrcG9pbnRzKSB7XHJcbi8vICAgJHBvaW50OiBtZWRpYS1xdWVyeS1taW4tdmFsKCRicmVha3BvaW50KTtcclxuLy8gICBAbWVkaWEgKCBtaW4td2lkdGg6ICN7JHBvaW50fSApe1xyXG4vLyAgICAgLiN7JGJyZWFrcG9pbnR9LWYtbCB7IEBpbmNsdWRlIGZsb2F0LWxlZnQgfVxyXG4vLyAgICAgLiN7JGJyZWFrcG9pbnR9LWYtciB7IEBpbmNsdWRlIGZsb2F0LXJpZ2h0IH1cclxuLy8gICAgIC4jeyRicmVha3BvaW50fS1mLW4geyBAaW5jbHVkZSBmbG9hdC1ub25lIH1cclxuLy8gICB9XHJcbi8vIH1cclxuQGZ1bmN0aW9uIG1lZGlhLXF1ZXJ5LW1pbi12YWwoICRicmVha3BvaW50ICl7XHJcbiAgQHJldHVybiBtYXBfZ2V0KCRnX21lZGlhLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIiwiQGZ1bmN0aW9uIG1hcC1zZXQoJG1hcCwgJGtleSwgJHZhbHVlKSB7XHJcbiAgJG5ldzogKCRrZXk6ICR2YWx1ZSk7XHJcbiAgQHJldHVybiBtYXAtbWVyZ2UoJG1hcCwgJG5ldyk7XHJcbn1cclxuXHJcblxyXG4vL3ByZWZpeCDsoJzqsbBcclxuLy/tg5zqt7jsnbTrpoQsIOyGjeyEsSwg7JWE7J2065SUIOuTsSAg7IWA66CJ7YSwIOqwgOuKpeuPhOuhnVxyXG5AZnVuY3Rpb24gbWFrZU1hcFRvQ29kZXMoJG1hcCwgJHByZWZpeDogXCJcIiwgJHNlbGY6IGZhbHNlKSB7XHJcbiAgJGNvZGVzIDogKCk7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcclxuICAgIEBpZiAoIHR5cGUtb2YoJHZhbCkgPT0gbWFwICkge1xyXG5cclxuICAgICAgQGlmICgka2V5ID09IFwiJlwiKSB7XHJcbiAgICAgICAgJG1ha2U6IG1ha2VNYXBUb0NvZGVzKCR2YWwsIFwiXCIsIHRydWUpO1xyXG4gICAgICAgICRjb2RlczogbWFwLW1lcmdlKCRjb2RlcywgJG1ha2UpO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICAkc2VsZWN0b3I6IFwiLiN7JHByZWZpeH0jeyRrZXl9XCI7XHJcblxyXG4gICAgICAgIEBpZiAoJHNlbGYpIHtcclxuICAgICAgICAgICRzZWxlY3RvciA6IFwiJiN7JHByZWZpeH0jeyRrZXl9XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICRtYWtlOiBtYWtlTWFwVG9Db2RlcygkdmFsLCAkcHJlZml4KTtcclxuICAgICAgICAkY29kZXM6IG1hcC1zZXQoJGNvZGVzLCAkc2VsZWN0b3IsICRtYWtlKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAkY29kZXM6IG1hcC1zZXQoJGNvZGVzLCAka2V5LCAkdmFsKTtcclxuICAgIH1cclxuICB9XHJcbiAgQHJldHVybiAkY29kZXM7XHJcbn07XHJcblxyXG5cclxuQG1peGluIHByaW50Q29kZXMoJG1hcCkge1xyXG5cclxuICBAZWFjaCAka2V5LCAkdmFsIGluICRtYXAge1xyXG4gICBcclxuICAgIEBpZiAoIHR5cGUtb2YoJHZhbCkgPT0gbWFwICkge1xyXG4gICAgICAjeyRrZXl9IHtcclxuICAgICAgICBAaW5jbHVkZSBwcmludENvZGVzKCR2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgI3ska2V5fSA6ICN7JHZhbH07XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbn1cclxuXHJcbi8vIGlzTWFwIO2VqOyImFxyXG4vLyAje2tleX0gOiAje3ZhbHVlfeydmCDtmJXtg5zrpbwg66as7YS07ZW07KO864qUIO2VqOyImFxyXG4vLyBpc01hcCgkdmFsLCAka2V5KTtcclxuLy8gaXNNYXAg7ZWo7IiY7JeQ7IScIOyduOyekOuhnCDrhJjslrTsmKggJyR2YWwn7JeQIO2VoOuLueuQnCDqsJLsnbQgbWFw7J20652866m0IGlzbWFw7ZWo7IiY66W8IOyerOq3gO2YuOy2nCDtlZzri6QuXHJcbi8vIOyYiOyZuOyggeycvOuhnCDtgqTqsJLsnbQgXCJfXCIg652866m0IGlzUHNldWRv66W8IO2YuOy2nO2VnOuLpC5cclxuLy8g7LWc7KKF7KCB7Jy866GcICN7a2V5fSA6ICN7dmFsdWV97J2YIOqwkuydhCDrpqzthLTtlZjrj4TroZ0g66eM65Og64ukLlxyXG5cclxuLy9pc1BzZXVkbyDtlajsiJhcclxuLy/qsIDsg4Eg7ISg7YOd7J6Q66W8IOunjOuTpOyWtCDrpqzthLTtlbTso7zripQg7ZWo7IiYXHJcbi8vXHJcblxyXG5cclxuLy9AZnVuY3Rpb24gaXNNYXAgKCR2YWwsICRrZXkpIHtcclxuLy8gICRyZXN1bHQgOiAoKTtcclxuLy9cclxuLy8gIEBpZiAodHlwZS1vZigkdmFsKSA9PSBtYXApIHtcclxuLy8gICAgQGVhY2ggJGtleTIsICR2YWwyIGluICR2YWwge1xyXG4vLyAgICAgIEBpZiAodHlwZS1vZigkdmFsMikgPT0gbWFwIGFuZCAka2V5ID09IG51bGwpIHtcclxuLy8gICAgICAgICRtYXAgOiBpc01hcCgkdmFsMiwgJGtleTIpO1xyXG4vLyAgICAgICAgJG1hcGtleSA6IG1hcC1rZXlzKCRtYXApO1xyXG4vLyAgICAgICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAkbWFwa2V5LCBtYXAtZ2V0KCRtYXAsICN7JG1hcGtleX0pKTtcclxuLy8gICAgICB9IEBlbHNlIGlmICh0eXBlLW9mKCR2YWwyKSA9PSBtYXAgYW5kICRrZXkgPT0gXCJfXCIpe1xyXG4vLyAgICAgICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAka2V5MiwgaXNNYXAoJHZhbDIsICRrZXkyKSk7XHJcbi8vICAgICAgfSBAZWxzZSB7XHJcbi8vICAgICAgICAkcmVzdWx0OiBtYXAtc2V0KCRyZXN1bHQsICRrZXkyLCAkdmFsMik7XHJcbi8vICAgICAgfVxyXG4vLyAgICB9XHJcbi8vICB9IEBlbHNlIHtcclxuLy8gICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAkdmFsLCAka2V5KTtcclxuLy8gIH1cclxuLy9cclxuLy8gIEByZXR1cm4gJHJlc3VsdDtcclxuLy99O1xyXG5cclxuXHJcbi8vQGZ1bmN0aW9uIGlzUHNldWRvICgka2V5LCAkdmFsKSB7XHJcbi8vICAkcmVzdWx0OiBudWxsO1xyXG4vLyAgQGlmICgka2V5ID09IFwiX1wiKSB7XHJcbi8vICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiAkdmFsIHtcclxuLy8gICAgICAkcmVzdWx0OiBpc01hcCgka2V5MiwgJHZhbDIpO1xyXG4vLyAgICAgIEByZXR1cm4gaXNNYXAoJGtleTIsICR2YWwyKTtcclxuLy8gICAgfVxyXG4vLyAgfSBAZWxzZSAge1xyXG4vLyAgICAkcmVzdWx0OiBpc01hcCgka2V5LCAkdmFsKTtcclxuLy8gICAgQHJldHVybiAkcmVzdWx0O1xyXG4vLyAgfVxyXG4vL307XHJcblxyXG5cclxuIiwiQG1peGluIGNsZWFyKCkge1xyXG4gICY6OmFmdGVyIHtcclxuICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgIGNsZWFyOiBib3RoO1xyXG4gICB9XHJcbn1cclxuXHJcblxyXG5cclxuIiwiQG1peGluIGZsb2F0LWxlZnQge1xyXG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XHJcbn1cclxuQG1peGluIGZsb2F0LXJpZ2h0IHtcclxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcclxufVxyXG5AbWl4aW4gZmxvYXQtbm9uZSB7XHJcbiAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG4iLCJAbWl4aW4gaG92ZXItb257XHJcbiAgJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUsICYub257IEBjb250ZW50OyB9XHJcbn1cclxuXHJcbkBtaXhpbiBob3ZlcntcclxuICAmOmhvdmVyLCAmOmZvY3VzLCAmOmFjdGl2ZSB7IEBjb250ZW50OyB9XHJcbn1cclxuXHJcbi8vXHJcbi8vQG1peGluIGhvdmVyIHtcclxuLy8gICY6aG92ZXIgeyBAY29udGVudDsgfVxyXG4vL31cclxuLy9cclxuLy9AbWl4aW4gaG92ZXItZm9jdXMge1xyXG4vLyAgJjpob3ZlcixcclxuLy8gICY6Zm9jdXMge1xyXG4vLyAgICBAY29udGVudDtcclxuLy8gIH1cclxuLy99XHJcbi8vXHJcbi8vQG1peGluIHBsYWluLWhvdmVyLWZvY3VzIHtcclxuLy8gICYsXHJcbi8vICAmOmhvdmVyLFxyXG4vLyAgJjpmb2N1cyB7XHJcbi8vICAgIEBjb250ZW50O1xyXG4vLyAgfVxyXG4vL31cclxuLy9cclxuLy9AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlIHtcclxuLy8gICY6aG92ZXIsXHJcbi8vICAmOmZvY3VzLFxyXG4vLyAgJjphY3RpdmUge1xyXG4vLyAgICBAY29udGVudDtcclxuLy8gIH1cclxuLy99IiwiLy8gVXNlIGluIGNvbmp1bmN0aW9uIHdpdGggLnNyLW9ubHkgdG8gb25seSBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCdzIGZvY3VzZWQuXHJcbi8vIFNlZTogaHR0cDovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xyXG4vLyBTZWU6IGh0dHBzOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xyXG5AbWl4aW4gc3Itb25seSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxcHg7XHJcbiAgaGVpZ2h0OiAxcHg7XHJcbiAgcGFkZGluZzogMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XHJcbiAgYm9yZGVyOiAwO1xyXG59XHJcbkBtaXhpbiB0ZXh0LWhpZGUge1xyXG4gIGZvbnQ6IDAvMCBhICFpbXBvcnRhbnQ7XHJcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIHRleHQtc2hhZG93OiBub25lO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIGJvcmRlcjogMDtcclxufVxyXG5cclxuIiwiQG1peGluIHJlc2V0LXRleHQge1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcclxuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciB3b3JkLXdyYXAuXHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xyXG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XHJcbiAgbGluZS1icmVhazogYXV0bztcclxuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxyXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0ZXh0LXNoYWRvdzogbm9uZTtcclxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcclxuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcclxufVxyXG4iLCIvLyAvKiBwcmVmaXggKi9cclxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXM6KCkpe1xyXG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVze1xyXG4gICAgI3snLScrJHByZWZpeCsnLScrJHByb3BlcnR5fTokdmFsdWU7XHJcbiAgfVxyXG4gICN7JHByb3BlcnR5fSA6ICR2YWx1ZTtcclxufVxyXG5cclxuICAvLyBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sIHJvdGF0ZSg0NWRlZyksIHdlYmtpdCBtcyk7IG9yIChcIndlYmtpdFwiLCBcIm1velwiKVxyXG5cclxuIC8vY3NzXHJcbiAgLy8gLnNlbGVjdG9yIHtcclxuICAvLyAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gIC8vICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAvLyAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAvLyB9XHJcblxyXG4iLCIvLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXHJcbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcclxufVxyXG5cclxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXMpIHtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xyXG59XHJcblxyXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XHJcbn1cclxuXHJcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzKSB7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcclxufVxyXG5cclxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xyXG59XHJcbiIsIi8vIG1ha2UtYXJlYSDrr7nsiqTsnbhcclxuLy8g6riw67O46rCS7J20IG51bGzroZwg7IWL7YyF65CY7Ja0IOyeiOuKlCDsmpTshozripQg7J247J6Q6rCAIOyghOuLrOuQmOyngCDslYrsnYQg7IucIOy7tO2MjOydvCDrkJjsp4Ag7JWK7Iq164uI64ukLlxyXG4vLyBb66ek6rCc67OA7IiYXVxyXG4vLyAkbWF4LXdpZHRoIOq4sOuzuOqwkjogbnVsbFxyXG4vLyAkZ3V0dGVyLXdpZHRoIOq4sOuzuOqwkjogbnVsbFxyXG4vLyAkd2lkdGgg6riw67O46rCSOiAxMDAlXHJcbi8vIGV4KSBAaW5jbHVkZSBtYWtlLWFyZWEoICRtYXgtd2lkdGg6ICRtYXgtd2lkdGgsICRndXR0ZXItd2lkdGg6ICRhcmVhLWd1dHRlci13aWR0aCApO1xyXG4vLyBleCkgQGluY2x1ZGUgbWFrZS1hcmVhKCAkd2lkdGg6IDE2MDBweCApO1xyXG4vL0BtaXhpbiBtYWtlLWFyZWEoICRtYXgtd2lkdGg6IG51bGwsICRndXR0ZXItd2lkdGg6IG51bGwsICR3aWR0aDogMTAwJSApIHtcclxuLy8gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuLy8gIHdpZHRoOiAkd2lkdGg7XHJcbi8vICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XHJcbi8vICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbi8vICBtYXJnaW4tbGVmdDogYXV0bztcclxuLy8gIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXItd2lkdGg7XHJcbi8vICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXItd2lkdGg7XHJcbi8vfVxyXG5cclxuQG1peGluIG1ha2UtYXJlYSggJGFyZWEtaW5mbzogJGdfZGVmYXVsdC1hcmVhICkge1xyXG4gICR3aWR0aDogMTAwJTtcclxuICBAaWYgIG1hcC1oYXMta2V5KCRhcmVhLWluZm8sIHdpZHRoKSB7XHJcbiAgICAkd2lkdGggOiBtYXAtZ2V0KCRhcmVhLWluZm8sIHdpZHRoKVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgJHdpZHRoIDogMTAwJVxyXG4gIH1cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6ICR3aWR0aDtcclxuICBtYXgtd2lkdGg6IG1hcC1nZXQoJGFyZWEtaW5mbywgbWF4LXdpZHRoKTtcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgcGFkZGluZy1yaWdodDogbWFwLWdldCgkYXJlYS1pbmZvLCBndXR0ZXItd2lkdGgpO1xyXG4gIHBhZGRpbmctbGVmdDogbWFwLWdldCgkYXJlYS1pbmZvLCBndXR0ZXItd2lkdGgpO1xyXG59XHJcblxyXG4iLCIvLyBtYWtlLXJvdyDrr7nsiqTsnbhcclxuLy8gW+unpOqwnOuzgOyImF1cclxuLy8gJGdyaWQtZ3V0dGVyIOq4sOuzuOqwkjogJGdyaWQtZ3V0dGVyLXdpZHRoXHJcbi8vICRncmlkLWd1dHRlciDsoITri6zrkJwg6rCS7JeQIOuUsOudvOyEnCBtYXJnaW4tcmlnaHQsIG1hcmdpbi1sZWZ0IOqwkuydhCDshYvtjIXtlbQg7KSN64uI64ukLlxyXG4vLyBleCkgQGluY2x1ZGUgbWFrZS1yb3coICRncmlkLWd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKTtcclxuQG1peGluIG1ha2Utcm93KCAkZ3JpZC1ndXR0ZXIgOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tcmlnaHQ6IC0kZ3JpZC1ndXR0ZXI7XHJcbiAgbWFyZ2luLWxlZnQ6IC0kZ3JpZC1ndXR0ZXI7XHJcbiAgQGluY2x1ZGUgY2xlYXIoKTtcclxufVxyXG5cclxuLy8gbWFrZS1jb2wtc2V0IOuvueyKpOyduFxyXG4vLyBb66ek6rCc67OA7IiYXVxyXG4vLyAkZ3JpZC1jb2wtY250IOq4sOuzuOqwkjogJGdyaWQtY29sdW1uc1xyXG4vLyAkZ3JpZC1jb2wtY250IOyghOuLrOuQnCDqsJLsnZgg6rCc7IiY66eM7YKB7J2YIGNvbCxwdWxsLHB1c2gsb2Zmc2V0IOuTseydhCDrp4zrk6TslrTspI3ri4jri6QuXHJcbi8vIGV4KSBAaW5jbHVkZSBtYWtlLWNvbC1zZXQoKTtcclxuLy8gZXgpIEBpbmNsdWRlIG1ha2UtY29sLXNldCgkZ3JpZC1jb2wtY250OiA1KTtcclxuQG1peGluIG1ha2UtY29sLXNldCggJGdyaWQtY29sLWluZm86ICRnX2dyaWQtY29sLWluZm8gKSB7XHJcbiAgJGdyaWQtY29sLW5hbWU6IG51bGw7XHJcbiAgQGlmICBtYXAtaGFzLWtleSgkZ3JpZC1jb2wtaW5mbywgZ3JpZC1jb2wtbmFtZSkge1xyXG4gICAgJGdyaWQtY29sLW5hbWUgOiBtYXAtZ2V0KCRncmlkLWNvbC1pbmZvLCBncmlkLWNvbC1uYW1lKVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgJGdyaWQtY29sLW5hbWUgOiBudWxsXHJcbiAgfVxyXG4gICAgQGluY2x1ZGUgbWFrZS1jb2woIG1hcC1nZXQoJGdyaWQtY29sLWluZm8sIGdyaWQtY29sLWNudCksICRncmlkLWNvbC1uYW1lICk7XHJcbiAgQGluY2x1ZGUgbWFrZS1wdWxsKCBtYXAtZ2V0KCRncmlkLWNvbC1pbmZvLCBncmlkLWNvbC1jbnQpLCAkZ3JpZC1jb2wtbmFtZSApO1xyXG4gIEBpbmNsdWRlIG1ha2UtcHVzaCggbWFwLWdldCgkZ3JpZC1jb2wtaW5mbywgZ3JpZC1jb2wtY250KSwgJGdyaWQtY29sLW5hbWUgKTtcclxuICBAaW5jbHVkZSBtYWtlLW9mZnNldCggbWFwLWdldCgkZ3JpZC1jb2wtaW5mbywgZ3JpZC1jb2wtY250KSwgJGdyaWQtY29sLW5hbWUgKTtcclxufVxyXG5cclxuXHJcbkBtaXhpbiBtYWtlLWNvbCggJGdyaWQtY29sLWNudDogJGdyaWQtY29sLWNudCwgJGNvbC1uYW1lOiAkY29sLW5hbWUgKSB7XHJcbiAgQGVhY2ggJGJyZWFrcG9pbnQsICRwb2ludCBpbiAkZ19tZWRpYS1icmVha3BvaW50cyB7XHJcbiAgICBAaWYgJGJyZWFrcG9pbnQgPT0geHMge1xyXG4gICAgICAuI3skY29sLW5hbWV9Y29sIHtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgICAgLiN7JGNvbC1uYW1lfWNvbC1hdXRvIHtcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgfTtcclxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2wtY250IHtcclxuICAgICAgICAuI3skY29sLW5hbWV9Y29sLSN7JGl9IHtcclxuICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKCRpIC8gJGdyaWQtY29sLWNudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHBvaW50fSkge1xyXG4gICAgICAgIC4jeyRjb2wtbmFtZX1jb2wtI3skYnJlYWtwb2ludH0ge1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAuI3skY29sLW5hbWV9Y29sLSN7JGJyZWFrcG9pbnR9LWF1dG8ge1xyXG4gICAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgfTtcclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbC1jbnQge1xyXG4gICAgICAgICAgLiN7JGNvbC1uYW1lfWNvbC0jeyRicmVha3BvaW50fS0jeyRpfSB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKCRpIC8gJGdyaWQtY29sLWNudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbWFrZS1wdWxsKCAkZ3JpZC1jb2wtY250OiAkZ3JpZC1jb2wtY250LCAkY29sLW5hbWU6ICRjb2wtbmFtZSApIHtcclxuICBAZWFjaCAkYnJlYWtwb2ludCwgJHBvaW50IGluICRnX21lZGlhLWJyZWFrcG9pbnRzIHtcclxuICAgIEBpZiAkYnJlYWtwb2ludCA9PSB4cyB7XHJcbiAgICAgIC4jeyRjb2wtbmFtZX1wdWxsLTAge1xyXG4gICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sLWNudCB7XHJcbiAgICAgICAgLiN7JGNvbC1uYW1lfXB1bGwtI3skaX0ge1xyXG4gICAgICAgICAgcmlnaHQ6IHBlcmNlbnRhZ2UoJGkgLyAkZ3JpZC1jb2wtY250KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogI3skcG9pbnR9KSB7XHJcbiAgICAgICAgLiN7JGNvbC1uYW1lfXB1bGwtI3skYnJlYWtwb2ludH0tMCB7XHJcbiAgICAgICAgICByaWdodDogYXV0bztcclxuICAgICAgICB9XHJcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2wtY250IHtcclxuICAgICAgICAgIC4jeyRjb2wtbmFtZX1wdWxsLSN7JGJyZWFrcG9pbnR9LSN7JGl9IHtcclxuICAgICAgICAgICAgcmlnaHQ6IHBlcmNlbnRhZ2UoJGkgLyAkZ3JpZC1jb2wtY250KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBtYWtlLXB1c2goICRncmlkLWNvbC1jbnQ6ICRncmlkLWNvbC1jbnQsICRjb2wtbmFtZTogJGNvbC1uYW1lICkge1xyXG4gIEBlYWNoICRicmVha3BvaW50LCAkcG9pbnQgaW4gJGdfbWVkaWEtYnJlYWtwb2ludHMge1xyXG4gICAgQGlmICRicmVha3BvaW50ID09IHhzIHtcclxuICAgICAgLiN7JGNvbC1uYW1lfXB1c2gtMCB7XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbC1jbnQge1xyXG4gICAgICAgIC4jeyRjb2wtbmFtZX1wdXNoLSN7JGl9IHtcclxuICAgICAgICAgIGxlZnQ6IHBlcmNlbnRhZ2UoJGkgLyAkZ3JpZC1jb2wtY250KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogI3skcG9pbnR9KSB7XHJcbiAgICAgICAgLiN7JGNvbC1uYW1lfXB1c2gtI3skYnJlYWtwb2ludH0tMCB7XHJcbiAgICAgICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbC1jbnQge1xyXG4gICAgICAgICAgLiN7JGNvbC1uYW1lfXB1c2gtI3skYnJlYWtwb2ludH0tI3skaX0ge1xyXG4gICAgICAgICAgICBsZWZ0OiBwZXJjZW50YWdlKCRpIC8gJGdyaWQtY29sLWNudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbWFrZS1vZmZzZXQoICRncmlkLWNvbC1jbnQ6ICRncmlkLWNvbHVtbnMsICRjb2wtbmFtZTogJGNvbC1uYW1lICkge1xyXG4gIEBlYWNoICRicmVha3BvaW50LCAkcG9pbnQgaW4gJGdfbWVkaWEtYnJlYWtwb2ludHMge1xyXG4gICAgJHBvaW50OiBtZWRpYS1xdWVyeS1taW4tdmFsKCRicmVha3BvaW50KTtcclxuICAgIEBpZiAkYnJlYWtwb2ludCA9PSB4cyB7XHJcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sLWNudCAtIDEge1xyXG4gICAgICAgIC4jeyRjb2wtbmFtZX1vZmZzZXQtI3skaX0ge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoJGkgLyAkZ3JpZC1jb2wtY250KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogI3skcG9pbnR9KSB7XHJcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2wtY250IC0gMSB7XHJcbiAgICAgICAgICAuI3skY29sLW5hbWV9b2Zmc2V0LSN7JGJyZWFrcG9pbnR9LSN7JGl9IHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoJGkgLyAkZ3JpZC1jb2wtY250KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIkBtaXhpbiB0cmlhbmdsZSgkZGlyZWN0aW9uLCR3aWR0aCwkaGVpZ2h0LCR3aWR0aFNpemUsJGhlaWdodFNpemUsJGNvbG9yKSB7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICBoZWlnaHQ6ICR3aWR0aDtcclxuICAgIHdpZHRoOiAkaGVpZ2h0O1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIEBpZiAkd2lkdGggPT0gMCB7XHJcbiAgICAgICAgQGlmICR3aWR0aCA9PSAwIGFuZCAkaGVpZ2h0ID09IDAge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvcjtcclxuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGhTaXplIC8gMikgJGhlaWdodFNpemU7XHJcbiAgICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwidXAtcmlnaHRcIiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgJHdpZHRoU2l6ZSAkd2lkdGhTaXplIDA7XHJcbiAgICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwicmlnaHRcIiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGNvbG9yO1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0U2l6ZSAvIDIpIDAgKCRoZWlnaHRTaXplIC8gMikgJHdpZHRoU2l6ZTtcclxuICAgICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJkb3duLXJpZ2h0XCIge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvcjtcclxuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDAgJHdpZHRoU2l6ZSAkd2lkdGhTaXplO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImRvd25cIiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6ICRoZWlnaHRTaXplICgkd2lkdGhTaXplIC8gMikgMDtcclxuICAgICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJkb3duLWxlZnRcIiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGNvbG9yO1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6ICR3aWR0aFNpemUgMCAwICR3aWR0aFNpemU7XHJcbiAgICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwibGVmdFwiIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHRTaXplIC8gMikgJHdpZHRoU2l6ZSAoJGhlaWdodFNpemUgLyAyKSAwO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInVwLWxlZnRcIiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6ICR3aWR0aFNpemUgJHdpZHRoU2l6ZSAwIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICRjb2xvciAkY29sb3IgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAwICR3aWR0aFNpemUgJGhlaWdodFNpemUgMDtcclxuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSBcInVwXCIge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInVwLXJpZ2h0XCIge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7XHJcbiAgICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwicmlnaHRcIiB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtcclxuICAgICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJkb3duLXJpZ2h0XCIge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlKDBkZWcpO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImRvd25cIiB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImRvd24tbGVmdFwiIHtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7XHJcbiAgICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwibGVmdFwiIHtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpO1xyXG4gICAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInVwLWxlZnRcIiB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLyAuZWxlbWVudCB7XHJcbi8vICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuLy8gICAgICY6OmJlZm9yZSB7XHJcbi8vICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoXCJ1cC1sZWZ0XCIsIDAsMCwxMHB4LDEwcHgsICNiMjVjOWMpO1xyXG4vLyAgICAgfVxyXG4vLyB9XHJcbi8vIC5lbGVtZW50MiB7XHJcbi8vICAgICBsZWZ0OjIwcHg7XHJcbi8vICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuLy8gICAgICY6OmJlZm9yZSB7XHJcbi8vICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoXCJ1cC1sZWZ0XCIsIDhweCw4cHgsMnB4LDJweCwgI2IyNWM5Yyk7XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbi8vIGNzc1xyXG4vLyAuZWxlbWVudDIge1xyXG4vLyAgICAgY29udGVudDogXCJcIjtcclxuLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuLy8gICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbi8vICAgICBoZWlnaHQ6IDhweDtcclxuLy8gICAgIHdpZHRoOiA4cHg7XHJcbi8vICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNiMjVjOWMgI2IyNWM5YyB0cmFuc3BhcmVudDtcclxuLy8gICAgIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XHJcbi8vICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xyXG4vLyB9XHJcbiIsIi8vIEJ1dHRvbiB2YXJpYW50c1xyXG4vLyDrsoTtirwg7IKs7J207KaI67OEIOyDneyEsVxyXG5AbWl4aW4gYnV0dG9uLXNpemUtcHgoJGJ0bi1zaXplIDogJGdfYnRuLXNpemUpIHtcclxuICBAZWFjaCAka2V5LCAkdmFsIGluICgkYnRuLXNpemUpe1xyXG4gICAgQGlmICgka2V5ID09IGRlZmF1bHRfdmFsdWUpIHtcclxuICAgICAgJWRlZmF1bHRfdmFsdWUge1xyXG4gICAgICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiAkdmFsIHtcclxuICAgICAgICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAuYnRuLSN7JGtleX0ge1xyXG4gICAgICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiAkdmFsIHtcclxuICAgICAgICAgIEBpZiAoJGtleTIgPT0gbWVkaWEpIHtcclxuICAgICAgICAgICAgQGVhY2ggJGtleTMsICR2YWwzIGluICR2YWwyIHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeS1taW4oJGtleTMpIHtcclxuICAgICAgICAgICAgICAgICRjb2RlczogbWFrZU1hcFRvQ29kZXMoJHZhbDMpO1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcHJpbnRDb2RlcygkY29kZXMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBAZWxzZXtcclxuICAgICAgICAgICAgQGlmICggdHlwZS1vZigkdmFsMikgPT0gbWFwICkgeyAvLyBvbmUgZGVwdGggY2xhc3Mg7JWI7JeQIOy2lOqwgCBjbGFzcyDsg53shLFcclxuICAgICAgICAgICAgICAuI3ska2V5Mn0ge1xyXG4gICAgICAgICAgICAgICAgJGNvZGVzOiBtYWtlTWFwVG9Db2RlcygkdmFsMik7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwcmludENvZGVzKCRjb2Rlcyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IEBlbHNlIHsgLy8gb25lIGRlcHRoIGNsYXNzIOuyhO2KvFxyXG4gICAgICAgICAgICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGJ0bi1kaXNhYmxlZCgpIHtcclxuICAmLmRpc2FibGVkIHtcclxuICAgIEBjb250ZW50O1xyXG4gICAgcG9pbnRlci1ldmVudHM6bm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi8vIOuyhO2KvCDsiqTtg4Dsnbwg7ISk7KCV7ZW07KO86riwXHJcbkBtaXhpbiBidXR0b24tc3R5bGUoJGJ0bi1ncm91cCA6ICRnX2J0bi1ncm91cCl7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnRuLWdyb3VwIHtcclxuICAgIC5idG4tI3ska2V5fSxcclxuICAgIC5idG4tI3ska2V5fTp2aXNpdGVkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkdmFsLCB0aGVtZS1jb2xvcik7XHJcbiAgICAgIGNvbG9yOiBtYXAtZ2V0KCR2YWwsIGZvbnQtY29sb3IpO1xyXG4gICAgICBib3JkZXI6IG1hcC1nZXQoJHZhbCwgYm9yZGVyKTtcclxuICAgICAgYm9yZGVyLXJhZGl1cyA6IG1hcC1nZXQoJHZhbCwgYm9yZGVyLXJhZGl1cyk7XHJcblxyXG4gICAgICBAaW5jbHVkZSBob3Zlci1vbiB7XHJcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGhvdmVyLXRoZW1lLWNvbG9yKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6bWFwLWdldCgkdmFsLCBob3Zlci10aGVtZS1jb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ZGFya2VuKCBtYXAtZ2V0KCR2YWwsIHRoZW1lLWNvbG9yKSwgMTUlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGhvdmVyLWNvbG9yKSB7XHJcbiAgICAgICAgICBjb2xvcjptYXAtZ2V0KCR2YWwsIGhvdmVyLWNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgY29sb3I6bWFwLWdldCgkdmFsLCBmb250LWNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYm9yZGVyOiBtYXAtZ2V0KCR2YWwsIGhvdmVyLWJvcmRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIGJ0bi1kaXNhYmxlZCB7XHJcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGRpc2FibGVkLWdyb3VwKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KG1hcC1nZXQoJHZhbCwgZGlzYWJsZWQtZ3JvdXApLGRpbS10aGVtZS1jb2xvcik7XHJcbiAgICAgICAgICBjb2xvcjogbWFwLWdldChtYXAtZ2V0KCR2YWwsIGRpc2FibGVkLWdyb3VwKSwgZGltLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IG1hcC1nZXQobWFwLWdldCgkdmFsLCBkaXNhYmxlZC1ncm91cCksIGRpbS1vcGFjaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgb3BhY2l0eTouNjU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiBtYWtlLWNhcmQtc2V0KCRjYXJkLWluZm8pIHtcclxuICAlY2FyZC13cmFwe1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGNhcmQtaW5mbyB7XHJcbiAgICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gJHZhbCB7XHJcbiAgICAgIEBpZiAka2V5MiA9PSBcIndyYXBcIiB7XHJcbiAgICAgICAgLmNhcmQtI3ska2V5Mn0tI3ska2V5fSB7XHJcbiAgICAgICAgICBAZXh0ZW5kICVjYXJkLXdyYXA7XHJcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiBtYXAtZ2V0KCR2YWwyLCBtYXJnaW4tYm90dG9tKTtcclxuICAgICAgICAgIHBhZGRpbmc6IG1hcC1nZXQoJHZhbDIsIHBhZGRpbmcpO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkdmFsMiwgYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICBAZWFjaCAka2V5MywgJHZhbDMgaW4gIG1hcC1nZXQoJHZhbDIsIGJvcmRlci1zdHlsZSkge1xyXG4gICAgICAgICAgICAjeyRrZXkzfTogI3skdmFsM307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiBtYXAtZ2V0KCR2YWwyLCBib3JkZXItcmFkaXVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgJGtleTIgPT0gXCJoZWFkZXJcIiB7XHJcbiAgICAgICAgLmNhcmQtd3JhcC0jeyRrZXl9e1xyXG4gICAgICAgICAgLmNhcmQtI3ska2V5Mn0ge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiBtYXAtZ2V0KCR2YWwyLCBwYWRkaW5nKTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkdmFsMiwgYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICAgIEBlYWNoICRrZXkzLCAkdmFsMyBpbiAgbWFwLWdldCgkdmFsMiwgYm9yZGVyLXN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgI3ska2V5M306ICN7JHZhbDN9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkdmFsMiwgZm9udC1zaXplKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIC5jYXJkLXdyYXAtI3ska2V5fXtcclxuICAgICAgICAgIC5jYXJkLSN7JGtleTJ9IHtcclxuICAgICAgICAgICAgcGFkZGluZzogbWFwLWdldCgkdmFsMiwgcGFkZGluZyk7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC1nZXQoJHZhbDIsIGJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgICBAZWFjaCAka2V5MywgJHZhbDMgaW4gIG1hcC1nZXQoJHZhbDIsIGJvcmRlci1zdHlsZSkge1xyXG4gICAgICAgICAgICAgICN7JGtleTN9OiAjeyR2YWwzfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4vLyDri6Qg64KY64iE6rOgIO2VmOuCmOuhnCDtlansuZjripTqsowg7KKL7KeAIOyViuydhOq5jD8/Pz8/Pz9cclxuLy8g7IOB7IaN7J2YIOqzhOuFkOydhCDsoIHsmqntlbTslbwg7ZWY64qU6rCAPz9cclxuLy8g7IOB7IaN7J2EIOyggeyaqe2VmOuptCDsvZTrk5zqsIAg7KGw6riIIOuzteyeoe2VtOyniOuTr1xyXG4vLyDslYTsmIggd3JhcCwgaGVhZGVyLCBib2R5LCBmb290ZXIg64KY64iE64qU642Y7KeALCDsp4DquIjsspjrn7wg7LKY66as7ZWY64qU6rKMIOuCmOydhOuTr1xyXG4iLCIvLyBQYWdpbmF0aW9uXHJcbkBtaXhpbiBwYWdpbmF0aW9uLWxpbmtzKCRwYWdlLWl0ZW0pe1xyXG4gIHdpZHRoOm1hcC1nZXQoJHBhZ2UtaXRlbSwgd2lkdGgpO1xyXG4gIGhlaWdodDptYXAtZ2V0KCRwYWdlLWl0ZW0sIGhlaWdodCk7XHJcbiAgbGluZS1oZWlnaHQ6bWFwLWdldCgkcGFnZS1pdGVtLCBoZWlnaHQpOyAvLyBoZWlnaHTqsJLqs7wg64+Z7J28XHJcblxyXG4gIC8vcGFkZGluZzptYXAtZ2V0KCRwYWdlLWl0ZW0sIHBhZGRpbmcpOyAtPiDsgq3soJzsmIjsoJUg67O066WYLi5cclxuICBtYXJnaW46bWFwLWdldCgkcGFnZS1pdGVtLCBtYXJnaW4pO1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCRwYWdlLWl0ZW0sIHRoZW1lLWNvbG9yKTtcclxuICBib3JkZXI6IG1hcC1nZXQoJHBhZ2UtaXRlbSwgYm9yZGVyKTtcclxuICBib3JkZXItcmlnaHQ6bWFwLWdldCgkcGFnZS1pdGVtLCBib3JkZXItcmlnaHQpO1xyXG5cclxuICBib3JkZXItcmFkaXVzOm1hcC1nZXQoJHBhZ2UtaXRlbSwgYm9yZGVyLXJhZGl1cyk7XHJcbiAgZm9udC1zaXplOm1hcC1nZXQoJHBhZ2UtaXRlbSwgZm9udC1zaXplKTtcclxuICBmb250LXdlaWdodDptYXAtZ2V0KCRwYWdlLWl0ZW0sIGZvbnQtd2VpZ2h0KTtcclxuICBsZXR0ZXItc3BhY2luZzptYXAtZ2V0KCRwYWdlLWl0ZW0sIGxldHRlci1zcGFjaW5nKTtcclxuICBjb2xvcjptYXAtZ2V0KCRwYWdlLWl0ZW0sIGZvbnQtY29sb3IpO1xyXG5cclxuICBAaW5jbHVkZSBob3ZlciB7XHJcbiAgICBAaWYgbWFwLWhhcy1rZXkoJHBhZ2UtaXRlbSwgaG92ZXItdGhlbWUtY29sb3IpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjptYXAtZ2V0KCRwYWdlLWl0ZW0saG92ZXItdGhlbWUtY29sb3IpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOmRhcmtlbiggbWFwLWdldCgkcGFnZS1pdGVtLCB0aGVtZS1jb2xvciksIDE1JSk7XHJcbiAgICB9XHJcbiAgICBjb2xvcjptYXAtZ2V0KCRwYWdlLWl0ZW0sIGhvdmVyLWNvbG9yKTtcclxuICAgIGJvcmRlci1jb2xvcjogbWFwLWdldCgkcGFnZS1pdGVtLCBob3Zlci1ib3JkZXItY29sb3IpO1xyXG4gIH1cclxuXHJcbn1cclxuLy8g7JWh7Yuw67iMIOuQoOyLnFxyXG5AbWl4aW4gcGFnaW5hdGlvbi1hY3RpdmUoJHBhZ2UtYWN0aXZlLWl0ZW0pe1xyXG4gIGJhY2tncm91bmQtY29sb3I6bWFwLWdldCgkcGFnZS1hY3RpdmUtaXRlbSwgYWN0aXZlLXRoZW1lKTtcclxuICBjb2xvcjptYXAtZ2V0KCRwYWdlLWFjdGl2ZS1pdGVtLGFjdGl2ZS1jb2xvcik7XHJcbiAgQGVhY2ggJGtleTIsICR2YWwyIGluIChtYXAtZ2V0KCRwYWdlLWFjdGl2ZS1pdGVtLGFjdGl2ZS1zdHlsZSkpe1xyXG4gICAgI3ska2V5Mn06ICN7JHZhbDJ9O1xyXG4gIH1cclxufVxyXG4vLyDrlKQg65Cg7IucXHJcbkBtaXhpbiBwYWdpbmF0aW9uLWRpc2FibGVkKCRwYWdlLWRpc2FibGVkLWl0ZW0pe1xyXG4gIG9wYWNpdHk6bWFwLWdldCgkcGFnZS1kaXNhYmxlZC1pdGVtLCBkaW0tb3BhY2l0eSk7XHJcbiAgcG9pbnRlci1ldmVudHM6bm9uZTtcclxuICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gKG1hcC1nZXQoJHBhZ2UtZGlzYWJsZWQtaXRlbSxkaXNhYmxlZC1zdHlsZSkpe1xyXG4gICAgI3ska2V5Mn06ICN7JHZhbDJ9O1xyXG4gIH1cclxufVxyXG5cclxuLy8g7LKY7J2MIOydtOyghCDri6TsnYwg64GdIGFycm93IOq0gOugqCDsu6TsiqTthYBcclxuQG1peGluIHBhZ2luYXRpb24tYXJyb3dzKCRwYWdlLWFycm93LXN0eWxlKSB7XHJcbiAgQGVhY2ggJGtleTIsICR2YWwyIGluICRwYWdlLWFycm93LXN0eWxlIHtcclxuICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICB9XHJcbn0iLCJAbWl4aW4gbWFrZS1mb3JtLXdyYXAoICRmb3JtLXdyYXAtaW5mbyA6ICRnX2Zvcm0td3JhcCApIHtcclxuICBAZWFjaCAka2V5LCAkdmFsIGluICgkZm9ybS13cmFwLWluZm8pe1xyXG4gICAgQGlmICgka2V5ID09IGRlZmF1bHRfdmFsdWUpIHtcclxuICAgICAgJWRlZmF1bHRfdmFsdWUge1xyXG4gICAgICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiAkdmFsIHtcclxuICAgICAgICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAuZm9ybS13cmFwLSN7JGtleX0ge1xyXG4gICAgICAgIEBpZiAobWFwLWhhcy1rZXkoJGZvcm0td3JhcC1pbmZvLCBkZWZhdWx0X3ZhbHVlKSkge1xyXG4gICAgICAgICAgQGV4dGVuZCAlZGVmYXVsdF92YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChtYXAtaGFzLWtleSgkdmFsLCBtZWRpYSkpIHtcclxuICAgICAgICAgICRtZWRpYTogbWFwX2dldCgkdmFsLCBtZWRpYSk7XHJcbiAgICAgICAgICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gJG1lZGlhIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnktbWluKCRrZXkyKSB7XHJcbiAgICAgICAgICAgICAgJGNvZGVzOiBtYWtlTWFwVG9Db2RlcygkdmFsMik7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcHJpbnRDb2RlcygkY29kZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICBAZWFjaCAka2V5MywgJHZhbDMgaW4gJHZhbCB7XHJcbiAgICAgICAgICAgICRjb2RlczogbWFrZU1hcFRvQ29kZXMoJGtleTMpO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBwcmludENvZGVzKCRjb2Rlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyAvKu2FjeyKpO2KuCDrsJXsiqQqL1xyXG5AbWl4aW4gbWFrZS1maWVsZC1kZWZhdWx0KCkge1xyXG4gICVmaWVsZC1iYXNlIHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgfVxyXG4gIEBlYWNoICRrZXksICR2YWwgaW4gKCRnX2ZpZWxkLXN0eWxlKSB7XHJcbiAgICAuZmllbGQtI3ska2V5fSBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuICAgIC5maWVsZC0jeyRrZXl9IGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuICAgIC5maWVsZC0jeyRrZXl9IGlucHV0W3R5cGU9XCJ0ZWxcIl0sXHJcbiAgICAuZmllbGQtI3ska2V5fSBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbiAgICAuZmllbGQtI3ska2V5fSBzZWxlY3QsXHJcbiAgICAuZmllbGQtI3ska2V5fSB0ZXh0YXJlYXtcclxuICAgICAgQGV4dGVuZCAlZmllbGQtYmFzZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogbWFwLWdldCgkdmFsLCBtYXgtd2lkdGgpO1xyXG4gICAgICBoZWlnaHQ6IG1hcC1nZXQoJHZhbCwgaW5wdXQtaGVpZ2h0KTtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogbWFwLWdldCgkdmFsLCBtYXJnaW4tYm90dG9tKTtcclxuICAgICAgcGFkZGluZzogbWFwLWdldCgkdmFsLCBpbnB1dC1wYWRkaW5nKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLWdldCgkdmFsLCBpbnB1dC1iZyk7XHJcbiAgICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiBtYXAtZ2V0KCR2YWwsIGJvcmRlci1zdHlsZSkge1xyXG4gICAgICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICAgICAgfVxyXG4gICAgICBmb250LXNpemU6IG1hcC1nZXQoJHZhbCwgZm9udC1zaXplKTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IG1hcC1nZXQoJHZhbCwgbGV0dGVyLXNwYWNpbmcpO1xyXG4gICAgICBjb2xvcjogbWFwLWdldCgkdmFsLCBmb250LWNvbG9yKTtcclxuICAgICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGZvY3VzLXN0eWxlKSB7XHJcbiAgICAgICAgJGZvY3VzLXN0eWxlOiBtYXAtZ2V0KCR2YWwsIGZvY3VzLXN0eWxlKTtcclxuICAgICAgICBAZWFjaCAka2V5MywgJHZhbDMgaW4gJGZvY3VzLXN0eWxlIHtcclxuICAgICAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAjeyRrZXkzfSA6ICN7JHZhbDN9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmZpZWxkLSN7JGtleX0gaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbiAgICAuZmllbGQtI3ska2V5fSBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxyXG4gICAgLmZpZWxkLSN7JGtleX0gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4gICAgLmZpZWxkLSN7JGtleX0gaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxyXG4gICAgLmZpZWxkLSN7JGtleX0gdGV4dGFyZWF7XHJcbiAgICAgICY6OnBsYWNlaG9sZGVyIHtcclxuICAgICAgICBjb2xvcjogbWFwLWdldCgkdmFsLCBwbGFjZWhvbGRlci1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG4gICAgICAgIGNvbG9yOiBtYXAtZ2V0KCR2YWwsIHBsYWNlaG9sZGVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICAmOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG4gICAgICAgIGNvbG9yOiBtYXAtZ2V0KCR2YWwsIHBsYWNlaG9sZGVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5maWVsZC0jeyRrZXl9Lm5vLXVuZGVybGluZSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IHRyYW5zcGFyZW50O1xyXG4gICAgfVxyXG4gICAgQGluY2x1ZGUgbWFrZS10ZXh0LWFyZWEoJGtleSk7XHJcbiAgICBAaW5jbHVkZSBtYWtlLXNlbGVjdGJveCgka2V5KTtcclxuXHJcbiAgfVxyXG59XHJcbkBtaXhpbiBtYWtlLXRleHQtYXJlYSgkc3R5bGUpIHtcclxuICBAZWFjaCAka2V5LCAkdmFsIGluICgkZ190ZXh0LWFyZWEtc3R5bGUpIHtcclxuICAgIEBpZiAoJHN0eWxlID09ICRrZXkpIHtcclxuICAgICAgLmZpZWxkLSN7JHN0eWxlfSB0ZXh0YXJlYXtcclxuICAgICAgICBoZWlnaHQ6IG1hcC1nZXQoJHZhbCwgdGV4dC1hcmVhLWhlaWdodCk7XHJcbiAgICAgICAgcGFkZGluZzogbWFwLWdldCgkdmFsLCB0ZXh0LWFyZWEtcGFkZGluZyk7XHJcbiAgICAgICAgcmVzaXplOiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyAvKuyFgOugie2KuCDrsJXsiqQqL1xyXG5AbWl4aW4gbWFrZS1zZWxlY3Rib3goJHN0eWxlKSB7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAoJGdfc2VsZWN0LXN0eWxlKSB7XHJcbiAgICBAaWYgKCRzdHlsZSA9PSAka2V5KSB7XHJcbiAgICAgIC5maWVsZC0jeyRzdHlsZX0gc2VsZWN0e1xyXG4gICAgICAgICRjb2RlczogbWFrZU1hcFRvQ29kZXMoJHZhbCk7XHJcbiAgICAgICAgQGluY2x1ZGUgcHJpbnRDb2RlcygkY29kZXMpO1xyXG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGluaXRpYWw7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC8q7J2066+47KeAIOyytO2BrCAmIOudvOuUlOyYpCovXHJcbkBtaXhpbiBtYWtlLWNoZWNrYm94LWltZyggJGNoZWNrLWJveC1pbmZvOiAkZ19jaGVjay1ib3gtaW1nICkge1xyXG4gIEBlYWNoICRrZXksICR2YWwgaW4gKCRjaGVjay1ib3gtaW5mbykge1xyXG4gICAgLmNrYngtI3ska2V5fXtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IG1hcC1nZXQoJHZhbCwgbWFyZ2luLXJpZ2h0KTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAuY3VzdG9tLWNoZWNrZWQge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiBtYXAtZ2V0KCR2YWwsIHdpZHRoKTtcclxuICAgICAgICBoZWlnaHQ6IG1hcC1nZXQoJHZhbCwgaGVpZ2h0KTtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IG1hcC1nZXQoJHZhbCwgYm94LW1hcmdpbi1yaWdodCk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbWFwLWdldCgkdmFsLCBib3gtaW1nKTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgLnRleHQge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBmb250LXNpemU6IG1hcC1nZXQoJHZhbCwgZm9udC1zaXplKTtcclxuICAgICAgfVxyXG4gICAgICBpbnB1dCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAmW3R5cGU9cmFkaW9dOmNoZWNrZWQgfiAuY3VzdG9tLWNoZWNrZWQsXHJcbiAgICAgICAgJlt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gLmN1c3RvbS1jaGVja2VkIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG1hcC1nZXQoJHZhbCwgYm94LWltZy1vbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICB9XHJcbiAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICAgIGNvbG9yOiAjZWVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi8vIC8q7YOc6re4IOyytO2BrCYg652865SU7JikKi9cclxuQG1peGluIG1ha2UtY2hlY2tib3gtdGFnKCAkY2hlY2stYm94LWluZm86ICRnX2NoZWNrLWJveC10YWcgKSB7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAoJGNoZWNrLWJveC1pbmZvKSB7XHJcbiAgICAvL+uzgOyImFxyXG4gICAgJHdpZHRoOiBtYXAtZ2V0KCR2YWwsIHdpZHRoKTtcclxuICAgICRoZWlnaHQ6IG1hcC1nZXQoJHZhbCwgaGVpZ2h0KTtcclxuICAgICRib3gtbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgJGNoZWNrLXdpZHRoOiAkd2lkdGggLyAyO1xyXG4gICAgJGNoZWNrLWhlaWdodDogJGhlaWdodCAvIDI7XHJcblxyXG4gICAgLy/tlbTri7nqsJLsnbQg7J6I64qU7KeAIOyytO2BrFxyXG4gICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGJveC1tYXJnaW4tcmlnaHQpIHtcclxuICAgICAgJGJveC1tYXJnaW4tcmlnaHQ6IG1hcC1nZXQoJHZhbCwgYm94LW1hcmdpbi1yaWdodClcclxuICAgIH1cclxuICAgIEBpZiBtYXAtaGFzLWtleSgkdmFsLCBjaGVja2VkLXdpZHRoKSB7XHJcbiAgICAgICRjaGVjay13aWR0aDogbWFwLWdldCgkdmFsLCBjaGVja2VkLXdpZHRoKVxyXG4gICAgfVxyXG4gICAgQGlmIG1hcC1oYXMta2V5KCR2YWwsIGNoZWNrZWQtaGVpZ2h0KSB7XHJcbiAgICAgICRjaGVjay1oZWlnaHQ6IG1hcC1nZXQoJHZhbCwgY2hlY2tlZC1oZWlnaHQpXHJcbiAgICB9XHJcbiAgICAuY2tieC0jeyRrZXl9e1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogbWFwLWdldCgkdmFsLCBtYXJnaW4tcmlnaHQpO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG1pbi13aWR0aDogJHdpZHRoO1xyXG4gICAgICBtaW4taGVpZ2h0OiAkaGVpZ2h0O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICB3aWR0aDogJHdpZHRoO1xyXG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCR2YWwsIGJveC1iZyk7XHJcbiAgICAgICAgYm9yZGVyOiBtYXAtZ2V0KCR2YWwsIGJveC1vdXRsaW5lKTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiBtYXAtZ2V0KCR2YWwsIGJveC1yYWRpdXMpO1xyXG4gICAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgdHJhbnNsYXRlWSgtNTAlKSwgd2Via2l0KTtcclxuICAgICAgfVxyXG4gICAgICA+ICoge1xyXG4gICAgICAgIC8vIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDsg6rKM7Iuc7YyQIOq4gOyTsOq4sCDruYTrsIDquIDsl5DshJwg6rmo7KC47IScIOyasOyEoCDso7zshJ3sspjrpqxcclxuICAgICAgfVxyXG4gICAgICAudGV4dCB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkdmFsLCBmb250LXNpemUpIDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRib3gtbWFyZ2luLXJpZ2h0ICsgJHdpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGlucHV0IHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICZbdHlwZT1yYWRpb106Y2hlY2tlZCB+IC5jdXN0b20tY2hlY2tlZCxcclxuICAgICAgICAmW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgfiAuY3VzdG9tLWNoZWNrZWQge1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICBsZWZ0OiAoJHdpZHRoIC0gJGNoZWNrLXdpZHRoKSAvIDIgO1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgIHdpZHRoOiAkY2hlY2std2lkdGg7XHJcbiAgICAgICAgICBoZWlnaHQ6ICRjaGVjay1oZWlnaHQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAtZ2V0KCR2YWwsIGNoZWNrZWQtY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogbWFwLWdldCgkdmFsLCBib3gtcmFkaXVzKTtcclxuICAgICAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgdHJhbnNsYXRlWSgtNTAlKSwgd2Via2l0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuICAgICAgJi5kaXNhYmxlZHtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICBjb2xvcjogI2VlZTtcclxuICAgICAgICBsYWJlbDpiZWZvcmV7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6ICNlZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICYuY2lyY2xlOmJlZm9yZSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICB9XHJcbiAgICAgICYuY2lyY2xlIGlucHV0IHtcclxuICAgICAgICAmW3R5cGU9cmFkaW9dOmNoZWNrZWQgfiAuY3VzdG9tLWNoZWNrZWQsXHJcbiAgICAgICAgJlt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gLmN1c3RvbS1jaGVja2VkIHtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCIvL3JwLXRhYmxlXHJcbkBtaXhpbiBtYWtlLXJwLXRhYmxlKCRycC10YWJsZS1pbmZvKSB7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAoJHJwLXRhYmxlLWluZm8pe1xyXG4gICAgQGlmICgka2V5ID09IGRlZmF1bHRfdmFsdWUpIHtcclxuICAgICAgJWRlZmF1bHRfdmFsdWUge1xyXG4gICAgICAgIEBlYWNoICRrZXkyLCAkdmFsMiBpbiAkdmFsIHtcclxuICAgICAgICAgICN7JGtleTJ9OiAjeyR2YWwyfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAucnAtdGFibGUtI3ska2V5fSB7XHJcbiAgICAgICAgQGlmIChtYXAtaGFzLWtleSgkdmFsLCBtZWRpYSkpIHtcclxuICAgICAgICAgICRtZWRpYTogbWFwX2dldCgkdmFsLCBtZWRpYSk7XHJcbiAgICAgICAgICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gJG1lZGlhIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnktbWluKCRrZXkyKSB7XHJcbiAgICAgICAgICAgICAgJGNvZGVzOiBtYWtlTWFwVG9Db2RlcygkdmFsMik7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcHJpbnRDb2RlcygkY29kZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICBAZWFjaCAka2V5MywgJHZhbDMgaW4gJHZhbCB7XHJcbiAgICAgICAgICAgICRjb2RlczogbWFrZU1hcFRvQ29kZXMoJGtleTMpO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBwcmludENvZGVzKCRjb2Rlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIiwiLy8vKiB0YWIgKi9cclxuQG1peGluIHRhYi1pdGVtcygkdGFiLWdyb3VwKSB7XHJcbiAgICAudGFiLXdyYXAge1xyXG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xyXG4gICAgICAgICYgLnRhYi1saXN0IHtcclxuICAgICAgICAgICAgLy9mbG9hdDptYXAtZ2V0KCR0YWItZ3JvdXAsIGZsb2F0KTtcclxuICAgICAgICAgICAgZGlzcGxheTptYXAtZ2V0KCR0YWItZ3JvdXAsIGRpc3BsYXkpO1xyXG4gICAgICAgICAgICB3aWR0aDogbWFwLWdldCgkdGFiLWdyb3VwLCB3aWR0aCk7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IG1hcC1nZXQoJHRhYi1ncm91cCwgcGFkZGluZyk7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6bWFwLWdldCgkdGFiLWdyb3VwLCB0aGVtZS1jb2xvcik7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTptYXAtZ2V0KCR0YWItZ3JvdXAsIGZvbnQtc2l6ZSk7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0Om1hcC1nZXQoJHRhYi1ncm91cCwgZm9udC13ZWlnaHQpO1xyXG4gICAgICAgICAgICBjb2xvcjptYXAtZ2V0KCR0YWItZ3JvdXAsIGZvbnQtY29sb3IpO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOm1hcC1nZXQoJHRhYi1ncm91cCwgdGV4dC1hbGlnbik7XHJcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOm1hcC1nZXQoJHRhYi1ncm91cCwgbGV0dGVyLXNwYWNpbmcpO1xyXG5cclxuICAgICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCR0YWItZ3JvdXAsIG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gbWFwX2dldCgkdGFiLWdyb3VwLCBtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5LW1pbigka2V5Mikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZWFjaCAka2V5MiwgJHZhbDIgaW4gJHZhbDJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjeyRrZXkyfTogI3skdmFsMn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluIChtYXAtZ2V0KCR0YWItZ3JvdXAsIHN1Yi1jbGFzc2luZykpe1xyXG4gICAgICAgICAgICAmLiN7JGtleX0gLnRhYi1saXN0e1xyXG4gICAgICAgICAgICAgICAgQGVhY2ggJGtleTIsICR2YWwyIGluICR2YWx1ZXtcclxuICAgICAgICAgICAgICAgICAgICAjeyRrZXkyfTogI3skdmFsMn07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYgLnRhYi1saXN0Lm9uIHtcclxuICAgICAgICAgICAgQGVhY2ggJGtleTIsICR2YWwyIGluIChtYXAtZ2V0KCR0YWItZ3JvdXAsYWN0aXZlKSl7XHJcbiAgICAgICAgICAgICAgICAjeyRrZXkyfTogI3skdmFsMn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRnX3RhYi1ncm91cCxmbG9hdCl7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxBQUFBLGtCQUFrQixDQUFBO0VBQ2hCLGNBQWMsRUFBQyxJQUFJO0NBSXBCOztBR09LLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUhaekMsQUFBQSxrQkFBa0IsQ0FBQTtJQUdkLGNBQWMsRUFBQyxJQUFJO0dBRXRCOzs7QUFFRCxBQUNFLGFBRFcsQ0FDWCxVQUFVLENBQUE7RUFDUixRQUFRLEVBQUUsUUFBUTtDQThEbkI7O0FBaEVILEFBR0ksYUFIUyxDQUNYLFVBQVUsQ0FFUixFQUFFLENBQUE7RUFDQSxRQUFRLEVBQUUsUUFBUTtFQUNsQixjQUFjLEVBQUMsSUFBSTtDQTZCcEI7O0FBbENMLEFBTU0sYUFOTyxDQUNYLFVBQVUsQ0FFUixFQUFFLEFBR0MsT0FBTyxDQUFBO0VBQ04sT0FBTyxFQUFDLEVBQUU7RUFDVixRQUFRLEVBQUUsUUFBUTtFQUNsQixJQUFJLEVBQUMsR0FBRztFQUNSLEtBQUssRUFBQyxHQUFHO0VBQ1QsTUFBTSxFQUFDLEdBQUc7RUFDVixhQUFhLEVBQUUsR0FBRztFQUNsQixnQkFBZ0IsRUNsQkgsT0FBTztFRG1CcEIsT0FBTyxFQUFFLENBQUM7Q0FDWDs7QUFmUCxBQWdCTSxhQWhCTyxDQUNYLFVBQVUsQ0FFUixFQUFFLENBYUEsRUFBRSxDQUFBO0VBQ0EsUUFBUSxFQUFFLFFBQVE7RUFDbEIsR0FBRyxFQUFDLElBQUk7RUFDUixZQUFZLEVBQUMsSUFBSTtDQWNsQjs7QUFqQ1AsQUFvQlEsYUFwQkssQ0FDWCxVQUFVLENBRVIsRUFBRSxDQWFBLEVBQUUsQ0FJQSxFQUFFLENBQUE7RUFDQSxRQUFRLEVBQUUsUUFBUTtFQUNsQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLGNBQWMsRUFBRSxNQUFNO0VBQ3RCLEtBQUssRUM5Qk0sT0FBTztDRCtCbkI7O0FBMUJULEFBMkJRLGFBM0JLLENBQ1gsVUFBVSxDQUVSLEVBQUUsQ0FhQSxFQUFFLENBV0EsRUFBRSxDQUFBO0VBQ0EsWUFBWSxFQUFDLEtBQUs7RUFDbEIsU0FBUyxFQUFFLElBQUk7RUFDZixXQUFXLEVBQUUsR0FBRztFQUNoQixjQUFjLEVBQUUsTUFBTTtDQUN2Qjs7QUFoQ1QsQUFtQ0ksYUFuQ1MsQ0FDWCxVQUFVLEFBa0NQLE9BQU8sQ0FBQTtFQUNOLE9BQU8sRUFBQyxFQUFFO0VBQ1YsUUFBUSxFQUFFLFFBQVE7RUFDbEIsR0FBRyxFQUFDLENBQUM7RUFDTCxJQUFJLEVBQUMsR0FBRztFQUNSLEtBQUssRUFBQyxHQUFHO0VBQ1QsTUFBTSxFQUFDLElBQUk7Q0FDWjs7QUExQ0wsQUE0Q00sYUE1Q08sQ0FDWCxVQUFVLEFBMENQLEtBQUssQUFDSCxPQUFPLENBQUE7RUFDTixnQkFBZ0IsRUNsREgsT0FBTztDRG1EckI7O0FBOUNQLEFBaURNLGFBakRPLENBQ1gsVUFBVSxBQStDUCxLQUFLLEFBQ0gsT0FBTyxDQUFBO0VBQ04sR0FBRyxFQUFDLEtBQUs7RUFDVCxNQUFNLEVBQUMsSUFBSTtFQUNYLFVBQVUsRUFBQyw2Q0FBNkMsQ0FBQSxRQUFRO0NBQ2pFOztBQXJEUCxBQXVEUSxhQXZESyxDQUNYLFVBQVUsQUErQ1AsS0FBSyxDQU1KLEVBQUUsQUFDQyxXQUFXLENBQUE7RUFBQyxjQUFjLEVBQUMsQ0FBQztDQUFHOztBQXZEeEMsQUF3RFEsYUF4REssQ0FDWCxVQUFVLEFBK0NQLEtBQUssQ0FNSixFQUFFLEFBRUMsT0FBTyxDQUFBO0VBQ0osZ0JBQWdCLEVDN0RILE9BQU87Q0Q4RHZCOztBQTFEVCxBQTRETSxhQTVETyxDQUNYLFVBQVUsQUErQ1AsS0FBSyxDQVlKLEVBQUUsQ0FBQTtFQUNBLEtBQUssRUNqRVksT0FBTztDRGtFekIifQ== */
