/*!***************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[3]!./assets/styles/app.scss ***!
  \***************************************************************************************************************************************************************************************************************************************/
:root {
  --body-bg: #FBFBFB;
  --lg-content-padding-left: 48px;
  --lg-content-padding-right: 48px;
  --md-content-padding:32px;
  --sidebar-max-width: 280px;
  --font-size-xxxl: 28px;
}

@font-face {
  font-family: "SegoeUI";
  src: url(/build/fonts/Segoe_UI.45472284.ttf) format("truetype");
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: "SegoeUISemibold";
  src: url(/build/fonts/Segoe_UI_Semibold.a23f926d.ttf) format("truetype");
  font-weight: normal;
  font-style: normal;
}
@media (min-width: 992px) {
  html {
    overflow-x: hidden;
  }
  body {
    max-width: none !important;
    display: contents;
  }
  body .main-wrapper {
    height: 100%;
    display: block;
    overflow-y: hidden;
    width: 100%;
  }
  body .main-wrapper > .wrapper {
    padding-top: 48px;
    margin-top: -48px;
    min-height: 0px;
    height: 100%;
    width: 100vw;
    min-height: 100vh;
  }
  body .main-wrapper > .wrapper .content-wrapper {
    padding: 0px;
  }
  body .main-wrapper > .wrapper .content-wrapper .content-header {
    padding-left: var(--lg-content-padding-left);
    padding-right: var(--lg-content-padding-right);
  }
  body .main-wrapper > .wrapper .content-wrapper .content-header .title {
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    font-weight: 700;
    font-size: 28px;
    line-height: 33.6px;
    color: black;
  }
}
body i.ms-Icon {
  margin: 0px;
}

#main-menu .menu .menu-item.has-submenu.expanded .submenu-toggle-icon {
  transform: rotate(-180deg);
}

.ea-search-disabled {
  display: none;
}

.content {
  height: 100vh;
  overflow: auto;
}

body.loginform {
  min-height: 100%;
  background-color: #ffffff;
}
body.loginform * {
  padding: 0;
  margin: 0;
  color: #1a1f36;
  box-sizing: border-box;
  word-wrap: break-word;
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Ubuntu, sans-serif;
}
body.loginform .login-header {
  font-weight: 500;
  margin-bottom: 10px;
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  font-size: 24px;
  font-weight: 600;
  line-height: 28px;
}
body.loginform .logo-login {
  text-align: center;
}
body.loginform .logo-login img {
  width: 86px;
  margin-top: -24px;
}
body.loginform a {
  text-decoration: unset;
}
body.loginform .login-root {
  background: #fff;
  display: flex;
  width: 100%;
  min-height: 100vh;
  overflow: hidden;
}
body.loginform .flex-flex {
  display: flex;
}
body.loginform .align-center {
  align-items: center;
}
body.loginform .center-center {
  align-items: center;
  justify-content: center;
}
body.loginform .box-root {
  box-sizing: border-box;
}
body.loginform .flex-direction--column {
  -ms-flex-direction: column;
  flex-direction: column;
}
body.loginform .loginbackground-gridContainer {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: [start] 1fr [left-gutter] 86.6px [16] [left-gutter] 1fr [end];
  grid-template-columns: [start] 1fr [left-gutter] repeat(16, 86.6px) [left-gutter] 1fr [end];
  -ms-grid-rows: [top] 1fr [top-gutter] 64px [8] [bottom-gutter] 1fr [bottom];
  grid-template-rows: [top] 1fr [top-gutter] repeat(8, 64px) [bottom-gutter] 1fr [bottom];
  justify-content: center;
  margin: 0 -2%;
  transform: rotate(-12deg) skew(-12deg);
}
body.loginform .box-divider--light-all-2 {
  box-shadow: inset 0 0 0 2px #e3e8ee;
}
body.loginform .box-background--blue {
  background-color: #5469d4;
}
body.loginform .box-background--white {
  background-color: #ffffff;
}
body.loginform .box-background--blue800 {
  background-color: #212d63;
}
body.loginform .box-background--gray100 {
  background-color: #e3e8ee;
}
body.loginform .box-background--cyan200 {
  background-color: #7fd3ed;
}
body.loginform .padding-top--64 {
  padding-top: 64px;
}
body.loginform .padding-top--24 {
  padding-top: 24px;
}
body.loginform .padding-top--48 {
  padding-top: 48px;
}
body.loginform .padding-bottom--24 {
  padding-bottom: 20px;
}
body.loginform .padding-bottom--15 {
  padding-bottom: 15px;
}
body.loginform .submit {
  padding-bottom: 0px;
}
body.loginform .formbg-inner {
  min-width: 440px;
  padding: 44px;
}
body.loginform .flex-justifyContent--center {
  -ms-flex-pack: center;
  justify-content: center;
}
body.loginform .formbg {
  width: fit-content;
  margin: 0px auto;
  background: white;
  border-radius: 4px;
  box-shadow: rgba(60, 66, 87, 0.12) 0px 7px 14px 0px, rgba(0, 0, 0, 0.12) 0px 3px 6px 0px;
  max-width: 440px;
}
body.loginform .formbg .field input {
  border: none;
  border-radius: 0;
  border-bottom: solid #1976BE 1px;
  background-color: white;
  box-shadow: none;
  padding: 0px;
  font-size: 16px;
}
body.loginform .formbg .field input:focus-visible {
  box-shadow: none;
  outline: none;
}
body.loginform .formbg .submit {
  text-align: right;
  margin: 4px 0px 2px 0px;
}
body.loginform .formbg .submit .vue-btn {
  height: 32px;
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #fff;
  font-size: 15px;
  font-weight: 400;
  line-height: 20px;
}
body.loginform .formbg .submit input {
  cursor: pointer;
  font-size: 18px;
  border-radius: 0px;
  max-width: 160px;
  padding-left: 20px;
  padding-right: 20px;
}
body.loginform .formbg a {
  margin-bottom: 24px;
  text-align: start;
}
body.loginform .formbg a p {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1976BE;
  font-size: 13px;
  font-weight: 400;
  line-height: 20px;
}
body.loginform span {
  display: block;
  font-size: 20px;
  line-height: 28px;
  color: #1a1f36;
}
body.loginform label {
  margin-bottom: 10px;
}
body.loginform .reset-pass a, body.loginform label {
  font-size: 14px;
  font-weight: 600;
  display: block;
}
body.loginform .reset-pass > a {
  text-align: right;
  margin-bottom: 10px;
}
body.loginform .grid--50-50 {
  display: grid;
  grid-template-columns: 50% 50%;
  align-items: center;
}
body.loginform .field input {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #666666;
  font-size: 15px;
  font-weight: 400;
  line-height: 20px;
  padding: 8px 16px;
  width: 100%;
  min-height: 36px;
  border: unset;
  border-radius: 4px;
  outline-color: rgba(84, 105, 212, 0.5);
  background-color: rgb(255, 255, 255);
  box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(60, 66, 87, 0.16) 0px 0px 0px 1px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px;
}
body.loginform .field-checkbox input {
  width: 20px;
  height: 15px;
  margin-right: 5px;
  box-shadow: unset;
  min-height: unset;
}
body.loginform .field-checkbox label {
  display: flex;
  align-items: center;
  margin: 0;
}
body.loginform a.ssolink {
  display: block;
  text-align: center;
  font-weight: 600;
}
body.loginform .footer-link span {
  font-size: 14px;
  text-align: center;
}
body.loginform .listing a {
  color: #697386;
  font-weight: 600;
  margin: 0 10px;
}
body.loginform .notification {
  background-color: #F3F2F1;
  border: 1px solid #ddd;
  border-radius: 4px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
body.loginform .notification .error {
  padding: 10px 15px;
  background-color: #FAECEB;
  color: #E95169;
  border-color: #E95169;
}

/*
  Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fabric-assets-license
*/
@font-face {
  font-family: "FabricMDL2Icons";
  src: url(/build/fonts/fabric-icons-c73b2f82.461ddbc8.woff) format("woff");
}
.ms-Icon {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  display: inline-block;
  font-family: "FabricMDL2Icons";
  font-style: normal;
  font-weight: normal;
  speak: none;
}

.ms-Icon--Accept:before {
  content: "\e8fb";
}

.ms-Icon--AcceptMedium:before {
  content: "\f78c";
}

.ms-Icon--AccountActivity:before {
  content: "\eff4";
}

.ms-Icon--AccountManagement:before {
  content: "\f55c";
}

.ms-Icon--Add:before {
  content: "\e710";
}

.ms-Icon--AppIconDefault:before {
  content: "\ecaa";
}

.ms-Icon--AppIconDefaultAdd:before {
  content: "\efda";
}

.ms-Icon--BoldG:before {
  content: "\e5b3";
}

.ms-Icon--BusinessCenterLogo:before {
  content: "\f4b2";
}

.ms-Icon--Cancel:before {
  content: "\e711";
}

.ms-Icon--CannedChat:before {
  content: "\f0f2";
}

.ms-Icon--CheckMark:before {
  content: "\e73e";
}

.ms-Icon--ChevronDown:before {
  content: "\e70d";
}

.ms-Icon--ChevronLeftMed:before {
  content: "\e973";
}

.ms-Icon--ChevronRight:before {
  content: "\e76c";
}

.ms-Icon--ChevronUp:before {
  content: "\e70e";
}

.ms-Icon--CircleAddition:before {
  content: "\f2e3";
}

.ms-Icon--CircleAdditionSolid:before {
  content: "\f2e4";
}

.ms-Icon--CircleRing:before {
  content: "\ea3a";
}

.ms-Icon--ClearFilter:before {
  content: "\ef8f";
}

.ms-Icon--ClipboardList:before {
  content: "\f0e3";
}

.ms-Icon--ClipboardListQuestion:before {
  content: "\e4f0";
}

.ms-Icon--ClipboardSolid:before {
  content: "\f5dc";
}

.ms-Icon--CollapseMenu:before {
  content: "\ef66";
}

.ms-Icon--Compare:before {
  content: "\f057";
}

.ms-Icon--CompareUneven:before {
  content: "\e42e";
}

.ms-Icon--Contact:before {
  content: "\e77b";
}

.ms-Icon--ContactInfo:before {
  content: "\e779";
}

.ms-Icon--ContentSettings:before {
  content: "\f647";
}

.ms-Icon--DefaultSettings:before {
  content: "\f648";
}

.ms-Icon--Delete:before {
  content: "\e74d";
}

.ms-Icon--DocumentApproval:before {
  content: "\f28b";
}

.ms-Icon--Documentation:before {
  content: "\ec17";
}

.ms-Icon--DocumentManagement:before {
  content: "\effc";
}

.ms-Icon--DocumentReply:before {
  content: "\ef57";
}

.ms-Icon--DocumentSearch:before {
  content: "\ef6c";
}

.ms-Icon--Edit:before {
  content: "\e70f";
}

.ms-Icon--EditContact:before {
  content: "\efd3";
}

.ms-Icon--EditMirrored:before {
  content: "\eb7e";
}

.ms-Icon--EditSolid12:before {
  content: "\f4b5";
}

.ms-Icon--ExcelDocument:before {
  content: "\ef73";
}

.ms-Icon--FileBug:before {
  content: "\f30d";
}

.ms-Icon--FileImage:before {
  content: "\f311";
}

.ms-Icon--FileOff:before {
  content: "\e3fc";
}

.ms-Icon--Filter:before {
  content: "\e71c";
}

.ms-Icon--FilterAscending:before {
  content: "\f21a";
}

.ms-Icon--FilterDescending:before {
  content: "\f21b";
}

.ms-Icon--FilterSolid:before {
  content: "\f412";
}

.ms-Icon--FollowUser:before {
  content: "\ee05";
}

.ms-Icon--FullCircleMask:before {
  content: "\e91f";
}

.ms-Icon--Home:before {
  content: "\e80f";
}

.ms-Icon--HomeSolid:before {
  content: "\ea8a";
}

.ms-Icon--ImageSearch:before {
  content: "\f4e8";
}

.ms-Icon--MiniLink:before {
  content: "\e732";
}

.ms-Icon--NavigateExternalInline:before {
  content: "\f35f";
}

.ms-Icon--PageLink:before {
  content: "\e302";
}

.ms-Icon--PageListFilter:before {
  content: "\f813";
}

.ms-Icon--PBIHomeLayoutExpanded:before {
  content: "\e65c";
}

.ms-Icon--PDF:before {
  content: "\ea90";
}

.ms-Icon--PlayerSettings:before {
  content: "\ef58";
}

.ms-Icon--PowerPointDocument:before {
  content: "\ef72";
}

.ms-Icon--Process:before {
  content: "\e9f3";
}

.ms-Icon--Processing:before {
  content: "\e9f5";
}

.ms-Icon--ProcessMetaTask:before {
  content: "\f290";
}

.ms-Icon--Product:before {
  content: "\ecdc";
}

.ms-Icon--ProductCatalog:before {
  content: "\efe8";
}

.ms-Icon--ProductList:before {
  content: "\e31e";
}

.ms-Icon--ProductRelease:before {
  content: "\ee2e";
}

.ms-Icon--ProductVariant:before {
  content: "\ee30";
}

.ms-Icon--Puzzle:before {
  content: "\ea86";
}

.ms-Icon--QueryList:before {
  content: "\f2b8";
}

.ms-Icon--Questionnaire:before {
  content: "\ee19";
}

.ms-Icon--ReceiptUndelivered:before {
  content: "\f419";
}

.ms-Icon--Save:before {
  content: "\e74e";
}

.ms-Icon--SaveAndClose:before {
  content: "\f038";
}

.ms-Icon--SaveAndPublish:before {
  content: "\f671";
}

.ms-Icon--Search:before {
  content: "\e721";
}

.ms-Icon--SearchCalendar:before {
  content: "\f4af";
}

.ms-Icon--SearchIssue:before {
  content: "\f09a";
}

.ms-Icon--Settings:before {
  content: "\e713";
}

.ms-Icon--SingleColumnEdit:before {
  content: "\f321";
}

.ms-Icon--StatusCircleQuestionMark:before {
  content: "\f142";
}

.ms-Icon--SwitchUser:before {
  content: "\e748";
}

.ms-Icon--Task:before {
  content: "\f7ec";
}

.ms-Icon--TaskAdd:before {
  content: "\e4fd";
}

.ms-Icon--TaskList:before {
  content: "\e3b6";
}

.ms-Icon--TaskManager:before {
  content: "\edb7";
}

.ms-Icon--TaskSolid:before {
  content: "\f333";
}

.ms-Icon--TextDocument:before {
  content: "\f029";
}

.ms-Icon--TextDocumentEdit:before {
  content: "\e43b";
}

.ms-Icon--TextDocumentSettings:before {
  content: "\e4aa";
}

.ms-Icon--UserFollowed:before {
  content: "\f25c";
}

.ms-Icon--UserOptional:before {
  content: "\f767";
}

.ms-Icon--UserRemove:before {
  content: "\f69b";
}

.ms-Icon--WordDocument:before {
  content: "\ef71";
}

.ms-Icon--WorkFlow:before {
  content: "\ea01";
}

.ms-Icon--ZipFolder:before {
  content: "\f012";
}

.crud {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
  margin-top: 18px;
}
.crud .table.datagrid {
  padding-left: 0px !important;
  padding-right: 0px;
}

.custom-form-container {
  margin: 0;
  min-height: 70vh;
  margin-bottom: 100px;
  flex-direction: column;
}
.custom-form-container .row {
  --bs-gutter-x: 0;
  --bs-gutter-y: 0;
}
.custom-form-container > .flex-fill {
  display: none;
}
.custom-form-container .field-form_panel {
  padding-left: 0px;
}
.custom-form-container .field-form_panel .form-panel-body {
  padding-top: 8px;
  padding-left: calc(var(--bs-gutter-x) * 0.5);
}
.custom-form-container .custom-col {
  flex: 0 0 60%;
  width: 60%;
  margin: 3px 0;
  padding: 0px;
}
.custom-form-container .custom-col .form-group {
  padding: 0px;
}
.custom-form-container .custom-col .custom-form-group {
  display: flex;
  align-items: center;
}
.custom-form-container .custom-col .custom-form-group > .form-control-label, .custom-form-container .custom-col .custom-form-group legend {
  flex: 0 0 30%;
  max-width: 30%;
  font-weight: bold;
  min-height: 44px;
  padding: 0px;
}
.custom-form-container .custom-col .custom-form-group .form-widget {
  flex: 0 0 60%;
  width: 60%;
  margin-left: 10px;
  min-height: 40px;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control, .custom-form-container .custom-col .custom-form-group .form-widget .form-select {
  background-color: #F3F2F1;
  border: none;
  min-height: 40px;
  width: 100%;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control .ts-control, .custom-form-container .custom-col .custom-form-group .form-widget .form-select .ts-control {
  min-height: 40px;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control::-webkit-input-placeholder, .custom-form-container .custom-col .custom-form-group .form-widget .form-select::-webkit-input-placeholder {
  color: lightgray;
  font-style: italic;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control:-ms-input-placeholder, .custom-form-container .custom-col .custom-form-group .form-widget .form-select:-ms-input-placeholder {
  color: lightgray;
  font-style: italic;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control::placeholder, .custom-form-container .custom-col .custom-form-group .form-widget .form-select::placeholder {
  color: lightgray;
  font-style: italic;
}
.custom-form-container .custom-col .custom-form-group .form-widget .form-control:focus, .custom-form-container .custom-col .custom-form-group .form-widget .form-select:focus {
  background-color: white;
  box-shadow: none;
  border: black solid 1px;
  color: black;
}
.custom-form-container .custom-col .custom-form-group .form-widget .ea-fileupload .custom-file-label {
  min-height: 40px;
  padding-top: 8px !important;
}
.custom-form-container .custom-col .custom-form-group .form-widget .ea-fileupload .input-group-text {
  min-height: 40px;
}
.custom-form-container .custom-col .custom-form-group .form-widget .ea-text-editor-wrapper {
  min-height: 240px;
  min-width: fit-content;
}
.custom-form-container .custom-col .custom-form-group.acl-field {
  align-items: flex-start;
  margin-top: 30px;
}
.custom-form-container .custom-col .custom-form-group.acl-field .group-element {
  margin-left: 20px;
}
.custom-form-container .custom-col .custom-form-group.acl-field .group-header label {
  font-weight: bold;
}
.custom-form-container .custom-col.col-md-12 .form-widget {
  flex: 0 0 38%;
  width: 38%;
}
.custom-form-container .custom-col.col-md-2 {
  position: relative;
  right: 18%;
  flex: 0 0 40%;
  top: 2px;
}
.custom-form-container .custom-col.col-md-2 .form-widget {
  flex: 0 0 30%;
  width: 30%;
}
.custom-form-container .custom-col.col-md-11 .form-widget {
  flex: 0 0 18%;
  width: 18%;
}
.custom-form-container .custom-col.col-md-3 {
  flex: 0 0 40%;
  position: relative;
  right: 30%;
  margin-right: 0px;
  top: 2px;
}
.custom-form-container .custom-col.col-md-3 .form-widget {
  flex: 0 0 60%;
  width: 60%;
}
.custom-form-container .accordion-body .custom-col {
  width: 100%;
}

@media (min-width: 1400px) {
  .custom-form-container .custom-col {
    flex: 0 0 30%;
    width: 30%;
  }
  .custom-form-container .custom-col.col-md-12 .form-widget {
    flex: 0 0 38%;
    width: 38%;
  }
  .custom-form-container .custom-col.col-md-2 {
    position: relative;
    right: 9%;
    flex: 0 0 30%;
  }
  .custom-form-container .custom-col.col-md-2 .form-widget {
    flex: 0 0 20%;
    width: 20%;
  }
  .custom-form-container .custom-col.col-md-11 .form-widget {
    flex: 0 0 18%;
    width: 18%;
  }
  .custom-form-container .custom-col.col-md-3 {
    position: relative;
    right: 15%;
    flex: 0 0 30%;
    margin-right: 30%;
  }
  .custom-form-container .custom-col.col-md-3 .form-widget {
    flex: 0 0 40%;
    width: 40%;
  }
}
@media (min-width: 992px) {
  .page-actions {
    background-color: #FBFBFB;
  }
  .page-actions.vue-actions {
    top: 0px;
    left: 0px;
    position: sticky;
    z-index: 20;
  }
  .page-actions.vue-actions .actions-container {
    margin-left: 0px;
    border-top: 1px solid #e0e0e0;
  }
  .page-actions .actions-container {
    display: flex;
    height: 44px;
    margin-left: var(--lg-content-padding-left);
  }
  .page-actions .actions-container .global-actions {
    display: flex;
    width: 100%;
  }
  .page-actions .actions-container .search-action .content-search-label {
    padding: 8px;
    display: flex;
    align-items: center;
  }
  .page-actions .actions-container .search-action .content-search-label .content-search-icon {
    font-size: 20px;
    margin-right: 5px;
  }
  .page-actions .actions-container .action {
    border: none;
    background-color: transparent;
    box-shadow: none;
    color: black !important;
    padding: 0px 8px;
  }
  .page-actions .actions-container .action:hover {
    background-color: #EDEBE9 !important;
    border-radius: 0px !important;
  }
  .page-actions .actions-container .action#config .btn-label {
    margin-left: 6px;
    margin-right: 6px;
  }
  .page-actions .actions-container .action.float-right {
    margin-left: auto;
    margin-right: 18px;
  }
  .page-actions .actions-container .action.float-right .action-icon {
    margin-right: 0px;
  }
  .page-actions .actions-container .action.float-right .dropdown-content {
    right: 0;
    width: initial;
  }
  .page-actions .actions-container .action.btn-primary:focus {
    background-color: initial !important;
    color: initial !important;
    box-shadow: none !important;
  }
  .page-actions .actions-container .action.btn-danger:hover {
    background-color: initial !important;
    color: initial !important;
  }
  .page-actions .actions-container .action.btn-danger:focus {
    background-color: initial !important;
    color: initial !important;
    box-shadow: none !important;
  }
  .page-actions .actions-container .action:hover {
    box-shadow: none !important;
  }
  .page-actions .actions-container .action .action-icon {
    font-size: 16px;
    color: #0078D4;
    stroke: #0078D4;
    margin-right: 2px;
  }
  .page-actions .actions-container .action .action-icon.empty {
    color: black;
    opacity: 0.5;
  }
  .page-actions .actions-container .action.hidden {
    opacity: 0;
  }
  .page-actions .actions-container .action .btn-label {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
  }
  .page-actions .actions-container .action .btn-label.gray i {
    color: var(--gray-color);
    opacity: 0.5;
  }
  .page-actions .actions-container .action .btn-label .action-label {
    margin-left: 5px;
  }
  .page-actions .actions-container a.action {
    display: flex;
    align-items: center;
    font-size: 14px;
    color: initial;
  }
  .page-actions .actions-container a.action i {
    margin-right: 5px;
  }
  .page-actions .actions-container a.action .action-label {
    margin-left: 5px;
  }
  .page-actions .actions-container button.action {
    white-space: nowrap;
  }
  .page-actions .page-actions-separator {
    margin: 0px;
  }
  .dropdown-action {
    position: relative;
    display: inline-block;
  }
  .dropdown-action span.btn-label {
    height: 100%;
  }
  .dropdown-action .dropdown-content {
    display: none;
    position: absolute;
    background-color: #f9f9f9;
    --dropdown-padding: 4px;
    background-color: var(--dropdown-bg);
    border-color: var(--dropdown-border-color);
    border-radius: 6px;
    box-shadow: var(--shadow-xl);
    color: var(--dropdown-color);
    padding: 8px 16px;
    z-index: 1;
    width: 100%;
    right: 0px;
  }
  .dropdown-action .dropdown-content p {
    text-align: start;
    margin-bottom: 4px;
    font-size: 14px;
  }
  .dropdown-action .dropdown-content p:hover {
    text-decoration: underline;
  }
  .dropdown-action:hover .dropdown-content {
    display: block;
  }
}
@media (min-width: 992px) {
  .main-content {
    width: calc(100vw - var(--sidebar-max-width));
    background-color: var(--body-bg);
  }
  .main-content .content-wrapper {
    max-width: none !important;
    display: block;
  }
  .main-content .content-wrapper .content .content-header {
    position: initial !important;
    padding: 54px 0px 28px 0px;
    display: block;
  }
  .main-content .content-wrapper .content .content-header .page-actions {
    margin: 0px;
  }
  .main-content .content-wrapper .content #main {
    overflow-x: auto;
    padding-bottom: 30px;
    margin-right: 30px;
  }
  .main-content .content-wrapper .content #main* {
    margin-bottom: 30px;
  }
  .main-content .content-wrapper #content-resizer-handler {
    min-height: 0px;
  }
}
.top-wrapper {
  display: none;
}
.top-wrapper .navbar-custom-menu {
  align-items: center;
  box-shadow: 0 1px 0 var(--content-top-border-color);
  display: flex;
  margin-bottom: 0px;
}

@media (min-width: 992px) {
  .top-wrapper {
    display: block;
    background-color: #0078D4;
    height: 48px;
    position: sticky;
    top: 0;
    left: 0;
    z-index: 502;
  }
  .top-wrapper .main-header {
    display: flex;
    justify-content: space-between;
    height: 48px;
    padding-left: var(--sidebar-padding-left);
  }
  .top-wrapper .main-header #header-logo a {
    padding-bottom: 12px;
    padding-top: 12px;
    color: white;
  }
  .top-wrapper .main-header .content-top {
    margin-bottom: 0px;
  }
  .top-wrapper .main-header .content-top .content-search .content-search-icon {
    color: black;
    opacity: 0.5;
    margin-right: 0;
    position: relative;
    left: 20px;
  }
  .top-wrapper .main-header .content-top .content-search input[type=search][name=query] {
    min-width: 350px;
    padding-left: 27px;
    background-color: #CCE4F6 !important;
  }
  .top-wrapper .main-header .content-top .content-search input[type=search][name=query]:-webkit-autofill, .top-wrapper .main-header .content-top .content-search input[type=search][name=query]:-webkit-autofill:focus {
    transition: background-color 600000s 0s, color 600000s 0s;
  }
  .top-wrapper .main-header .navbar-custom-menu {
    display: flex;
    height: 48px;
    justify-content: space-between;
    position: relative;
    align-items: center;
  }
  .top-wrapper .main-header .navbar-custom-menu .dropdown:hover {
    background-color: #004080;
  }
  .top-wrapper .main-header .navbar-custom-menu .user-menu-wrapper {
    height: 100%;
  }
  .top-wrapper .main-header .navbar-custom-menu .user-menu-wrapper .user-details {
    height: 100%;
    width: 48px;
    display: flex;
    justify-content: center;
  }
  .top-wrapper .main-header .navbar-custom-menu .user-menu-wrapper .user-name-icon {
    color: white;
    margin-left: 0px;
    height: 32px;
    width: 32px;
    font-size: 13px !important;
    font-family: SegoeUI-Regular-final, Segoe UI, "Segoe UI Web (West European)", Segoe, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, Tahoma, Helvetica, Arial, sans-serif;
    line-height: normal !important;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: transparent !important;
    border-radius: 50%;
    border: 1px solid;
    box-sizing: border-box;
  }
  .top-wrapper .main-header .navbar-custom-menu .dropdown-settings {
    height: 100%;
    width: 48px;
    display: flex;
    justify-content: center;
  }
  .top-wrapper .main-header .navbar-custom-menu .dropdown-settings .dropdown-settings-button {
    color: white;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0px;
  }
}
.sidebar-wrapper:hover {
  overflow-y: auto;
}
.sidebar-wrapper .sidebar {
  min-height: 0px;
  background-color: #F3F2F1;
  padding: 0px;
}
.sidebar-wrapper .sidebar #main-menu ul.menu:first-child > .menu-item:first-child > a {
  padding: 12px var(--sidebar-padding-right) 10px 14px;
  height: 45px;
}
.sidebar-wrapper .sidebar #main-menu ul.menu:first-child > .menu-item:first-child > a i {
  margin-top: -3px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item {
  min-height: 40px;
  margin: 0px;
  padding: 0px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item .menu-item-label {
  margin-top: 2px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item:not(.expanded):hover {
  background-color: #EDEBE9;
  border-radius: 0px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item:not(.expanded):focus {
  border: 1px solid #656361;
  border-radius: 0px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item:not(.expanded):focus > a {
  padding: 7px var(--sidebar-padding-right) 7px calc(var(--sidebar-padding-left) + var(--sidebar-menu-items-padding-left));
}
.sidebar-wrapper .sidebar #main-menu .menu-item.active {
  border-radius: 0px;
  padding: 0px;
  background-color: #E1DFDD;
}
.sidebar-wrapper .sidebar #main-menu .menu-item.active:hover {
  background-color: #D2D0CE;
}
.sidebar-wrapper .sidebar #main-menu .menu-item.active > a {
  font-family: "Segoe UI Semibold", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
}
.sidebar-wrapper .sidebar #main-menu .menu-item.active .menu-icon {
  color: inherit !important;
}
.sidebar-wrapper .sidebar #main-menu .menu-item > a {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  padding: 8px var(--sidebar-padding-right) 6px 14px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item .submenu-toggle:hover {
  background-color: #EDEBE9;
  border-radius: 0px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item .menu-item-contents, .sidebar-wrapper .sidebar #main-menu .menu-item .menu-icon {
  color: black;
}
.sidebar-wrapper .sidebar #main-menu .menu-item .menu-item-contents i, .sidebar-wrapper .sidebar #main-menu .menu-item .menu-icon i {
  margin-top: -1px;
}
.sidebar-wrapper .sidebar #main-menu .menu-item .menu-item-contents .submenu-toggle-icon, .sidebar-wrapper .sidebar #main-menu .menu-item .menu-icon .submenu-toggle-icon {
  color: rgb(50, 49, 48);
  font-size: 12px;
  margin-left: auto;
  float: right;
  margin-right: 8px;
}
.sidebar-wrapper .sidebar #sidebar-resizer-handler {
  min-height: 0px;
}

.vue-split-container {
  --responsive-gap: 280;
  --detail-width: 800;
  --detail-min-with: 480;
  --tasklist-min-width: 480;
  --current-sidebar-width: var(--sidebar-max-width);
}
.vue-split-container .vue-split-detail {
  background-color: white;
  overflow-y: auto;
  height: calc(100vh - 48px - 44px - 1px);
  position: absolute;
  right: 5px;
  width: calc(100% - var(--detail-width) - var(--current-sidebar-width) - 12px);
  box-shadow: rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px, rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px;
}
.vue-split-container .vue-split-detail > * {
  padding-left: var(--md-content-padding);
  padding-right: var(--md-content-padding);
}
.vue-split-container .vue-split-detail.detail-only {
  width: calc(100% - var(--current-sidebar-width));
  box-shadow: none;
  right: 0px;
}
.vue-split-container .vue-split-detail.detail-only .detail-content {
  max-width: 50%;
}
.vue-split-container .vue-split-detail.vue-form {
  height: calc(100vh - 48px - 1px);
}
.vue-split-container .dragbar {
  display: none;
  position: absolute;
  height: calc(100vh - 48px - 44px - 1px);
  width: 2px;
  right: calc(100% - var(--detail-width) - var(--current-sidebar-width) - 6px);
  cursor: col-resize;
  background: #FBFBFB;
}
.vue-split-container .dragbar.new-dragbar {
  height: calc(100vh - 48px - 1px);
}
.vue-split-container .dragbar.none {
  display: none !important;
}
.vue-split-container .dragbar:hover, .vue-split-container.resizing .dragbar {
  width: 2px;
  margin-right: 0px;
  background-color: #E1DFDD;
}
.vue-split-container .vue-split-index {
  height: calc(100vh - 48px - 44px - 1px);
  position: absolute;
  width: calc(100% - var(--current-sidebar-width));
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}
.vue-split-container .vue-split-index::-webkit-scrollbar {
  -webkit-appearance: none;
  width: 10px;
}
.vue-split-container .vue-split-index::-webkit-scrollbar-track {
  background-color: #F0F0F0;
  border-left: 1px solid #E0E0E0;
}
.vue-split-container .vue-split-index::-webkit-scrollbar-thumb {
  border-radius: 0px;
  background-color: #C0C0C0;
}
.vue-split-container .vue-split-index::-webkit-scrollbar-thumb:hover {
  background-color: #A0A0A0;
}
.vue-split-container .vue-split-index.tempindex {
  height: calc(100vh - 48px - 1px);
}
.vue-split-container .vue-split-index.tempindex section {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
}
.vue-split-container .vue-split-index.tempindex .content-header {
  left: 0px;
  position: sticky !important;
  z-index: 20;
}
.vue-split-container.expanded.split .vue-split-index {
  width: var(--detail-width);
}
.vue-split-container.expanded .dragbar {
  display: initial;
}

.vue-split-detail {
  z-index: 30;
}
.vue-split-detail.full {
  position: absolute;
  background-color: white;
  z-index: 500;
  height: 80%;
  width: 40%;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
.vue-split-detail.full .vue-details-header {
  padding: 0px;
}
.vue-split-detail.full .temp-form {
  padding: 0px;
}
.vue-split-detail .vue-details-header.temp-details h2 {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: 700;
  font-size: 28px;
  line-height: 33.6px;
  color: black;
  margin-bottom: 14px;
}
.vue-split-detail .vue-details-header.temp-details .subtitle {
  min-height: 44px;
  margin-bottom: 14px;
}
.vue-split-detail .vue-details-header.temp-details .group-btn {
  color: black !important;
  padding: 0px 8px;
  margin-right: 8px;
  height: 44px;
  border: none;
  background-color: white;
  position: relative;
}
.vue-split-detail .vue-details-header.temp-details .group-btn:hover {
  background-color: #EDEBE9;
}
.vue-split-detail .vue-details-header.temp-details .group-btn.selected {
  font-weight: bold;
}
.vue-split-detail .vue-details-header.temp-details .group-btn.selected::after {
  content: "";
  position: absolute;
  left: 8px;
  right: 8px;
  margin-top: -2px;
  bottom: 0;
  transition: left 0.3s ease, right 0.3s ease;
  border-bottom: solid 2px rgb(0, 120, 212);
}
.vue-split-detail .vue-details-header.temp-details .group-btn.selected:hover {
  background-color: #E1DFDD;
}
.vue-split-detail .vue-details-header.temp-details .group-btn.selected:hover::after {
  transition: left 0.3s ease, right 0.3s ease;
  left: 0px;
  right: 0px;
}
.vue-split-detail .vue-details-header.temp-details .group-btn i {
  font-size: 16px;
  margin-right: 8px;
  color: #0078D4;
}
.vue-split-detail .detail-content {
  padding-top: 54px;
  padding-bottom: 65px;
  min-height: 100%;
}
.vue-split-detail .detail-content form .form-section.hidden {
  display: none;
}
.vue-split-detail .vue-details-sticky-header {
  position: sticky;
  top: 0px;
  z-index: 30;
  height: 42px;
  margin-bottom: -42px;
  margin-right: 12px;
  padding: 0px;
  text-align: right;
  display: flex;
  justify-content: flex-end;
  background-color: white;
}
.vue-split-detail .vue-details-sticky-header .cancel-icon-container {
  margin-top: 10px;
  height: 32px;
  width: 32px;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}
.vue-split-detail .vue-details-sticky-header .cancel-icon-container:hover {
  background-color: #EDEBE9;
}
.vue-split-detail .vue-details-sticky-header .cancel-icon-container .icon {
  font-size: 16px;
}
.vue-split-detail .detail-container {
  max-width: 40vw;
}
.vue-split-detail .detail-footer {
  padding-top: 16px;
  position: sticky;
  margin-top: -65px;
  min-height: 65px;
  bottom: 0;
  background-color: white;
  z-index: 500;
}
.vue-split-detail .detail-footer .button-container {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}
.vue-split-detail .detail-footer .button-container .vue-btn {
  margin: 0px !important;
}
.vue-split-detail .children-detail {
  width: 100% !important;
}
.vue-split-detail .children-detail .detail-content {
  padding-top: 20px;
  padding-left: 20px;
  padding-right: 20px;
  border: 1px solid #eaeaea;
}

.background-blured {
  position: absolute;
  height: 100%;
  width: 100%;
  z-index: 50;
  inset: 0px;
  background-color: rgba(0, 0, 0, 0.25);
  left: 0px;
  top: 0px;
}

.vue-multiselect.disabled * {
  cursor: initial;
}
.vue-multiselect .form-widget {
  width: 100%;
}
.vue-multiselect .form-widget .ts-wrapper {
  box-shadow: none;
  border-color: lightgray;
}
.vue-multiselect .form-widget .ts-wrapper.input-active {
  box-shadow: none;
  border-color: gray;
}
.vue-multiselect .form-widget .ts-wrapper .ts-control {
  height: fit-content;
  padding-right: 0px !important;
}
.vue-multiselect .form-widget .form-multi-select {
  min-height: 35px;
}
.vue-multiselect .form-widget .form-multi-select .ts-control {
  border: none;
}
.vue-multiselect .form-widget div.item {
  white-space: normal;
  width: auto !important;
}

.temp-form.vue-form .form-section .vue-multiselect .form-widget, .new-style .vue-multiselect .form-widget {
  width: 100%;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select, .new-style .vue-multiselect .form-widget .form-multi-select {
  border: solid #656361 1px;
  max-width: 100% !important;
  display: flex;
  align-items: center;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select.expanded, .new-style .vue-multiselect .form-widget .form-multi-select.expanded {
  border-color: #0078D4;
  border-width: 2px;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .ts-control, .new-style .vue-multiselect .form-widget .form-multi-select .ts-control {
  padding: 0px 8px !important;
  min-height: 30px;
  align-items: center;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container {
  border-radius: 2px !important;
  display: flex !important;
  align-items: center;
  position: absolute;
  top: 100%;
  width: 100%;
  z-index: 1000;
  background-color: white;
  box-shadow: rgba(0, 0, 0, 0.133) 0px 3.2px 7.2px 0px, rgba(0, 0, 0, 0.11) 0px 0.6px 1.8px 0px;
  margin-left: -2px;
  width: calc(100% + 4px);
  margin-top: 2px;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content {
  padding: 0px;
  width: 100%;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option {
  padding: 6px 9px;
  width: 100%;
  height: 36px;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .group-title, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .group-title {
  padding: 6px 9px;
  width: 100%;
  height: 36px;
  background-color: #F3F2F1;
  font-size: bold;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option:hover, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option:hover {
  background-color: #EDEBE9 !important;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.remove-option, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.remove-option {
  color: red;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.no-option:hover, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.no-option:hover {
  cursor: initial;
  background-color: initial !important;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .dropdown-content-internal, .new-style .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .dropdown-content-internal {
  max-height: 40vh;
  overflow-y: auto;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .search-container, .new-style .vue-multiselect .form-widget .form-multi-select .search-container {
  display: flex;
  padding: 0px 8px;
  border-bottom: 1px solid #656361;
  border-radius: 2px;
  height: 32px;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container, .new-style .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container {
  display: flex;
  align-items: center;
  width: 30px;
  transition: width 0.2s ease-in;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container .icon, .new-style .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container .icon {
  margin-left: 4px;
  font-size: 16px;
  color: #0078D4;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .search-container.active .search-icon-container, .new-style .vue-multiselect .form-widget .form-multi-select .search-container.active .search-icon-container {
  visibility: hidden;
  width: 0px;
  transition: width 0.2s ease-out;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .icon, .new-style .vue-multiselect .form-widget .form-multi-select .icon {
  color: #1B1B1E;
  margin-top: 2px;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select p.placeholder, .new-style .vue-multiselect .form-widget .form-multi-select p.placeholder {
  background-color: inherit;
  margin: 0px;
  cursor: initial;
  display: flex;
  width: 100%;
  opacity: 1;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .item, .new-style .vue-multiselect .form-widget .form-multi-select .item {
  background-color: #F3F2F1;
}
.temp-form.vue-form .form-section .vue-multiselect .vue-field-container.readoly .form-content, .new-style .vue-multiselect .vue-field-container.readoly .form-content {
  border-color: light-dark(rgb(84, 84, 84)) !important;
}

.file-upload.form-group .form-widget .input-group {
  flex-wrap: nowrap;
  display: flex;
}
.file-upload.form-group .form-widget .input-group .input-container {
  display: flex;
  border: 1px solid #656361;
  border-radius: 2px;
  height: 30px;
  align-items: center;
}
.file-upload.form-group .form-widget .input-group .input-container .file-label {
  padding: 0px;
  min-width: unset;
  font-weight: initial;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 100%;
}
.file-upload.form-group .form-widget .input-group .input-container .btn {
  min-width: unset;
  padding: 0 4px;
  background-color: inherit;
  box-shadow: none;
  width: fit-content;
}
.file-upload.form-group .form-widget .input-group .input-container span {
  padding: 0 4px;
  white-space: nowrap;
}
.file-upload.form-group .form-widget .input-group .input-info {
  justify-content: center;
  padding: 0 4px;
  width: fit-content;
}
.file-upload.form-group .form-widget .input-group .input-name {
  flex-grow: 2;
  padding: 0px 0.5rem;
  width: 50%;
}

.vue-date input {
  max-height: 36px;
  border-color: lightgray;
  box-shadow: none;
}
.vue-date input:focus, .vue-date input:focus-within {
  border-color: gray;
  box-shadow: none;
}

.form-group.file-upload .file-input-title {
  margin: 0px;
  position: absolute;
  left: 10px;
  top: 5px;
  color: var(--form-input-text-color);
}
.form-group.file-upload .inputWrapper {
  height: 32px;
  width: 50%;
  max-width: 20vw;
  overflow: hidden;
  position: relative;
  cursor: pointer;
  /*Using a background color, but you can use a background image to represent a button*/
  background-color: #F3F2F1;
}
.form-group.file-upload .fileInput {
  cursor: pointer;
  height: 100%;
  position: absolute;
  top: 0;
  right: 0;
  z-index: 99;
  /*This makes the button huge. If you want a bigger button, increase the font size*/
  font-size: 50px;
  /*Opacity settings for all browsers*/
  opacity: 0;
  -moz-opacity: 0;
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}

.vue-dynamic-input {
  height: 32px;
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  align-items: center;
  border: none;
  width: 100%;
  border-bottom: 1px solid #E1DFDD;
  margin: 0px 0px 15px 0px;
}
.vue-dynamic-input i,
.vue-dynamic-input .ms-Icon {
  margin-left: 8px;
  margin-right: 4px;
  width: 14px;
  cursor: pointer;
}
.vue-dynamic-input.selected {
  border: 1px solid #656361;
  border-radius: 2px;
}
.vue-dynamic-input.selected i.ms-Icon {
  visibility: hidden;
}
.vue-dynamic-input.selected i.ms-Icon--Edit {
  visibility: hidden;
  width: 0px;
  transition: width 0.2s ease-out;
}
.vue-dynamic-input input {
  width: 100%;
}

.vue-form-input {
  background: initial;
  padding: 0px 8px;
  height: 30px;
  border: none !important;
  outline: none !important;
}

.readonly .vue-checkbox {
  opacity: 0.8;
  background-color: lightgrey;
}

.vue-checkbox {
  position: relative;
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  height: 20px;
  width: 20px;
  border: 1px solid black;
  border-radius: 2px;
  box-sizing: border-box;
  transition-property: background, border, border-color;
  transition-duration: 200ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.23, 1);
  overflow: hidden;
  margin-right: 6px;
  background: white;
}
.vue-checkbox i {
  visibility: hidden;
}
.vue-checkbox.checked {
  background: rgb(0, 120, 212);
  border: 1px solid rgb(0, 120, 212);
}
.vue-checkbox.checked i,
.vue-checkbox.checked .ms-Icon {
  visibility: visible;
  color: white;
  font-size: 14px;
  margin-top: 1px;
}

.label-expand-container {
  border-top: 1px solid #eaeaea;
  margin-top: 12px;
  margin-bottom: 12px;
  padding-top: 12px;
  width: 100%;
}
.label-expand-container .label-expand-icon {
  float: right;
  font-size: 16px;
  margin-right: 8px;
  color: #0078D4;
  cursor: pointer;
  transform: initial;
  transition: transform 0.3s ease;
}
.label-expand-container .delete-icon {
  float: right;
  font-size: 16px;
  margin-right: 15px;
  cursor: pointer;
  display: block;
}
.label-expand-container.collapsed .label-expand-icon {
  transform: rotate(180deg);
}
.label-expand-container.collapsed .delete-icon {
  display: none;
}

.text-list .vue-list-element {
  min-height: 32px;
  height: fit-content;
}
.text-list .vue-list-element input {
  height: auto;
  resize: vertical;
}
.text-list .vue-list-element textarea {
  min-height: 16px;
  resize: none;
}

.vue-form .form-section .section-header {
  display: flex;
  justify-content: space-between;
  border-bottom: solid 2px lightgrey;
  padding-bottom: 2px;
  margin-top: 6px;
  margin-bottom: 12px;
}
.vue-form .form-section .section-header h3 {
  font-size: 1.05rem;
  font-weight: 600;
  margin-bottom: 0px;
}
.vue-form .form-section .section-header .collpase-icon {
  cursor: pointer;
  margin-right: 3px;
  color: #0078D4;
}
.vue-form .form-section .form-group {
  margin: 2px 0px;
  margin-left: 10px;
  display: none;
  min-height: 36px;
  padding: 0px;
}
.vue-form .form-section .form-group input[disabled],
.vue-form .form-section .form-group textarea[disabled].form-input,
.vue-form .form-section .form-group select[disabled] {
  cursor: initial;
  border: 1px solid lightgray;
}
.vue-form .form-section .form-group .form-check-input:disabled {
  cursor: initial;
  opacity: 1;
}
.vue-form .form-section .form-group.required input {
  border: solid 1px #dc3545;
}
.vue-form .form-section .form-group.required select {
  border: solid 1px #dc3545;
}
.vue-form .form-section .form-group.required div.form-content {
  border: solid 1px #dc3545;
}
.vue-form .form-section .form-group.required .ck-editor {
  border: solid 1px #dc3545;
}
.vue-form .form-section .form-group .input:focus,
.vue-form .form-section .form-group .input:focus-visible {
  border: solid 1px black;
  border-radius: 0px;
  box-shadow: none;
}
.vue-form .form-section .form-group .form-check-input {
  height: 23px;
  width: 23px;
  border-radius: 0px;
  margin-top: 0px;
}
.vue-form .form-section .form-group .form-check-input:checked {
  background-color: #0078D4;
}
.vue-form .form-section .form-group label {
  padding-bottom: 0px;
  min-width: 120px;
}
.vue-form .form-section .form-group label.required {
  display: inline-flex;
  align-items: center;
}
.vue-form .form-section .form-group label.required::after {
  content: " *";
  color: rgb(153, 0, 0);
  padding-right: 12px;
  background: none;
  position: initial;
  top: initial;
  right: initial;
  width: initial;
  height: initial;
  filter: initial;
  padding-left: 3px;
  white-space: nowrap;
}
.vue-form .form-section .form-group .form-input {
  width: 100%;
  max-width: 40vw;
  min-width: 50px;
  height: 36px;
  appearance: none;
  background-clip: padding-box;
  color: var(--text-color-dark);
  display: block;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  padding: 0.375rem 0.75rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.vue-form .form-section .form-group .form-select {
  border-radius: 0px;
}
.vue-form .form-section .field-text input,
.vue-form .form-section .field-text textarea,
.vue-form .form-section .field-textarea input,
.vue-form .form-section .field-textarea textarea {
  background-color: #F3F2F1;
  border: none;
  box-shadow: none;
}
.vue-form .form-section .field-text input:focus, .vue-form .form-section .field-text input:focus-visible,
.vue-form .form-section .field-text textarea:focus,
.vue-form .form-section .field-text textarea:focus-visible,
.vue-form .form-section .field-textarea input:focus,
.vue-form .form-section .field-textarea input:focus-visible,
.vue-form .form-section .field-textarea textarea:focus,
.vue-form .form-section .field-textarea textarea:focus-visible {
  background-color: white;
  border: 0px solid black;
  border-radius: 0px;
  box-shadow: none;
  outline-style: solid;
  outline-width: 1px;
}
.vue-form .form-section .field-text select,
.vue-form .form-section .field-textarea select {
  box-shadow: none;
  border-color: lightgray;
}
.vue-form .form-section .field-select select {
  font-family: "Segoe UI Semibold", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  background-color: #F3F2F1;
  height: 36px;
  width: 50%;
  max-width: 20vw;
  border: none;
  box-shadow: none;
}
.vue-form .form-section .field-select select:focus {
  background-color: white;
  border: solid black 1px;
}
.vue-form .form-section .field-date input {
  width: 50%;
  max-width: 20vw;
  border-color: lightgray;
  box-shadow: none;
  border-radius: 0px;
  height: 36px;
}
.vue-form .form-section .field-date input:focus, .vue-form .form-section .field-date input:focus-within {
  background-color: white;
  border: solid black 1px;
}
.vue-form .form-section .field-date .form-control:disabled {
  background-color: #F3F2F1;
}
.vue-form .form-section .field-textarea {
  align-items: flex-start;
}
.vue-form .form-section .field-textarea label {
  margin-top: 8px;
}
.vue-form .form-section .field-textarea textarea.form-input {
  background-color: #F3F2F1;
  height: 108px;
  border: none;
  width: 40vw;
  max-width: none;
  min-height: 36px;
  box-shadow: none;
}
.vue-form .form-section .field-textarea textarea.form-input:focus {
  background-color: white;
}
.vue-form .form-section .field-textarea textarea.form-input:disabled {
  cursor: initial;
}
.vue-form .form-section .field-link a {
  display: flex;
  align-items: center;
  margin-bottom: 3px;
  text-decoration: underline;
}
.vue-form .form-section .field-link a.disabled {
  pointer-events: none;
  text-decoration: none;
}
.vue-form .form-section .field-link a.disabled:hover {
  color: initial !important;
}
.vue-form .form-section.expanded .collpase-icon {
  margin-right: 0px;
  color: #0078D4;
}
.vue-form .form-section.expanded .form-group {
  display: flex;
}
.vue-form .form-section .vue-multiselect .form-widget {
  width: 100%;
}
.vue-form .form-section .vue-multiselect .form-widget .form-multi-select {
  border: none;
  background-position: right 11px center;
  border-bottom: solid darkgrey 1px;
  border-radius: 0px;
  box-shadow: none;
  width: 100%;
  max-width: 40vw;
}
.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .item {
  background-color: #F3F2F1;
}
.vue-form .form-section .form-control-label.main-label {
  width: auto;
}
.vue-form .form-section .form-control-label.required::after {
  z-index: 2 !important;
}

.form-group .col-form-label.required:after,
.form-group label.required:after {
  z-index: 500 !important;
}

.temp-form .form-section {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-end;
}
.temp-form .form-section .vue-field-container {
  flex: 0 0 calc(50% - 15px);
  max-width: calc(50% - 15px);
  margin-bottom: 15px;
  order: 10;
}
.temp-form .form-section .vue-field-container.first {
  order: 1;
}
.temp-form .form-section .vue-field-container.single {
  margin-bottom: 0px;
}
.temp-form .form-section .vue-field-container .form-group {
  display: block;
  margin-left: 0px;
}
.temp-form .form-section .vue-field-container .form-group label {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  font-weight: 600;
  padding-bottom: 8px;
}
.temp-form .form-section .vue-field-container .form-group .form-content {
  height: 32px;
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  border: 1px solid #656361;
  border-radius: 2px;
}
.temp-form .form-section .vue-field-container .form-group .form-content input {
  width: 100%;
}
.temp-form .form-section .vue-field-container .form-group .form-content input.vue-form-input {
  outline: none !important;
}
.temp-form .form-section .vue-field-container .form-group .form-content .vue-form-input {
  background: initial;
  padding: 0px 8px;
  height: 30px;
  border: none !important;
}
.temp-form .form-section .vue-field-container .form-group .form-content.selected {
  border: 1px solid #0078D4;
}
.temp-form .form-section .vue-field-container .vue-field-html {
  min-height: 124px;
}
.temp-form .form-section .vue-field-container .vue-field-html .ck-editor .ck-content {
  min-height: 124px;
}
.temp-form .form-section .vue-field-container .vue-field-html .ck-editor.ck {
  width: 100%;
}
.temp-form .form-section .vue-field-container .vue-field-checkbox .form-content {
  border: none !important;
  align-items: center;
}
.temp-form .form-section .vue-field-container .vue-field-checkbox .form-content label {
  padding-bottom: 0px;
}
.temp-form .form-section .vue-field-container.col-large {
  max-width: calc(100% - 0px);
  flex: 0 0 calc(100% - 0px);
}
.temp-form .form-section .vue-field-container.col-large label.form-control-label {
  width: auto !important;
}
.temp-form .form-section .vie-field-container.col-small {
  flex: 0 0 calc(33.3333333333% - 30px);
}
.temp-form .form-section .vue-field-container.half-row {
  flex-basis: 100%;
}
.temp-form .form-section .vue-field-container.col-two-thirds {
  max-width: calc(66.6666666667% - 5px);
  flex: 0 0 calc(66.6666666667% - 5px);
}
.temp-form .form-section .vue-field-container.col-one-third {
  max-width: calc(33.3333333333% - 0px);
  flex: 0 0 calc(33.3333333333% - 0px);
}
.temp-form .form-section .vue-field-container.margin-top {
  margin-top: 15px;
}
.temp-form .form-section .vue-field-container.field-group {
  flex: 0 0 100%;
  width: 100%;
}
.temp-form .form-section .vue-field-container.field-group .vue-list-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.ck.ck-powered-by {
  display: none !important;
}

.temp-form .form-section .vue-field-container.readonly .form-group .form-content {
  border: none;
}
.temp-form .form-section .vue-field-container.readonly .form-group .form-content > * {
  padding: 0px;
}
.temp-form .form-section .vue-field-container.readonly .vue-multiselect .form-widget .form-multi-select {
  border: none !important;
}
.temp-form .form-section .vue-field-container.readonly .vue-multiselect .form-widget .form-multi-select .ts-control {
  padding: 0px !important;
}
.temp-form .form-section .vue-field-container.readonly .vue-multiselect .form-widget .form-multi-select .text {
  color: #1B1B1E;
}
.temp-form .form-section .vue-field-container.readonly .vue-multiselect .form-widget .form-multi-select .item {
  color: #1B1B1E;
  background-color: transparent !important;
  padding: 0px !important;
}

.vue-btn {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  font-weight: 600;
  box-sizing: border-box;
  border: none rgb(237, 237, 237);
  display: inline-block;
  text-decoration: none;
  text-align: center;
  cursor: default;
  padding: 0px 16px;
  border-radius: 2px;
  min-width: fit-content;
  height: 32px;
  background-color: #E1DFDD;
  white-space: nowrap;
  min-height: 32px;
  min-width: 80px;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.vue-btn:hover {
  background-color: #D2D0CE;
  border-color: #656361;
}
.vue-btn:disabled {
  cursor: not-allowed !important;
  background-color: rgb(237, 237, 237) !important;
  color: rgb(161, 161, 161) !important;
  pointer-events: none !important;
}

.vue-btn.primary {
  color: #fff;
  background-color: rgb(0, 120, 212);
  border-color: rgb(0, 120, 212);
}
.vue-btn.primary:hover {
  color: #fff;
  background-color: rgb(0, 108, 190);
  border-color: rgb(0, 108, 190);
}

.vue-btn.danger {
  color: #fff;
  background-color: #dc3545;
  border-color: #dc3545;
}
.vue-btn.danger:hover {
  color: #fff;
  background-color: #c82333;
  border-color: #bd2130;
}

.vue-btn.warning {
  color: black;
  background-color: #ffc107;
  border-color: #ffc107;
}
.vue-btn.warning:hover {
  color: #fff;
  background-color: #e0a800;
  border-color: #d39e00;
}

.vue-btn.success {
  color: #fff;
  background-color: #28a745;
  border-color: #28a745;
}
.vue-btn.success:hover {
  color: #fff;
  background-color: #218838;
  border-color: #1e7e34;
}

.vue-btn-action {
  color: black !important;
  padding: 0px 8px;
  margin-right: 8px;
  height: 36px;
  border: none;
  width: fit-content;
  background-color: white;
  position: relative;
  display: flex;
  align-items: center;
}
.vue-btn-action:hover {
  background-color: #EDEBE9;
}
.vue-btn-action i, .vue-btn-action .ms-Icon {
  font-size: 16px;
  margin-right: 8px;
  color: #0078D4;
}

.modal-vue3-content {
  width: 50vw;
}

.simple-modal-container .cancel-icon-container {
  margin-left: auto;
  margin-right: 15px;
  margin-top: 15px;
  margin-bottom: -47px;
  height: 32px;
  width: 32px;
  position: relative;
  z-index: 1000;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}
.simple-modal-container .cancel-icon-container:hover {
  background-color: #EDEBE9;
}
.simple-modal-container .cancel-icon-container .icon {
  font-size: 16px;
}
.simple-modal-container .modal-content {
  padding: 0px 24px 24px;
}
.simple-modal-container .modal-content .modal-content--header .title {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  font-size: 20px;
  font-weight: 600;
  color: rgb(50, 49, 48);
  margin: 0px;
  min-height: 20px;
  padding: 16px 46px 20px 0px;
  line-height: normal;
}
.simple-modal-container .modal-content .modal-content--body {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
}
.simple-modal-container .modal-content .modal-content--body p {
  margin-bottom: 24px;
}
.simple-modal-container .modal-content .modal-content--footer button {
  margin-right: 16px;
}

table,
.vue-table {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
  margin-right: 40px;
  margin-top: 18px;
  min-width: 40vw;
  border-collapse: separate !important;
  border-spacing: 0 2px !important;
  border-bottom-color: #F3F2F1;
  margin-bottom: 60px;
}
table tbody,
.vue-table tbody {
  margin-top: 20px;
  box-shadow: none !important;
}
table .child .cell-content,
.vue-table .child .cell-content {
  padding-left: 5px;
}
table tr,
.vue-table tr {
  height: 42px;
}
table tr strong,
.vue-table tr strong {
  margin-right: 10px;
}
table tr th,
.vue-table tr th {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  font-size: 12px;
  line-height: 16px;
  padding-right: 36px;
}
table tr td,
.vue-table tr td {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-size: 14px;
  line-height: 20px;
  color: #1B1B1E;
  min-width: 80px;
  padding-right: 36px;
}
table tr td .entity-link,
.vue-table tr td .entity-link {
  text-decoration: underline;
}
table tr td .entity-link.disabled,
.vue-table tr td .entity-link.disabled {
  pointer-events: none;
  text-decoration: none;
}
table tr td .entity-link.disabled:hover,
.vue-table tr td .entity-link.disabled:hover {
  color: initial !important;
}
table tr td .cell.children,
.vue-table tr td .cell.children {
  position: relative;
}
table tr td .cell.children .extend,
.vue-table tr td .cell.children .extend {
  position: absolute;
  left: -25px;
}
table tr td .cell.children .extend i,
.vue-table tr td .cell.children .extend i {
  transform: rotate(-90deg);
  transition: transform 0.25s ease;
}
table tr td .cell.children .extend i.expanded,
.vue-table tr td .cell.children .extend i.expanded {
  transform: rotate(0deg);
}
table tr td,
table tr th,
.vue-table tr td,
.vue-table tr th {
  white-space: nowrap;
  border: none !important;
  box-shadow: none !important;
}
table tr td.wrap,
table tr th.wrap,
.vue-table tr td.wrap,
.vue-table tr th.wrap {
  white-space: normal;
}
table tr th:first-child,
table tr td:first-child,
.vue-table tr th:first-child,
.vue-table tr td:first-child {
  padding-left: 40px;
}
table tr th:first-child .level1,
table tr td:first-child .level1,
.vue-table tr th:first-child .level1,
.vue-table tr td:first-child .level1 {
  margin-left: 5px;
}
table tr th:first-child .level2,
table tr td:first-child .level2,
.vue-table tr th:first-child .level2,
.vue-table tr td:first-child .level2 {
  margin-left: 10px;
}
table tr th:first-child .level3,
table tr td:first-child .level3,
.vue-table tr th:first-child .level3,
.vue-table tr td:first-child .level3 {
  margin-left: 15px;
}
table tr th:first-child .level4,
table tr td:first-child .level4,
.vue-table tr th:first-child .level4,
.vue-table tr td:first-child .level4 {
  margin-left: 20px;
}
table tr th:first-child .level5,
table tr td:first-child .level5,
.vue-table tr th:first-child .level5,
.vue-table tr td:first-child .level5 {
  margin-left: 25px;
}
table tr td.title .header,
table tr td.subheader .header,
.vue-table tr td.title .header,
.vue-table tr td.subheader .header {
  display: flex;
  align-items: center;
}
table tr td.title .header .text,
table tr td.subheader .header .text,
.vue-table tr td.title .header .text,
.vue-table tr td.subheader .header .text {
  display: flex;
  flex-direction: column;
  margin-left: 5px;
}
table tr td.title .header .text .subtitle,
table tr td.subheader .header .text .subtitle,
.vue-table tr td.title .header .text .subtitle,
.vue-table tr td.subheader .header .text .subtitle {
  font-weight: 400;
  font-size: 12px;
}
table tr td.title,
.vue-table tr td.title {
  font-weight: 500;
}
table tr td.title .subtasks-icon,
.vue-table tr td.title .subtasks-icon {
  position: relative;
  margin-right: -10px;
  right: 20px;
  top: -2px;
  cursor: pointer;
}
table tr td.title .subtasks-icon svg,
.vue-table tr td.title .subtasks-icon svg {
  fill: gray;
}
table tr td.title .hide-subtasks,
.vue-table tr td.title .hide-subtasks {
  margin-right: -16px;
  right: 23px;
}
table tr td.subheader,
.vue-table tr td.subheader {
  font-weight: 400;
  padding-left: 54px;
  font-size: var(--font-size-base);
}
table tr td > *,
.vue-table tr td > * {
  margin-right: 5px;
}
table tr .clickable,
.vue-table tr .clickable {
  cursor: pointer;
}
table tr .clickable:hover .title,
.vue-table tr .clickable:hover .title {
  text-decoration: underline;
}
table tr .action,
.vue-table tr .action {
  display: inline-block;
  margin-right: 15px;
}
table tr .action svg,
.vue-table tr .action svg {
  height: 18px;
}
table .selected td,
table .selected th,
.vue-table .selected td,
.vue-table .selected th {
  border-bottom: solid 1px #0078D4;
  border-top: solid 1px #0078D4;
}

.table > :not(caption) > * > * {
  background-color: inherit;
}

.index-table {
  width: 100%;
  margin-left: 0px;
  margin-right: 0px;
  border-collapse: collapse !important;
}
.index-table thead th {
  position: sticky;
  top: 44px;
  z-index: 20;
  background-color: #FBFBFB;
}
.index-table thead th:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  border-bottom: 1px solid #e0e0e0;
}
.index-table tbody tr {
  border-bottom: 1px solid #e0e0e0;
}
.index-table tbody tr:hover {
  background-color: #EDEBE9;
}
.index-table tbody tr.active {
  background-color: #E1DFDD;
}
.index-table tbody tr.active:hover {
  background-color: #D2D0CE;
}

#notification {
  position: fixed;
  display: none;
  max-width: 200px;
  padding: 0px;
  background-color: #F3F2F1;
  border: 1px solid #ddd;
  border-radius: 4px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  z-index: 1010;
}
#notification * {
  padding: 10px 15px;
}
#notification .success {
  background-color: #DEF2E7;
  color: #399266;
  border-color: #399266;
}
#notification .error {
  background-color: #FAECEB;
  color: #E95169;
  border-color: #E95169;
}

.standalone-multiselect .vue-multiselect .form-widget {
  width: 100%;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select {
  border: none;
  background-position: right 11px center;
  border-bottom: solid darkgrey 1px;
  border-radius: 0px;
  box-shadow: none;
  width: 100%;
  max-width: 40vw;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .item {
  background-color: #F3F2F1;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select {
  border: solid #656361 1px;
  max-width: 100% !important;
  display: flex;
  align-items: center;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select.expanded {
  border-color: #0078D4;
  border-width: 2px;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .ts-control {
  padding: 0px 8px !important;
  min-height: 30px;
  align-items: center;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container {
  border-radius: 2px !important;
  display: flex !important;
  align-items: center;
  position: absolute;
  top: 100%;
  width: 100%;
  z-index: 1000;
  background-color: white;
  box-shadow: rgba(0, 0, 0, 0.133) 0px 3.2px 7.2px 0px, rgba(0, 0, 0, 0.11) 0px 0.6px 1.8px 0px;
  margin-left: -2px;
  width: calc(100% + 4px);
  margin-top: 2px;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content {
  padding: 0px;
  width: 100%;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option {
  padding: 6px 9px;
  width: 100%;
  height: 36px;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .group-title {
  padding: 6px 9px;
  width: 100%;
  height: 36px;
  background-color: #F3F2F1;
  font-size: bold;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option:hover {
  background-color: #EDEBE9 !important;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.remove-option {
  color: red;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .option.no-option:hover {
  cursor: initial;
  background-color: initial !important;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .dropdown-container .dropdown-content .dropdown-content-internal {
  max-height: 40vh;
  overflow-y: auto;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .search-container {
  display: flex;
  padding: 0px 8px;
  border-bottom: 1px solid #656361;
  border-radius: 2px;
  height: 32px;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container {
  display: flex;
  align-items: center;
  width: 30px;
  transition: width 0.2s ease-in;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .search-container .search-icon-container .icon {
  margin-left: 4px;
  font-size: 16px;
  color: #0078D4;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .search-container.active .search-icon-container {
  visibility: hidden;
  width: 0px;
  transition: width 0.2s ease-out;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .icon {
  color: #1B1B1E;
  margin-top: 2px;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select p.placeholder {
  background-color: inherit;
  margin: 0px;
  cursor: initial;
  display: flex;
  width: 100%;
  opacity: 1;
}
.standalone-multiselect .vue-multiselect .form-widget .form-multi-select .item {
  background-color: #F3F2F1;
}

.vue-filters {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
  padding-top: 1rem;
  padding-bottom: 2rem;
  background-color: #F3F2F1;
}
.vue-filters .vue-filters-options {
  display: flex;
  flex-wrap: wrap;
  max-width: 100vw;
  width: 100%;
}
.vue-filters .vue-filters-options .form-group {
  padding: 0px;
}
.vue-filters .vue-filters-options .form-group .ts-wrapper {
  background: white;
  border: 1px solid lightgray;
  border-radius: 6px;
}
.vue-filters .vue-filters-options .form-group .ts-wrapper div.item {
  margin-left: 5px;
}
.vue-filters .vue-filters-options .form-group.old {
  flex: 0 0 20%;
  display: flex;
  margin-right: 30px;
  margin-left: 18px;
  min-width: 300px;
  padding: 14px 0px;
}
.vue-filters .vue-filters-options .form-group.old .ts-wrapper {
  background: white;
  border: 1px solid lightgray;
  border-radius: 6px;
}
.vue-filters .vue-filters-options .form-group.old .ts-wrapper div.item {
  margin-left: 5px;
}
.vue-filters .vue-filters-options .form-group.old label {
  flex: 0 0 40%;
  margin-right: 4px;
  padding: 0px;
  font-weight: bold;
  margin-top: 8px;
  overflow-wrap: break-word;
}
.vue-filters .vue-filters-options .form-group.old .date-control {
  display: flex;
  margin-left: 5px;
}
.vue-filters .vue-filters-options .form-group.old .date-control .label {
  margin-top: 8px;
}
.vue-filters .vue-filters-options .field-select div,
.vue-filters .vue-filters-options .field-select select {
  width: 100%;
}
.vue-filters .vue-filters-options .form-check.form-switch input {
  margin-top: 10px;
}
.vue-filters .tasklist-filters-clear {
  padding-top: 6px;
  padding-bottom: 16px;
  padding-left: 18px;
}
.vue-filters .date-group label {
  margin-right: 12px;
}
.vue-filters .date-group input {
  margin: 0px 4px;
  height: 35px;
}

.task-details {
  padding-top: 22px;
}
.task-details .task-details-header {
  border-left: solid 5px #5C00D4;
  display: flex;
  justify-content: space-between;
  padding-left: 8px;
  margin-bottom: 30px;
}
.task-details .task-details-header.temporal {
  border: none;
}
.task-details .task-details-header.clarification {
  border-color: #FF8000;
}
.task-details .task-details-header.overdue {
  border-color: #D83B01;
}
.task-details .task-details-header.done {
  border-color: #F3F2F1;
}
.task-details .task-details-header.deleted {
  border-color: #23272b;
}
.task-details .task-details-header .subtitle {
  font-weight: 600;
}
.task-details .task-details-header h2 {
  font-size: 1.25rem;
  line-height: 1;
}
.task-details .task-details-header h2,
.task-details .task-details-header p {
  margin-bottom: 0px;
}
.task-details .task-details-header .actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.task-details .task-details-header .actions button {
  border: none;
  height: 35px;
  margin-left: 10px;
  min-width: 120px;
  margin-bottom: 5px;
  font-size: 14px;
}
.task-details .task-details-header .actions button:disabled {
  cursor: initial;
}
.task-details .task-details-header .actions button.create-task, .task-details .task-details-header .actions button.complete-task {
  background-color: #5C00D4;
  color: white;
}
.task-details .task-details-header .actions button.in-progress {
  background-color: #ffc107;
  color: black;
}
.task-details .task-details-header .actions button.overdue {
  background-color: #D83B01;
  color: white;
}
.task-details .task-details-header .actions button.done {
  background-color: #F3F2F1;
  color: black;
}
.task-details .task-details-header .actions button.clarify-task {
  background-color: #FF8000;
  color: white;
}
.task-details .task-details-header .actions button.delete-task {
  background-color: #23272b;
  color: white;
}
.task-details .task-form .save-comment {
  margin-top: 10px;
}
.task-details .task-form .save-comment button {
  width: 120px;
}
.task-details .task-form .messages {
  margin-top: 10px;
  align-items: flex-start;
}
.task-details .task-form .messages .message {
  width: 100%;
  max-width: calc(40vw + 120px);
}
.task-details .task-form .messages .message p {
  padding: 0px;
  margin: 0px;
  display: flex;
}
.task-details .task-form .messages .message p .actions {
  margin-left: auto;
}
.task-details .task-form .messages .message p .actions .delete {
  cursor: pointer;
  fill: #D83B01;
}
.task-details .task-form .messages .message p .actions .delete:hover {
  fill: #920f0f;
}
.task-details .task-form .messages .message .message-header {
  font-weight: 600;
}
.task-details .task-form .messages .message hr {
  margin-top: 2px;
}
.task-details .task-form .files {
  margin-top: 20px;
  align-items: flex-start;
  flex-wrap: wrap;
}
.task-details .task-form .files .file {
  width: 100%;
  max-width: calc(40vw + 120px);
}
.task-details .task-form .files .file p {
  display: flex;
  align-items: center;
  margin: 0px;
}
.task-details .task-form .files .file p .download {
  display: flex;
  align-items: center;
  cursor: pointer;
}
.task-details .task-form .files .file p .download svg {
  height: 17px;
  margin-right: 10px;
  fill: darkgray;
}
.task-details .task-form .files .file p .download[disabled=true] {
  cursor: initial;
}
.task-details .task-form .files .file p .actions {
  margin-left: auto;
  display: flex;
}
.task-details .task-form .files .file p .actions .delete {
  cursor: pointer;
  fill: #D83B01;
}
.task-details .task-form .files .file p .actions .delete:hover {
  fill: #920f0f;
}
.task-details .task-form .files .file p .actions .download {
  cursor: pointer;
  fill: black;
  margin-right: 20px;
}
.task-details .task-form .files .file p .actions .download:hover {
  fill: darkgrey;
}
.task-details .task-form .files .file hr {
  margin-top: 2px;
}
.task-details .task-form hr {
  opacity: 0.1;
}

.task-main-title {
  border-left: solid 5px transparent !important;
  padding-left: 5px;
}
.task-main-title.status-open {
  border-left-color: #5C00D4 !important;
}
.task-main-title.status-clarification {
  border-left-color: #FF8000 !important;
}
.task-main-title.status-in-progress {
  border-left-color: #ffc107 !important;
}
.task-main-title.status-overdue {
  border-left-color: #D83B01 !important;
}
.task-main-title.status-done {
  border-left-color: #F3F2F1 !important;
}
.task-main-title.status-deleted {
  border-left-color: #23272b !important;
}

.tasklist tr .add svg {
  fill: #0078D4;
}
.tasklist tr .important {
  margin-left: 35px;
  margin-right: 35px;
}
.tasklist tr .important svg {
  height: 14px;
  margin-bottom: 4px;
  fill: #dc3545;
}
.tasklist .task-group {
  margin-bottom: 20px;
}
.tasklist .task-group .task-element {
  border: solid black 1px;
  padding: 10px;
  display: flex;
  align-items: center;
  margin-bottom: 5px;
}
.tasklist .task-group .task-element input {
  width: 20px;
  height: 20px;
  margin-right: 15px;
}
.tasklist .task-group .task-element label {
  font-size: 17px;
  font-weight: 500;
  pointer-events: none;
}
.tasklist .task-group .done-task {
  background-color: rgba(155, 155, 155, 0.5);
}

.status *,
.status.choice * {
  width: 114px;
  text-align: center;
  border-width: 0px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: space-evenly;
}
.status .open,
.status.choice .open {
  background-color: #5C00D4;
  color: white;
}
.status .in-progress,
.status.choice .in-progress {
  background-color: #ffc107;
  color: black;
}
.status .overdue,
.status.choice .overdue {
  background-color: #D83B01;
  color: white;
}
.status .done,
.status.choice .done {
  background-color: #F3F2F1;
  color: black;
}
.status .clarification,
.status.choice .clarification {
  background-color: #FF8000;
  color: white;
}
.status .deleted,
.status.choice .deleted {
  background-color: #23272b;
  color: white;
}
.status option.clarification,
.status.choice option.clarification {
  background-color: white;
  color: #FF8000;
}

.workflow-details {
  padding-bottom: 20px;
}
.workflow-details .work-flow-detail-header {
  margin-top: 20px;
  font-size: 1rem;
}
.workflow-details .work-flow-detail-header .actions {
  flex-direction: row-reverse;
  display: flex;
}
.workflow-details .work-flow-detail-header .actions button {
  margin-left: 14px;
}
.workflow-details .work-flow-detail-header .general-section {
  margin-top: 12px;
}
.workflow-details .head-field {
  height: 40px;
}
.workflow-details .label {
  font-weight: 500;
}
.workflow-details .form-control-label {
  margin-top: 6px;
}
.workflow-details .section-header {
  display: flex;
  justify-content: space-between;
  border-bottom: solid 2px lightgrey;
  padding-bottom: 2px;
  margin-top: 30px;
  margin-bottom: 12px;
}
.workflow-details .section-header h3 {
  font-size: 1.05rem;
  font-weight: 600;
  margin-bottom: 0px;
}
.workflow-details .section-header .collpase-icon {
  cursor: pointer;
  margin-right: 3px;
  color: #0078D4;
}
.workflow-details .section-header .collpase-icon svg {
  fill: gray;
}
.workflow-details .workflow-condition-form, .workflow-details .workflow-action-form {
  display: none;
}
.workflow-details .expanded .workflow-condition-form, .workflow-details .expanded .workflow-action-form {
  display: block;
}

.workflow-index .workflow-entities {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: #F3F2F1;
}
.workflow-index .workflow-entities .vue-btn {
  margin-right: 20px;
}
.workflow-index .add svg {
  fill: #0078D4;
}
.workflow-index tr.workflow .actions {
  margin-left: 30px;
}
.workflow-index tr.workflow .actions .remove svg {
  fill: #dc3545;
}
.workflow-index .active-index {
  height: 23px;
  width: 23px;
  border-radius: 0px;
  margin-left: 10px;
  margin-top: 0px;
}
.workflow-index .active-index:checked {
  background-color: #0078D4;
}

.workflow-action {
  border: solid 1px lightgray;
  margin-top: 10px;
  padding: 16px;
  min-height: 200px;
  margin-bottom: 10px;
}
.workflow-action .form-section {
  margin-bottom: 20px;
}
.workflow-action .form-section .form-group {
  display: flex;
  margin-left: 0px;
}
.workflow-action .form-section .form-group > label {
  margin-top: 6px;
  margin-right: 10px;
}
.workflow-action .form-section .form-group.align-center {
  align-items: center;
}
.workflow-action .handler-section {
  display: flex;
}
.workflow-action .handler-section .form-group {
  width: 100%;
}
.workflow-action .handler-section .remove-action {
  fill: red;
}

.workflow-condition {
  border: solid 1px lightgray;
  margin-top: 10px;
  padding: 16px;
  min-height: 200px;
  margin-bottom: 10px;
}
.workflow-condition .form-section {
  margin-bottom: 20px;
}
.workflow-condition .form-section .form-group {
  display: flex;
  margin-left: 0px;
}
.workflow-condition .form-section .form-group > label {
  margin-top: 6px;
  margin-right: 10px;
}
.workflow-condition .type-section {
  display: flex;
}
.workflow-condition .type-section .form-group {
  width: 100%;
}
.workflow-condition .type-section .remove-condition {
  fill: red;
}

.document-details .document-details-header {
  margin-top: 28px;
}
.document-details .form-control-label {
  margin-top: 6px;
}
.document-details .file-section .form-group.file iframe, .document-details .file-section .form-group.file object {
  aspect-ratio: 1.4142;
}

.related-documents .file {
  width: 100%;
  max-width: calc(40vw + 120px);
}
.related-documents .file p {
  display: flex;
  align-items: center;
  margin: 0px;
}
.related-documents .file p .download {
  display: flex;
  align-items: center;
  cursor: pointer;
}
.related-documents .file p .download i {
  font-size: 17px;
  margin-right: 10px;
  fill: darkgray;
}
.related-documents .file p .download[disabled=true] {
  cursor: initial;
}
.related-documents .file p .actions {
  margin-left: auto;
  display: flex;
}
.related-documents .file p .actions .delete {
  cursor: pointer;
  fill: #D83B01;
}
.related-documents .file p .actions .delete:hover {
  fill: #920f0f;
}
.related-documents .file p .actions .download {
  cursor: pointer;
  fill: black;
  margin-right: 20px;
}
.related-documents .file p .actions .download:hover {
  fill: darkgrey;
}
.related-documents .file hr {
  margin-top: 2px;
}

.document-request .document-request-form {
  padding-left: var(--lg-content-padding-left);
  padding-right: var(--lg-content-padding-right);
  margin-bottom: 80px;
}
.document-request .document-request-form .form-group {
  margin-left: 0px;
}
.document-request .document-request-form .reset-date-group {
  margin-top: 10px;
}
/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Person/PersonAcls.vue?vue&type=style&index=0&id=06570b8f&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

.person-acls[data-v-06570b8f] {
    margin-bottom: 60px;
    padding-left: calc(var(--bs-gutter-x)*.5);
    padding-right: calc(var(--bs-gutter-x)*.5);
}
.form-check-lite.hidden[data-v-06570b8f] {
    display: none;
}
.acl-container[data-v-06570b8f] {
    display: flex;
    flex-wrap: wrap;
    margin-left: 10px;
    flex: 0 0 70%;
}
.col-form-label[data-v-06570b8f] {
    flex: 0 0 30%;
}
.form-check-lite[data-v-06570b8f] {
    flex: 0 0 100%;
    display: flex;
    align-items: center;
    margin-bottom: 1px;
}
.form-check-lite[data-v-06570b8f]:not(.group-header) {
    padding-left: 30px;
}
.form-check-lite.group-header[data-v-06570b8f] {
    padding-top: 3px;
    margin-top: 3px;
    border-top: 1px solid #e9ecef;
}
.form-check-lite.group-header[data-v-06570b8f]:first-child {
    margin-top: 0px;
    padding-top: 0px;
    border-top: none;
}
.form-check-lite .form-check-label[data-v-06570b8f] {
    width: 100% !important;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Document/DocumentBuilder.vue?vue&type=style&index=0&id=3afe5636&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/

.document-builder {
        margin-top: 20px;
}
.document-block-edit {
        margin-top: 10px;
        margin-bottom: 20px;
}
.document-block-drop{
        height: 16px;
}
.drop-line {
        margin: 0px;
        border: 2px solid blue;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Document/DocumentNew.vue?vue&type=style&index=0&id=1c6fed6a&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************/

.document-new {
        margin-top: 40px;
        margin-bottom: 200px;
}
.container-versions{
        margin-top: 20px;
}
.container-new-document-choice{
        margin-top: 40px;
}
.container-new-document-choice .btn{
       margin-right: 20px;
}
.container-pdf-upload{
        margin-top: 20px;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Document/DocumentIndex.vue?vue&type=style&index=0&id=3570ecb6&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************/

table tr th[data-v-3570ecb6]:first-child,
table tr td[data-v-3570ecb6]:first-child,
.vue-table tr th[data-v-3570ecb6]:first-child,
.vue-table tr td[data-v-3570ecb6]:first-child {
  padding-left: 14px;
  padding-right: 10px;
  min-width: 43px;
}
.table tr td.subheader[data-v-3570ecb6], .vue-table tr td.subheader[data-v-3570ecb6] {
  padding-left: 0px;
}
.file-icon[data-v-3570ecb6] {
  font-size: 20px;
}
.file-icon.child[data-v-3570ecb6] {
  font-size: 18px;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/form/VueMultiSelectSearch.vue?vue&type=style&index=0&id=15b508ea&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/

.plugin-dropdown_input[data-v-15b508ea] {
    display: flex !important;
    align-items: center;
}
p.placeholder[data-v-15b508ea] {
    background-color: inherit;
    margin: 0px;
    margin-left: 0.75rem;
    cursor: initial;
    display: flex;
    width: 100%;
    opacity: 1;
}
.placeholder .collpase-icon[data-v-15b508ea] {
    margin-left: auto;
}
.placeholder svg[data-v-15b508ea] {
    fill: gray;
    opacity: 1;
}
.placeholder .text[data-v-15b508ea] {
    opacity: .5;
}
.placeholder.single-value .text[data-v-15b508ea] {
    opacity: 1;
}
.ts-wrapper.multi .ts-control[data-v-15b508ea] {
    padding: 2px 0.75rem 3px 0px !important;
}
.search-input[data-v-15b508ea] {
    background-color: #F3F2F1;
    margin: 3px 0rem !important;
}
.search-input[data-v-15b508ea]:focus {
    outline: none !important;
    border: none !important;
}
.ts-dropdown-content .option[data-v-15b508ea] {
    padding: 3px 0rem !important;
}
.ts-control[data-v-15b508ea] {
    background-color: inherit;
}
.external-container[data-v-15b508ea] {
    overflow-y: hidden !important;
    width: 100%;
}
.internal-container[data-v-15b508ea] {
    padding: 0rem !important;
    margin-bottom: 2px !important;
    overflow-x: auto !important;
}
.option[data-v-15b508ea] {
    width: 100%;
}
.option.remove-option[data-v-15b508ea] {
    color: red;
}
.option.no-option[data-v-15b508ea]:hover {
    cursor: initial;
    background-color: initial !important;
}
.bottom-space[data-v-15b508ea] {
    height: 36px;
}
.group-title[data-v-15b508ea] {
    background: var(--form-type-autocomplete-optgroup-bg);
    color: var(--form-type-autocomplete-optgroup-color);
    font-size: 13px;
    font-weight: 700;
}
.vue-multiselect.required .ts-wrapper[data-v-15b508ea] {
    border: 1px solid #dc2626 !important;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Document/RelatedDocumentsModal.vue?vue&type=style&index=0&id=55d55df6&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************/

.document-filters-section .search-container {
    margin: 20px 0px;
    border-bottom: 1px solid rgb(240, 240, 240);
}
.document-filters-section .content-search-label {
    display: flex;
    align-items: center;
    padding-left: var(--lg-content-padding-left);
    justify-content: center;
}
.document-filters-section .content-search-label input {
    width: 300px;
    margin-left: 10px;
    margin-right: 100px;
}
.document-filters-section .content-search-label .content-search-icon {
    font-size: 20px;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Document/RelatedDocuments.vue?vue&type=style&index=0&id=ff59d790&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/

.related-document-modal .modal-vue3-header {
    height: 48px;
}
.related-document-modal .modal-vue3-body {
    padding: 0px !important;
}
.related-document-modal .modal-vue3-footer {
    display: none !important;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/Document/RelatedDocuments.vue?vue&type=style&index=1&id=ff59d790&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/

.related-documents[data-v-ff59d790] {
    margin-bottom: 70px;
    padding-left: 12px;
}
.select-document-label[data-v-ff59d790] {
    padding: 0px;
}

/*!***************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/crud/CrudNew.vue?vue&type=style&index=0&id=401744ce&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************/

.noMarginBtn .custom-form-container {
  margin-bottom: 0px;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueCell.vue?vue&type=style&index=0&id=f656ee12&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/

.flag-icon {
  margin-right: 6px;
}
.image img {
  max-width: 100%;
  max-height: 100%;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/fields/VueMultiSelectField.vue?vue&type=style&index=0&id=500ef3d6&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************/

.placeholder .collpase-icon[data-v-500ef3d6] {
    margin-left: auto;
}
.placeholder svg[data-v-500ef3d6] {
    fill: gray;
    opacity: 1;
}
.placeholder .text[data-v-500ef3d6] {
    opacity: .5;
}
.placeholder.single-value .text[data-v-500ef3d6] {
    opacity: 1;
}
.search-input[data-v-500ef3d6]:focus {
    outline: none !important;
    border: none !important;
}
.ts-control[data-v-500ef3d6] {
    background-color: inherit;
}
.temp-form.vue-form .form-section .vue-multiselect .form-widget .form-multi-select .item[data-v-500ef3d6] {
    border-radius: 15px;
    padding: 0px 8px;
    padding-right: 16px;
}
.vue-remove[data-v-500ef3d6] {
    border-radius: 15px;
    color: rgb(96, 94, 92);
    height: 24px;
    width: 24px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: 5px;
}
.vue-remove[data-v-500ef3d6]:hover {

    background: rgb(200, 200, 200);
}
.flag-icon[data-v-500ef3d6] {
    margin-right: 6px;
}
.bottom-space[data-v-500ef3d6] {
    height: 36px;
}
.group-title[data-v-500ef3d6] {
    background: var(--form-type-autocomplete-optgroup-bg);
    color: var(--form-type-autocomplete-optgroup-color);
    font-size: 13px;
    font-weight: 700;
}
.vue-multiselect.required .ts-wrapper[data-v-500ef3d6] {
    border: 1px solid #dc2626 !important;
}
.single-value[data-v-500ef3d6] {
    margin-top: 2px !important;
}
.ts-wrapper[data-v-500ef3d6] {
    min-height: 32px !important;
}
.disabled .ts-control[data-v-500ef3d6] {
    opacity: .85;
    border-color: light-dark(rgb(84, 84, 84)) !important;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/fields/VueUpload.vue?vue&type=style&index=0&id=4d5d7e9c&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************/

.required .fileupload-container .input-container {
    border: 1px solid #dc3545 !important;
}
.fileupload-container .input-container {
    width: fit-content !important;
    flex-grow: initial !important;
}
.upload-list {}
.upload-list .file-label {
    max-width: none !important;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VuePdf2.vue?vue&type=style&index=0&id=ee21a3d6&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/

/* Add styles for your PDF viewer here */
.action-bar[data-v-ee21a3d6] {
    display: flex;
    justify-content: center;
    margin-bottom: 10px;
}
.pdf-container[data-v-ee21a3d6] {
    width: 100%;
}
canvas[data-v-ee21a3d6] {
    border: 1px solid #ccc;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueField.vue?vue&type=style&index=0&id=029b3835&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************/

.ck-editor .ck-content[data-v-029b3835] {
  min-height: 124px;
  /* Replace with the height you want */
}
.ck.ck-powered-by[data-v-029b3835] {
  display: none !important;
}
.file .label-expand-container[data-v-029b3835] {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.file .fas[data-v-029b3835] {
  cursor: pointer;
}
.file .fa-download[data-v-029b3835],
.file .label-expand-icon[data-v-029b3835] {
  margin-left: 20px;
}
.html-list[data-v-029b3835] {
  max-height: none !important;
  min-height: 40px;
}
.vue-message-input[data-v-029b3835] {
  padding: 6px;
}
.form-group.messages[data-v-029b3835] {
  margin-top: 18px;
  display: flex !important;
  flex-direction: column-reverse;
}
.message.info .message-header[data-v-029b3835] {
  color: #0078d4;
}
.message.warning .message-header[data-v-029b3835] {
  color: #d83b01;
}
.upload-list[data-v-029b3835] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
}
.upload.actions[data-v-029b3835] {
  width: 10%;
}
.upload.actions .fa-eye[data-v-029b3835] {
  margin-right: 10px;
}
.readonly .vue-btn-action[data-v-029b3835] {
  opacity: 0.6;
  cursor: not-allowed;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueField.vue?vue&type=style&index=1&id=029b3835&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************/

.vue-field-html[disabled=true] .ck.ck-editor__top {
  display: none;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueFilter.vue?vue&type=style&index=0&id=570f7666&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************/

.vue-filters[data-v-570f7666] {
  width: 100%;
}
.vue-filters-options[data-v-570f7666] {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-end;
}
.vue-filter-index-field[data-v-570f7666] {
  flex: 1 1 220px;
  min-width: 220px;
  max-width: 320px;
}
.filter-field[data-v-570f7666] {
  border-top: none;
  display: flex;
  flex-direction: column;
  width: 100%;
}
.filter-field label[data-v-570f7666] {
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 6px;
  color: #323130;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
}
.filter-input[data-v-570f7666] {
  padding: 8px 12px;
  border: 1px solid #d2d0ce;
  border-radius: 4px;
  font-size: 14px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  background-color: #ffffff;
  color: #323130;
  height: 32px;
  box-sizing: border-box;
  transition: all 0.1s ease-in-out;
}
.filter-input[data-v-570f7666]:hover {
  border-color: #c7c6c4;
  box-shadow: 0 0 0 1px #c7c6c4;
}
.filter-input[data-v-570f7666]:focus {
  border-color: #0078d4;
  outline: none;
  box-shadow: 0 0 0 1px #0078d4;
  background-color: #ffffff;
}
.filter-input[data-v-570f7666]::placeholder {
  color: #605e5c;
  font-style: normal;
}
.filter-select[data-v-570f7666] {
  padding: 6px 12px;
  border: 1px solid #d2d0ce;
  border-radius: 4px;
  font-size: 14px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  background-color: #ffffff;
  color: #323130;
  min-height: 32px;
  max-height: 120px;
  transition: all 0.1s ease-in-out;
}
.filter-select[data-v-570f7666]:hover {
  border-color: #c7c6c4;
  box-shadow: 0 0 0 1px #c7c6c4;
}
.filter-select[data-v-570f7666]:focus {
  border-color: #0078d4;
  outline: none;
  box-shadow: 0 0 0 1px #0078d4;
}

/* Date range specific styling */
.filter-date-range[data-v-570f7666] {
  min-width: 280px;
}
.date-range-inputs[data-v-570f7666] {
  display: flex;
  align-items: center;
  gap: 8px;
}
.filter-date-start[data-v-570f7666],
.filter-date-end[data-v-570f7666] {
  flex: 1;
}
.date-separator[data-v-570f7666] {
  font-size: 12px;
  color: #605e5c;
  font-weight: 500;
  white-space: nowrap;
  padding: 0 4px;
}

/* Microsoft 365 Button Style (if you add clear/apply buttons) */
.filter-button[data-v-570f7666] {
  background-color: #0078d4;
  border: 1px solid #0078d4;
  color: #ffffff;
  font-size: 14px;
  font-weight: 600;
  padding: 6px 16px;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.1s ease-in-out;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
}
.filter-button[data-v-570f7666]:hover {
  background-color: #106ebe;
  border-color: #106ebe;
}
.filter-button[data-v-570f7666]:active {
  background-color: #005a9e;
  border-color: #005a9e;
}
.filter-button-secondary[data-v-570f7666] {
  background-color: transparent;
  border: 1px solid #d2d0ce;
  color: #323130;
}
.filter-button-secondary[data-v-570f7666]:hover {
  background-color: #f3f2f1;
  border-color: #c7c6c4;
}

/* Responsive breakpoints */
@media (max-width: 768px) {
.vue-filters[data-v-570f7666] {
    padding: 12px;
    margin-bottom: 12px;
}
.vue-filters-options[data-v-570f7666] {
    gap: 12px;
}
.vue-filter-index-field[data-v-570f7666] {
    flex: 1 1 100%;
    max-width: none;
    min-width: auto;
}
.filter-date-range[data-v-570f7666] {
    min-width: auto;
}
.date-range-inputs[data-v-570f7666] {
    flex-direction: column;
    gap: 8px;
}
.date-separator[data-v-570f7666] {
    display: none;
}
}
@media (min-width: 769px) and (max-width: 1024px) {
.vue-filter-index-field[data-v-570f7666] {
    flex: 1 1 calc(50% - 8px);
}
}
@media (min-width: 1025px) {
.vue-filter-index-field[data-v-570f7666] {
    flex: 1 1 calc(33.333% - 11px);
}
}

/* Microsoft 365 Focus States */
.filter-field:focus-within label[data-v-570f7666] {
  color: #0078d4;
}

/* Loading state styling (Microsoft 365 shimmer effect) */
.filter-loading[data-v-570f7666] {
  background: linear-gradient(90deg, #f3f2f1 25%, #faf9f8 50%, #f3f2f1 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  border-radius: 4px;
  height: 32px;
}
.vue-btn[data-v-570f7666] {
  margin-top: 16px;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueFilter.vue?vue&type=style&index=1&id=570f7666&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************/

.filter-field label {
  max-width: none !important;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueTableGroup.vue?vue&type=style&index=0&id=5aad8cb4&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/

/* Add your styles here */

/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueChildrenDetails.vue?vue&type=style&index=0&id=6a91cb84&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/

.base-detail-actions .vue-btn {
  margin-right: 32px;
  display: inline-flex;
  align-content: flex-end;
  flex-wrap: nowrap;
  flex-direction: row;
  align-items: center;
  justify-content: space-around;
.icon {
    margin-left: 10px;
}
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueVersionControl.vue?vue&type=style&index=0&id=cb80298c&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************/

.changelogs-content {
    margin-top: 36px !important;
    display: flex;
    flex-direction: column-reverse;
}
.changelogs h6 {
    font-size: 14px;
}

/*!************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueDetails.vue?vue&type=style&index=0&id=7915c8bd&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************/

.base-detail-actions .vue-btn {
  margin-right: 32px;
  display: inline-flex;
  align-content: flex-end;
  flex-wrap: nowrap;
  flex-direction: row;
  align-items: center;
  justify-content: space-around;
.icon {
    margin-left: 10px;
}
}
.group-btn.new {
  margin-right: 0px !important;
}
.group-btn.new .btn-label {
  display: flex;
  justify-content: center;
  align-items: center;
}
.group-btn.new .action-label {
  margin-left: 2px;
}
.group-btn.new .btn-label i {
  margin-right: 4px !important;
  margin-left: 4px;
}
hr.vue-border {
  opacity: 1;
  color: #eaeaea;
}
.action-wait.detail-footer * {
  opacity: 0.5;
  pointer-events: none;
}
.title-container {
  display: flex;
  align-items: flex-end;
}
.title-container span {
  margin-left: 1rem;
  margin-bottom: 14px;
}
.title-container .status.active {
  color: #0d6efd;
  /* Bootstrap 5 primary */
  font-weight: bold;
}
.title-container .status.draft {
  color: #dc3545;
  /* Bootstrap 5 danger */
  font-weight: bold;
}
.title-container .status.updated {
  color: #ffc107;
  /* Bootstrap 5 warning */
  font-weight: bold;
}
.btn-link.vue-field-label button {
    margin-left: 0px !important;
}
.btn-link.vue-field-label a {
    margin-bottom: 0px !important;
    color: black !important;
    text-decoration: none !important;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VueMessages.vue?vue&type=style&index=0&id=0ba7b561&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************/

.modals-container {
    width: 100%;
    height: 100%;
}
.editor-label {
    font-weight: 500;
}
.simple-modal .modal-vue3-content {
    top: 25vh !important;
    max-width: 700px !important;
}
.simple-modal.documentUpdate .modal-vue3-content,
.simple-modal.versionUpdate .modal-vue3-content {
    width: 75% !important;
    max-width: 700px !important;
}
.simple-modal .modal-vue3-header {
    display: none !important;
}
.simple-modal .modal-vue3-body {
    padding: 0px !important;
}
.simple-modal .modal-vue3-footer {
    display: none !important;
    background-color: inherit !important;
}
.configuration .simple-modal-container .modal-content {
    padding: 24px 24px;
    font-size: 14px;
    line-height: 20px;
    font-weight: 400;
}
.configuration .simple-modal-container .modal-content .form-check-input {

    height: 20px;
    width: 20px;
    font-size: 14px;
    margin-right: 6px;
}
.configuration .simple-modal-container .modal-content .checkbox-group {
    margin: 0px;
    display: flex;
    align-items: center;
}
.configuration .form-check-input:focus {
    box-shadow: none !important;
}
.configuration .modal-content--header h2.title {
    padding-top: 0px !important;
    padding-bottom: 22px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
}
.iframe-container .modal-vue3-content {
    width: 70% !important;
    max-width: none !important;
    overflow: hidden !important;
    height: fit-content;
    top: 50px !important;
    resize: both;
    min-width: 200px;
    min-height: 200px;
}
.iframe-container .modal-vue3-body {
    padding: 0px !important;
}
.video-container video {
    width: 100%;
    height: 100%;
}
.iframe-container.video-container .modal-vue3-content {
    resize: none !important;
}
.iframe-container.video-container .modal-vue3-content .modal-vue3-body {
    min-height: 270px;
    min-width: 480px;
    padding: 0px !important;
}
.iframe-container.video-container .modal-vue3-content {
    width: fit-content;
    height: fit-content;
    border: none !important;
    transform: translateY(50%) !important;
}
.video-container .modal-vue3-footer {
    display: none !important;
}
.ck.ck-editor__main>.ck-editor__editable {
    min-height: 200px;
}
.vue-form .form-section .form-group.document-update-checkbox {
    margin-top: 20px;
    margin-bottom: 20px;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Products/Article.vue?vue&type=style&index=0&id=1ddb05be&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

.new-attribute[data-v-1ddb05be] {
    color: rgb(0, 108, 190);
}
.new-attribute-group i[data-v-1ddb05be] {
    bottom: -2px;
    position: relative;
}
.delete[data-v-1ddb05be] {
    float: right;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Attributes/AttributeSet.vue?vue&type=style&index=0&id=0f2bb08a&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/

.new-attribute[data-v-0f2bb08a] {
    color: rgb(0, 108, 190);
}
.new-attribute-group i[data-v-0f2bb08a] {
    bottom: -2px;
    position: relative;
}
.delete[data-v-0f2bb08a] {
    float: right;
}

/*!***************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/form/VueForm.vue?vue&type=style&index=0&id=d6d697f2&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************/

.form-vue input {
    display: block
}
.form-vue button {
    margin-top: 30px;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Workflow/WorkflowIndex.vue?vue&type=style&index=0&id=7c957794&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************/

.workflow-entities button {
    height: auto;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/form/VueMultiSelect.vue?vue&type=style&index=0&id=72678aa2&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************/

.search-input[data-v-72678aa2]{
        margin-top: 6px !important;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Workflow/handlers/EmailHandler.vue?vue&type=style&index=0&id=508d4297&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/

.rawTemplate{
    background-color: #f5f5f5;
    padding: 10px;
    border-radius: 5px;
    margin-top: 10px;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Workflow/handlers/CreateTaskHandler.vue?vue&type=style&index=0&id=1954d5a0&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/

label {
  max-width: 120px;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Workflow/WorkflowCondition.vue?vue&type=style&index=0&id=282f1402&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************/
#important[data-v-282f1402] {
  margin-top: 6px;
}
/*!**************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Workflow/Workflow.vue?vue&type=style&index=0&id=794a2d2c&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************/

.iframe-container .modal-vue3-content {
  width: 50%;
  height: 80%;
  resize: both;
  min-width: 200px;
  min-height: 200px;
}
.iframe-container .modal-vue3-body {
  height: 100%;
}
.iframe-container .modal-vue3-header {
  display: none;
}
.iframe-container .modal-vue3-footer {
  display: none !important;
}
#notification {
  right: 20px !important;
  top: 20px !important;
  left: auto !important;
  z-index: 1000;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Document/DocumentNew.vue?vue&type=style&index=0&id=46547984&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************/

.changelogs-content {
    margin-top: 36px !important;
    display: flex;
    flex-direction: column-reverse;
}
.changelogs h6 {
    font-size: 14px;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Module/NormativeReferenceConfig.vue?vue&type=style&index=0&id=88275f78&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************/

#important[data-v-88275f78] {
  margin-top: 10px;
}
h4[data-v-88275f78] {
  margin-top: 20px;
  margin-bottom: 20px;
}
.section-space[data-v-88275f78]{
  margin-top: 20px;
}
.vue-form[data-v-88275f78]{
  margin-bottom: 100px;
}


/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/DocumentRequest/RequestDocumentModal.vue?vue&type=style&index=0&id=995a081e&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************/

textarea{
    width: 100%;
    min-height: 120px;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/components/VuePdf.vue?vue&type=style&index=0&id=6ac8ce26&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/

/* Add styles for your PDF viewer here */
.action-bar[data-v-6ac8ce26] {
    display: flex;
    justify-content: center;
    margin-bottom: 10px;
}
.pdf-container[data-v-6ac8ce26] {
    width: 100%;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/DocumentRequest/DocumentRequestDetail.vue?vue&type=style&index=0&id=dc341b32&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/

.generate-draft[data-v-dc341b32]{
    margin-top: 30px;
    margin-bottom: 20px;
}
iframe[data-v-dc341b32]{
    display: block;       /* iframes are inline by default */
    border: none;         /* Reset default border */
    height: 57vw;        /* Viewport-relative units */
    width: 80vw;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/DocumentRequest/DocumentRequestList.vue?vue&type=style&index=0&id=32c983b4&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************/

h6[data-v-32c983b4] {
  padding-left: var(--lg-content-padding-left);
    margin-top: 30px;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Company/CompanyConfig.vue?vue&type=style&index=0&id=4df2f92c&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/

#important[data-v-4df2f92c] {
    margin-top: 10px;
}
.vue-detail form[data-v-4df2f92c] {
    min-height: 60vh;
}

/*!************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Process/Process.vue?vue&type=style&index=0&id=2e1b48ec&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************/

.full-label {
    width: 100% !important;
}
.vue-field-label a {
    display: block;
    text-decoration: underline;
}
.file .label-expand-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-top: none;
}
.file .fas {
    cursor: pointer;
}
.file .fa-download {
    margin-left: 20px;
}
.file .ms-Icon--Delete {
    cursor: pointer;
    margin-left: 20px;
}
.full-label i {
    margin-left: 10px;
    cursor: pointer;
}
.vue-field-label a {
    margin-bottom: 10px !important;
}
.vue-field-container.textarea {
    max-width: 100%;
}
.vue-field-list>.label-expand-container:first-child {
    border-bottom: 1px solid #eaeaea;
    padding-bottom: 6px;
}
.vue-field-container.textarea .form-content {
    height: fit-content !important;
}
.loading-icon {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}
.form-control-label.title {
    font-weight: normal !important;
}
.form-control-label.description {
    font-weight: normal !important;
    font-size: 12px !important;
    max-width: 100% !important;
}
.vue-list-container.text-list {
    min-height: 36px;
}
.progress {
    margin-left: 10px;
    background-color: transparent;
}
.missing-document {
    color: #d32f2f;
    /* Material Design danger color */
}
.vue-btn.warning {
    margin-left: 3rem;
}


/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Approval/Approval.vue?vue&type=style&index=0&id=702bfca8&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************/

.approvalLabel[data-v-702bfca8] {
    font-weight: normal;
}
.approval-entity[data-v-702bfca8] {
    font-weight: normal;
    font-size: 18px;
}
.fileTemplate .vue-field-container[data-v-702bfca8] {
    max-width: 45% !important;
    width: 45% !important;
}
.file-template-content[data-v-702bfca8] {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}
.remarks-container[data-v-702bfca8] {
    padding-top: 8px;
    border-top: 1px solid #ccc;
    order: 11;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Approval/Approval.vue?vue&type=style&index=1&id=702bfca8&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************/

.fileTemplate .vue-field-container canvas {
    max-width: 100% !important;
    width: 100% !important;
    height: auto !important;
}
.vue-multiselect.disabled {
    display: flex !important;
    gap: 15px;
}
.message.feedback .message-header {
    color: #FF8800;
}
.vue-form .form-section .form-group label {
    min-width: 150px;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/js/pages/Task/TaskNew.vue?vue&type=style&index=0&id=0834c044&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/

.task-title {
  display: flex;
  align-items: center;
}
.task-title h2 {
  width: 100% !important;
  justify-content: flex-start !important;
}
.task-title p {
  margin-bottom: 0px;
  margin-left: 1rem;
  margin-bottom: 14px;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFrQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUNqQ0o7O0FDUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBRFVKO0FDUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBRFNKO0FFcEJBO0VBQ0k7SUFDSTtFRnNCTjtFRW5CRTtJQUVJO0lBQ0E7RUZvQk47RUVsQk07SUFDSTtJQUNBO0lBQ0E7SUFDQTtFRm9CVjtFRWxCVTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFRm9CZDtFRWxCYztJQUNJO0VGb0JsQjtFRWxCa0I7SUFDSTtJQUNBO0VGb0J0QjtFRWxCc0I7SURZcEI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQ2ZrRDtFRndCcEQ7QUFDRjtBRVpJO0VBQ0k7QUZjUjs7QUVWQTtFQUNJO0FGYUo7O0FFVkE7RUFDSTtBRmFKOztBRVZBO0VBQ0k7RUFDQTtBRmFKOztBR25FRTtFQUNFO0VBQ0E7QUhzRUo7QUdwRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhzRU47QUduRUk7RUFDRTtFQUNBO0VGTkY7RUFDQTtFQUNBO0VBQ0E7RUFDQSxjRk1RO0VFNkRSO0VBQ0E7RUFDQTtBRFVKO0FHMUVJO0VBQ0U7QUg0RU47QUczRU07RUFDRTtFQUNBO0FINkVSO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FINEVOO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0VBQ0E7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0VBQ0E7QUg0RU47QUcxRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0FINEVOO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0FINEVOO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0FINEVOO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtBSDRFTjtBRzFFSTtFQUNFO0FINEVOO0FHMUVJO0VBQ0U7QUg0RU47QUcxRUk7RUFDRTtFQUNBO0FINEVOO0FHMUVJO0VBQ0U7RUFDQTtBSDRFTjtBRzFFSTtFQUNFO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtBSDBFTjtBR3ZFUTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIeUVWO0FHdkVRO0VBQ0U7RUFDQTtBSHlFVjtBR3JFTTtFQUNFO0VBQ0E7QUh1RVI7QUd0RVE7RUFDQztFRmhJTDtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdFNkhxQztFRnhFckM7RUFDQTtFQUNBO0FEcUpKO0FHN0VRO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIK0VWO0FHM0VNO0VBQ0U7RUFDQTtBSDZFUjtBRzVFUTtFRmhKSjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGUVE7RUVvRFI7RUFDQTtFQUNBO0FEb0tKO0FHakZJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUhtRk47QUdqRkk7RUFDRTtBSG1GTjtBR2pGSTtFQUNFO0VBQ0E7RUFDQTtBSG1GTjtBR2pGSTtFQUNFO0VBQ0E7QUhtRk47QUdqRkk7RUFDRTtFQUNBO0VBQ0E7QUhtRk47QUdoRkk7RUY3S0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxjRk9RO0VFOENSO0VBQ0E7RUFDQTtFRW9IRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIeUZOO0FHaEZJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSGtGTjtBR2hGSTtFQUNFO0VBQ0E7RUFDQTtBSGtGTjtBR2hGSTtFQUNFO0VBQ0E7RUFDQTtBSGtGTjtBR2hGSTtFQUNFO0VBQ0E7QUhrRk47QUdoRkk7RUFDRTtFQUNBO0VBQ0E7QUhrRk47QUcvRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBSGlGTjtBR2hGTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FIa0ZSOztBSXBVQTs7Q0FBQTtBQUdBO0VBQ0U7RUFDQTtBSnVVRjtBSXBVQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FKc1VGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUlvRUE7RUFyWUU7QUpxVUY7O0FJb0VBO0VBcllFO0FKcVVGOztBSW9FQTtFQXJZRTtBSnFVRjs7QUt4dEJBO0VBQ0k7RUFDQTtFQUNBO0FMMnRCSjtBSzF0Qkk7RUFDSTtFQUNBO0FMNHRCUjs7QUt2dEJBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7QUx5dEJKO0FLdnRCSTtFQUNJO0VBQ0E7QUx5dEJSO0FLdnRCSTtFQUNJO0FMeXRCUjtBS3R0Qkk7RUFDSTtBTHd0QlI7QUt2dEJRO0VBQ0k7RUFDQTtBTHl0Qlo7QUtydEJLO0VBQ0c7RUFDQTtFQUNBO0VBQ0E7QUx1dEJSO0FLdHRCUTtFQUNJO0FMd3RCWjtBS3R0QlE7RUFDSTtFQUNBO0FMd3RCWjtBS3Z0Qlk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMeXRCaEI7QUt2dEJZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUx5dEJoQjtBS3h0QmdCO0VBQ0kseUJOcEREO0VNcURDO0VBQ0E7RUFDQTtBTDB0QnBCO0FLenRCb0I7RUFDSTtBTDJ0QnhCO0FLenRCb0I7RUFDSTtFQUNBO0FMMnRCeEI7QUt4dEJvQjtFQUNJO0VBQ0E7QUwwdEJ4QjtBS3Z0Qm9CO0VBQ0k7RUFDQTtBTHl0QnhCO0FLdnRCb0I7RUFDSSx1Qk41RVY7RU02RVU7RUFDQTtFQUNBLFlOM0VWO0FDb3lCZDtBS3B0Qm9CO0VBQ0k7RUFDQTtBTHN0QnhCO0FLcHRCb0I7RUFDSTtBTHN0QnhCO0FLbnRCZ0I7RUFDSTtFQUNBO0FMcXRCcEI7QUtqdEJRO0VBQ0k7RUFDQTtBTG10Qlo7QUtsdEJZO0VBQ0k7QUxvdEJoQjtBS2x0Qlk7RUFDSTtBTG90QmhCO0FLaHRCWTtFQUNJO0VBQ0E7QUxrdEJoQjtBSy9zQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTGl0Qlo7QUtodEJZO0VBQ0k7RUFDQTtBTGt0QmhCO0FLOXNCWTtFQUNJO0VBQ0E7QUxndEJoQjtBSzdzQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMK3NCWjtBSzlzQlk7RUFDSTtFQUNBO0FMZ3RCaEI7QUsxc0JRO0VBQ0k7QUw0c0JaOztBS3JzQkE7RUFFUTtJQUNJO0lBQ0E7RUx1c0JWO0VLcnNCYztJQUNJO0lBQ0E7RUx1c0JsQjtFS3BzQlU7SUFDSTtJQUNBO0lBQ0E7RUxzc0JkO0VLcnNCYztJQUNJO0lBQ0E7RUx1c0JsQjtFS25zQmM7SUFDSTtJQUNBO0VMcXNCbEI7RUtsc0JVO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUxvc0JkO0VLbnNCYztJQUNJO0lBQ0E7RUxxc0JsQjtBQUNGO0FNcDRCQTtFQUNJO0lBQ0kseUJQSVE7RUNrNEJkO0VNcDRCTTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VOczRCVjtFTXA0QlU7SUFDSTtJQUNBO0VOczRCZDtFTWw0Qk07SUFDSTtJQUNBLFlQRlE7SU9HUjtFTm80QlY7RU1sNEJVO0lBQ0k7SUFDQTtFTm80QmQ7RU1oNEJjO0lBQ0k7SUFDQTtJQUNBO0VOazRCbEI7RU1oNEJrQjtJQUNJO0lBQ0E7RU5rNEJ0QjtFTTczQlU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VOKzNCZDtFTTczQmM7SUFDSTtJQUNBO0VOKzNCbEI7RU01M0JrQjtJQUNJO0lBQ0E7RU44M0J0QjtFTTEzQmM7SUFDSTtJQUNBO0VONDNCbEI7RU0zM0JrQjtJQUNHO0VONjNCckI7RU0xM0JrQjtJQUNJO0lBQ0E7RU40M0J0QjtFTXQzQmtCO0lBQ0k7SUFDQTtJQUNBO0VOdzNCdEI7RU1qM0JrQjtJQUNJO0lBQ0E7RU5tM0J0QjtFTWgzQmtCO0lBQ0k7SUFDQTtJQUNBO0VOazNCdEI7RU05MkJjO0lBQ0k7RU5nM0JsQjtFTTcyQmM7SUFDSTtJQUNBLGNQbkdNO0lPb0dOLGVQcEdNO0lPcUdOO0VOKzJCbEI7RU03MkJrQjtJQUNJO0lBQ0E7RU4rMkJ0QjtFTTMyQmM7SUFDSTtFTjYyQmxCO0VNMTJCYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VONDJCbEI7RU16MkJzQjtJQUNJO0lBQ0E7RU4yMkIxQjtFTXYyQmtCO0lBQ0k7RU55MkJ0QjtFTW4yQlU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFTnEyQmQ7RU1uMkJjO0lBQ0k7RU5xMkJsQjtFTWwyQmM7SUFDSTtFTm8yQmxCO0VNaDJCVTtJQUNJO0VOazJCZDtFTTkxQk07SUFDSTtFTmcyQlY7RU01MUJFO0lBQ0k7SUFDQTtFTjgxQk47RU01MUJNO0lBQ0k7RU44MUJWO0VNMzFCTTtJQUNJO0lBQ0E7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VONDFCVjtFTTExQlU7SUFDSTtJQUNBO0lBQ0E7RU40MUJkO0VNMTFCYztJQUNJO0VONDFCbEI7RU12MUJNO0lBQ0k7RU55MUJWO0FBQ0Y7QU83aENBO0VBQ0k7SUFDSTtJQUNBO0VQK2hDTjtFTzloQ007SUFDSTtJQUNBO0VQZ2lDVjtFTzloQ2M7SUFDSTtJQUNBO0lBQ0E7RVBnaUNsQjtFTy9oQ2tCO0lBQ0k7RVBpaUN0QjtFTzloQ2M7SUFDSTtJQUNBO0lBQ0E7RVBnaUNsQjtFTzVoQ2tCO0lBQ0k7RVA4aEN0QjtFTzFoQ1U7SUFDSTtFUDRoQ2Q7QUFDRjtBUTFqQ0E7RUFDSTtBUjRqQ0o7QVEzakNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVI2akNSOztBUXhqQ0E7RUFDSTtJQUNJO0lBQ0EseUJUYmtCO0lTY2xCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVIyakNOO0VRempDTTtJQUNJO0lBQ0E7SUFDQSxZVFRTO0lTVVQ7RVIyakNWO0VRMWpDVTtJQUNJO0lBQ0E7SUFDQSxZVDdCRDtFQ3lsQ2I7RVF6akNVO0lBQ0k7RVIyakNkO0VRempDa0I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VSMmpDdEI7RVF6akNrQjtJQUNJO0lBQ0E7SUFDQTtFUjJqQ3RCO0VRMWpDc0I7SUFFSTtFUjJqQzFCO0VRcmpDVTtJQUNJO0lBQ0EsWVR6Q0s7SVMwQ0w7SUFDQTtJQUNBO0VSdWpDZDtFUXJqQ2M7SUFDSSx5QlQ1RFc7RUNtbkM3QjtFUXBqQ2M7SUFDSTtFUnNqQ2xCO0VRcmpDa0I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFUnVqQ3RCO0VRcmpDa0I7SUFDSSxZVDFFVDtJUzJFUztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUnVqQ3RCO0VRbmpDYztJQVNJO0lBQ0E7SUFDQTtJQUNBO0VSNmlDbEI7RVF4akNrQjtJQUNJLFlUeEZWO0lTeUZVO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVIwakN0QjtBQUNGO0FTNXBDSTtFQUNJO0FUOHBDUjtBUzVwQ0k7RUFDQTtFQUNBLHlCVkNlO0VVQWY7QVQ4cENKO0FTM3BDZ0I7RUFDSTtFQUVBO0FUNHBDcEI7QVMzcENvQjtFQUNJO0FUNnBDeEI7QVN2cENZO0VBQ0k7RUFtQ0E7RUFDQTtBVHVuQ2hCO0FTMXBDZ0I7RUFDSTtBVDRwQ3BCO0FTenBDZ0I7RUFDSSx5QlZsQks7RVVtQkw7QVQycENwQjtBU3pwQ2dCO0VBQ0k7RUFDQTtBVDJwQ3BCO0FTMXBDb0I7RUFDSTtBVDRwQ3hCO0FTenBDZ0I7RUFDSTtFQUtBO0VBQ0EseUJWbENRO0FDeXJDNUI7QVM1cENvQjtFQUNJLHlCVjdCVTtBQzJyQ2xDO0FTenBDb0I7RVJqQmhCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsY0ZSUTtBQ3FyQ1o7QVM3cENvQjtFQUNJO0FUK3BDeEI7QVM1cENnQjtFUnRDWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGTVE7RVU4QlE7QVRrcUNwQjtBUzdwQ29CO0VBQ0k7RUFDQTtBVCtwQ3hCO0FTNXBDZ0I7RUFDSSxZVnpETjtBQ3V0Q2Q7QVM3cENvQjtFQUNJO0FUK3BDeEI7QVM3cENtQjtFQUNLO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQrcEN4QjtBUzFwQ1E7RUFDSTtBVDRwQ1o7O0FVN3VDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZndkNKO0FVOXVDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZ3ZDUjtBVTl1Q1E7RUFDSTtFQUNBO0FWZ3ZDWjtBVTd1Q1E7RUFDSTtFQUNBO0VBQ0E7QVYrdUNaO0FVOXVDWTtFQUNJO0FWZ3ZDaEI7QVU1dUNRO0VBQ0k7QVY4dUNaO0FVMXVDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHVDUjtBVTF1Q1E7RUFDSTtBVjR1Q1o7QVV6dUNRO0VBQ0k7QVYydUNaO0FVdnVDSTtFQUVJO0VBQ0E7RUFDQTtBVnd1Q1I7QVVydUNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnV1Q1I7QVVydUNRO0VBQ0k7RUFDQTtBVnV1Q1o7QVVwdUNRO0VBQ0k7RUFDQTtBVnN1Q1o7QVVudUNRO0VBQ0k7RUFDQTtBVnF1Q1o7QVVudUNZO0VBQ0k7QVZxdUNoQjtBVWp1Q1E7RUFDSTtBVm11Q1o7QVVqdUNZO0VBQ0k7RUFDQTtBVm11Q2hCO0FVN3RDWTtFQUNJO0VBQ0E7RUFDQTtBVit0Q2hCO0FVMXRDSTtFQUNJO0FWNHRDUjtBVXp0Q0k7RUFDSTtBVjJ0Q1I7O0FXejBDQTtFQUNJO0FYNDBDSjtBVzEwQ0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVg0MENSO0FXMTBDUTtFQUNJO0FYNDBDWjtBV3owQ1E7RUFDSTtBWDIwQ1o7QVdwMENRO0VWaUJKO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsWVVwQmtDO0VBQzFCO0FYMDBDWjtBV3YwQ1E7RUFDSTtFQUNBO0FYeTBDWjtBV3QwQ1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHcwQ1o7QVd0MENZO0VBQ0kseUJacENTO0FDNDJDekI7QVdyMENZO0VBQ0k7QVh1MENoQjtBV3IwQ2dCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHUwQ3BCO0FXcDBDZ0I7RUFDSSx5QlpyRFE7QUMyM0M1QjtBV3AwQ29CO0VBQ0k7RUFDQTtFQUNBO0FYczBDeEI7QVdqMENZO0VBQ0k7RUFDQTtFQUNBO0FYbTBDaEI7QVc3ekNJO0VBQ0k7RUFDQTtFQUNBO0FYK3pDUjtBVzV6Q1k7RUFDSTtBWDh6Q2hCO0FXenpDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVgyekNSO0FXenpDUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYMnpDWjtBV3p6Q1k7RUFDSSx5Qlo1R1M7QUN1NkN6QjtBV3h6Q1k7RUFDSTtBWDB6Q2hCO0FXcHpDSTtFQUNJO0FYc3pDUjtBV256Q0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHF6Q1I7QVduekNRO0VBQ0k7RUFDQTtFQUNBO0FYcXpDWjtBV256Q1k7RUFDSTtBWHF6Q2hCO0FXaHpDSTtFQUNJO0FYa3pDUjtBV2p6Q1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWG16Q1o7O0FXM3lDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVg4eUNKOztBWTE5Q1E7RUFDSTtBWjY5Q1o7QVl6OUNJO0VBQ0k7QVoyOUNSO0FZejlDUTtFQUNJO0VBQ0E7QVoyOUNaO0FZejlDWTtFQUNJO0VBQ0E7QVoyOUNoQjtBWXg5Q1k7RUFDSTtFQUNBO0FaMDlDaEI7QVl0OUNRO0VBQ0k7QVp3OUNaO0FZdDlDWTtFQUNJO0FadzlDaEI7QVlwOUNRO0VBQ0k7RUFDQTtBWnM5Q1o7O0FZLzhDUTtFQUNJO0FaazlDWjtBWWg5Q1k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWms5Q2hCO0FZaDlDZ0I7RUFDSSxxQmJuRE07RWFvRE47QVprOUNwQjtBWS84Q2dCO0VBQ0k7RUFDQTtFQUNBO0FaaTlDcEI7QVk5OENnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmc5Q3BCO0FZOThDb0I7RUFDSTtFQUNBO0FaZzlDeEI7QVk5OEN3QjtFQUNJO0VBQ0E7RUFDQTtBWmc5QzVCO0FZNzhDd0I7RUFDSTtFQUNBO0VBQ0E7RUFDQSx5QmJuRlQ7RWFvRlM7QVorOEM1QjtBWTU4Q3dCO0VBQ0k7QVo4OEM1QjtBWTM4Q3dCO0VBQ0k7QVo2OEM1QjtBWTE4Q3dCO0VBQ0k7RUFDQTtBWjQ4QzVCO0FZejhDd0I7RUFDSTtFQUNBO0FaMjhDNUI7QVl0OENnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3OENwQjtBWXQ4Q29CO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp3OEN4QjtBWXQ4Q3dCO0VBQ0k7RUFDQTtFQUNBLGNiaklGO0FDeWtEMUI7QVluOEN3QjtFQUNJO0VBQ0E7RUFDQTtBWnE4QzVCO0FZaDhDZ0I7RUFDSTtFQUNBO0FaazhDcEI7QVkvN0NnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmk4Q3BCO0FZOTdDZ0I7RUFDSSx5QmJ2SkQ7QUN1bERuQjtBWTM3Q1k7RUFDRztBWjY3Q2Y7O0FhL2xEUTtFQUNJO0VBQ0E7QWJrbURaO0Fham1EWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtbURoQjtBYWptRGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtbURwQjtBYWptRGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm1tRHBCO0Fham1EZ0I7RUFDSTtFQUNBO0FibW1EcEI7QWFobURZO0VBQ0k7RUFDQTtFQUNBO0Fia21EaEI7QWFobURZO0VBQ0k7RUFDQTtFQUNBO0Fia21EaEI7O0FjMW9ESTtFQUNJO0VBQ0E7RUFDQTtBZDZvRFI7QWM1b0RRO0VBQ0k7RUFDQTtBZDhvRFo7O0FlcHBESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ1cERSO0FlcnBESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EseUJoQlRXO0FDZ3FEbkI7QWVycERJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmdXBEUjs7QWdCcnJEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ3ckRKO0FnQnRyREk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QWhCd3JEUjtBZ0JyckRJO0VBQ0k7RUFDQTtBaEJ1ckRSO0FnQnJyRFE7RUFDSTtBaEJ1ckRaO0FnQnByRFE7RUFDSTtFQUNBO0VBQ0E7QWhCc3JEWjtBZ0JsckRJO0VBQ0k7QWhCb3JEUjs7QWdCaHJEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCbXJESjs7QWdCL3FESTtFQUNJO0VBQ0E7QWhCa3JEUjs7QWdCL3FEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmlyREo7QWdCL3FESTtFQUNJO0FoQmlyRFI7QWdCOXFESTtFQUNJLDRCakI5Q1k7RWlCK0NaO0FoQmdyRFI7QWdCOXFEUTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBaEJnckRaOztBZ0J6cURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0cURKO0FnQjFxREk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0cURSO0FnQnpxREk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjJxRFI7QWdCdnFEUTtFQUNJO0FoQnlxRFo7QWdCdHFEUTtFQUNJO0FoQndxRFo7O0FnQmxxREk7RUFDSTtFQUNBO0FoQnFxRFI7QWdCcHFEUTtFQUNJO0VBQ0E7QWhCc3FEWjtBZ0JwcURRO0VBQ0k7RUFDQTtBaEJzcURaOztBaUI5eURRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQml6RFo7QWlCL3lEWTtFQUNJO0VBQ0E7RUFDQTtBakJpekRoQjtBaUI5eURZO0VBQ0k7RUFDQTtFQUNBO0FqQmd6RGhCO0FpQjN5RFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjZ5RFo7QWlCM3lEWTs7O0VBR0k7RUFDQTtBakI2eURoQjtBaUIxeURZO0VBQ0k7RUFDQTtBakI0eURoQjtBaUJ4eURnQjtFQUNJO0FqQjB5RHBCO0FpQnZ5RGdCO0VBQ0k7QWpCeXlEcEI7QWlCdHlEZ0I7RUFDSTtBakJ3eURwQjtBaUJyeURnQjtFQUNJO0FqQnV5RHBCO0FpQm55RFk7O0VBRUk7RUFDQTtFQUNBO0FqQnF5RGhCO0FpQmx5RFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJveURoQjtBaUJseURnQjtFQUNJO0FqQm95RHBCO0FpQmh5RFk7RUFDSTtFQUNBO0FqQmt5RGhCO0FpQmh5RGdCO0VBQ0k7RUFDQTtBakJreURwQjtBaUJoeURvQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJreUR4QjtBaUI3eERZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCK3hEaEI7QWlCNXhEWTtFQUNJO0FqQjh4RGhCO0FpQnZ4RFk7Ozs7RUFFSSx5QmxCM0hHO0VrQjRISDtFQUNBO0FqQjJ4RGhCO0FpQnp4RGdCOzs7Ozs7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQmd5RHBCO0FpQjV4RFk7O0VBQ0k7RUFDQTtBakIreERoQjtBaUIxeERZO0VoQjNIUjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGUlE7RWtCaUlJLHlCbEJuSkc7RWtCb0pIO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCZ3lEaEI7QWlCOXhEZ0I7RUFDSTtFQUNBO0FqQmd5RHBCO0FpQjF4RFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCNHhEaEI7QWlCMXhEZ0I7RUFFSTtFQUNBO0FqQjJ4RHBCO0FpQnZ4RFk7RUFDSTtBakJ5eERoQjtBaUJyeERRO0VBQ0k7QWpCdXhEWjtBaUJyeERZO0VBQ0k7QWpCdXhEaEI7QWlCcHhEWTtFQUNJLHlCbEI5TEc7RWtCK0xIO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzeERoQjtBaUJweERnQjtFQUNJO0FqQnN4RHBCO0FpQm54RGdCO0VBQ0k7QWpCcXhEcEI7QWlCL3dEWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQml4RGhCO0FpQi93RGdCO0VBQ0k7RUFDQTtBakJpeERwQjtBaUIvd0RvQjtFQUNJO0FqQml4RHhCO0FpQjF3RFk7RUFDSTtFQUNBO0FqQjR3RGhCO0FpQnp3RFk7RUFDSTtBakIyd0RoQjtBaUJ0d0RZO0VBQ0k7QWpCd3dEaEI7QWlCdHdEZ0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ3d0RwQjtBaUJ0d0RvQjtFQUNJLHlCbEIzUEw7QUNtZ0VuQjtBaUJsd0RRO0VBQ0k7QWpCb3dEWjtBaUJqd0RRO0VBQ0k7QWpCbXdEWjs7QWlCNXZEQTs7RUFFSTtBakIrdkRKOztBaUIzdkRJO0VBQ0k7RUFDQTtFQUNBO0VBRUE7QWpCNnZEUjtBaUIzdkRRO0VBRUk7RUFDQTtFQUNBO0VBQ0E7QWpCNHZEWjtBaUIxdkRZO0VBQ0k7QWpCNHZEaEI7QWlCenZEWTtFQUNJO0FqQjJ2RGhCO0FpQnh2RFk7RUFDSTtFQUNBO0FqQjB2RGhCO0FpQnh2RGdCO0VoQnJTWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGTVE7RWtCNlJRO0VBQ0E7QWpCOHZEcEI7QWlCenZEZ0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakIydkRwQjtBaUJ6dkRvQjtFQUNJO0FqQjJ2RHhCO0FpQnh2RG9CO0VBQ0k7QWpCMHZEeEI7QWlCdnZEb0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJ5dkR4QjtBaUJydkRvQjtFQUNJO0FqQnV2RHhCO0FpQmp2RFk7RUFDSTtBakJtdkRoQjtBaUJqdkRnQjtFQUNJO0FqQm12RHBCO0FpQmp2RGdCO0VBQ0k7QWpCbXZEcEI7QWlCOXVEZ0I7RUFDSTtFQUNBO0FqQmd2RHBCO0FpQjl1RG9CO0VBQ0k7QWpCZ3ZEeEI7QWlCMXVEUTtFQUVJO0VBQ0E7QWpCMnVEWjtBaUJ6dURZO0VBQ0k7QWpCMnVEaEI7QWlCdnVEUTtFQUVJO0FqQnd1RFo7QWlCcnVEUTtFQUNJO0FqQnV1RFo7QWlCbnVEUTtFQUVJO0VBQ0E7QWpCb3VEWjtBaUJqdURRO0VBRUk7RUFDQTtBakJrdURaO0FpQi90RFE7RUFDSTtBakJpdURaO0FpQjl0RFE7RUFDSTtFQUNBO0FqQmd1RFo7QWlCOXREWTtFQUNJO0VBQ0E7RUFDQTtBakJndURoQjs7QWlCMXREQTtFQUNJO0FqQjZ0REo7O0FpQnh0RFE7RUFDSTtBakIydERaO0FpQnp0RFk7RUFDSTtBakIydERoQjtBaUJ0dERJO0VBQ0k7QWpCd3REUjtBaUJ0dERRO0VBQ0k7QWpCd3REWjtBaUJydERRO0VBQ0k7QWpCdXREWjtBaUJwdERRO0VBQ0k7RUFDQTtFQUNBO0FqQnN0RFo7O0FrQnZwRUE7RWpCZUk7RUFDQTtFQUNBO0VBQ0E7RUFDQSxjRk1RO0VtQnZCUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EseUJuQkZ3QjtFbUJHeEI7RUFDQTtFQUNBO0VBQ0E7QWxCOHBFSjtBa0I3cEVJO0VBQ0k7RUFDQTtBbEIrcEVSO0FrQjdwRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEIrcEVSOztBa0I1cEVBO0VBQ0k7RUFDQTtFQUNBLDhCbkJEZ0I7QUNncUVwQjtBa0I5cEVJO0VBQ0k7RUFDQSxrQ25CSG1CO0VtQkluQiw4Qm5CSm1CO0FDb3FFM0I7O0FrQnhwRUE7RUFDSTtFQUNBO0VBQ0E7QWxCMnBFSjtBa0IxcEVJO0VBQ0k7RUFDQTtFQUNBO0FsQjRwRVI7O0FrQnhwRUE7RUFDSTtFQUNBO0VBQ0E7QWxCMnBFSjtBa0IxcEVJO0VBQ0k7RUFDQTtFQUNBO0FsQjRwRVI7O0FrQnhwRUE7RUFDSTtFQUNBO0VBQ0E7QWxCMnBFSjtBa0IxcEVJO0VBQ0k7RUFDQTtFQUNBO0FsQjRwRVI7O0FrQnhwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIycEVKO0FrQjFwRUk7RUFDSSx5Qm5CL0VpQjtBQzJ1RXpCO0FrQjFwRUk7RUFDSTtFQUNBO0VBQ0E7QWxCNHBFUjs7QW1CMXZFQTtFQUNFO0FuQjZ2RUY7O0FtQnp2RUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CNHZFSjtBbUIzdkVJO0VBQ0U7QW5CNnZFTjtBbUIxdkVJO0VBQ0U7QW5CNHZFTjtBbUJ4dkVFO0VBQ0U7QW5CMHZFSjtBbUJ2dkVNO0VsQmhCRjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGTVE7RW9CUUo7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CNnZFUjtBbUIxdkVJO0VsQjNCQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGTVE7QUNreEVaO0FtQi92RU07RUFDRTtBbkJpd0VSO0FtQjd2RU07RUFDRTtBbkIrdkVSOztBb0JqekVBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0EsNEJyQkhlO0VxQklmO0FwQm16RUo7QW9CanpFSTs7RUFDSTtFQUNBO0FwQm96RVI7QW9CanpFSTs7RUFDSTtBcEJvekVSO0FvQmp6RUk7O0VBQ0k7QXBCb3pFUjtBb0JsekVROztFQUNJO0FwQnF6RVo7QW9CbHpFUTs7RW5CZEo7RUFDQTtFQUNBO0VBQ0E7RUFDQSxjRk1RO0VFRFI7RUFDQTtFbUJNUTtBcEIyekVaO0FvQnh6RVE7O0VuQm5CSjtFQUNBO0VBQ0E7RUFDQTtFQUNBLGNGTVE7RXFCV0E7RUFDQTtBcEIrekVaO0FvQjd6RVk7O0VBQ0k7QXBCZzBFaEI7QW9COXpFZ0I7O0VBQ0k7RUFDQTtBcEJpMEVwQjtBb0IvekVvQjs7RUFDSTtBcEJrMEV4QjtBb0I3ekVZOztFQUNJO0FwQmcwRWhCO0FvQjl6RWdCOztFQUNJO0VBQ0E7QXBCaTBFcEI7QW9CL3pFb0I7O0VBQ0k7RUFDQTtBcEJrMEV4QjtBb0IvekVvQjs7RUFDSTtBcEJrMEV4QjtBb0IxekVROzs7O0VBRUk7RUFDQTtFQUNBO0FwQjh6RVo7QW9CNXpFWTs7OztFQUNJO0FwQmkwRWhCO0FvQjd6RVE7Ozs7RUFFSTtBcEJpMEVaO0FvQi96RVk7Ozs7RUFDSTtBcEJvMEVoQjtBb0JsMEVZOzs7O0VBQ0k7QXBCdTBFaEI7QW9CcjBFWTs7OztFQUNJO0FwQjAwRWhCO0FvQngwRVk7Ozs7RUFDSTtBcEI2MEVoQjtBb0IzMEVZOzs7O0VBQ0k7QXBCZzFFaEI7QW9CMTBFWTs7OztFQUNJO0VBQ0E7QXBCKzBFaEI7QW9CNzBFZ0I7Ozs7RUFDSTtFQUNBO0VBQ0E7QXBCazFFcEI7QW9CaDFFb0I7Ozs7RUFDSTtFQUNBO0FwQnExRXhCO0FvQi8wRVE7O0VBQ0k7QXBCazFFWjtBb0JoMUVZOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCbTFFaEI7QW9CajFFZ0I7O0VBQ0k7QXBCbzFFcEI7QW9CaDFFWTs7RUFDSTtFQUNBO0FwQm0xRWhCO0FvQi8wRVE7O0VBQ0k7RUFDQTtFQUNBO0FwQmsxRVo7QW9CLzBFUTs7RUFDSTtBcEJrMUVaO0FvQi8wRVE7O0VBQ0k7QXBCazFFWjtBb0IvMEVnQjs7RUFDSTtBcEJrMUVwQjtBb0I1MEVROztFQUNJO0VBQ0E7QXBCKzBFWjtBb0I3MEVZOztFQUNJO0FwQmcxRWhCO0FvQnowRVE7Ozs7RUFFSTtFQUNBO0FwQjYwRVo7O0FvQngwRUE7RUFDSTtBcEIyMEVKOztBb0J4MEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBCMjBFSjtBb0J6MEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0EseUJyQmxNUTtBQzZnRmhCO0FvQnowRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCMjBFWjtBb0J0MEVRO0VBQ0k7QXBCdzBFWjtBb0J0MEVZO0VBQ0kseUJyQi9NUztBQ3VoRnpCO0FvQnIwRVk7RUFDSSx5QnJCbE5ZO0FDeWhGNUI7QW9CcjBFZ0I7RUFDSSx5QnJCcE5jO0FDMmhGbEM7O0FxQnZpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCMGlGSjtBcUJ4aUZJO0VBQ0k7QXJCMGlGUjtBcUJ2aUZJO0VBQ0k7RUFDQTtFQUNBO0FyQnlpRlI7QXFCdGlGSTtFQUNJO0VBQ0E7RUFDQTtBckJ3aUZSOztBc0IvakZPO0VBQ0k7QXRCa2tGWDtBc0Joa0ZXO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRCa2tGZjtBc0Joa0ZlO0VBQ0kseUJ2QlBBO0FDeWtGbkI7QXNCOWpGVztFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QmdrRmY7QXNCOWpGZTtFQUNJLHFCdkJ4Qk87RXVCeUJQO0F0QmdrRm5CO0FzQjdqRmU7RUFDSTtFQUNBO0VBQ0E7QXRCK2pGbkI7QXNCNWpGZTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEI4akZuQjtBc0I1akZtQjtFQUNJO0VBQ0E7QXRCOGpGdkI7QXNCNWpGdUI7RUFDSTtFQUNBO0VBQ0E7QXRCOGpGM0I7QXNCM2pGdUI7RUFDSTtFQUNBO0VBQ0E7RUFDQSx5QnZCeERSO0V1QnlEUTtBdEI2akYzQjtBc0IxakZ1QjtFQUNJO0F0QjRqRjNCO0FzQnpqRnVCO0VBQ0k7QXRCMmpGM0I7QXNCeGpGdUI7RUFDSTtFQUNBO0F0QjBqRjNCO0FzQnZqRnVCO0VBQ0k7RUFDQTtBdEJ5akYzQjtBc0JwakZlO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJzakZuQjtBc0JwakZtQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QnNqRnZCO0FzQnBqRnVCO0VBQ0k7RUFDQTtFQUNBLGN2QnRHRDtBQzRwRjFCO0FzQmpqRnVCO0VBQ0k7RUFDQTtFQUNBO0F0Qm1qRjNCO0FzQjlpRmU7RUFDSTtFQUNBO0F0QmdqRm5CO0FzQjdpRmU7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRCK2lGbkI7QXNCNWlGZTtFQUNJLHlCdkI1SEE7QUMwcUZuQjs7QXVCanJGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EseUJ4QkVlO0FDa3JGbkI7QXVCbHJGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F2Qm9yRlI7QXVCbHJGUTtFQUNJO0F2Qm9yRlo7QXVCbHJGWTtFQUNJO0VBQ0E7RUFDQTtBdkJvckZoQjtBdUJsckZnQjtFQUNJO0F2Qm9yRnBCO0F1QjlxRlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZCZ3JGWjtBdUI5cUZZO0VBQ0k7RUFDQTtFQUNBO0F2QmdyRmhCO0F1QjlxRmdCO0VBQ0k7QXZCZ3JGcEI7QXVCNXFGWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkI4cUZoQjtBdUIzcUZZO0VBQ0k7RUFDQTtBdkI2cUZoQjtBdUIzcUZnQjtFQUNJO0F2QjZxRnBCO0F1QnRxRlk7O0VBRUk7QXZCd3FGaEI7QXVCbnFGWTtFQUNJO0F2QnFxRmhCO0F1QmhxRkk7RUFDSTtFQUNBO0VBQ0E7QXZCa3FGUjtBdUI5cEZRO0VBQ0k7QXZCZ3FGWjtBdUI3cEZRO0VBQ0k7RUFDQTtBdkIrcEZaOztBd0I1dkZBO0VBQ0k7QXhCK3ZGSjtBd0I3dkZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEIrdkZSO0F3Qjd2RlE7RUFDSTtBeEIrdkZaO0F3QjV2RlE7RUFDSSxxQnpCTUk7QUN3dkZoQjtBd0IzdkZRO0VBQ0k7QXhCNnZGWjtBd0IxdkZRO0VBQ0kscUJ6QkhDO0FDK3ZGYjtBd0J6dkZRO0VBQ0kscUJ6QkxJO0FDZ3dGaEI7QXdCeHZGUTtFQUNJO0F4QjB2Rlo7QXdCdnZGUTtFQUNJO0VBQ0E7QXhCeXZGWjtBd0J0dkZROztFQUVJO0F4Qnd2Rlo7QXdCcnZGUTtFQUNJO0VBQ0E7RUFDQTtBeEJ1dkZaO0F3QnJ2Rlk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhCdXZGaEI7QXdCcnZGZ0I7RUFDSTtBeEJ1dkZwQjtBd0JwdkZnQjtFQUVJLHlCekI3Q1A7RXlCOENPO0F4QnF2RnBCO0F3Qmx2RmdCO0VBQ0k7RUFDQTtBeEJvdkZwQjtBd0JqdkZnQjtFQUNJLHlCekJ0REo7RXlCdURJO0F4Qm12RnBCO0F3Qmh2RmdCO0VBQ0kseUJ6QjFEUDtFeUIyRE87QXhCa3ZGcEI7QXdCL3VGZ0I7RUFDSSx5QnpCOURKO0V5QitESTtBeEJpdkZwQjtBd0I5dUZnQjtFQUNJLHlCekJsRUo7RXlCbUVJO0F4Qmd2RnBCO0F3Qnp1RlE7RUFDSTtBeEIydUZaO0F3Qnp1Rlk7RUFDSTtBeEIydUZoQjtBd0J0dUZRO0VBQ0k7RUFDQTtBeEJ3dUZaO0F3QnR1Rlk7RUFDSTtFQUNBO0F4Qnd1RmhCO0F3QnR1RmdCO0VBQ0k7RUFDQTtFQUNBO0F4Qnd1RnBCO0F3QnR1Rm9CO0VBQ0k7QXhCd3VGeEI7QXdCdHVGd0I7RUFDSTtFQUNBO0F4Qnd1RjVCO0F3QnR1RjRCO0VBQ0k7QXhCd3VGaEM7QXdCbHVGZ0I7RUFDSTtBeEJvdUZwQjtBd0JqdUZnQjtFQUNJO0F4Qm11RnBCO0F3Qjl0RlE7RUFDSTtFQUNBO0VBQ0E7QXhCZ3VGWjtBd0I5dEZZO0VBQ0k7RUFDQTtBeEJndUZoQjtBd0I5dEZnQjtFQUNJO0VBQ0E7RUFDQTtBeEJndUZwQjtBd0I5dEZvQjtFQUNJO0VBQ0E7RUFDQTtBeEJndUZ4QjtBd0I5dEZ3QjtFQUNJO0VBQ0E7RUFDQTtBeEJndUY1QjtBd0I1dEZvQjtFQUNJO0F4Qjh0RnhCO0F3QjN0Rm9CO0VBQ0k7RUFDQTtBeEI2dEZ4QjtBd0IzdEZ3QjtFQUNJO0VBQ0E7QXhCNnRGNUI7QXdCM3RGNEI7RUFDSTtBeEI2dEZoQztBd0J6dEZ3QjtFQUNJO0VBQ0E7RUFDQTtBeEIydEY1QjtBd0J6dEY0QjtFQUNJO0F4QjJ0RmhDO0F3QnJ0RmdCO0VBQ0k7QXhCdXRGcEI7QXdCbHRGUTtFQUNJO0F4Qm90Rlo7O0F3Qi9zRkE7RUFDSTtFQUNBO0F4Qmt0Rko7QXdCaHRGSTtFQUNJO0F4Qmt0RlI7QXdCL3NGSTtFQUNJO0F4Qml0RlI7QXdCOXNGSTtFQUNJO0F4Qmd0RlI7QXdCN3NGSTtFQUNJO0F4QitzRlI7QXdCNXNGSTtFQUNJO0F4QjhzRlI7QXdCM3NGSTtFQUNJO0F4QjZzRlI7O0F5QnA3Rk07RUFDRTtBekJ1N0ZSO0F5Qm43Rkk7RUFDRTtFQUNBO0F6QnE3Rk47QXlCbjdGTTtFQUNFO0VBQ0E7RUFDQTtBekJxN0ZSO0F5Qmg3RkU7RUFDRTtBekJrN0ZKO0F5Qmg3Rkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qms3Rk47QXlCaDdGTTtFQUNFO0VBQ0E7RUFDQTtBekJrN0ZSO0F5Qi82Rk07RUFDRTtFQUNBO0VBQ0E7QXpCaTdGUjtBeUI3NkZJO0VBQ0U7QXpCKzZGTjs7QXlCdDZGRTs7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekIwNkZKO0F5QnY2RkU7O0VBQ0UseUIxQjlDUztFMEIrQ1Q7QXpCMDZGSjtBeUJ2NkZFOztFQUNFO0VBQ0E7QXpCMDZGSjtBeUJ2NkZFOztFQUNFLHlCMUJ2RFk7RTBCd0RaO0F6QjA2Rko7QXlCdjZGRTs7RUFDRSx5QjFCM0RTO0UwQjREVDtBekIwNkZKO0F5QnY2RkU7O0VBQ0UseUIxQi9EWTtFMEJnRVo7QXpCMDZGSjtBeUJ2NkZFOztFQUNFLHlCMUJuRVk7RTBCb0VaO0F6QjA2Rko7QXlCdjZGRTs7RUFDRTtFQUNBLGMxQjFFWTtBQ28vRmhCOztBMEJ6Z0dBO0VBQ0k7QTFCNGdHSjtBMEIzZ0dJO0VBQ0k7RUFDQTtBMUI2Z0dSO0EwQjVnR1E7RUFDSTtFQUNBO0ExQjhnR1o7QTBCN2dHWTtFQUNJO0ExQitnR2hCO0EwQjVnR1E7RUFDSTtBMUI4Z0daO0EwQjNnR0k7RUFDSTtBMUI2Z0dSO0EwQjNnR0k7RUFDSTtBMUI2Z0dSO0EwQjNnR0k7RUFDSTtBMUI2Z0dSO0EwQjNnR0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCNmdHUjtBMEI1Z0dRO0VBQ0k7RUFDQTtFQUNBO0ExQjhnR1o7QTBCNWdHUTtFQUNJO0VBQ0E7RUFDQTtBMUI4Z0daO0EwQjdnR1k7RUFDSTtBMUIrZ0doQjtBMEIxZ0dJO0VBQ0k7QTFCNGdHUjtBMEJ6Z0dJO0VBQ0k7QTFCMmdHUjs7QTJCN2pHSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCZ2tHUjtBMkIvakdRO0VBQ0k7QTNCaWtHWjtBMkI3akdRO0VBQ0k7QTNCK2pHWjtBMkIzakdRO0VBQ0k7QTNCNmpHWjtBMkIzakdnQjtFQUNJO0EzQjZqR3BCO0EyQnhqR0k7RUFJSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQnVqR1I7QTJCOWpHUTtFQUNJO0EzQmdrR1o7O0E0QjdsR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1QmdtR0o7QTRCL2xHSTtFQUNJO0E1QmltR1I7QTRCaG1HUTtFQUNJO0VBQ0E7QTVCa21HWjtBNEJqbUdZO0VBQ0k7RUFDQTtBNUJtbUdoQjtBNEJqbUdZO0VBQ0k7QTVCbW1HaEI7QTRCL2xHSTtFQUNJO0E1QmltR1I7QTRCaG1HUTtFQUNJO0E1QmttR1o7QTRCaG1HUTtFQUNJO0E1QmttR1o7O0E2QjVuR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QituR0o7QTZCOW5HSTtFQUNJO0E3QmdvR1I7QTZCL25HUTtFQUNJO0VBQ0E7QTdCaW9HWjtBNkJob0dZO0VBQ0k7RUFDQTtBN0Jrb0doQjtBNkI5bkdJO0VBQ0k7QTdCZ29HUjtBNkIvbkdRO0VBQ0k7QTdCaW9HWjtBNkIvbkdRO0VBQ0k7QTdCaW9HWjs7QThCdnBHSTtFQUNJO0E5QjBwR1I7QThCdnBHSTtFQUNJO0E5QnlwR1I7QThCcHBHWTtFQUNJO0E5QnNwR2hCOztBK0JqcUdJO0VBQ0k7RUFDQTtBL0JvcUdSO0ErQmxxR1E7RUFDSTtFQUNBO0VBQ0E7QS9Cb3FHWjtBK0JscUdZO0VBQ0k7RUFDQTtFQUNBO0EvQm9xR2hCO0ErQmxxR2dCO0VBQ0k7RUFDQTtFQUNBO0EvQm9xR3BCO0ErQmhxR1k7RUFDSTtBL0JrcUdoQjtBK0IvcEdZO0VBQ0k7RUFDQTtBL0JpcUdoQjtBK0IvcEdnQjtFQUNJO0VBQ0E7QS9CaXFHcEI7QStCL3BHb0I7RUFDSTtBL0JpcUd4QjtBK0I3cEdnQjtFQUNJO0VBQ0E7RUFDQTtBL0IrcEdwQjtBK0I3cEdvQjtFQUNJO0EvQitwR3hCO0ErQnpwR1E7RUFDSTtBL0IycEdaOztBZ0M5c0dJO0VBQ0k7RUFDQTtFQUNBO0FoQ2l0R1I7QWdDaHRHUTtFQUNJO0FoQ2t0R1o7QWdDaHRHUTtFQUNJO0FoQ2t0R1osQzs7Ozs7QWlDNStGQTtJQUNJLG1CQUFtQjtJQUNuQix5Q0FBeUM7SUFDekMsMENBQTBDO0FBQzlDO0FBRUE7SUFDSSxhQUFhO0FBQ2pCO0FBRUE7SUFDSSxhQUFhO0lBQ2IsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2pCO0FBRUE7SUFDSSxhQUFhO0FBQ2pCO0FBRUE7SUFDSSxjQUFjO0lBQ2QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixrQkFBa0I7QUFDdEI7QUFFQTtJQUNJLGtCQUFrQjtBQUN0QjtBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZiw2QkFBNkI7QUFDakM7QUFFQTtJQUNJLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0FBQ3BCO0FBRUE7SUFDSSxzQkFBc0I7SUFDdEIsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7QUFDbEM7Ozs7OztBQzNHSTtRQUNJLGdCQUFnQjtBQUNwQjtBQUVBO1FBQ0ksZ0JBQWdCO1FBQ2hCLG1CQUFtQjtBQUN2QjtBQUVBO1FBQ0ksWUFBWTtBQUVoQjtBQUVBO1FBQ0ksV0FBVztRQUNYLHNCQUFzQjtBQUMxQjs7Ozs7O0FDeklBO1FBQ0ksZ0JBQWdCO1FBQ2hCLG9CQUFvQjtBQUN4QjtBQUVBO1FBQ0ksZ0JBQWdCO0FBQ3BCO0FBRUE7UUFDSSxnQkFBZ0I7QUFDcEI7QUFDQTtPQUNHLGtCQUFrQjtBQUNyQjtBQUNBO1FBQ0ksZ0JBQWdCO0FBQ3BCOzs7Ozs7QUNzT0o7Ozs7RUFJRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGVBQWU7QUFDakI7QUFFQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUVBO0VBQ0UsZUFBZTtBQUNqQjtBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7Ozs7O0FDY0E7SUFDSSx3QkFBd0I7SUFDeEIsbUJBQW1CO0FBQ3ZCO0FBRUE7SUFDSSx5QkFBeUI7SUFDekIsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsYUFBYTtJQUNiLFdBQVc7SUFDWCxVQUFVO0FBQ2Q7QUFFQTtJQUNJLGlCQUFpQjtBQUNyQjtBQUVBO0lBQ0ksVUFBVTtJQUNWLFVBQVU7QUFDZDtBQUVBO0lBQ0ksV0FBVztBQUNmO0FBRUE7SUFDSSxVQUFVO0FBQ2Q7QUFFQTtJQUNJLHVDQUF1QztBQUMzQztBQUVBO0lBQ0kseUJBQXlCO0lBQ3pCLDJCQUEyQjtBQUUvQjtBQUVBO0lBQ0ksd0JBQXdCO0lBQ3hCLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksNEJBQTRCO0FBQ2hDO0FBRUE7SUFDSSx5QkFBeUI7QUFDN0I7QUFFQTtJQUNJLDZCQUE2QjtJQUM3QixXQUFXO0FBQ2Y7QUFFQTtJQUNJLHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0FBQy9CO0FBRUE7SUFDSSxXQUFXO0FBQ2Y7QUFFQTtJQUNJLFVBQVU7QUFDZDtBQUVBO0lBQ0ksZUFBZTtJQUNmLG9DQUFvQztBQUN4QztBQUVBO0lBQ0ksWUFBWTtBQUNoQjtBQUVBO0lBQ0kscURBQXFEO0lBQ3JELG1EQUFtRDtJQUNuRCxlQUFlO0lBQ2YsZ0JBQWdCO0FBQ3BCO0FBRUE7SUFDSSxvQ0FBb0M7QUFDeEM7Ozs7OztBQ3hXQTtJQUNJLGdCQUFnQjtJQUNoQiwyQ0FBMkM7QUFDL0M7QUFFQTtJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsNENBQTRDO0lBQzVDLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7QUFDdkI7QUFFQTtJQUNJLGVBQWU7QUFDbkI7Ozs7OztBQ29IQTtJQUNJLFlBQVk7QUFDaEI7QUFFQTtJQUNJLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksd0JBQXdCO0FBQzVCOzs7Ozs7QUFHQTtJQUNJLG1CQUFtQjtJQUNuQixrQkFBa0I7QUFDdEI7QUFFQTtJQUNJLFlBQVk7QUFDaEI7Ozs7OztBQzVMQTtFQUNFLGtCQUFrQjtBQUNwQjs7Ozs7O0FDMEpBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBRUE7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0FBQ2xCOzs7Ozs7QUMrTkE7SUFDSSxpQkFBaUI7QUFDckI7QUFFQTtJQUNJLFVBQVU7SUFDVixVQUFVO0FBQ2Q7QUFFQTtJQUNJLFdBQVc7QUFDZjtBQUVBO0lBQ0ksVUFBVTtBQUNkO0FBRUE7SUFDSSx3QkFBd0I7SUFDeEIsdUJBQXVCO0FBQzNCO0FBRUE7SUFDSSx5QkFBeUI7QUFDN0I7QUFFQTtJQUNJLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsbUJBQW1CO0FBQ3ZCO0FBRUE7SUFDSSxtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLFlBQVk7SUFDWixXQUFXO0lBQ1gsYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsZ0JBQWdCO0FBQ3BCO0FBRUE7O0lBRUksOEJBQThCO0FBQ2xDO0FBRUE7SUFDSSxpQkFBaUI7QUFDckI7QUFFQTtJQUNJLFlBQVk7QUFDaEI7QUFFQTtJQUNJLHFEQUFxRDtJQUNyRCxtREFBbUQ7SUFDbkQsZUFBZTtJQUNmLGdCQUFnQjtBQUNwQjtBQUVBO0lBQ0ksb0NBQW9DO0FBQ3hDO0FBRUE7SUFDSSwwQkFBMEI7QUFDOUI7QUFFQTtJQUNJLDJCQUEyQjtBQUMvQjtBQUVBO0lBQ0ksWUFBWTtJQUNaLG9EQUFvRDtBQUN4RDs7Ozs7O0FDclpBO0lBQ0ksb0NBQW9DO0FBQ3hDO0FBRUE7SUFDSSw2QkFBNkI7SUFDN0IsNkJBQTZCO0FBQ2pDO0FBRUEsY0FBYztBQUVkO0lBQ0ksMEJBQTBCO0FBQzlCOzs7Ozs7QUNDQSx3Q0FBd0M7QUFFeEM7SUFDSSxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtBQUN2QjtBQUVBO0lBQ0ksV0FBVztBQUVmO0FBRUE7SUFDSSxzQkFBc0I7QUFDMUI7Ozs7OztBQ3d2QkE7RUFDRSxpQkFBaUI7RUFDakIscUNBQXFDO0FBQ3ZDO0FBRUE7RUFDRSx3QkFBd0I7QUFDMUI7QUFFQTtFQUNFLGFBQWE7RUFDYiw4QkFBOEI7RUFDOUIsbUJBQW1CO0FBQ3JCO0FBRUE7RUFDRSxlQUFlO0FBQ2pCO0FBRUE7O0VBRUUsaUJBQWlCO0FBRW5CO0FBRUE7RUFDRSwyQkFBMkI7RUFDM0IsZ0JBQWdCO0FBQ2xCO0FBRUE7RUFDRSxZQUFZO0FBQ2Q7QUFFQTtFQUNFLGdCQUFnQjtFQUNoQix3QkFBd0I7RUFDeEIsOEJBQThCO0FBQ2hDO0FBRUE7RUFDRSxjQUFjO0FBQ2hCO0FBRUE7RUFDRSxjQUFjO0FBQ2hCO0FBRUE7RUFDRSxhQUFhO0VBQ2IsOEJBQThCO0VBQzlCLG1CQUFtQjtFQUNuQixXQUFXO0FBQ2I7QUFFQTtFQUNFLFVBQVU7QUFFWjtBQUVBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBRUE7RUFDRSxZQUFZO0VBQ1osbUJBQW1CO0FBQ3JCOzs7Ozs7QUFHQTtFQUNFLGFBQWE7QUFDZjs7Ozs7O0FDandCQTtFQUNFLFdBQVc7QUFDYjtBQUVBO0VBQ0UsYUFBYTtFQUNiLGVBQWU7RUFDZixTQUFTO0VBQ1QscUJBQXFCO0FBQ3ZCO0FBRUE7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtBQUNsQjtBQUVBO0VBQ0UsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVztBQUNiO0FBRUE7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixjQUFjO0VBQ2QsOEpBQThKO0FBQ2hLO0FBRUE7RUFDRSxpQkFBaUI7RUFDakIseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsOEpBQThKO0VBQzlKLHlCQUF5QjtFQUN6QixjQUFjO0VBQ2QsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixnQ0FBZ0M7QUFDbEM7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQiw2QkFBNkI7QUFDL0I7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixhQUFhO0VBQ2IsNkJBQTZCO0VBQzdCLHlCQUF5QjtBQUMzQjtBQUVBO0VBQ0UsY0FBYztFQUNkLGtCQUFrQjtBQUNwQjtBQUVBO0VBQ0UsaUJBQWlCO0VBQ2pCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLDhKQUE4SjtFQUM5Six5QkFBeUI7RUFDekIsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZ0NBQWdDO0FBQ2xDO0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsNkJBQTZCO0FBQy9CO0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsYUFBYTtFQUNiLDZCQUE2QjtBQUMvQjs7QUFFQSxnQ0FBZ0M7QUFDaEM7RUFDRSxnQkFBZ0I7QUFDbEI7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsUUFBUTtBQUNWO0FBRUE7O0VBRUUsT0FBTztBQUNUO0FBRUE7RUFDRSxlQUFlO0VBQ2YsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsY0FBYztBQUNoQjs7QUFFQSxnRUFBZ0U7QUFDaEU7RUFDRSx5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdDQUFnQztFQUNoQyw4SkFBOEo7QUFDaEs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixxQkFBcUI7QUFDdkI7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixxQkFBcUI7QUFDdkI7QUFFQTtFQUNFLDZCQUE2QjtFQUM3Qix5QkFBeUI7RUFDekIsY0FBYztBQUNoQjtBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLHFCQUFxQjtBQUN2Qjs7QUFFQSwyQkFBMkI7QUFDM0I7QUFDRTtJQUNFLGFBQWE7SUFDYixtQkFBbUI7QUFDckI7QUFFQTtJQUNFLFNBQVM7QUFDWDtBQUVBO0lBQ0UsY0FBYztJQUNkLGVBQWU7SUFDZixlQUFlO0FBQ2pCO0FBRUE7SUFDRSxlQUFlO0FBQ2pCO0FBRUE7SUFDRSxzQkFBc0I7SUFDdEIsUUFBUTtBQUNWO0FBRUE7SUFDRSxhQUFhO0FBQ2Y7QUFDRjtBQUVBO0FBQ0U7SUFDRSx5QkFBeUI7QUFDM0I7QUFDRjtBQUVBO0FBQ0U7SUFDRSw4QkFBOEI7QUFDaEM7QUFDRjs7QUFFQSwrQkFBK0I7QUFDL0I7RUFDRSxjQUFjO0FBQ2hCOztBQUVBLHlEQUF5RDtBQUN6RDtFQUNFLHlFQUF5RTtFQUN6RSwwQkFBMEI7RUFDMUIsZ0NBQWdDO0VBQ2hDLGtCQUFrQjtFQUNsQixZQUFZO0FBQ2Q7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7Ozs7O0FBR0E7RUFDRSwwQkFBMEI7QUFDNUI7Ozs7OztBQ25WQSx5QkFBeUI7Ozs7OztBQ2F6QjtFQUNFLGtCQUFrQjtFQUNsQixvQkFBb0I7RUFDcEIsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLDZCQUE2QjtBQUU3QjtJQUNFLGlCQUFpQjtBQUNuQjtBQUNGOzs7Ozs7QUNxQkE7SUFDSSwyQkFBMkI7SUFDM0IsYUFBYTtJQUNiLDhCQUE4QjtBQUNsQztBQUVBO0lBQ0ksZUFBZTtBQUNuQjs7Ozs7O0FDcURBO0VBQ0Usa0JBQWtCO0VBQ2xCLG9CQUFvQjtFQUNwQix1QkFBdUI7RUFDdkIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsNkJBQTZCO0FBRTdCO0lBQ0UsaUJBQWlCO0FBQ25CO0FBQ0Y7QUFFQTtFQUNFLDRCQUE0QjtBQUM5QjtBQUVBO0VBQ0UsYUFBYTtFQUNiLHVCQUF1QjtFQUN2QixtQkFBbUI7QUFDckI7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUVBO0VBQ0UsNEJBQTRCO0VBQzVCLGdCQUFnQjtBQUNsQjtBQUVBO0VBQ0UsVUFBVTtFQUNWLGNBQWM7QUFDaEI7QUFFQTtFQUNFLFlBQVk7RUFDWixvQkFBb0I7QUFDdEI7QUFFQTtFQUNFLGFBQWE7RUFDYixxQkFBcUI7QUFDdkI7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixtQkFBbUI7QUFDckI7QUFFQTtFQUNFLGNBQWM7RUFDZCx3QkFBd0I7RUFDeEIsaUJBQWlCO0FBQ25CO0FBRUE7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtBQUNuQjtBQUVBO0VBQ0UsY0FBYztFQUNkLHdCQUF3QjtFQUN4QixpQkFBaUI7QUFDbkI7QUFFQTtJQUNJLDJCQUEyQjtBQUMvQjtBQUVBO0lBQ0ksNkJBQTZCO0lBQzdCLHVCQUF1QjtJQUN2QixnQ0FBZ0M7QUFDcEM7Ozs7OztBQ3lCQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0FBQ2hCO0FBRUE7SUFDSSxnQkFBZ0I7QUFDcEI7QUFFQTtJQUNJLG9CQUFvQjtJQUNwQiwyQkFBMkI7QUFDL0I7QUFFQTs7SUFFSSxxQkFBcUI7SUFDckIsMkJBQTJCO0FBQy9CO0FBRUE7SUFDSSx3QkFBd0I7QUFDNUI7QUFFQTtJQUNJLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksd0JBQXdCO0lBQ3hCLG9DQUFvQztBQUN4QztBQUVBO0lBQ0ksa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsZ0JBQWdCO0FBQ3BCO0FBRUE7O0lBRUksWUFBWTtJQUNaLFdBQVc7SUFDWCxlQUFlO0lBQ2YsaUJBQWlCO0FBQ3JCO0FBRUE7SUFDSSxXQUFXO0lBQ1gsYUFBYTtJQUNiLG1CQUFtQjtBQUN2QjtBQUVBO0lBQ0ksMkJBQTJCO0FBQy9CO0FBRUE7SUFDSSwyQkFBMkI7SUFDM0IsK0JBQStCO0lBQy9CLDBCQUEwQjtJQUMxQiwyQkFBMkI7QUFDL0I7QUFFQTtJQUNJLHFCQUFxQjtJQUNyQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLGdCQUFnQjtJQUNoQixpQkFBaUI7QUFDckI7QUFFQTtJQUNJLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksV0FBVztJQUNYLFlBQVk7QUFDaEI7QUFFQTtJQUNJLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQix1QkFBdUI7QUFDM0I7QUFFQTtJQUNJLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLHFDQUFxQztBQUN6QztBQUVBO0lBQ0ksd0JBQXdCO0FBQzVCO0FBRUE7SUFDSSxpQkFBaUI7QUFDckI7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixtQkFBbUI7QUFDdkI7Ozs7OztBQ3pDQTtJQUNJLHVCQUF1QjtBQUMzQjtBQUVBO0lBQ0ksWUFBWTtJQUNaLGtCQUFrQjtBQUN0QjtBQUdBO0lBQ0ksWUFBWTtBQUNoQjs7Ozs7O0FDd0RBO0lBQ0ksdUJBQXVCO0FBQzNCO0FBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0FBQ3RCO0FBR0E7SUFDSSxZQUFZO0FBQ2hCOzs7Ozs7QUM5WEU7SUFDRTtBQUNGO0FBQ0E7SUFDRSxnQkFBZ0I7QUFDbEI7Ozs7OztBQ3VFQTtJQUNFLFlBQVk7QUFDZDs7Ozs7O0FDMERFO1FBQ0ksMEJBQTBCO0FBQzlCOzs7Ozs7QUN2REY7SUFDRSx5QkFBeUI7SUFDekIsYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixnQkFBZ0I7QUFDbEI7Ozs7OztBQ2tJRjtFQUNFLGdCQUFnQjtBQUNsQjs7Ozs7QUNoSEE7RUFDRSxlQUFlO0FBQ2pCLEM7Ozs7O0FDNElBO0VBQ0UsVUFBVTtFQUNWLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGlCQUFpQjtBQUNuQjtBQUVBO0VBQ0UsWUFBWTtBQUNkO0FBRUE7RUFDRSxhQUFhO0FBQ2Y7QUFFQTtFQUNFLHdCQUF3QjtBQUMxQjtBQUVBO0VBQ0Usc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixxQkFBcUI7RUFDckIsYUFBYTtBQUNmOzs7Ozs7QUNuS0E7SUFDSSwyQkFBMkI7SUFDM0IsYUFBYTtJQUNiLDhCQUE4QjtBQUNsQztBQUVBO0lBQ0ksZUFBZTtBQUNuQjs7Ozs7O0FDZ0RBO0VBQ0UsZ0JBQWdCO0FBQ2xCO0FBRUE7RUFDRSxnQkFBZ0I7RUFDaEIsbUJBQW1CO0FBQ3JCO0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7QUFFQTtFQUNFLG9CQUFvQjtBQUN0Qjs7Ozs7OztBQ3pNRTtJQUNFLFdBQVc7SUFDWCxpQkFBaUI7QUFDbkI7Ozs7OztBQzZDRix3Q0FBd0M7QUFFeEM7SUFDSSxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtBQUN2QjtBQUVBO0lBQ0ksV0FBVztBQUNmOzs7Ozs7QUM0UUU7SUFDRSxnQkFBZ0I7SUFDaEIsbUJBQW1CO0FBQ3JCO0FBQ0M7SUFDQyxjQUFjLFFBQVEsa0NBQWtDO0lBQ3hELFlBQVksVUFBVSx5QkFBeUI7SUFDL0MsWUFBWSxTQUFTLDRCQUE0QjtJQUNqRCxXQUFXO0FBQ2I7Ozs7OztBQ3ZRRjtFQUNFLDRDQUE0QztJQUMxQyxnQkFBZ0I7QUFDcEI7Ozs7OztBQ2lDQTtJQUNJLGdCQUFnQjtBQUNwQjtBQUVBO0lBQ0ksZ0JBQWdCO0FBQ3BCOzs7Ozs7QUN1cUJBO0lBQ0ksc0JBQXNCO0FBQzFCO0FBRUE7SUFDSSxjQUFjO0lBQ2QsMEJBQTBCO0FBQzlCO0FBRUE7SUFDSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixnQkFBZ0I7QUFDcEI7QUFFQTtJQUNJLGVBQWU7QUFDbkI7QUFFQTtJQUNJLGlCQUFpQjtBQUNyQjtBQUVBO0lBQ0ksZUFBZTtJQUNmLGlCQUFpQjtBQUNyQjtBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLGVBQWU7QUFDbkI7QUFFQTtJQUNJLDhCQUE4QjtBQUNsQztBQUdBO0lBQ0ksZUFBZTtBQUNuQjtBQUVBO0lBQ0ksZ0NBQWdDO0lBQ2hDLG1CQUFtQjtBQUN2QjtBQUVBO0lBQ0ksOEJBQThCO0FBQ2xDO0FBRUE7SUFDSSxXQUFXO0lBQ1gsYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7QUFDdkI7QUFFQTtJQUNJLDhCQUE4QjtBQUNsQztBQUVBO0lBQ0ksOEJBQThCO0lBQzlCLDBCQUEwQjtJQUMxQiwwQkFBMEI7QUFDOUI7QUFFQTtJQUNJLGdCQUFnQjtBQUNwQjtBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLDZCQUE2QjtBQUNqQztBQUVBO0lBQ0ksY0FBYztJQUNkLGlDQUFpQztBQUNyQztBQUVBO0lBQ0ksaUJBQWlCO0FBQ3JCOzs7Ozs7O0FDeGVBO0lBQ0ksbUJBQW1CO0FBQ3ZCO0FBRUE7SUFDSSxtQkFBbUI7SUFDbkIsZUFBZTtBQUNuQjtBQUVBO0lBQ0kseUJBQXlCO0lBQ3pCLHFCQUFxQjtBQUN6QjtBQUVBO0lBQ0ksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixxQkFBcUI7QUFDekI7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQiwwQkFBMEI7SUFDMUIsU0FBUztBQUNiOzs7Ozs7QUFHQTtJQUNJLDBCQUEwQjtJQUMxQixzQkFBc0I7SUFDdEIsdUJBQXVCO0FBQzNCO0FBRUE7SUFDSSx3QkFBd0I7SUFDeEIsU0FBUztBQUNiO0FBRUE7SUFDSSxjQUFjO0FBQ2xCO0FBRUE7SUFDSSxnQkFBZ0I7QUFDcEI7Ozs7OztBQ3ZWQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7QUFDckI7QUFFQTtFQUNFLHNCQUFzQjtFQUN0QixzQ0FBc0M7QUFFeEM7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsbUJBQW1CO0FBQ3JCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy92YXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FwcC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvZm9udHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2xvZ2luLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9mb250aWNvbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL3BhZ2UvY3J1ZC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvbGF5b3V0L2FjdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2xheW91dC9jb250ZW50LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9sYXlvdXQvaGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9sYXlvdXQvc2lkZWJhci5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvbGF5b3V0L3Z1ZS9zcGxpdHNjcmVlbi5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvbGF5b3V0L3Z1ZS9kZXRhaWwuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvZmllbGRzL3Z1ZS1tdWx0aXNlbGVjdC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9maWVsZHMvdnVlLXVwbG9hZC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy9maWVsZHMvdnVlLWRhdGUuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvZmllbGRzL2ZpbGUtdXBsb2FkLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL2ZpZWxkcy92dWUtY3VzdG9tLWlucHV0cy5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy92dWUvZm9ybS5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy92dWUvYnRuLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9jb21wb25lbnRzL3Z1ZS9tb2RhbC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy92dWUvdGFibGUuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2NvbXBvbmVudHMvdnVlL25vdGlmaWNhdGlvbi5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29tcG9uZW50cy92dWUvbXVsdGlzZWxlY3Quc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2VudGl0aWVzL3Rhc2svZmlsdGVycy5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvZW50aXRpZXMvdGFzay9kZXRhaWxzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9lbnRpdGllcy90YXNrL3Rhc2tsaXN0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9lbnRpdGllcy93b3JrZmxvdy9kZXRhaWxzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9lbnRpdGllcy93b3JrZmxvdy9pbmRleC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvZW50aXRpZXMvd29ya2Zsb3cvYWN0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9lbnRpdGllcy93b3JrZmxvdy9jb25kaXRpb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2VudGl0aWVzL2RvY3VtZW50L2RldGFpbHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2VudGl0aWVzL2RvY3VtZW50L3JlbGF0ZWQuc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2VudGl0aWVzL25vcm1hdGl2ZVJlZmVyZW5jZS9kb2N1bWVudFJlcXVlc3Quc2NzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3J1ZC9QZXJzb24vUGVyc29uQWNscy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2NydWQvRG9jdW1lbnQvRG9jdW1lbnRCdWlsZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3J1ZC9Eb2N1bWVudC9Eb2N1bWVudE5ldy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL3BhZ2VzL0RvY3VtZW50L0RvY3VtZW50SW5kZXgudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9mb3JtL1Z1ZU11bHRpU2VsZWN0U2VhcmNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3J1ZC9Eb2N1bWVudC9SZWxhdGVkRG9jdW1lbnRzTW9kYWwudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jcnVkL0RvY3VtZW50L1JlbGF0ZWREb2N1bWVudHMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jcnVkL0NydWROZXcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jb21wb25lbnRzL1Z1ZUNlbGwudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jb21wb25lbnRzL2ZpZWxkcy9WdWVNdWx0aVNlbGVjdEZpZWxkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9maWVsZHMvVnVlVXBsb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVQZGYyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVGaWVsZC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2NvbXBvbmVudHMvVnVlRmlsdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVUYWJsZUdyb3VwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVDaGlsZHJlbkRldGFpbHMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jb21wb25lbnRzL1Z1ZVZlcnNpb25Db250cm9sLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVEZXRhaWxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVNZXNzYWdlcy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL3BhZ2VzL1Byb2R1Y3RzL0FydGljbGUudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9BdHRyaWJ1dGVzL0F0dHJpYnV0ZVNldC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2Zvcm0vVnVlRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL3BhZ2VzL1dvcmtmbG93L1dvcmtmbG93SW5kZXgudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9mb3JtL1Z1ZU11bHRpU2VsZWN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvcGFnZXMvV29ya2Zsb3cvaGFuZGxlcnMvRW1haWxIYW5kbGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvcGFnZXMvV29ya2Zsb3cvaGFuZGxlcnMvQ3JlYXRlVGFza0hhbmRsZXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9Xb3JrZmxvdy9Xb3JrZmxvd0NvbmRpdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL3BhZ2VzL1dvcmtmbG93L1dvcmtmbG93LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvcGFnZXMvRG9jdW1lbnQvRG9jdW1lbnROZXcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9Nb2R1bGUvTm9ybWF0aXZlUmVmZXJlbmNlQ29uZmlnLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvcGFnZXMvRG9jdW1lbnRSZXF1ZXN0L1JlcXVlc3REb2N1bWVudE1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY29tcG9uZW50cy9WdWVQZGYudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9Eb2N1bWVudFJlcXVlc3QvRG9jdW1lbnRSZXF1ZXN0RGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvcGFnZXMvRG9jdW1lbnRSZXF1ZXN0L0RvY3VtZW50UmVxdWVzdExpc3QudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9Db21wYW55L0NvbXBhbnlDb25maWcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9Qcm9jZXNzL1Byb2Nlc3MudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9wYWdlcy9BcHByb3ZhbC9BcHByb3ZhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL3BhZ2VzL1Rhc2svVGFza05ldy52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiJGhlYWRlci1jb2xvcjogd2hpdGU7XHJcbiRiZy1oZWFkZXItY29sb3ItcHJpbWFyeTogIzAwNzhENDtcclxuJGJnLWhlYWRlci1jb2xvci1wcmltYXJ5LWRhcms6ICMwMDQwODA7XHJcbiRiZy1oZWFkZXItY29sb3Itc2Vjb25kYXJ5OiAjQ0NFNEY2O1xyXG5cclxuJHdoaXRlLWNvbG9yOiB3aGl0ZTtcclxuJGJvZHktYmctY29sb3I6ICNGQkZCRkI7XHJcbiRsaWdodC1ncmF5LWNvbG9yOiAjRjNGMkYxO1xyXG4kbGluZS1ncmF5LWNvbG9yOiAjZTBlMGUwO1xyXG4kYmxhY2stY29sb3I6IGJsYWNrO1xyXG4kbGlnaHQtZ3JheS1ob3Zlci1jb2xvcjogI0VERUJFOTtcclxuJGxpZ2h0LWdyYXktc2VsZWN0ZWQtY29sb3I6ICNFMURGREQ7XHJcbiRsaWdodC1ncmF5LXNlbGVjdGVkLWhvdmVyLWNvbG9yOiAjRDJEMENFO1xyXG4kbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI6ICM2NTYzNjE7XHJcblxyXG4kbWFpbi1oZWFkZXItaGVpZ2h0OiA0OHB4O1xyXG4kYWN0aW9uLWJhci1oZWlnaHQ6IDQ0cHg7XHJcblxyXG4kb3Blbi1jb2xvcjogIzVDMDBENDtcclxuJG92ZXJkdWUtY29sb3I6ICNEODNCMDE7XHJcbiRkb25lLWNvbG9yOiAjRjNGMkYxO1xyXG4kY2xhcmlmeS1jb2xvcjogI0ZGODAwMDtcclxuJGRlbGV0ZWQtY29sb3I6ICMyMzI3MmI7XHJcblxyXG4vL2ZvbnRcclxuJGZvbnQtYmxhY2s6IzFCMUIxRTtcclxuJGZvbnQtZ3JheTogIzY2NjY2NjtcclxuJGZvbnQtYmx1ZTogIzE5NzZCRTtcclxuXHJcbi8vYnV0dG9uL2FsZXJ0XHJcblxyXG4kYnRuLXByaW1hcnktY29sb3I6IHJnYigwLCAxMjAsIDIxMik7XHJcbiRidG4tcHJpbWFyeS1ob3Zlci1jb2xvcjogIHJnYigwLCAxMDgsIDE5MCk7XHJcblxyXG46cm9vdCB7XHJcbiAgICAtLWJvZHktYmc6ICNGQkZCRkI7XHJcbiAgICAtLWxnLWNvbnRlbnQtcGFkZGluZy1sZWZ0OiA0OHB4O1xyXG4gICAgLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQ6IDQ4cHg7XHJcbiAgICAtLW1kLWNvbnRlbnQtcGFkZGluZzozMnB4O1xyXG4gICAgLS1zaWRlYmFyLW1heC13aWR0aDogMjgwcHg7XHJcbiAgICAtLWZvbnQtc2l6ZS14eHhsOiAyOHB4O1xyXG59XHJcblxyXG4iLCI6cm9vdCB7XG4gIC0tYm9keS1iZzogI0ZCRkJGQjtcbiAgLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdDogNDhweDtcbiAgLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQ6IDQ4cHg7XG4gIC0tbWQtY29udGVudC1wYWRkaW5nOjMycHg7XG4gIC0tc2lkZWJhci1tYXgtd2lkdGg6IDI4MHB4O1xuICAtLWZvbnQtc2l6ZS14eHhsOiAyOHB4O1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiU2Vnb2VVSVwiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL1NlZ29lX1VJLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lVUlTZW1pYm9sZFwiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL1NlZ29lX1VJX1NlbWlib2xkLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIGh0bWwge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgfVxuICBib2R5IHtcbiAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgfVxuICBib2R5IC5tYWluLXdyYXBwZXIge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgYm9keSAubWFpbi13cmFwcGVyID4gLndyYXBwZXIge1xuICAgIHBhZGRpbmctdG9wOiA0OHB4O1xuICAgIG1hcmdpbi10b3A6IC00OHB4O1xuICAgIG1pbi1oZWlnaHQ6IDBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICB9XG4gIGJvZHkgLm1haW4td3JhcHBlciA+IC53cmFwcGVyIC5jb250ZW50LXdyYXBwZXIge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgfVxuICBib2R5IC5tYWluLXdyYXBwZXIgPiAud3JhcHBlciAuY29udGVudC13cmFwcGVyIC5jb250ZW50LWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KTtcbiAgfVxuICBib2R5IC5tYWluLXdyYXBwZXIgPiAud3JhcHBlciAuY29udGVudC13cmFwcGVyIC5jb250ZW50LWhlYWRlciAudGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDMzLjZweDtcbiAgICBjb2xvcjogYmxhY2s7XG4gIH1cbn1cbmJvZHkgaS5tcy1JY29uIHtcbiAgbWFyZ2luOiAwcHg7XG59XG5cbiNtYWluLW1lbnUgLm1lbnUgLm1lbnUtaXRlbS5oYXMtc3VibWVudS5leHBhbmRlZCAuc3VibWVudS10b2dnbGUtaWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xufVxuXG4uZWEtc2VhcmNoLWRpc2FibGVkIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNvbnRlbnQge1xuICBoZWlnaHQ6IDEwMHZoO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuYm9keS5sb2dpbmZvcm0ge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufVxuYm9keS5sb2dpbmZvcm0gKiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICMxYTFmMzY7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgU2Vnb2UgVUksIFJvYm90bywgSGVsdmV0aWNhIE5ldWUsIFVidW50dSwgc2Fucy1zZXJpZjtcbn1cbmJvZHkubG9naW5mb3JtIC5sb2dpbi1oZWFkZXIge1xuICBmb250LXdlaWdodDogNTAwO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBmb250LWZhbWlseTogXCJTZWdvZSBVSVwiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzFCMUIxRTtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMjhweDtcbn1cbmJvZHkubG9naW5mb3JtIC5sb2dvLWxvZ2luIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuYm9keS5sb2dpbmZvcm0gLmxvZ28tbG9naW4gaW1nIHtcbiAgd2lkdGg6IDg2cHg7XG4gIG1hcmdpbi10b3A6IC0yNHB4O1xufVxuYm9keS5sb2dpbmZvcm0gYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5zZXQ7XG59XG5ib2R5LmxvZ2luZm9ybSAubG9naW4tcm9vdCB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmJvZHkubG9naW5mb3JtIC5mbGV4LWZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuYm9keS5sb2dpbmZvcm0gLmFsaWduLWNlbnRlciB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5ib2R5LmxvZ2luZm9ybSAuY2VudGVyLWNlbnRlciB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuYm9keS5sb2dpbmZvcm0gLmJveC1yb290IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbmJvZHkubG9naW5mb3JtIC5mbGV4LWRpcmVjdGlvbi0tY29sdW1uIHtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5ib2R5LmxvZ2luZm9ybSAubG9naW5iYWNrZ3JvdW5kLWdyaWRDb250YWluZXIge1xuICBkaXNwbGF5OiAtbXMtZ3JpZDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgLW1zLWdyaWQtY29sdW1uczogW3N0YXJ0XSAxZnIgW2xlZnQtZ3V0dGVyXSA4Ni42cHggWzE2XSBbbGVmdC1ndXR0ZXJdIDFmciBbZW5kXTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbc3RhcnRdIDFmciBbbGVmdC1ndXR0ZXJdIHJlcGVhdCgxNiwgODYuNnB4KSBbbGVmdC1ndXR0ZXJdIDFmciBbZW5kXTtcbiAgLW1zLWdyaWQtcm93czogW3RvcF0gMWZyIFt0b3AtZ3V0dGVyXSA2NHB4IFs4XSBbYm90dG9tLWd1dHRlcl0gMWZyIFtib3R0b21dO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IFt0b3BdIDFmciBbdG9wLWd1dHRlcl0gcmVwZWF0KDgsIDY0cHgpIFtib3R0b20tZ3V0dGVyXSAxZnIgW2JvdHRvbV07XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW46IDAgLTIlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTJkZWcpIHNrZXcoLTEyZGVnKTtcbn1cbmJvZHkubG9naW5mb3JtIC5ib3gtZGl2aWRlci0tbGlnaHQtYWxsLTIge1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2UzZThlZTtcbn1cbmJvZHkubG9naW5mb3JtIC5ib3gtYmFja2dyb3VuZC0tYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDY5ZDQ7XG59XG5ib2R5LmxvZ2luZm9ybSAuYm94LWJhY2tncm91bmQtLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbn1cbmJvZHkubG9naW5mb3JtIC5ib3gtYmFja2dyb3VuZC0tYmx1ZTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTJkNjM7XG59XG5ib2R5LmxvZ2luZm9ybSAuYm94LWJhY2tncm91bmQtLWdyYXkxMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlOGVlO1xufVxuYm9keS5sb2dpbmZvcm0gLmJveC1iYWNrZ3JvdW5kLS1jeWFuMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdmZDNlZDtcbn1cbmJvZHkubG9naW5mb3JtIC5wYWRkaW5nLXRvcC0tNjQge1xuICBwYWRkaW5nLXRvcDogNjRweDtcbn1cbmJvZHkubG9naW5mb3JtIC5wYWRkaW5nLXRvcC0tMjQge1xuICBwYWRkaW5nLXRvcDogMjRweDtcbn1cbmJvZHkubG9naW5mb3JtIC5wYWRkaW5nLXRvcC0tNDgge1xuICBwYWRkaW5nLXRvcDogNDhweDtcbn1cbmJvZHkubG9naW5mb3JtIC5wYWRkaW5nLWJvdHRvbS0tMjQge1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbn1cbmJvZHkubG9naW5mb3JtIC5wYWRkaW5nLWJvdHRvbS0tMTUge1xuICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbn1cbmJvZHkubG9naW5mb3JtIC5zdWJtaXQge1xuICBwYWRkaW5nLWJvdHRvbTogMHB4O1xufVxuYm9keS5sb2dpbmZvcm0gLmZvcm1iZy1pbm5lciB7XG4gIG1pbi13aWR0aDogNDQwcHg7XG4gIHBhZGRpbmc6IDQ0cHg7XG59XG5ib2R5LmxvZ2luZm9ybSAuZmxleC1qdXN0aWZ5Q29udGVudC0tY2VudGVyIHtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmJvZHkubG9naW5mb3JtIC5mb3JtYmcge1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIG1hcmdpbjogMHB4IGF1dG87XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IHJnYmEoNjAsIDY2LCA4NywgMC4xMikgMHB4IDdweCAxNHB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjEyKSAwcHggM3B4IDZweCAwcHg7XG4gIG1heC13aWR0aDogNDQwcHg7XG59XG5ib2R5LmxvZ2luZm9ybSAuZm9ybWJnIC5maWVsZCBpbnB1dCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgIzE5NzZCRSAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3gtc2hhZG93OiBub25lO1xuICBwYWRkaW5nOiAwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbmJvZHkubG9naW5mb3JtIC5mb3JtYmcgLmZpZWxkIGlucHV0OmZvY3VzLXZpc2libGUge1xuICBib3gtc2hhZG93OiBub25lO1xuICBvdXRsaW5lOiBub25lO1xufVxuYm9keS5sb2dpbmZvcm0gLmZvcm1iZyAuc3VibWl0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIG1hcmdpbjogNHB4IDBweCAycHggMHB4O1xufVxuYm9keS5sb2dpbmZvcm0gLmZvcm1iZyAuc3VibWl0IC52dWUtYnRuIHtcbiAgaGVpZ2h0OiAzMnB4O1xuICBmb250LWZhbWlseTogXCJTZWdvZSBVSVwiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbmJvZHkubG9naW5mb3JtIC5mb3JtYmcgLnN1Ym1pdCBpbnB1dCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIG1heC13aWR0aDogMTYwcHg7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbn1cbmJvZHkubG9naW5mb3JtIC5mb3JtYmcgYSB7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuYm9keS5sb2dpbmZvcm0gLmZvcm1iZyBhIHAge1xuICBmb250LWZhbWlseTogXCJTZWdvZSBVSVwiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzE5NzZCRTtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbmJvZHkubG9naW5mb3JtIHNwYW4ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAyMHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgY29sb3I6ICMxYTFmMzY7XG59XG5ib2R5LmxvZ2luZm9ybSBsYWJlbCB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5ib2R5LmxvZ2luZm9ybSAucmVzZXQtcGFzcyBhLCBib2R5LmxvZ2luZm9ybSBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5ib2R5LmxvZ2luZm9ybSAucmVzZXQtcGFzcyA+IGEge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbmJvZHkubG9naW5mb3JtIC5ncmlkLS01MC01MCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbmJvZHkubG9naW5mb3JtIC5maWVsZCBpbnB1dCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjNjY2NjY2O1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBwYWRkaW5nOiA4cHggMTZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgb3V0bGluZS1jb2xvcjogcmdiYSg4NCwgMTA1LCAyMTIsIDAuNSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcbiAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwKSAwcHggMHB4IDBweCAwcHgsIHJnYmEoMCwgMCwgMCwgMCkgMHB4IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDApIDBweCAwcHggMHB4IDBweCwgcmdiYSg2MCwgNjYsIDg3LCAwLjE2KSAwcHggMHB4IDBweCAxcHgsIHJnYmEoMCwgMCwgMCwgMCkgMHB4IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDApIDBweCAwcHggMHB4IDBweCwgcmdiYSgwLCAwLCAwLCAwKSAwcHggMHB4IDBweCAwcHg7XG59XG5ib2R5LmxvZ2luZm9ybSAuZmllbGQtY2hlY2tib3ggaW5wdXQge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgYm94LXNoYWRvdzogdW5zZXQ7XG4gIG1pbi1oZWlnaHQ6IHVuc2V0O1xufVxuYm9keS5sb2dpbmZvcm0gLmZpZWxkLWNoZWNrYm94IGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwO1xufVxuYm9keS5sb2dpbmZvcm0gYS5zc29saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbmJvZHkubG9naW5mb3JtIC5mb290ZXItbGluayBzcGFuIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5ib2R5LmxvZ2luZm9ybSAubGlzdGluZyBhIHtcbiAgY29sb3I6ICM2OTczODY7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbjogMCAxMHB4O1xufVxuYm9keS5sb2dpbmZvcm0gLm5vdGlmaWNhdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGM0YyRjE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbmJvZHkubG9naW5mb3JtIC5ub3RpZmljYXRpb24gLmVycm9yIHtcbiAgcGFkZGluZzogMTBweCAxNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFFQ0VCO1xuICBjb2xvcjogI0U5NTE2OTtcbiAgYm9yZGVyLWNvbG9yOiAjRTk1MTY5O1xufVxuXG4vKlxuICBZb3VyIHVzZSBvZiB0aGUgY29udGVudCBpbiB0aGUgZmlsZXMgcmVmZXJlbmNlZCBoZXJlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGF0IGh0dHBzOi8vYWthLm1zL2ZhYnJpYy1hc3NldHMtbGljZW5zZVxuKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJGYWJyaWNNREwySWNvbnNcIjtcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9mYWJyaWMtaWNvbnMtYzczYjJmODIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuLm1zLUljb24ge1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogXCJGYWJyaWNNREwySWNvbnNcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBzcGVhazogbm9uZTtcbn1cblxuLm1zLUljb24tLUFjY2VwdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZThmYlwiO1xufVxuXG4ubXMtSWNvbi0tQWNjZXB0TWVkaXVtOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmNzhjXCI7XG59XG5cbi5tcy1JY29uLS1BY2NvdW50QWN0aXZpdHk6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVmZjRcIjtcbn1cblxuLm1zLUljb24tLUFjY291bnRNYW5hZ2VtZW50OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmNTVjXCI7XG59XG5cbi5tcy1JY29uLS1BZGQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU3MTBcIjtcbn1cblxuLm1zLUljb24tLUFwcEljb25EZWZhdWx0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlY2FhXCI7XG59XG5cbi5tcy1JY29uLS1BcHBJY29uRGVmYXVsdEFkZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWZkYVwiO1xufVxuXG4ubXMtSWNvbi0tQm9sZEc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU1YjNcIjtcbn1cblxuLm1zLUljb24tLUJ1c2luZXNzQ2VudGVyTG9nbzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjRiMlwiO1xufVxuXG4ubXMtSWNvbi0tQ2FuY2VsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzExXCI7XG59XG5cbi5tcy1JY29uLS1DYW5uZWRDaGF0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMGYyXCI7XG59XG5cbi5tcy1JY29uLS1DaGVja01hcms6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU3M2VcIjtcbn1cblxuLm1zLUljb24tLUNoZXZyb25Eb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzBkXCI7XG59XG5cbi5tcy1JY29uLS1DaGV2cm9uTGVmdE1lZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTk3M1wiO1xufVxuXG4ubXMtSWNvbi0tQ2hldnJvblJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzZjXCI7XG59XG5cbi5tcy1JY29uLS1DaGV2cm9uVXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU3MGVcIjtcbn1cblxuLm1zLUljb24tLUNpcmNsZUFkZGl0aW9uOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMmUzXCI7XG59XG5cbi5tcy1JY29uLS1DaXJjbGVBZGRpdGlvblNvbGlkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMmU0XCI7XG59XG5cbi5tcy1JY29uLS1DaXJjbGVSaW5nOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlYTNhXCI7XG59XG5cbi5tcy1JY29uLS1DbGVhckZpbHRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWY4ZlwiO1xufVxuXG4ubXMtSWNvbi0tQ2xpcGJvYXJkTGlzdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjBlM1wiO1xufVxuXG4ubXMtSWNvbi0tQ2xpcGJvYXJkTGlzdFF1ZXN0aW9uOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNGYwXCI7XG59XG5cbi5tcy1JY29uLS1DbGlwYm9hcmRTb2xpZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjVkY1wiO1xufVxuXG4ubXMtSWNvbi0tQ29sbGFwc2VNZW51OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZjY2XCI7XG59XG5cbi5tcy1JY29uLS1Db21wYXJlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMDU3XCI7XG59XG5cbi5tcy1JY29uLS1Db21wYXJlVW5ldmVuOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNDJlXCI7XG59XG5cbi5tcy1JY29uLS1Db250YWN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzdiXCI7XG59XG5cbi5tcy1JY29uLS1Db250YWN0SW5mbzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTc3OVwiO1xufVxuXG4ubXMtSWNvbi0tQ29udGVudFNldHRpbmdzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmNjQ3XCI7XG59XG5cbi5tcy1JY29uLS1EZWZhdWx0U2V0dGluZ3M6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY2NDhcIjtcbn1cblxuLm1zLUljb24tLURlbGV0ZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTc0ZFwiO1xufVxuXG4ubXMtSWNvbi0tRG9jdW1lbnRBcHByb3ZhbDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjI4YlwiO1xufVxuXG4ubXMtSWNvbi0tRG9jdW1lbnRhdGlvbjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWMxN1wiO1xufVxuXG4ubXMtSWNvbi0tRG9jdW1lbnRNYW5hZ2VtZW50OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZmZjXCI7XG59XG5cbi5tcy1JY29uLS1Eb2N1bWVudFJlcGx5OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZjU3XCI7XG59XG5cbi5tcy1JY29uLS1Eb2N1bWVudFNlYXJjaDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWY2Y1wiO1xufVxuXG4ubXMtSWNvbi0tRWRpdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTcwZlwiO1xufVxuXG4ubXMtSWNvbi0tRWRpdENvbnRhY3Q6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVmZDNcIjtcbn1cblxuLm1zLUljb24tLUVkaXRNaXJyb3JlZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWI3ZVwiO1xufVxuXG4ubXMtSWNvbi0tRWRpdFNvbGlkMTI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY0YjVcIjtcbn1cblxuLm1zLUljb24tLUV4Y2VsRG9jdW1lbnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVmNzNcIjtcbn1cblxuLm1zLUljb24tLUZpbGVCdWc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYzMGRcIjtcbn1cblxuLm1zLUljb24tLUZpbGVJbWFnZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjMxMVwiO1xufVxuXG4ubXMtSWNvbi0tRmlsZU9mZjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTNmY1wiO1xufVxuXG4ubXMtSWNvbi0tRmlsdGVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzFjXCI7XG59XG5cbi5tcy1JY29uLS1GaWx0ZXJBc2NlbmRpbmc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYyMWFcIjtcbn1cblxuLm1zLUljb24tLUZpbHRlckRlc2NlbmRpbmc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYyMWJcIjtcbn1cblxuLm1zLUljb24tLUZpbHRlclNvbGlkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmNDEyXCI7XG59XG5cbi5tcy1JY29uLS1Gb2xsb3dVc2VyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZTA1XCI7XG59XG5cbi5tcy1JY29uLS1GdWxsQ2lyY2xlTWFzazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkxZlwiO1xufVxuXG4ubXMtSWNvbi0tSG9tZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTgwZlwiO1xufVxuXG4ubXMtSWNvbi0tSG9tZVNvbGlkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlYThhXCI7XG59XG5cbi5tcy1JY29uLS1JbWFnZVNlYXJjaDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjRlOFwiO1xufVxuXG4ubXMtSWNvbi0tTWluaUxpbms6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU3MzJcIjtcbn1cblxuLm1zLUljb24tLU5hdmlnYXRlRXh0ZXJuYWxJbmxpbmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYzNWZcIjtcbn1cblxuLm1zLUljb24tLVBhZ2VMaW5rOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlMzAyXCI7XG59XG5cbi5tcy1JY29uLS1QYWdlTGlzdEZpbHRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjgxM1wiO1xufVxuXG4ubXMtSWNvbi0tUEJJSG9tZUxheW91dEV4cGFuZGVkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNjVjXCI7XG59XG5cbi5tcy1JY29uLS1QREY6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVhOTBcIjtcbn1cblxuLm1zLUljb24tLVBsYXllclNldHRpbmdzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZjU4XCI7XG59XG5cbi5tcy1JY29uLS1Qb3dlclBvaW50RG9jdW1lbnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVmNzJcIjtcbn1cblxuLm1zLUljb24tLVByb2Nlc3M6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5ZjNcIjtcbn1cblxuLm1zLUljb24tLVByb2Nlc3Npbmc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5ZjVcIjtcbn1cblxuLm1zLUljb24tLVByb2Nlc3NNZXRhVGFzazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjI5MFwiO1xufVxuXG4ubXMtSWNvbi0tUHJvZHVjdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWNkY1wiO1xufVxuXG4ubXMtSWNvbi0tUHJvZHVjdENhdGFsb2c6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVmZThcIjtcbn1cblxuLm1zLUljb24tLVByb2R1Y3RMaXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlMzFlXCI7XG59XG5cbi5tcy1JY29uLS1Qcm9kdWN0UmVsZWFzZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWUyZVwiO1xufVxuXG4ubXMtSWNvbi0tUHJvZHVjdFZhcmlhbnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVlMzBcIjtcbn1cblxuLm1zLUljb24tLVB1enpsZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWE4NlwiO1xufVxuXG4ubXMtSWNvbi0tUXVlcnlMaXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMmI4XCI7XG59XG5cbi5tcy1JY29uLS1RdWVzdGlvbm5haXJlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlZTE5XCI7XG59XG5cbi5tcy1JY29uLS1SZWNlaXB0VW5kZWxpdmVyZWQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY0MTlcIjtcbn1cblxuLm1zLUljb24tLVNhdmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU3NGVcIjtcbn1cblxuLm1zLUljb24tLVNhdmVBbmRDbG9zZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjAzOFwiO1xufVxuXG4ubXMtSWNvbi0tU2F2ZUFuZFB1Ymxpc2g6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY2NzFcIjtcbn1cblxuLm1zLUljb24tLVNlYXJjaDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTcyMVwiO1xufVxuXG4ubXMtSWNvbi0tU2VhcmNoQ2FsZW5kYXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY0YWZcIjtcbn1cblxuLm1zLUljb24tLVNlYXJjaElzc3VlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMDlhXCI7XG59XG5cbi5tcy1JY29uLS1TZXR0aW5nczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTcxM1wiO1xufVxuXG4ubXMtSWNvbi0tU2luZ2xlQ29sdW1uRWRpdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjMyMVwiO1xufVxuXG4ubXMtSWNvbi0tU3RhdHVzQ2lyY2xlUXVlc3Rpb25NYXJrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTQyXCI7XG59XG5cbi5tcy1JY29uLS1Td2l0Y2hVc2VyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNzQ4XCI7XG59XG5cbi5tcy1JY29uLS1UYXNrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmN2VjXCI7XG59XG5cbi5tcy1JY29uLS1UYXNrQWRkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNGZkXCI7XG59XG5cbi5tcy1JY29uLS1UYXNrTGlzdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTNiNlwiO1xufVxuXG4ubXMtSWNvbi0tVGFza01hbmFnZXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVkYjdcIjtcbn1cblxuLm1zLUljb24tLVRhc2tTb2xpZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjMzM1wiO1xufVxuXG4ubXMtSWNvbi0tVGV4dERvY3VtZW50OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMDI5XCI7XG59XG5cbi5tcy1JY29uLS1UZXh0RG9jdW1lbnRFZGl0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlNDNiXCI7XG59XG5cbi5tcy1JY29uLS1UZXh0RG9jdW1lbnRTZXR0aW5nczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTRhYVwiO1xufVxuXG4ubXMtSWNvbi0tVXNlckZvbGxvd2VkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMjVjXCI7XG59XG5cbi5tcy1JY29uLS1Vc2VyT3B0aW9uYWw6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY3NjdcIjtcbn1cblxuLm1zLUljb24tLVVzZXJSZW1vdmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGY2OWJcIjtcbn1cblxuLm1zLUljb24tLVdvcmREb2N1bWVudDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWY3MVwiO1xufVxuXG4ubXMtSWNvbi0tV29ya0Zsb3c6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVhMDFcIjtcbn1cblxuLm1zLUljb24tLVppcEZvbGRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjAxMlwiO1xufVxuXG4uY3J1ZCB7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLWxlZnQpO1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQpO1xuICBtYXJnaW4tdG9wOiAxOHB4O1xufVxuLmNydWQgLnRhYmxlLmRhdGFncmlkIHtcbiAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMHB4O1xufVxuXG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIHtcbiAgbWFyZ2luOiAwO1xuICBtaW4taGVpZ2h0OiA3MHZoO1xuICBtYXJnaW4tYm90dG9tOiAxMDBweDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLnJvdyB7XG4gIC0tYnMtZ3V0dGVyLXg6IDA7XG4gIC0tYnMtZ3V0dGVyLXk6IDA7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyID4gLmZsZXgtZmlsbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5maWVsZC1mb3JtX3BhbmVsIHtcbiAgcGFkZGluZy1sZWZ0OiAwcHg7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5maWVsZC1mb3JtX3BhbmVsIC5mb3JtLXBhbmVsLWJvZHkge1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tYnMtZ3V0dGVyLXgpICogMC41KTtcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wge1xuICBmbGV4OiAwIDAgNjAlO1xuICB3aWR0aDogNjAlO1xuICBtYXJnaW46IDNweCAwO1xuICBwYWRkaW5nOiAwcHg7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5mb3JtLWdyb3VwIHtcbiAgcGFkZGluZzogMHB4O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgPiAuZm9ybS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cCBsZWdlbmQge1xuICBmbGV4OiAwIDAgMzAlO1xuICBtYXgtd2lkdGg6IDMwJTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIHBhZGRpbmc6IDBweDtcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCB7XG4gIGZsZXg6IDAgMCA2MCU7XG4gIHdpZHRoOiA2MCU7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5mb3JtLWNvbnRyb2wsIC5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZm9ybS1zZWxlY3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xuICBib3JkZXI6IG5vbmU7XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5mb3JtLWNvbnRyb2wgLnRzLWNvbnRyb2wsIC5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZm9ybS1zZWxlY3QgLnRzLWNvbnRyb2wge1xuICBtaW4taGVpZ2h0OiA0MHB4O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIC5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZm9ybS1zZWxlY3Q6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogbGlnaHRncmF5O1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsIC5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZm9ybS1zZWxlY3Q6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IGxpZ2h0Z3JheTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyLCAuY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmZvcm0tc2VsZWN0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiBsaWdodGdyYXk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZm9ybS1jb250cm9sOmZvY3VzLCAuY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmZvcm0tc2VsZWN0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogYmxhY2sgc29saWQgMXB4O1xuICBjb2xvcjogYmxhY2s7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmVhLWZpbGV1cGxvYWQgLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgcGFkZGluZy10b3A6IDhweCAhaW1wb3J0YW50O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5lYS1maWxldXBsb2FkIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgbWluLWhlaWdodDogNDBweDtcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwIC5mb3JtLXdpZGdldCAuZWEtdGV4dC1lZGl0b3Itd3JhcHBlciB7XG4gIG1pbi1oZWlnaHQ6IDI0MHB4O1xuICBtaW4td2lkdGg6IGZpdC1jb250ZW50O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbCAuY3VzdG9tLWZvcm0tZ3JvdXAuYWNsLWZpZWxkIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIC5jdXN0b20tZm9ybS1ncm91cC5hY2wtZmllbGQgLmdyb3VwLWVsZW1lbnQge1xuICBtYXJnaW4tbGVmdDogMjBweDtcbn1cbi5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wgLmN1c3RvbS1mb3JtLWdyb3VwLmFjbC1maWVsZCAuZ3JvdXAtaGVhZGVyIGxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sLmNvbC1tZC0xMiAuZm9ybS13aWRnZXQge1xuICBmbGV4OiAwIDAgMzglO1xuICB3aWR0aDogMzglO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IDE4JTtcbiAgZmxleDogMCAwIDQwJTtcbiAgdG9wOiAycHg7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sLmNvbC1tZC0yIC5mb3JtLXdpZGdldCB7XG4gIGZsZXg6IDAgMCAzMCU7XG4gIHdpZHRoOiAzMCU7XG59XG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sLmNvbC1tZC0xMSAuZm9ybS13aWRnZXQge1xuICBmbGV4OiAwIDAgMTglO1xuICB3aWR0aDogMTglO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMyB7XG4gIGZsZXg6IDAgMCA0MCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IDMwJTtcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gIHRvcDogMnB4O1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMyAuZm9ybS13aWRnZXQge1xuICBmbGV4OiAwIDAgNjAlO1xuICB3aWR0aDogNjAlO1xufVxuLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuYWNjb3JkaW9uLWJvZHkgLmN1c3RvbS1jb2wge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDE0MDBweCkge1xuICAuY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sIHtcbiAgICBmbGV4OiAwIDAgMzAlO1xuICAgIHdpZHRoOiAzMCU7XG4gIH1cbiAgLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMTIgLmZvcm0td2lkZ2V0IHtcbiAgICBmbGV4OiAwIDAgMzglO1xuICAgIHdpZHRoOiAzOCU7XG4gIH1cbiAgLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiA5JTtcbiAgICBmbGV4OiAwIDAgMzAlO1xuICB9XG4gIC5jdXN0b20tZm9ybS1jb250YWluZXIgLmN1c3RvbS1jb2wuY29sLW1kLTIgLmZvcm0td2lkZ2V0IHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIHdpZHRoOiAyMCU7XG4gIH1cbiAgLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMTEgLmZvcm0td2lkZ2V0IHtcbiAgICBmbGV4OiAwIDAgMTglO1xuICAgIHdpZHRoOiAxOCU7XG4gIH1cbiAgLmN1c3RvbS1mb3JtLWNvbnRhaW5lciAuY3VzdG9tLWNvbC5jb2wtbWQtMyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiAxNSU7XG4gICAgZmxleDogMCAwIDMwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwJTtcbiAgfVxuICAuY3VzdG9tLWZvcm0tY29udGFpbmVyIC5jdXN0b20tY29sLmNvbC1tZC0zIC5mb3JtLXdpZGdldCB7XG4gICAgZmxleDogMCAwIDQwJTtcbiAgICB3aWR0aDogNDAlO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLnBhZ2UtYWN0aW9ucyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZCRkJGQjtcbiAgfVxuICAucGFnZS1hY3Rpb25zLnZ1ZS1hY3Rpb25zIHtcbiAgICB0b3A6IDBweDtcbiAgICBsZWZ0OiAwcHg7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB6LWluZGV4OiAyMDtcbiAgfVxuICAucGFnZS1hY3Rpb25zLnZ1ZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1sZWZ0KTtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciAuZ2xvYmFsLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLnNlYXJjaC1hY3Rpb24gLmNvbnRlbnQtc2VhcmNoLWxhYmVsIHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLmFjdGlvbnMtY29udGFpbmVyIC5zZWFyY2gtYWN0aW9uIC5jb250ZW50LXNlYXJjaC1sYWJlbCAuY29udGVudC1zZWFyY2gtaWNvbiB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLmFjdGlvbnMtY29udGFpbmVyIC5hY3Rpb24ge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDBweCA4cHg7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0VERUJFOSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLmFjdGlvbnMtY29udGFpbmVyIC5hY3Rpb24jY29uZmlnIC5idG4tbGFiZWwge1xuICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbi5mbG9hdC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLmFjdGlvbnMtY29udGFpbmVyIC5hY3Rpb24uZmxvYXQtcmlnaHQgLmFjdGlvbi1pY29uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciAuYWN0aW9uLmZsb2F0LXJpZ2h0IC5kcm9wZG93bi1jb250ZW50IHtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciAuYWN0aW9uLmJ0bi1wcmltYXJ5OmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbi5idG4tZGFuZ2VyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciAuYWN0aW9uLmJ0bi1kYW5nZXI6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciAuYWN0aW9uOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbiAuYWN0aW9uLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBjb2xvcjogIzAwNzhENDtcbiAgICBzdHJva2U6ICMwMDc4RDQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbiAuYWN0aW9uLWljb24uZW1wdHkge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbi5oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbiAuYnRuLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLmFjdGlvbnMtY29udGFpbmVyIC5hY3Rpb24gLmJ0bi1sYWJlbC5ncmF5IGkge1xuICAgIGNvbG9yOiB2YXIoLS1ncmF5LWNvbG9yKTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgLmFjdGlvbiAuYnRuLWxhYmVsIC5hY3Rpb24tbGFiZWwge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgYS5hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6IGluaXRpYWw7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgYS5hY3Rpb24gaSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIH1cbiAgLnBhZ2UtYWN0aW9ucyAuYWN0aW9ucy1jb250YWluZXIgYS5hY3Rpb24gLmFjdGlvbi1sYWJlbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgfVxuICAucGFnZS1hY3Rpb25zIC5hY3Rpb25zLWNvbnRhaW5lciBidXR0b24uYWN0aW9uIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG4gIC5wYWdlLWFjdGlvbnMgLnBhZ2UtYWN0aW9ucy1zZXBhcmF0b3Ige1xuICAgIG1hcmdpbjogMHB4O1xuICB9XG4gIC5kcm9wZG93bi1hY3Rpb24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbiAgLmRyb3Bkb3duLWFjdGlvbiBzcGFuLmJ0bi1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIC5kcm9wZG93bi1hY3Rpb24gLmRyb3Bkb3duLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gICAgLS1kcm9wZG93bi1wYWRkaW5nOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZHJvcGRvd24tYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHJvcGRvd24tYm9yZGVyLWNvbG9yKTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXhsKTtcbiAgICBjb2xvcjogdmFyKC0tZHJvcGRvd24tY29sb3IpO1xuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgIHotaW5kZXg6IDE7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcmlnaHQ6IDBweDtcbiAgfVxuICAuZHJvcGRvd24tYWN0aW9uIC5kcm9wZG93bi1jb250ZW50IHAge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbiAgLmRyb3Bkb3duLWFjdGlvbiAuZHJvcGRvd24tY29udGVudCBwOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgfVxuICAuZHJvcGRvd24tYWN0aW9uOmhvdmVyIC5kcm9wZG93bi1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5tYWluLWNvbnRlbnQge1xuICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gdmFyKC0tc2lkZWJhci1tYXgtd2lkdGgpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib2R5LWJnKTtcbiAgfVxuICAubWFpbi1jb250ZW50IC5jb250ZW50LXdyYXBwZXIge1xuICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIC5tYWluLWNvbnRlbnQgLmNvbnRlbnQtd3JhcHBlciAuY29udGVudCAuY29udGVudC1oZWFkZXIge1xuICAgIHBvc2l0aW9uOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogNTRweCAwcHggMjhweCAwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1haW4tY29udGVudCAuY29udGVudC13cmFwcGVyIC5jb250ZW50IC5jb250ZW50LWhlYWRlciAucGFnZS1hY3Rpb25zIHtcbiAgICBtYXJnaW46IDBweDtcbiAgfVxuICAubWFpbi1jb250ZW50IC5jb250ZW50LXdyYXBwZXIgLmNvbnRlbnQgI21haW4ge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IDMwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICB9XG4gIC5tYWluLWNvbnRlbnQgLmNvbnRlbnQtd3JhcHBlciAuY29udGVudCAjbWFpbioge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gIH1cbiAgLm1haW4tY29udGVudCAuY29udGVudC13cmFwcGVyICNjb250ZW50LXJlc2l6ZXItaGFuZGxlciB7XG4gICAgbWluLWhlaWdodDogMHB4O1xuICB9XG59XG4udG9wLXdyYXBwZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnRvcC13cmFwcGVyIC5uYXZiYXItY3VzdG9tLW1lbnUge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDFweCAwIHZhcigtLWNvbnRlbnQtdG9wLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC50b3Atd3JhcHBlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNzhENDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiA1MDI7XG4gIH1cbiAgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2lkZWJhci1wYWRkaW5nLWxlZnQpO1xuICB9XG4gIC50b3Atd3JhcHBlciAubWFpbi1oZWFkZXIgI2hlYWRlci1sb2dvIGEge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICAudG9wLXdyYXBwZXIgLm1haW4taGVhZGVyIC5jb250ZW50LXRvcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICB9XG4gIC50b3Atd3JhcHBlciAubWFpbi1oZWFkZXIgLmNvbnRlbnQtdG9wIC5jb250ZW50LXNlYXJjaCAuY29udGVudC1zZWFyY2gtaWNvbiB7XG4gICAgY29sb3I6IGJsYWNrO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDIwcHg7XG4gIH1cbiAgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciAuY29udGVudC10b3AgLmNvbnRlbnQtc2VhcmNoIGlucHV0W3R5cGU9c2VhcmNoXVtuYW1lPXF1ZXJ5XSB7XG4gICAgbWluLXdpZHRoOiAzNTBweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDI3cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0NDRTRGNiAhaW1wb3J0YW50O1xuICB9XG4gIC50b3Atd3JhcHBlciAubWFpbi1oZWFkZXIgLmNvbnRlbnQtdG9wIC5jb250ZW50LXNlYXJjaCBpbnB1dFt0eXBlPXNlYXJjaF1bbmFtZT1xdWVyeV06LXdlYmtpdC1hdXRvZmlsbCwgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciAuY29udGVudC10b3AgLmNvbnRlbnQtc2VhcmNoIGlucHV0W3R5cGU9c2VhcmNoXVtuYW1lPXF1ZXJ5XTotd2Via2l0LWF1dG9maWxsOmZvY3VzIHtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDYwMDAwMHMgMHMsIGNvbG9yIDYwMDAwMHMgMHM7XG4gIH1cbiAgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciAubmF2YmFyLWN1c3RvbS1tZW51IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciAubmF2YmFyLWN1c3RvbS1tZW51IC5kcm9wZG93bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDA4MDtcbiAgfVxuICAudG9wLXdyYXBwZXIgLm1haW4taGVhZGVyIC5uYXZiYXItY3VzdG9tLW1lbnUgLnVzZXItbWVudS13cmFwcGVyIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgLnRvcC13cmFwcGVyIC5tYWluLWhlYWRlciAubmF2YmFyLWN1c3RvbS1tZW51IC51c2VyLW1lbnUtd3JhcHBlciAudXNlci1kZXRhaWxzIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAudG9wLXdyYXBwZXIgLm1haW4taGVhZGVyIC5uYXZiYXItY3VzdG9tLW1lbnUgLnVzZXItbWVudS13cmFwcGVyIC51c2VyLW5hbWUtaWNvbiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBTZWdvZVVJLVJlZ3VsYXItZmluYWwsIFNlZ29lIFVJLCBcIlNlZ29lIFVJIFdlYiAoV2VzdCBFdXJvcGVhbilcIiwgU2Vnb2UsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgVGFob21hLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQ7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAudG9wLXdyYXBwZXIgLm1haW4taGVhZGVyIC5uYXZiYXItY3VzdG9tLW1lbnUgLmRyb3Bkb3duLXNldHRpbmdzIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAudG9wLXdyYXBwZXIgLm1haW4taGVhZGVyIC5uYXZiYXItY3VzdG9tLW1lbnUgLmRyb3Bkb3duLXNldHRpbmdzIC5kcm9wZG93bi1zZXR0aW5ncy1idXR0b24ge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDBweDtcbiAgfVxufVxuLnNpZGViYXItd3JhcHBlcjpob3ZlciB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG4uc2lkZWJhci13cmFwcGVyIC5zaWRlYmFyIHtcbiAgbWluLWhlaWdodDogMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xuICBwYWRkaW5nOiAwcHg7XG59XG4uc2lkZWJhci13cmFwcGVyIC5zaWRlYmFyICNtYWluLW1lbnUgdWwubWVudTpmaXJzdC1jaGlsZCA+IC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQgPiBhIHtcbiAgcGFkZGluZzogMTJweCB2YXIoLS1zaWRlYmFyLXBhZGRpbmctcmlnaHQpIDEwcHggMTRweDtcbiAgaGVpZ2h0OiA0NXB4O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IHVsLm1lbnU6Zmlyc3QtY2hpbGQgPiAubWVudS1pdGVtOmZpcnN0LWNoaWxkID4gYSBpIHtcbiAgbWFyZ2luLXRvcDogLTNweDtcbn1cbi5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtIHtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgbWFyZ2luOiAwcHg7XG4gIHBhZGRpbmc6IDBweDtcbn1cbi5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtIC5tZW51LWl0ZW0tbGFiZWwge1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG4uc2lkZWJhci13cmFwcGVyIC5zaWRlYmFyICNtYWluLW1lbnUgLm1lbnUtaXRlbTpub3QoLmV4cGFuZGVkKTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFREVCRTk7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbn1cbi5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtOm5vdCguZXhwYW5kZWQpOmZvY3VzIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzY1NjM2MTtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW06bm90KC5leHBhbmRlZCk6Zm9jdXMgPiBhIHtcbiAgcGFkZGluZzogN3B4IHZhcigtLXNpZGViYXItcGFkZGluZy1yaWdodCkgN3B4IGNhbGModmFyKC0tc2lkZWJhci1wYWRkaW5nLWxlZnQpICsgdmFyKC0tc2lkZWJhci1tZW51LWl0ZW1zLXBhZGRpbmctbGVmdCkpO1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0uYWN0aXZlIHtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xuICBwYWRkaW5nOiAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFMURGREQ7XG59XG4uc2lkZWJhci13cmFwcGVyIC5zaWRlYmFyICNtYWluLW1lbnUgLm1lbnUtaXRlbS5hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDJEMENFO1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0uYWN0aXZlID4gYSB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJIFNlbWlib2xkXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0uYWN0aXZlIC5tZW51LWljb24ge1xuICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0gPiBhIHtcbiAgZm9udC1mYW1pbHk6IFwiU2Vnb2UgVUlcIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMxQjFCMUU7XG4gIHBhZGRpbmc6IDhweCB2YXIoLS1zaWRlYmFyLXBhZGRpbmctcmlnaHQpIDZweCAxNHB4O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0gLnN1Ym1lbnUtdG9nZ2xlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VERUJFOTtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0gLm1lbnUtaXRlbS1jb250ZW50cywgLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0gLm1lbnUtaWNvbiB7XG4gIGNvbG9yOiBibGFjaztcbn1cbi5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtIC5tZW51LWl0ZW0tY29udGVudHMgaSwgLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjbWFpbi1tZW51IC5tZW51LWl0ZW0gLm1lbnUtaWNvbiBpIHtcbiAgbWFyZ2luLXRvcDogLTFweDtcbn1cbi5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtIC5tZW51LWl0ZW0tY29udGVudHMgLnN1Ym1lbnUtdG9nZ2xlLWljb24sIC5zaWRlYmFyLXdyYXBwZXIgLnNpZGViYXIgI21haW4tbWVudSAubWVudS1pdGVtIC5tZW51LWljb24gLnN1Ym1lbnUtdG9nZ2xlLWljb24ge1xuICBjb2xvcjogcmdiKDUwLCA0OSwgNDgpO1xuICBmb250LXNpemU6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBmbG9hdDogcmlnaHQ7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnNpZGViYXItd3JhcHBlciAuc2lkZWJhciAjc2lkZWJhci1yZXNpemVyLWhhbmRsZXIge1xuICBtaW4taGVpZ2h0OiAwcHg7XG59XG5cbi52dWUtc3BsaXQtY29udGFpbmVyIHtcbiAgLS1yZXNwb25zaXZlLWdhcDogMjgwO1xuICAtLWRldGFpbC13aWR0aDogODAwO1xuICAtLWRldGFpbC1taW4td2l0aDogNDgwO1xuICAtLXRhc2tsaXN0LW1pbi13aWR0aDogNDgwO1xuICAtLWN1cnJlbnQtc2lkZWJhci13aWR0aDogdmFyKC0tc2lkZWJhci1tYXgtd2lkdGgpO1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLnZ1ZS1zcGxpdC1kZXRhaWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDhweCAtIDQ0cHggLSAxcHgpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA1cHg7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1kZXRhaWwtd2lkdGgpIC0gdmFyKC0tY3VycmVudC1zaWRlYmFyLXdpZHRoKSAtIDEycHgpO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMjIpIDBweCAyNS42cHggNTcuNnB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjE4KSAwcHggNC44cHggMTQuNHB4IDBweDtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC52dWUtc3BsaXQtZGV0YWlsID4gKiB7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0tbWQtY29udGVudC1wYWRkaW5nKTtcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tbWQtY29udGVudC1wYWRkaW5nKTtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC52dWUtc3BsaXQtZGV0YWlsLmRldGFpbC1vbmx5IHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLWN1cnJlbnQtc2lkZWJhci13aWR0aCkpO1xuICBib3gtc2hhZG93OiBub25lO1xuICByaWdodDogMHB4O1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLnZ1ZS1zcGxpdC1kZXRhaWwuZGV0YWlsLW9ubHkgLmRldGFpbC1jb250ZW50IHtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lciAudnVlLXNwbGl0LWRldGFpbC52dWUtZm9ybSB7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDQ4cHggLSAxcHgpO1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLmRyYWdiYXIge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDQ4cHggLSA0NHB4IC0gMXB4KTtcbiAgd2lkdGg6IDJweDtcbiAgcmlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLWRldGFpbC13aWR0aCkgLSB2YXIoLS1jdXJyZW50LXNpZGViYXItd2lkdGgpIC0gNnB4KTtcbiAgY3Vyc29yOiBjb2wtcmVzaXplO1xuICBiYWNrZ3JvdW5kOiAjRkJGQkZCO1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLmRyYWdiYXIubmV3LWRyYWdiYXIge1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0OHB4IC0gMXB4KTtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC5kcmFnYmFyLm5vbmUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lciAuZHJhZ2Jhcjpob3ZlciwgLnZ1ZS1zcGxpdC1jb250YWluZXIucmVzaXppbmcgLmRyYWdiYXIge1xuICB3aWR0aDogMnB4O1xuICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0UxREZERDtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC52dWUtc3BsaXQtaW5kZXgge1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0OHB4IC0gNDRweCAtIDFweCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLWN1cnJlbnQtc2lkZWJhci13aWR0aCkpO1xuICBvdmVyZmxvdzogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLnZ1ZS1zcGxpdC1pbmRleDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiAxMHB4O1xufVxuLnZ1ZS1zcGxpdC1jb250YWluZXIgLnZ1ZS1zcGxpdC1pbmRleDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNFMEUwRTA7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lciAudnVlLXNwbGl0LWluZGV4Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0MwQzBDMDtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC52dWUtc3BsaXQtaW5kZXg6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0EwQTBBMDtcbn1cbi52dWUtc3BsaXQtY29udGFpbmVyIC52dWUtc3BsaXQtaW5kZXgudGVtcGluZGV4IHtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDhweCAtIDFweCk7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lciAudnVlLXNwbGl0LWluZGV4LnRlbXBpbmRleCBzZWN0aW9uIHtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XG4gIHBhZGRpbmctcmlnaHQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1yaWdodCk7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lciAudnVlLXNwbGl0LWluZGV4LnRlbXBpbmRleCAuY29udGVudC1oZWFkZXIge1xuICBsZWZ0OiAwcHg7XG4gIHBvc2l0aW9uOiBzdGlja3kgIWltcG9ydGFudDtcbiAgei1pbmRleDogMjA7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lci5leHBhbmRlZC5zcGxpdCAudnVlLXNwbGl0LWluZGV4IHtcbiAgd2lkdGg6IHZhcigtLWRldGFpbC13aWR0aCk7XG59XG4udnVlLXNwbGl0LWNvbnRhaW5lci5leHBhbmRlZCAuZHJhZ2JhciB7XG4gIGRpc3BsYXk6IGluaXRpYWw7XG59XG5cbi52dWUtc3BsaXQtZGV0YWlsIHtcbiAgei1pbmRleDogMzA7XG59XG4udnVlLXNwbGl0LWRldGFpbC5mdWxsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogNTAwO1xuICBoZWlnaHQ6IDgwJTtcbiAgd2lkdGg6IDQwJTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwuZnVsbCAudnVlLWRldGFpbHMtaGVhZGVyIHtcbiAgcGFkZGluZzogMHB4O1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwuZnVsbCAudGVtcC1mb3JtIHtcbiAgcGFkZGluZzogMHB4O1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLnZ1ZS1kZXRhaWxzLWhlYWRlci50ZW1wLWRldGFpbHMgaDIge1xuICBmb250LWZhbWlseTogXCJTZWdvZSBVSVwiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXNpemU6IDI4cHg7XG4gIGxpbmUtaGVpZ2h0OiAzMy42cHg7XG4gIGNvbG9yOiBibGFjaztcbiAgbWFyZ2luLWJvdHRvbTogMTRweDtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC52dWUtZGV0YWlscy1oZWFkZXIudGVtcC1kZXRhaWxzIC5zdWJ0aXRsZSB7XG4gIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIG1hcmdpbi1ib3R0b206IDE0cHg7XG59XG4udnVlLXNwbGl0LWRldGFpbCAudnVlLWRldGFpbHMtaGVhZGVyLnRlbXAtZGV0YWlscyAuZ3JvdXAtYnRuIHtcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDBweCA4cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xuICBoZWlnaHQ6IDQ0cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC52dWUtZGV0YWlscy1oZWFkZXIudGVtcC1kZXRhaWxzIC5ncm91cC1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRURFQkU5O1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLnZ1ZS1kZXRhaWxzLWhlYWRlci50ZW1wLWRldGFpbHMgLmdyb3VwLWJ0bi5zZWxlY3RlZCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLnZ1ZS1kZXRhaWxzLWhlYWRlci50ZW1wLWRldGFpbHMgLmdyb3VwLWJ0bi5zZWxlY3RlZDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDhweDtcbiAgcmlnaHQ6IDhweDtcbiAgbWFyZ2luLXRvcDogLTJweDtcbiAgYm90dG9tOiAwO1xuICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3MgZWFzZSwgcmlnaHQgMC4zcyBlYXNlO1xuICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggcmdiKDAsIDEyMCwgMjEyKTtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC52dWUtZGV0YWlscy1oZWFkZXIudGVtcC1kZXRhaWxzIC5ncm91cC1idG4uc2VsZWN0ZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTFERkREO1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLnZ1ZS1kZXRhaWxzLWhlYWRlci50ZW1wLWRldGFpbHMgLmdyb3VwLWJ0bi5zZWxlY3RlZDpob3Zlcjo6YWZ0ZXIge1xuICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3MgZWFzZSwgcmlnaHQgMC4zcyBlYXNlO1xuICBsZWZ0OiAwcHg7XG4gIHJpZ2h0OiAwcHg7XG59XG4udnVlLXNwbGl0LWRldGFpbCAudnVlLWRldGFpbHMtaGVhZGVyLnRlbXAtZGV0YWlscyAuZ3JvdXAtYnRuIGkge1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xuICBjb2xvcjogIzAwNzhENDtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC5kZXRhaWwtY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiA1NHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNjVweDtcbiAgbWluLWhlaWdodDogMTAwJTtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC5kZXRhaWwtY29udGVudCBmb3JtIC5mb3JtLXNlY3Rpb24uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC52dWUtZGV0YWlscy1zdGlja3ktaGVhZGVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwcHg7XG4gIHotaW5kZXg6IDMwO1xuICBoZWlnaHQ6IDQycHg7XG4gIG1hcmdpbi1ib3R0b206IC00MnB4O1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIHBhZGRpbmc6IDBweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLnZ1ZS1kZXRhaWxzLXN0aWNreS1oZWFkZXIgLmNhbmNlbC1pY29uLWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGhlaWdodDogMzJweDtcbiAgd2lkdGg6IDMycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4udnVlLXNwbGl0LWRldGFpbCAudnVlLWRldGFpbHMtc3RpY2t5LWhlYWRlciAuY2FuY2VsLWljb24tY29udGFpbmVyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VERUJFOTtcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC52dWUtZGV0YWlscy1zdGlja3ktaGVhZGVyIC5jYW5jZWwtaWNvbi1jb250YWluZXIgLmljb24ge1xuICBmb250LXNpemU6IDE2cHg7XG59XG4udnVlLXNwbGl0LWRldGFpbCAuZGV0YWlsLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogNDB2dztcbn1cbi52dWUtc3BsaXQtZGV0YWlsIC5kZXRhaWwtZm9vdGVyIHtcbiAgcGFkZGluZy10b3A6IDE2cHg7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1hcmdpbi10b3A6IC02NXB4O1xuICBtaW4taGVpZ2h0OiA2NXB4O1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB6LWluZGV4OiA1MDA7XG59XG4udnVlLXNwbGl0LWRldGFpbCAuZGV0YWlsLWZvb3RlciAuYnV0dG9uLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMTZweDtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLmRldGFpbC1mb290ZXIgLmJ1dHRvbi1jb250YWluZXIgLnZ1ZS1idG4ge1xuICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xufVxuLnZ1ZS1zcGxpdC1kZXRhaWwgLmNoaWxkcmVuLWRldGFpbCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG4udnVlLXNwbGl0LWRldGFpbCAuY2hpbGRyZW4tZGV0YWlsIC5kZXRhaWwtY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiAyMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7XG59XG5cbi5iYWNrZ3JvdW5kLWJsdXJlZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgei1pbmRleDogNTA7XG4gIGluc2V0OiAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIGxlZnQ6IDBweDtcbiAgdG9wOiAwcHg7XG59XG5cbi52dWUtbXVsdGlzZWxlY3QuZGlzYWJsZWQgKiB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbn1cbi52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4udnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAudHMtd3JhcHBlciB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogbGlnaHRncmF5O1xufVxuLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLnRzLXdyYXBwZXIuaW5wdXQtYWN0aXZlIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiBncmF5O1xufVxuLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLnRzLXdyYXBwZXIgLnRzLWNvbnRyb2wge1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICBwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcbn1cbi52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCB7XG4gIG1pbi1oZWlnaHQ6IDM1cHg7XG59XG4udnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnRzLWNvbnRyb2wge1xuICBib3JkZXI6IG5vbmU7XG59XG4udnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCBkaXYuaXRlbSB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3Qge1xuICBib3JkZXI6IHNvbGlkICM2NTYzNjEgMXB4O1xuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QuZXhwYW5kZWQsIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0LmV4cGFuZGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3OEQ0O1xuICBib3JkZXItd2lkdGg6IDJweDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnRzLWNvbnRyb2wsIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC50cy1jb250cm9sIHtcbiAgcGFkZGluZzogMHB4IDhweCAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAzMHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyLCAubmV3LXN0eWxlIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxMDAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjEzMykgMHB4IDMuMnB4IDcuMnB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjExKSAwcHggMC42cHggMS44cHggMHB4O1xuICBtYXJnaW4tbGVmdDogLTJweDtcbiAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCB7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG59XG4udGVtcC1mb3JtLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLm9wdGlvbiwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAub3B0aW9uIHtcbiAgcGFkZGluZzogNnB4IDlweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzZweDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAuZ3JvdXAtdGl0bGUsIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLmdyb3VwLXRpdGxlIHtcbiAgcGFkZGluZzogNnB4IDlweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbiAgZm9udC1zaXplOiBib2xkO1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IC5vcHRpb246aG92ZXIsIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLm9wdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFREVCRTkgIWltcG9ydGFudDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAub3B0aW9uLnJlbW92ZS1vcHRpb24sIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLm9wdGlvbi5yZW1vdmUtb3B0aW9uIHtcbiAgY29sb3I6IHJlZDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAub3B0aW9uLm5vLW9wdGlvbjpob3ZlciwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAub3B0aW9uLm5vLW9wdGlvbjpob3ZlciB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IC5kcm9wZG93bi1jb250ZW50LWludGVybmFsLCAubmV3LXN0eWxlIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IC5kcm9wZG93bi1jb250ZW50LWludGVybmFsIHtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnNlYXJjaC1jb250YWluZXIsIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMHB4IDhweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2NTYzNjE7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuc2VhcmNoLWNvbnRhaW5lciAuc2VhcmNoLWljb24tY29udGFpbmVyLCAubmV3LXN0eWxlIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuc2VhcmNoLWNvbnRhaW5lciAuc2VhcmNoLWljb24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDMwcHg7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZS1pbjtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnNlYXJjaC1jb250YWluZXIgLnNlYXJjaC1pY29uLWNvbnRhaW5lciAuaWNvbiwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnNlYXJjaC1jb250YWluZXIgLnNlYXJjaC1pY29uLWNvbnRhaW5lciAuaWNvbiB7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICMwMDc4RDQ7XG59XG4udGVtcC1mb3JtLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyLmFjdGl2ZSAuc2VhcmNoLWljb24tY29udGFpbmVyLCAubmV3LXN0eWxlIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuc2VhcmNoLWNvbnRhaW5lci5hY3RpdmUgLnNlYXJjaC1pY29uLWNvbnRhaW5lciB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgd2lkdGg6IDBweDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4ycyBlYXNlLW91dDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmljb24sIC5uZXctc3R5bGUgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5pY29uIHtcbiAgY29sb3I6ICMxQjFCMUU7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgcC5wbGFjZWhvbGRlciwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgcC5wbGFjZWhvbGRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gIG1hcmdpbjogMHB4O1xuICBjdXJzb3I6IGluaXRpYWw7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBvcGFjaXR5OiAxO1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuaXRlbSwgLm5ldy1zdHlsZSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLml0ZW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xufVxuLnRlbXAtZm9ybS52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLnZ1ZS1maWVsZC1jb250YWluZXIucmVhZG9seSAuZm9ybS1jb250ZW50LCAubmV3LXN0eWxlIC52dWUtbXVsdGlzZWxlY3QgLnZ1ZS1maWVsZC1jb250YWluZXIucmVhZG9seSAuZm9ybS1jb250ZW50IHtcbiAgYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKHJnYig4NCwgODQsIDg0KSkgIWltcG9ydGFudDtcbn1cblxuLmZpbGUtdXBsb2FkLmZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5pbnB1dC1ncm91cCB7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmZpbGUtdXBsb2FkLmZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5pbnB1dC1ncm91cCAuaW5wdXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzY1NjM2MTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZmlsZS11cGxvYWQuZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmlucHV0LWdyb3VwIC5pbnB1dC1jb250YWluZXIgLmZpbGUtbGFiZWwge1xuICBwYWRkaW5nOiAwcHg7XG4gIG1pbi13aWR0aDogdW5zZXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2lkdGg6IDEwMCU7XG59XG4uZmlsZS11cGxvYWQuZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmlucHV0LWdyb3VwIC5pbnB1dC1jb250YWluZXIgLmJ0biB7XG4gIG1pbi13aWR0aDogdW5zZXQ7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICBib3gtc2hhZG93OiBub25lO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG59XG4uZmlsZS11cGxvYWQuZm9ybS1ncm91cCAuZm9ybS13aWRnZXQgLmlucHV0LWdyb3VwIC5pbnB1dC1jb250YWluZXIgc3BhbiB7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmZpbGUtdXBsb2FkLmZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5pbnB1dC1ncm91cCAuaW5wdXQtaW5mbyB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwIDRweDtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xufVxuLmZpbGUtdXBsb2FkLmZvcm0tZ3JvdXAgLmZvcm0td2lkZ2V0IC5pbnB1dC1ncm91cCAuaW5wdXQtbmFtZSB7XG4gIGZsZXgtZ3JvdzogMjtcbiAgcGFkZGluZzogMHB4IDAuNXJlbTtcbiAgd2lkdGg6IDUwJTtcbn1cblxuLnZ1ZS1kYXRlIGlucHV0IHtcbiAgbWF4LWhlaWdodDogMzZweDtcbiAgYm9yZGVyLWNvbG9yOiBsaWdodGdyYXk7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4udnVlLWRhdGUgaW5wdXQ6Zm9jdXMsIC52dWUtZGF0ZSBpbnB1dDpmb2N1cy13aXRoaW4ge1xuICBib3JkZXItY29sb3I6IGdyYXk7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5mb3JtLWdyb3VwLmZpbGUtdXBsb2FkIC5maWxlLWlucHV0LXRpdGxlIHtcbiAgbWFyZ2luOiAwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMTBweDtcbiAgdG9wOiA1cHg7XG4gIGNvbG9yOiB2YXIoLS1mb3JtLWlucHV0LXRleHQtY29sb3IpO1xufVxuLmZvcm0tZ3JvdXAuZmlsZS11cGxvYWQgLmlucHV0V3JhcHBlciB7XG4gIGhlaWdodDogMzJweDtcbiAgd2lkdGg6IDUwJTtcbiAgbWF4LXdpZHRoOiAyMHZ3O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLypVc2luZyBhIGJhY2tncm91bmQgY29sb3IsIGJ1dCB5b3UgY2FuIHVzZSBhIGJhY2tncm91bmQgaW1hZ2UgdG8gcmVwcmVzZW50IGEgYnV0dG9uKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbn1cbi5mb3JtLWdyb3VwLmZpbGUtdXBsb2FkIC5maWxlSW5wdXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICB6LWluZGV4OiA5OTtcbiAgLypUaGlzIG1ha2VzIHRoZSBidXR0b24gaHVnZS4gSWYgeW91IHdhbnQgYSBiaWdnZXIgYnV0dG9uLCBpbmNyZWFzZSB0aGUgZm9udCBzaXplKi9cbiAgZm9udC1zaXplOiA1MHB4O1xuICAvKk9wYWNpdHkgc2V0dGluZ3MgZm9yIGFsbCBicm93c2VycyovXG4gIG9wYWNpdHk6IDA7XG4gIC1tb3otb3BhY2l0eTogMDtcbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLnZ1ZS1keW5hbWljLWlucHV0IHtcbiAgaGVpZ2h0OiAzMnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0UxREZERDtcbiAgbWFyZ2luOiAwcHggMHB4IDE1cHggMHB4O1xufVxuLnZ1ZS1keW5hbWljLWlucHV0IGksXG4udnVlLWR5bmFtaWMtaW5wdXQgLm1zLUljb24ge1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgd2lkdGg6IDE0cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi52dWUtZHluYW1pYy1pbnB1dC5zZWxlY3RlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM2NTYzNjE7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbi52dWUtZHluYW1pYy1pbnB1dC5zZWxlY3RlZCBpLm1zLUljb24ge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4udnVlLWR5bmFtaWMtaW5wdXQuc2VsZWN0ZWQgaS5tcy1JY29uLS1FZGl0IHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWR0aDogMHB4O1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2Utb3V0O1xufVxuLnZ1ZS1keW5hbWljLWlucHV0IGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi52dWUtZm9ybS1pbnB1dCB7XG4gIGJhY2tncm91bmQ6IGluaXRpYWw7XG4gIHBhZGRpbmc6IDBweCA4cHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnJlYWRvbmx5IC52dWUtY2hlY2tib3gge1xuICBvcGFjaXR5OiAwLjg7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbn1cblxuLnZ1ZS1jaGVja2JveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLCBib3JkZXIsIGJvcmRlci1jb2xvcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjAwbXM7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIzLCAxKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuLnZ1ZS1jaGVja2JveCBpIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLnZ1ZS1jaGVja2JveC5jaGVja2VkIHtcbiAgYmFja2dyb3VuZDogcmdiKDAsIDEyMCwgMjEyKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDAsIDEyMCwgMjEyKTtcbn1cbi52dWUtY2hlY2tib3guY2hlY2tlZCBpLFxuLnZ1ZS1jaGVja2JveC5jaGVja2VkIC5tcy1JY29uIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLmxhYmVsLWV4cGFuZC1jb250YWluZXIge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2VhZWFlYTtcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmxhYmVsLWV4cGFuZC1jb250YWluZXIgLmxhYmVsLWV4cGFuZC1pY29uIHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xuICBjb2xvcjogIzAwNzhENDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2Zvcm06IGluaXRpYWw7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG4ubGFiZWwtZXhwYW5kLWNvbnRhaW5lciAuZGVsZXRlLWljb24ge1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmxhYmVsLWV4cGFuZC1jb250YWluZXIuY29sbGFwc2VkIC5sYWJlbC1leHBhbmQtaWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG4ubGFiZWwtZXhwYW5kLWNvbnRhaW5lci5jb2xsYXBzZWQgLmRlbGV0ZS1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRleHQtbGlzdCAudnVlLWxpc3QtZWxlbWVudCB7XG4gIG1pbi1oZWlnaHQ6IDMycHg7XG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XG59XG4udGV4dC1saXN0IC52dWUtbGlzdC1lbGVtZW50IGlucHV0IHtcbiAgaGVpZ2h0OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuLnRleHQtbGlzdCAudnVlLWxpc3QtZWxlbWVudCB0ZXh0YXJlYSB7XG4gIG1pbi1oZWlnaHQ6IDE2cHg7XG4gIHJlc2l6ZTogbm9uZTtcbn1cblxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLnNlY3Rpb24taGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggbGlnaHRncmV5O1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICBtYXJnaW4tdG9wOiA2cHg7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuc2VjdGlvbi1oZWFkZXIgaDMge1xuICBmb250LXNpemU6IDEuMDVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5zZWN0aW9uLWhlYWRlciAuY29sbHBhc2UtaWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gIGNvbG9yOiAjMDA3OEQ0O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAge1xuICBtYXJnaW46IDJweCAwcHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBkaXNwbGF5OiBub25lO1xuICBtaW4taGVpZ2h0OiAzNnB4O1xuICBwYWRkaW5nOiAwcHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCBpbnB1dFtkaXNhYmxlZF0sXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCB0ZXh0YXJlYVtkaXNhYmxlZF0uZm9ybS1pbnB1dCxcbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5mb3JtLWdyb3VwIHNlbGVjdFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGluaXRpYWw7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5mb3JtLWdyb3VwIC5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkIHtcbiAgY3Vyc29yOiBpbml0aWFsO1xuICBvcGFjaXR5OiAxO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAucmVxdWlyZWQgaW5wdXQge1xuICBib3JkZXI6IHNvbGlkIDFweCAjZGMzNTQ1O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAucmVxdWlyZWQgc2VsZWN0IHtcbiAgYm9yZGVyOiBzb2xpZCAxcHggI2RjMzU0NTtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5mb3JtLWdyb3VwLnJlcXVpcmVkIGRpdi5mb3JtLWNvbnRlbnQge1xuICBib3JkZXI6IHNvbGlkIDFweCAjZGMzNTQ1O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAucmVxdWlyZWQgLmNrLWVkaXRvciB7XG4gIGJvcmRlcjogc29saWQgMXB4ICNkYzM1NDU7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCAuaW5wdXQ6Zm9jdXMsXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCAuaW5wdXQ6Zm9jdXMtdmlzaWJsZSB7XG4gIGJvcmRlcjogc29saWQgMXB4IGJsYWNrO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCAuZm9ybS1jaGVjay1pbnB1dCB7XG4gIGhlaWdodDogMjNweDtcbiAgd2lkdGg6IDIzcHg7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgbWFyZ2luLXRvcDogMHB4O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAgLmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc4RDQ7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCBsYWJlbCB7XG4gIHBhZGRpbmctYm90dG9tOiAwcHg7XG4gIG1pbi13aWR0aDogMTIwcHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCBsYWJlbC5yZXF1aXJlZCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAgbGFiZWwucmVxdWlyZWQ6OmFmdGVyIHtcbiAgY29udGVudDogXCIgKlwiO1xuICBjb2xvcjogcmdiKDE1MywgMCwgMCk7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHg7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHBvc2l0aW9uOiBpbml0aWFsO1xuICB0b3A6IGluaXRpYWw7XG4gIHJpZ2h0OiBpbml0aWFsO1xuICB3aWR0aDogaW5pdGlhbDtcbiAgaGVpZ2h0OiBpbml0aWFsO1xuICBmaWx0ZXI6IGluaXRpYWw7XG4gIHBhZGRpbmctbGVmdDogM3B4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAgLmZvcm0taW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA0MHZ3O1xuICBtaW4td2lkdGg6IDUwcHg7XG4gIGhlaWdodDogMzZweDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgY29sb3I6IHZhcigtLXRleHQtY29sb3ItZGFyayk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCAuZm9ybS1zZWxlY3Qge1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dCBpbnB1dCxcbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0IHRleHRhcmVhLFxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLXRleHRhcmVhIGlucHV0LFxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLXRleHRhcmVhIHRleHRhcmVhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbiAgYm9yZGVyOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLXRleHQgaW5wdXQ6Zm9jdXMsIC52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0IGlucHV0OmZvY3VzLXZpc2libGUsXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dCB0ZXh0YXJlYTpmb2N1cyxcbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0IHRleHRhcmVhOmZvY3VzLXZpc2libGUsXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgaW5wdXQ6Zm9jdXMsXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgaW5wdXQ6Zm9jdXMtdmlzaWJsZSxcbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0YXJlYSB0ZXh0YXJlYTpmb2N1cyxcbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0YXJlYSB0ZXh0YXJlYTpmb2N1cy12aXNpYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMHB4IHNvbGlkIGJsYWNrO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIG91dGxpbmUtc3R5bGU6IHNvbGlkO1xuICBvdXRsaW5lLXdpZHRoOiAxcHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dCBzZWxlY3QsXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgc2VsZWN0IHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiBsaWdodGdyYXk7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtc2VsZWN0IHNlbGVjdCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJIFNlbWlib2xkXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xuICBoZWlnaHQ6IDM2cHg7XG4gIHdpZHRoOiA1MCU7XG4gIG1heC13aWR0aDogMjB2dztcbiAgYm9yZGVyOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLXNlbGVjdCBzZWxlY3Q6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBzb2xpZCBibGFjayAxcHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtZGF0ZSBpbnB1dCB7XG4gIHdpZHRoOiA1MCU7XG4gIG1heC13aWR0aDogMjB2dztcbiAgYm9yZGVyLWNvbG9yOiBsaWdodGdyYXk7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgaGVpZ2h0OiAzNnB4O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLWRhdGUgaW5wdXQ6Zm9jdXMsIC52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC1kYXRlIGlucHV0OmZvY3VzLXdpdGhpbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC1kYXRlIC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLXRleHRhcmVhIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgbGFiZWwge1xuICBtYXJnaW4tdG9wOiA4cHg7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgdGV4dGFyZWEuZm9ybS1pbnB1dCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGM0YyRjE7XG4gIGhlaWdodDogMTA4cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgd2lkdGg6IDQwdnc7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgbWluLWhlaWdodDogMzZweDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC10ZXh0YXJlYSB0ZXh0YXJlYS5mb3JtLWlucHV0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtdGV4dGFyZWEgdGV4dGFyZWEuZm9ybS1pbnB1dDpkaXNhYmxlZCB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5maWVsZC1saW5rIGEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZpZWxkLWxpbmsgYS5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZmllbGQtbGluayBhLmRpc2FibGVkOmhvdmVyIHtcbiAgY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uLmV4cGFuZGVkIC5jb2xscGFzZS1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gIGNvbG9yOiAjMDA3OEQ0O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24uZXhwYW5kZWQgLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQge1xuICB3aWR0aDogMTAwJTtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTFweCBjZW50ZXI7XG4gIGJvcmRlci1ib3R0b206IHNvbGlkIGRhcmtncmV5IDFweDtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xuICBib3gtc2hhZG93OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA0MHZ3O1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbn1cbi52dWUtZm9ybSAuZm9ybS1zZWN0aW9uIC5mb3JtLWNvbnRyb2wtbGFiZWwubWFpbi1sYWJlbCB7XG4gIHdpZHRoOiBhdXRvO1xufVxuLnZ1ZS1mb3JtIC5mb3JtLXNlY3Rpb24gLmZvcm0tY29udHJvbC1sYWJlbC5yZXF1aXJlZDo6YWZ0ZXIge1xuICB6LWluZGV4OiAyICFpbXBvcnRhbnQ7XG59XG5cbi5mb3JtLWdyb3VwIC5jb2wtZm9ybS1sYWJlbC5yZXF1aXJlZDphZnRlcixcbi5mb3JtLWdyb3VwIGxhYmVsLnJlcXVpcmVkOmFmdGVyIHtcbiAgei1pbmRleDogNTAwICFpbXBvcnRhbnQ7XG59XG5cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIge1xuICBmbGV4OiAwIDAgY2FsYyg1MCUgLSAxNXB4KTtcbiAgbWF4LXdpZHRoOiBjYWxjKDUwJSAtIDE1cHgpO1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBvcmRlcjogMTA7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIuZmlyc3Qge1xuICBvcmRlcjogMTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5zaW5nbGUge1xuICBtYXJnaW4tYm90dG9tOiAwcHg7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIgLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDBweDtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lciAuZm9ybS1ncm91cCBsYWJlbCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xuICBmb250LXdlaWdodDogNjAwO1xuICBwYWRkaW5nLWJvdHRvbTogOHB4O1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRlbnQge1xuICBoZWlnaHQ6IDMycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBib3JkZXI6IDFweCBzb2xpZCAjNjU2MzYxO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIgLmZvcm0tZ3JvdXAgLmZvcm0tY29udGVudCBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRlbnQgaW5wdXQudnVlLWZvcm0taW5wdXQge1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIgLmZvcm0tZ3JvdXAgLmZvcm0tY29udGVudCAudnVlLWZvcm0taW5wdXQge1xuICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xuICBwYWRkaW5nOiAwcHggOHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRlbnQuc2VsZWN0ZWQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDA3OEQ0O1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyIC52dWUtZmllbGQtaHRtbCB7XG4gIG1pbi1oZWlnaHQ6IDEyNHB4O1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyIC52dWUtZmllbGQtaHRtbCAuY2stZWRpdG9yIC5jay1jb250ZW50IHtcbiAgbWluLWhlaWdodDogMTI0cHg7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIgLnZ1ZS1maWVsZC1odG1sIC5jay1lZGl0b3IuY2sge1xuICB3aWR0aDogMTAwJTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lciAudnVlLWZpZWxkLWNoZWNrYm94IC5mb3JtLWNvbnRlbnQge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lciAudnVlLWZpZWxkLWNoZWNrYm94IC5mb3JtLWNvbnRlbnQgbGFiZWwge1xuICBwYWRkaW5nLWJvdHRvbTogMHB4O1xufVxuLnRlbXAtZm9ybSAuZm9ybS1zZWN0aW9uIC52dWUtZmllbGQtY29udGFpbmVyLmNvbC1sYXJnZSB7XG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMHB4KTtcbiAgZmxleDogMCAwIGNhbGMoMTAwJSAtIDBweCk7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIuY29sLWxhcmdlIGxhYmVsLmZvcm0tY29udHJvbC1sYWJlbCB7XG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZpZS1maWVsZC1jb250YWluZXIuY29sLXNtYWxsIHtcbiAgZmxleDogMCAwIGNhbGMoMzMuMzMzMzMzMzMzMyUgLSAzMHB4KTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5oYWxmLXJvdyB7XG4gIGZsZXgtYmFzaXM6IDEwMCU7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIuY29sLXR3by10aGlyZHMge1xuICBtYXgtd2lkdGg6IGNhbGMoNjYuNjY2NjY2NjY2NyUgLSA1cHgpO1xuICBmbGV4OiAwIDAgY2FsYyg2Ni42NjY2NjY2NjY3JSAtIDVweCk7XG59XG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIuY29sLW9uZS10aGlyZCB7XG4gIG1heC13aWR0aDogY2FsYygzMy4zMzMzMzMzMzMzJSAtIDBweCk7XG4gIGZsZXg6IDAgMCBjYWxjKDMzLjMzMzMzMzMzMzMlIC0gMHB4KTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5tYXJnaW4tdG9wIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5maWVsZC1ncm91cCB7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5maWVsZC1ncm91cCAudnVlLWxpc3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5jay5jay1wb3dlcmVkLWJ5IHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIucmVhZG9ubHkgLmZvcm0tZ3JvdXAgLmZvcm0tY29udGVudCB7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb25seSAuZm9ybS1ncm91cCAuZm9ybS1jb250ZW50ID4gKiB7XG4gIHBhZGRpbmc6IDBweDtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb25seSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3Qge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb25seSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnRzLWNvbnRyb2wge1xuICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb25seSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLnRleHQge1xuICBjb2xvcjogIzFCMUIxRTtcbn1cbi50ZW1wLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb25seSAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLml0ZW0ge1xuICBjb2xvcjogIzFCMUIxRTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi52dWUtYnRuIHtcbiAgZm9udC1mYW1pbHk6IFwiU2Vnb2UgVUlcIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMxQjFCMUU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlcjogbm9uZSByZ2IoMjM3LCAyMzcsIDIzNyk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgcGFkZGluZzogMHB4IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgbWluLXdpZHRoOiBmaXQtY29udGVudDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTFERkREO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBtaW4taGVpZ2h0OiAzMnB4O1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG59XG4udnVlLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNEMkQwQ0U7XG4gIGJvcmRlci1jb2xvcjogIzY1NjM2MTtcbn1cbi52dWUtYnRuOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM3LCAyMzcsIDIzNykgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYigxNjEsIDE2MSwgMTYxKSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4udnVlLWJ0bi5wcmltYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAxMjAsIDIxMik7XG4gIGJvcmRlci1jb2xvcjogcmdiKDAsIDEyMCwgMjEyKTtcbn1cbi52dWUtYnRuLnByaW1hcnk6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDEwOCwgMTkwKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMCwgMTA4LCAxOTApO1xufVxuXG4udnVlLWJ0bi5kYW5nZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuLnZ1ZS1idG4uZGFuZ2VyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gIGJvcmRlci1jb2xvcjogI2JkMjEzMDtcbn1cblxuLnZ1ZS1idG4ud2FybmluZyB7XG4gIGNvbG9yOiBibGFjaztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3O1xufVxuLnZ1ZS1idG4ud2FybmluZzpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBhODAwO1xuICBib3JkZXItY29sb3I6ICNkMzllMDA7XG59XG5cbi52dWUtYnRuLnN1Y2Nlc3Mge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xufVxuLnZ1ZS1idG4uc3VjY2Vzczpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4O1xuICBib3JkZXItY29sb3I6ICMxZTdlMzQ7XG59XG5cbi52dWUtYnRuLWFjdGlvbiB7XG4gIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwcHggOHB4O1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi52dWUtYnRuLWFjdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFREVCRTk7XG59XG4udnVlLWJ0bi1hY3Rpb24gaSwgLnZ1ZS1idG4tYWN0aW9uIC5tcy1JY29uIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgY29sb3I6ICMwMDc4RDQ7XG59XG5cbi5tb2RhbC12dWUzLWNvbnRlbnQge1xuICB3aWR0aDogNTB2dztcbn1cblxuLnNpbXBsZS1tb2RhbC1jb250YWluZXIgLmNhbmNlbC1pY29uLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IC00N3B4O1xuICBoZWlnaHQ6IDMycHg7XG4gIHdpZHRoOiAzMnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEwMDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uc2ltcGxlLW1vZGFsLWNvbnRhaW5lciAuY2FuY2VsLWljb24tY29udGFpbmVyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VERUJFOTtcbn1cbi5zaW1wbGUtbW9kYWwtY29udGFpbmVyIC5jYW5jZWwtaWNvbi1jb250YWluZXIgLmljb24ge1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uc2ltcGxlLW1vZGFsLWNvbnRhaW5lciAubW9kYWwtY29udGVudCB7XG4gIHBhZGRpbmc6IDBweCAyNHB4IDI0cHg7XG59XG4uc2ltcGxlLW1vZGFsLWNvbnRhaW5lciAubW9kYWwtY29udGVudCAubW9kYWwtY29udGVudC0taGVhZGVyIC50aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiByZ2IoNTAsIDQ5LCA0OCk7XG4gIG1hcmdpbjogMHB4O1xuICBtaW4taGVpZ2h0OiAyMHB4O1xuICBwYWRkaW5nOiAxNnB4IDQ2cHggMjBweCAwcHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG4uc2ltcGxlLW1vZGFsLWNvbnRhaW5lciAubW9kYWwtY29udGVudCAubW9kYWwtY29udGVudC0tYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xufVxuLnNpbXBsZS1tb2RhbC1jb250YWluZXIgLm1vZGFsLWNvbnRlbnQgLm1vZGFsLWNvbnRlbnQtLWJvZHkgcCB7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG4uc2ltcGxlLW1vZGFsLWNvbnRhaW5lciAubW9kYWwtY29udGVudCAubW9kYWwtY29udGVudC0tZm9vdGVyIGJ1dHRvbiB7XG4gIG1hcmdpbi1yaWdodDogMTZweDtcbn1cblxudGFibGUsXG4udnVlLXRhYmxlIHtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XG4gIHBhZGRpbmctcmlnaHQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1yaWdodCk7XG4gIG1hcmdpbi1yaWdodDogNDBweDtcbiAgbWFyZ2luLXRvcDogMThweDtcbiAgbWluLXdpZHRoOiA0MHZ3O1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1zcGFjaW5nOiAwIDJweCAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAjRjNGMkYxO1xuICBtYXJnaW4tYm90dG9tOiA2MHB4O1xufVxudGFibGUgdGJvZHksXG4udnVlLXRhYmxlIHRib2R5IHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxudGFibGUgLmNoaWxkIC5jZWxsLWNvbnRlbnQsXG4udnVlLXRhYmxlIC5jaGlsZCAuY2VsbC1jb250ZW50IHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG50YWJsZSB0cixcbi52dWUtdGFibGUgdHIge1xuICBoZWlnaHQ6IDQycHg7XG59XG50YWJsZSB0ciBzdHJvbmcsXG4udnVlLXRhYmxlIHRyIHN0cm9uZyB7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbnRhYmxlIHRyIHRoLFxuLnZ1ZS10YWJsZSB0ciB0aCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMUIxQjFFO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAzNnB4O1xufVxudGFibGUgdHIgdGQsXG4udnVlLXRhYmxlIHRyIHRkIHtcbiAgZm9udC1mYW1pbHk6IFwiU2Vnb2UgVUlcIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMxQjFCMUU7XG4gIG1pbi13aWR0aDogODBweDtcbiAgcGFkZGluZy1yaWdodDogMzZweDtcbn1cbnRhYmxlIHRyIHRkIC5lbnRpdHktbGluayxcbi52dWUtdGFibGUgdHIgdGQgLmVudGl0eS1saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG50YWJsZSB0ciB0ZCAuZW50aXR5LWxpbmsuZGlzYWJsZWQsXG4udnVlLXRhYmxlIHRyIHRkIC5lbnRpdHktbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG50YWJsZSB0ciB0ZCAuZW50aXR5LWxpbmsuZGlzYWJsZWQ6aG92ZXIsXG4udnVlLXRhYmxlIHRyIHRkIC5lbnRpdHktbGluay5kaXNhYmxlZDpob3ZlciB7XG4gIGNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG59XG50YWJsZSB0ciB0ZCAuY2VsbC5jaGlsZHJlbixcbi52dWUtdGFibGUgdHIgdGQgLmNlbGwuY2hpbGRyZW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG50YWJsZSB0ciB0ZCAuY2VsbC5jaGlsZHJlbiAuZXh0ZW5kLFxuLnZ1ZS10YWJsZSB0ciB0ZCAuY2VsbC5jaGlsZHJlbiAuZXh0ZW5kIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMjVweDtcbn1cbnRhYmxlIHRyIHRkIC5jZWxsLmNoaWxkcmVuIC5leHRlbmQgaSxcbi52dWUtdGFibGUgdHIgdGQgLmNlbGwuY2hpbGRyZW4gLmV4dGVuZCBpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XG59XG50YWJsZSB0ciB0ZCAuY2VsbC5jaGlsZHJlbiAuZXh0ZW5kIGkuZXhwYW5kZWQsXG4udnVlLXRhYmxlIHRyIHRkIC5jZWxsLmNoaWxkcmVuIC5leHRlbmQgaS5leHBhbmRlZCB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xufVxudGFibGUgdHIgdGQsXG50YWJsZSB0ciB0aCxcbi52dWUtdGFibGUgdHIgdGQsXG4udnVlLXRhYmxlIHRyIHRoIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbnRhYmxlIHRyIHRkLndyYXAsXG50YWJsZSB0ciB0aC53cmFwLFxuLnZ1ZS10YWJsZSB0ciB0ZC53cmFwLFxuLnZ1ZS10YWJsZSB0ciB0aC53cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cbnRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkLFxudGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQsXG4udnVlLXRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkLFxuLnZ1ZS10YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCB7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cbnRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkIC5sZXZlbDEsXG50YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWwxLFxuLnZ1ZS10YWJsZSB0ciB0aDpmaXJzdC1jaGlsZCAubGV2ZWwxLFxuLnZ1ZS10YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWwxIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbnRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkIC5sZXZlbDIsXG50YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWwyLFxuLnZ1ZS10YWJsZSB0ciB0aDpmaXJzdC1jaGlsZCAubGV2ZWwyLFxuLnZ1ZS10YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWwyIHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG50YWJsZSB0ciB0aDpmaXJzdC1jaGlsZCAubGV2ZWwzLFxudGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQgLmxldmVsMyxcbi52dWUtdGFibGUgdHIgdGg6Zmlyc3QtY2hpbGQgLmxldmVsMyxcbi52dWUtdGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQgLmxldmVsMyB7XG4gIG1hcmdpbi1sZWZ0OiAxNXB4O1xufVxudGFibGUgdHIgdGg6Zmlyc3QtY2hpbGQgLmxldmVsNCxcbnRhYmxlIHRyIHRkOmZpcnN0LWNoaWxkIC5sZXZlbDQsXG4udnVlLXRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkIC5sZXZlbDQsXG4udnVlLXRhYmxlIHRyIHRkOmZpcnN0LWNoaWxkIC5sZXZlbDQge1xuICBtYXJnaW4tbGVmdDogMjBweDtcbn1cbnRhYmxlIHRyIHRoOmZpcnN0LWNoaWxkIC5sZXZlbDUsXG50YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWw1LFxuLnZ1ZS10YWJsZSB0ciB0aDpmaXJzdC1jaGlsZCAubGV2ZWw1LFxuLnZ1ZS10YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZCAubGV2ZWw1IHtcbiAgbWFyZ2luLWxlZnQ6IDI1cHg7XG59XG50YWJsZSB0ciB0ZC50aXRsZSAuaGVhZGVyLFxudGFibGUgdHIgdGQuc3ViaGVhZGVyIC5oZWFkZXIsXG4udnVlLXRhYmxlIHRyIHRkLnRpdGxlIC5oZWFkZXIsXG4udnVlLXRhYmxlIHRyIHRkLnN1YmhlYWRlciAuaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbnRhYmxlIHRyIHRkLnRpdGxlIC5oZWFkZXIgLnRleHQsXG50YWJsZSB0ciB0ZC5zdWJoZWFkZXIgLmhlYWRlciAudGV4dCxcbi52dWUtdGFibGUgdHIgdGQudGl0bGUgLmhlYWRlciAudGV4dCxcbi52dWUtdGFibGUgdHIgdGQuc3ViaGVhZGVyIC5oZWFkZXIgLnRleHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxudGFibGUgdHIgdGQudGl0bGUgLmhlYWRlciAudGV4dCAuc3VidGl0bGUsXG50YWJsZSB0ciB0ZC5zdWJoZWFkZXIgLmhlYWRlciAudGV4dCAuc3VidGl0bGUsXG4udnVlLXRhYmxlIHRyIHRkLnRpdGxlIC5oZWFkZXIgLnRleHQgLnN1YnRpdGxlLFxuLnZ1ZS10YWJsZSB0ciB0ZC5zdWJoZWFkZXIgLmhlYWRlciAudGV4dCAuc3VidGl0bGUge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDEycHg7XG59XG50YWJsZSB0ciB0ZC50aXRsZSxcbi52dWUtdGFibGUgdHIgdGQudGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xufVxudGFibGUgdHIgdGQudGl0bGUgLnN1YnRhc2tzLWljb24sXG4udnVlLXRhYmxlIHRyIHRkLnRpdGxlIC5zdWJ0YXNrcy1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xuICByaWdodDogMjBweDtcbiAgdG9wOiAtMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG50YWJsZSB0ciB0ZC50aXRsZSAuc3VidGFza3MtaWNvbiBzdmcsXG4udnVlLXRhYmxlIHRyIHRkLnRpdGxlIC5zdWJ0YXNrcy1pY29uIHN2ZyB7XG4gIGZpbGw6IGdyYXk7XG59XG50YWJsZSB0ciB0ZC50aXRsZSAuaGlkZS1zdWJ0YXNrcyxcbi52dWUtdGFibGUgdHIgdGQudGl0bGUgLmhpZGUtc3VidGFza3Mge1xuICBtYXJnaW4tcmlnaHQ6IC0xNnB4O1xuICByaWdodDogMjNweDtcbn1cbnRhYmxlIHRyIHRkLnN1YmhlYWRlcixcbi52dWUtdGFibGUgdHIgdGQuc3ViaGVhZGVyIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgcGFkZGluZy1sZWZ0OiA1NHB4O1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbn1cbnRhYmxlIHRyIHRkID4gKixcbi52dWUtdGFibGUgdHIgdGQgPiAqIHtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG50YWJsZSB0ciAuY2xpY2thYmxlLFxuLnZ1ZS10YWJsZSB0ciAuY2xpY2thYmxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxudGFibGUgdHIgLmNsaWNrYWJsZTpob3ZlciAudGl0bGUsXG4udnVlLXRhYmxlIHRyIC5jbGlja2FibGU6aG92ZXIgLnRpdGxlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG50YWJsZSB0ciAuYWN0aW9uLFxuLnZ1ZS10YWJsZSB0ciAuYWN0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG50YWJsZSB0ciAuYWN0aW9uIHN2Zyxcbi52dWUtdGFibGUgdHIgLmFjdGlvbiBzdmcge1xuICBoZWlnaHQ6IDE4cHg7XG59XG50YWJsZSAuc2VsZWN0ZWQgdGQsXG50YWJsZSAuc2VsZWN0ZWQgdGgsXG4udnVlLXRhYmxlIC5zZWxlY3RlZCB0ZCxcbi52dWUtdGFibGUgLnNlbGVjdGVkIHRoIHtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICMwMDc4RDQ7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweCAjMDA3OEQ0O1xufVxuXG4udGFibGUgPiA6bm90KGNhcHRpb24pID4gKiA+ICoge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xufVxuXG4uaW5kZXgtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDtcbn1cbi5pbmRleC10YWJsZSB0aGVhZCB0aCB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogNDRweDtcbiAgei1pbmRleDogMjA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGQkZCRkI7XG59XG4uaW5kZXgtdGFibGUgdGhlYWQgdGg6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xufVxuLmluZGV4LXRhYmxlIHRib2R5IHRyIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XG59XG4uaW5kZXgtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRURFQkU5O1xufVxuLmluZGV4LXRhYmxlIHRib2R5IHRyLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFMURGREQ7XG59XG4uaW5kZXgtdGFibGUgdGJvZHkgdHIuYWN0aXZlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0QyRDBDRTtcbn1cblxuI25vdGlmaWNhdGlvbiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZzogMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHotaW5kZXg6IDEwMTA7XG59XG4jbm90aWZpY2F0aW9uICoge1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG59XG4jbm90aWZpY2F0aW9uIC5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RFRjJFNztcbiAgY29sb3I6ICMzOTkyNjY7XG4gIGJvcmRlci1jb2xvcjogIzM5OTI2Njtcbn1cbiNub3RpZmljYXRpb24gLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBRUNFQjtcbiAgY29sb3I6ICNFOTUxNjk7XG4gIGJvcmRlci1jb2xvcjogI0U5NTE2OTtcbn1cblxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQge1xuICB3aWR0aDogMTAwJTtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTFweCBjZW50ZXI7XG4gIGJvcmRlci1ib3R0b206IHNvbGlkIGRhcmtncmV5IDFweDtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xuICBib3gtc2hhZG93OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA0MHZ3O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCB7XG4gIGJvcmRlcjogc29saWQgIzY1NjM2MSAxcHg7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0LmV4cGFuZGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3OEQ0O1xuICBib3JkZXItd2lkdGg6IDJweDtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAudHMtY29udHJvbCB7XG4gIHBhZGRpbmc6IDBweCA4cHggIWltcG9ydGFudDtcbiAgbWluLWhlaWdodDogMzBweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgYm9yZGVyLXJhZGl1czogMnB4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxMDAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjEzMykgMHB4IDMuMnB4IDcuMnB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjExKSAwcHggMC42cHggMS44cHggMHB4O1xuICBtYXJnaW4tbGVmdDogLTJweDtcbiAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IHtcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IC5vcHRpb24ge1xuICBwYWRkaW5nOiA2cHggOXB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzNnB4O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLmdyb3VwLXRpdGxlIHtcbiAgcGFkZGluZzogNnB4IDlweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbiAgZm9udC1zaXplOiBib2xkO1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLm9wdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFREVCRTkgIWltcG9ydGFudDtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1jb250ZW50IC5vcHRpb24ucmVtb3ZlLW9wdGlvbiB7XG4gIGNvbG9yOiByZWQ7XG59XG4uc3RhbmRhbG9uZS1tdWx0aXNlbGVjdCAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tY29udGVudCAub3B0aW9uLm5vLW9wdGlvbjpob3ZlciB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5kcm9wZG93bi1jb250YWluZXIgLmRyb3Bkb3duLWNvbnRlbnQgLmRyb3Bkb3duLWNvbnRlbnQtaW50ZXJuYWwge1xuICBtYXgtaGVpZ2h0OiA0MHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMHB4IDhweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM2NTYzNjE7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyIC5zZWFyY2gtaWNvbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMzBweDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4ycyBlYXNlLWluO1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyIC5zZWFyY2gtaWNvbi1jb250YWluZXIgLmljb24ge1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjMDA3OEQ0O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5zZWFyY2gtY29udGFpbmVyLmFjdGl2ZSAuc2VhcmNoLWljb24tY29udGFpbmVyIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWR0aDogMHB4O1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2Utb3V0O1xufVxuLnN0YW5kYWxvbmUtbXVsdGlzZWxlY3QgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IC5pY29uIHtcbiAgY29sb3I6ICMxQjFCMUU7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3QgLmZvcm0td2lkZ2V0IC5mb3JtLW11bHRpLXNlbGVjdCBwLnBsYWNlaG9sZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgbWFyZ2luOiAwcHg7XG4gIGN1cnNvcjogaW5pdGlhbDtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIG9wYWNpdHk6IDE7XG59XG4uc3RhbmRhbG9uZS1tdWx0aXNlbGVjdCAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLml0ZW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xufVxuXG4udnVlLWZpbHRlcnMge1xuICBwYWRkaW5nLWxlZnQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1sZWZ0KTtcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KTtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xufVxuLnZ1ZS1maWx0ZXJzIC52dWUtZmlsdGVycy1vcHRpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXgtd2lkdGg6IDEwMHZ3O1xuICB3aWR0aDogMTAwJTtcbn1cbi52dWUtZmlsdGVycyAudnVlLWZpbHRlcnMtb3B0aW9ucyAuZm9ybS1ncm91cCB7XG4gIHBhZGRpbmc6IDBweDtcbn1cbi52dWUtZmlsdGVycyAudnVlLWZpbHRlcnMtb3B0aW9ucyAuZm9ybS1ncm91cCAudHMtd3JhcHBlciB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGdyYXk7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cbi52dWUtZmlsdGVycyAudnVlLWZpbHRlcnMtb3B0aW9ucyAuZm9ybS1ncm91cCAudHMtd3JhcHBlciBkaXYuaXRlbSB7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4udnVlLWZpbHRlcnMgLnZ1ZS1maWx0ZXJzLW9wdGlvbnMgLmZvcm0tZ3JvdXAub2xkIHtcbiAgZmxleDogMCAwIDIwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICBtYXJnaW4tbGVmdDogMThweDtcbiAgbWluLXdpZHRoOiAzMDBweDtcbiAgcGFkZGluZzogMTRweCAwcHg7XG59XG4udnVlLWZpbHRlcnMgLnZ1ZS1maWx0ZXJzLW9wdGlvbnMgLmZvcm0tZ3JvdXAub2xkIC50cy13cmFwcGVyIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLnZ1ZS1maWx0ZXJzIC52dWUtZmlsdGVycy1vcHRpb25zIC5mb3JtLWdyb3VwLm9sZCAudHMtd3JhcHBlciBkaXYuaXRlbSB7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4udnVlLWZpbHRlcnMgLnZ1ZS1maWx0ZXJzLW9wdGlvbnMgLmZvcm0tZ3JvdXAub2xkIGxhYmVsIHtcbiAgZmxleDogMCAwIDQwJTtcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gIHBhZGRpbmc6IDBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi10b3A6IDhweDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbn1cbi52dWUtZmlsdGVycyAudnVlLWZpbHRlcnMtb3B0aW9ucyAuZm9ybS1ncm91cC5vbGQgLmRhdGUtY29udHJvbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4udnVlLWZpbHRlcnMgLnZ1ZS1maWx0ZXJzLW9wdGlvbnMgLmZvcm0tZ3JvdXAub2xkIC5kYXRlLWNvbnRyb2wgLmxhYmVsIHtcbiAgbWFyZ2luLXRvcDogOHB4O1xufVxuLnZ1ZS1maWx0ZXJzIC52dWUtZmlsdGVycy1vcHRpb25zIC5maWVsZC1zZWxlY3QgZGl2LFxuLnZ1ZS1maWx0ZXJzIC52dWUtZmlsdGVycy1vcHRpb25zIC5maWVsZC1zZWxlY3Qgc2VsZWN0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4udnVlLWZpbHRlcnMgLnZ1ZS1maWx0ZXJzLW9wdGlvbnMgLmZvcm0tY2hlY2suZm9ybS1zd2l0Y2ggaW5wdXQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuLnZ1ZS1maWx0ZXJzIC50YXNrbGlzdC1maWx0ZXJzLWNsZWFyIHtcbiAgcGFkZGluZy10b3A6IDZweDtcbiAgcGFkZGluZy1ib3R0b206IDE2cHg7XG4gIHBhZGRpbmctbGVmdDogMThweDtcbn1cbi52dWUtZmlsdGVycyAuZGF0ZS1ncm91cCBsYWJlbCB7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcbn1cbi52dWUtZmlsdGVycyAuZGF0ZS1ncm91cCBpbnB1dCB7XG4gIG1hcmdpbjogMHB4IDRweDtcbiAgaGVpZ2h0OiAzNXB4O1xufVxuXG4udGFzay1kZXRhaWxzIHtcbiAgcGFkZGluZy10b3A6IDIycHg7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWRldGFpbHMtaGVhZGVyIHtcbiAgYm9yZGVyLWxlZnQ6IHNvbGlkIDVweCAjNUMwMEQ0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1kZXRhaWxzLWhlYWRlci50ZW1wb3JhbCB7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIuY2xhcmlmaWNhdGlvbiB7XG4gIGJvcmRlci1jb2xvcjogI0ZGODAwMDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIub3ZlcmR1ZSB7XG4gIGJvcmRlci1jb2xvcjogI0Q4M0IwMTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIuZG9uZSB7XG4gIGJvcmRlci1jb2xvcjogI0YzRjJGMTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIuZGVsZXRlZCB7XG4gIGJvcmRlci1jb2xvcjogIzIzMjcyYjtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgLnN1YnRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgaDIge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1kZXRhaWxzLWhlYWRlciBoMixcbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgcCB7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgLmFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWRldGFpbHMtaGVhZGVyIC5hY3Rpb25zIGJ1dHRvbiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAzNXB4O1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWluLXdpZHRoOiAxMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXNpemU6IDE0cHg7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWRldGFpbHMtaGVhZGVyIC5hY3Rpb25zIGJ1dHRvbjpkaXNhYmxlZCB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgLmFjdGlvbnMgYnV0dG9uLmNyZWF0ZS10YXNrLCAudGFzay1kZXRhaWxzIC50YXNrLWRldGFpbHMtaGVhZGVyIC5hY3Rpb25zIGJ1dHRvbi5jb21wbGV0ZS10YXNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVDMDBENDtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1kZXRhaWxzLWhlYWRlciAuYWN0aW9ucyBidXR0b24uaW4tcHJvZ3Jlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBjb2xvcjogYmxhY2s7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWRldGFpbHMtaGVhZGVyIC5hY3Rpb25zIGJ1dHRvbi5vdmVyZHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Q4M0IwMTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1kZXRhaWxzLWhlYWRlciAuYWN0aW9ucyBidXR0b24uZG9uZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGM0YyRjE7XG4gIGNvbG9yOiBibGFjaztcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgLmFjdGlvbnMgYnV0dG9uLmNsYXJpZnktdGFzayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRjgwMDA7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZGV0YWlscy1oZWFkZXIgLmFjdGlvbnMgYnV0dG9uLmRlbGV0ZS10YXNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIzMjcyYjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5zYXZlLWNvbW1lbnQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5zYXZlLWNvbW1lbnQgYnV0dG9uIHtcbiAgd2lkdGg6IDEyMHB4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5tZXNzYWdlcyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5tZXNzYWdlcyAubWVzc2FnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IGNhbGMoNDB2dyArIDEyMHB4KTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAubWVzc2FnZXMgLm1lc3NhZ2UgcCB7XG4gIHBhZGRpbmc6IDBweDtcbiAgbWFyZ2luOiAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWZvcm0gLm1lc3NhZ2VzIC5tZXNzYWdlIHAgLmFjdGlvbnMge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAubWVzc2FnZXMgLm1lc3NhZ2UgcCAuYWN0aW9ucyAuZGVsZXRlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmaWxsOiAjRDgzQjAxO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5tZXNzYWdlcyAubWVzc2FnZSBwIC5hY3Rpb25zIC5kZWxldGU6aG92ZXIge1xuICBmaWxsOiAjOTIwZjBmO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5tZXNzYWdlcyAubWVzc2FnZSAubWVzc2FnZS1oZWFkZXIge1xuICBmb250LXdlaWdodDogNjAwO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5tZXNzYWdlcyAubWVzc2FnZSBociB7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAuZmlsZXMge1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IGNhbGMoNDB2dyArIDEyMHB4KTtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAuZmlsZXMgLmZpbGUgcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMHB4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSBwIC5kb3dubG9hZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAuZmlsZXMgLmZpbGUgcCAuZG93bmxvYWQgc3ZnIHtcbiAgaGVpZ2h0OiAxN3B4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGZpbGw6IGRhcmtncmF5O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSBwIC5kb3dubG9hZFtkaXNhYmxlZD10cnVlXSB7XG4gIGN1cnNvcjogaW5pdGlhbDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSAuZmlsZXMgLmZpbGUgcCAuYWN0aW9ucyB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSBwIC5hY3Rpb25zIC5kZWxldGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZpbGw6ICNEODNCMDE7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWZvcm0gLmZpbGVzIC5maWxlIHAgLmFjdGlvbnMgLmRlbGV0ZTpob3ZlciB7XG4gIGZpbGw6ICM5MjBmMGY7XG59XG4udGFzay1kZXRhaWxzIC50YXNrLWZvcm0gLmZpbGVzIC5maWxlIHAgLmFjdGlvbnMgLmRvd25sb2FkIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmaWxsOiBibGFjaztcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSBwIC5hY3Rpb25zIC5kb3dubG9hZDpob3ZlciB7XG4gIGZpbGw6IGRhcmtncmV5O1xufVxuLnRhc2stZGV0YWlscyAudGFzay1mb3JtIC5maWxlcyAuZmlsZSBociB7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi50YXNrLWRldGFpbHMgLnRhc2stZm9ybSBociB7XG4gIG9wYWNpdHk6IDAuMTtcbn1cblxuLnRhc2stbWFpbi10aXRsZSB7XG4gIGJvcmRlci1sZWZ0OiBzb2xpZCA1cHggdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG4udGFzay1tYWluLXRpdGxlLnN0YXR1cy1vcGVuIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM1QzAwRDQgIWltcG9ydGFudDtcbn1cbi50YXNrLW1haW4tdGl0bGUuc3RhdHVzLWNsYXJpZmljYXRpb24ge1xuICBib3JkZXItbGVmdC1jb2xvcjogI0ZGODAwMCAhaW1wb3J0YW50O1xufVxuLnRhc2stbWFpbi10aXRsZS5zdGF0dXMtaW4tcHJvZ3Jlc3Mge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuLnRhc2stbWFpbi10aXRsZS5zdGF0dXMtb3ZlcmR1ZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjRDgzQjAxICFpbXBvcnRhbnQ7XG59XG4udGFzay1tYWluLXRpdGxlLnN0YXR1cy1kb25lIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNGM0YyRjEgIWltcG9ydGFudDtcbn1cbi50YXNrLW1haW4tdGl0bGUuc3RhdHVzLWRlbGV0ZWQge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzIzMjcyYiAhaW1wb3J0YW50O1xufVxuXG4udGFza2xpc3QgdHIgLmFkZCBzdmcge1xuICBmaWxsOiAjMDA3OEQ0O1xufVxuLnRhc2tsaXN0IHRyIC5pbXBvcnRhbnQge1xuICBtYXJnaW4tbGVmdDogMzVweDtcbiAgbWFyZ2luLXJpZ2h0OiAzNXB4O1xufVxuLnRhc2tsaXN0IHRyIC5pbXBvcnRhbnQgc3ZnIHtcbiAgaGVpZ2h0OiAxNHB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIGZpbGw6ICNkYzM1NDU7XG59XG4udGFza2xpc3QgLnRhc2stZ3JvdXAge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuLnRhc2tsaXN0IC50YXNrLWdyb3VwIC50YXNrLWVsZW1lbnQge1xuICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDtcbiAgcGFkZGluZzogMTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuLnRhc2tsaXN0IC50YXNrLWdyb3VwIC50YXNrLWVsZW1lbnQgaW5wdXQge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG4udGFza2xpc3QgLnRhc2stZ3JvdXAgLnRhc2stZWxlbWVudCBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4udGFza2xpc3QgLnRhc2stZ3JvdXAgLmRvbmUtdGFzayB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU1LCAxNTUsIDE1NSwgMC41KTtcbn1cblxuLnN0YXR1cyAqLFxuLnN0YXR1cy5jaG9pY2UgKiB7XG4gIHdpZHRoOiAxMTRweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItd2lkdGg6IDBweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbn1cbi5zdGF0dXMgLm9wZW4sXG4uc3RhdHVzLmNob2ljZSAub3BlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1QzAwRDQ7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5zdGF0dXMgLmluLXByb2dyZXNzLFxuLnN0YXR1cy5jaG9pY2UgLmluLXByb2dyZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgY29sb3I6IGJsYWNrO1xufVxuLnN0YXR1cyAub3ZlcmR1ZSxcbi5zdGF0dXMuY2hvaWNlIC5vdmVyZHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Q4M0IwMTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnN0YXR1cyAuZG9uZSxcbi5zdGF0dXMuY2hvaWNlIC5kb25lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjJGMTtcbiAgY29sb3I6IGJsYWNrO1xufVxuLnN0YXR1cyAuY2xhcmlmaWNhdGlvbixcbi5zdGF0dXMuY2hvaWNlIC5jbGFyaWZpY2F0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGODAwMDtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnN0YXR1cyAuZGVsZXRlZCxcbi5zdGF0dXMuY2hvaWNlIC5kZWxldGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIzMjcyYjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnN0YXR1cyBvcHRpb24uY2xhcmlmaWNhdGlvbixcbi5zdGF0dXMuY2hvaWNlIG9wdGlvbi5jbGFyaWZpY2F0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiAjRkY4MDAwO1xufVxuXG4ud29ya2Zsb3ctZGV0YWlscyB7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuLndvcmtmbG93LWRldGFpbHMgLndvcmstZmxvdy1kZXRhaWwtaGVhZGVyIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgZm9udC1zaXplOiAxcmVtO1xufVxuLndvcmtmbG93LWRldGFpbHMgLndvcmstZmxvdy1kZXRhaWwtaGVhZGVyIC5hY3Rpb25zIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLndvcmtmbG93LWRldGFpbHMgLndvcmstZmxvdy1kZXRhaWwtaGVhZGVyIC5hY3Rpb25zIGJ1dHRvbiB7XG4gIG1hcmdpbi1sZWZ0OiAxNHB4O1xufVxuLndvcmtmbG93LWRldGFpbHMgLndvcmstZmxvdy1kZXRhaWwtaGVhZGVyIC5nZW5lcmFsLXNlY3Rpb24ge1xuICBtYXJnaW4tdG9wOiAxMnB4O1xufVxuLndvcmtmbG93LWRldGFpbHMgLmhlYWQtZmllbGQge1xuICBoZWlnaHQ6IDQwcHg7XG59XG4ud29ya2Zsb3ctZGV0YWlscyAubGFiZWwge1xuICBmb250LXdlaWdodDogNTAwO1xufVxuLndvcmtmbG93LWRldGFpbHMgLmZvcm0tY29udHJvbC1sYWJlbCB7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cbi53b3JrZmxvdy1kZXRhaWxzIC5zZWN0aW9uLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgMnB4IGxpZ2h0Z3JleTtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi53b3JrZmxvdy1kZXRhaWxzIC5zZWN0aW9uLWhlYWRlciBoMyB7XG4gIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xufVxuLndvcmtmbG93LWRldGFpbHMgLnNlY3Rpb24taGVhZGVyIC5jb2xscGFzZS1pY29uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgY29sb3I6ICMwMDc4RDQ7XG59XG4ud29ya2Zsb3ctZGV0YWlscyAuc2VjdGlvbi1oZWFkZXIgLmNvbGxwYXNlLWljb24gc3ZnIHtcbiAgZmlsbDogZ3JheTtcbn1cbi53b3JrZmxvdy1kZXRhaWxzIC53b3JrZmxvdy1jb25kaXRpb24tZm9ybSwgLndvcmtmbG93LWRldGFpbHMgLndvcmtmbG93LWFjdGlvbi1mb3JtIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi53b3JrZmxvdy1kZXRhaWxzIC5leHBhbmRlZCAud29ya2Zsb3ctY29uZGl0aW9uLWZvcm0sIC53b3JrZmxvdy1kZXRhaWxzIC5leHBhbmRlZCAud29ya2Zsb3ctYWN0aW9uLWZvcm0ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLndvcmtmbG93LWluZGV4IC53b3JrZmxvdy1lbnRpdGllcyB7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLWxlZnQpO1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQpO1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGM0YyRjE7XG59XG4ud29ya2Zsb3ctaW5kZXggLndvcmtmbG93LWVudGl0aWVzIC52dWUtYnRuIHtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLndvcmtmbG93LWluZGV4IC5hZGQgc3ZnIHtcbiAgZmlsbDogIzAwNzhENDtcbn1cbi53b3JrZmxvdy1pbmRleCB0ci53b3JrZmxvdyAuYWN0aW9ucyB7XG4gIG1hcmdpbi1sZWZ0OiAzMHB4O1xufVxuLndvcmtmbG93LWluZGV4IHRyLndvcmtmbG93IC5hY3Rpb25zIC5yZW1vdmUgc3ZnIHtcbiAgZmlsbDogI2RjMzU0NTtcbn1cbi53b3JrZmxvdy1pbmRleCAuYWN0aXZlLWluZGV4IHtcbiAgaGVpZ2h0OiAyM3B4O1xuICB3aWR0aDogMjNweDtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWFyZ2luLXRvcDogMHB4O1xufVxuLndvcmtmbG93LWluZGV4IC5hY3RpdmUtaW5kZXg6Y2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc4RDQ7XG59XG5cbi53b3JrZmxvdy1hY3Rpb24ge1xuICBib3JkZXI6IHNvbGlkIDFweCBsaWdodGdyYXk7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLndvcmtmbG93LWFjdGlvbiAuZm9ybS1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi53b3JrZmxvdy1hY3Rpb24gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG4ud29ya2Zsb3ctYWN0aW9uIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAgPiBsYWJlbCB7XG4gIG1hcmdpbi10b3A6IDZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuLndvcmtmbG93LWFjdGlvbiAuZm9ybS1zZWN0aW9uIC5mb3JtLWdyb3VwLmFsaWduLWNlbnRlciB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ud29ya2Zsb3ctYWN0aW9uIC5oYW5kbGVyLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLndvcmtmbG93LWFjdGlvbiAuaGFuZGxlci1zZWN0aW9uIC5mb3JtLWdyb3VwIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ud29ya2Zsb3ctYWN0aW9uIC5oYW5kbGVyLXNlY3Rpb24gLnJlbW92ZS1hY3Rpb24ge1xuICBmaWxsOiByZWQ7XG59XG5cbi53b3JrZmxvdy1jb25kaXRpb24ge1xuICBib3JkZXI6IHNvbGlkIDFweCBsaWdodGdyYXk7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLndvcmtmbG93LWNvbmRpdGlvbiAuZm9ybS1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi53b3JrZmxvdy1jb25kaXRpb24gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG4ud29ya2Zsb3ctY29uZGl0aW9uIC5mb3JtLXNlY3Rpb24gLmZvcm0tZ3JvdXAgPiBsYWJlbCB7XG4gIG1hcmdpbi10b3A6IDZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuLndvcmtmbG93LWNvbmRpdGlvbiAudHlwZS1zZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi53b3JrZmxvdy1jb25kaXRpb24gLnR5cGUtc2VjdGlvbiAuZm9ybS1ncm91cCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLndvcmtmbG93LWNvbmRpdGlvbiAudHlwZS1zZWN0aW9uIC5yZW1vdmUtY29uZGl0aW9uIHtcbiAgZmlsbDogcmVkO1xufVxuXG4uZG9jdW1lbnQtZGV0YWlscyAuZG9jdW1lbnQtZGV0YWlscy1oZWFkZXIge1xuICBtYXJnaW4tdG9wOiAyOHB4O1xufVxuLmRvY3VtZW50LWRldGFpbHMgLmZvcm0tY29udHJvbC1sYWJlbCB7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cbi5kb2N1bWVudC1kZXRhaWxzIC5maWxlLXNlY3Rpb24gLmZvcm0tZ3JvdXAuZmlsZSBpZnJhbWUsIC5kb2N1bWVudC1kZXRhaWxzIC5maWxlLXNlY3Rpb24gLmZvcm0tZ3JvdXAuZmlsZSBvYmplY3Qge1xuICBhc3BlY3QtcmF0aW86IDEuNDE0Mjtcbn1cblxuLnJlbGF0ZWQtZG9jdW1lbnRzIC5maWxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogY2FsYyg0MHZ3ICsgMTIwcHgpO1xufVxuLnJlbGF0ZWQtZG9jdW1lbnRzIC5maWxlIHAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDBweDtcbn1cbi5yZWxhdGVkLWRvY3VtZW50cyAuZmlsZSBwIC5kb3dubG9hZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5yZWxhdGVkLWRvY3VtZW50cyAuZmlsZSBwIC5kb3dubG9hZCBpIHtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGZpbGw6IGRhcmtncmF5O1xufVxuLnJlbGF0ZWQtZG9jdW1lbnRzIC5maWxlIHAgLmRvd25sb2FkW2Rpc2FibGVkPXRydWVdIHtcbiAgY3Vyc29yOiBpbml0aWFsO1xufVxuLnJlbGF0ZWQtZG9jdW1lbnRzIC5maWxlIHAgLmFjdGlvbnMge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgZGlzcGxheTogZmxleDtcbn1cbi5yZWxhdGVkLWRvY3VtZW50cyAuZmlsZSBwIC5hY3Rpb25zIC5kZWxldGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZpbGw6ICNEODNCMDE7XG59XG4ucmVsYXRlZC1kb2N1bWVudHMgLmZpbGUgcCAuYWN0aW9ucyAuZGVsZXRlOmhvdmVyIHtcbiAgZmlsbDogIzkyMGYwZjtcbn1cbi5yZWxhdGVkLWRvY3VtZW50cyAuZmlsZSBwIC5hY3Rpb25zIC5kb3dubG9hZCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmlsbDogYmxhY2s7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbn1cbi5yZWxhdGVkLWRvY3VtZW50cyAuZmlsZSBwIC5hY3Rpb25zIC5kb3dubG9hZDpob3ZlciB7XG4gIGZpbGw6IGRhcmtncmV5O1xufVxuLnJlbGF0ZWQtZG9jdW1lbnRzIC5maWxlIGhyIHtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4uZG9jdW1lbnQtcmVxdWVzdCAuZG9jdW1lbnQtcmVxdWVzdC1mb3JtIHtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XG4gIHBhZGRpbmctcmlnaHQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1yaWdodCk7XG4gIG1hcmdpbi1ib3R0b206IDgwcHg7XG59XG4uZG9jdW1lbnQtcmVxdWVzdCAuZG9jdW1lbnQtcmVxdWVzdC1mb3JtIC5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luLWxlZnQ6IDBweDtcbn1cbi5kb2N1bWVudC1yZXF1ZXN0IC5kb2N1bWVudC1yZXF1ZXN0LWZvcm0gLnJlc2V0LWRhdGUtZ3JvdXAge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufSIsIkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6ICdTZWdvZVVJJztcclxuICAgIHNyYzogdXJsKCcuLi9mb250cy9TZWdvZV9VSS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2VVSVNlbWlib2xkJztcclxuICAgIHNyYzogdXJsKCcuLi9mb250cy9TZWdvZV9VSV9TZW1pYm9sZC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG59XHJcblxyXG5AbWl4aW4gZm9udFNlZ29lVUkoJGZvbnQtY29sb3I6ICRmb250LWJsYWNrKSB7XHJcbiAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiAkZm9udC1jb2xvcjtcclxufVxyXG5cclxuQG1peGluIGZvbnRTZW9nZVVJU21hbGwoJGZvbnQtY29sb3I6ICRmb250LWJsYWNrKSB7XHJcbiAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1jb2xvcik7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTZweDtcclxufVxyXG5cclxuQG1peGluIGZvbnRTZWdvZVVJU2VtaWJvbGQoJGZvbnQtY29sb3I6ICRmb250LWJsYWNrKSB7XHJcbiAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJIFNlbWlib2xkJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiAkZm9udC1jb2xvcjtcclxufVxyXG5cclxuQG1peGluIGZvbnRTZWdvZVVJU2VtaWJvbGRDdXN0b20oJGZvbnQtY29sb3I6ICRmb250LWJsYWNrICwgJGZvbnQtc2l6ZTogMTRweCwgJGxpbmUtaGVpZ2h0OiAyMHB4KSB7XHJcbiAgICBAaW5jbHVkZSBmb250U2Vnb2VVSVNlbWlib2xkKCRmb250LWNvbG9yKTtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb250U2Vnb2VVSVRpdGxlKCRmb250LWNvbG9yOiAkZm9udC1ibGFjaykge1xyXG4gICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDMzLjZweDtcclxuICAgIGNvbG9yOiAkZm9udC1jb2xvcjtcclxufVxyXG5cclxuQG1peGluIGZvbnRBcmlhbE5vcm1hbCgkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spIHtcclxuICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xyXG4gICAgY29sb3I6ICRmb250LWNvbG9yO1xyXG59XHJcblxyXG5AbWl4aW4gZm9udEFyaWFsRGV0YWlsKCRmb250LWNvbG9yOiAkZm9udC1ibGFjaykge1xyXG4gICAgQGluY2x1ZGUgZm9udEFyaWFsTm9ybWFsKCRmb250LWNvbG9yKTtcclxuICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xyXG59XHJcblxyXG5AbWl4aW4gZm9udEFyaWFsSDEoJGZvbnQtY29sb3I6ICRmb250LWJsYWNrKSB7XHJcbiAgICBAaW5jbHVkZSBmb250QXJpYWxOb3JtYWwoJGZvbnQtY29sb3IpO1xyXG4gICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDI1cHg7XHJcbn1cclxuXHJcbkBtaXhpbiBmb250TG9naW4oJGZvbnQtY29sb3I6ICRmb250LWJsYWNrKSB7XHJcbiAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1jb2xvcik7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbn1cclxuXHJcbkBtaXhpbiBmb250TG9naW5TbWFsbCgkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spIHtcclxuICAgIEBpbmNsdWRlIGZvbnRTZWdvZVVJKCRmb250LWNvbG9yKTtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxufVxyXG5cclxuQG1peGluIGZvbnRMb2dpbkJpZygkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spIHtcclxuICAgIEBpbmNsdWRlIGZvbnRTZWdvZVVJKCRmb250LWNvbG9yKTtcclxuICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMjhweDtcclxufSIsIkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xyXG4gICAgaHRtbCB7XHJcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgfVxyXG5cclxuICAgIGJvZHkge1xyXG5cclxuICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcclxuXHJcbiAgICAgICAgLm1haW4td3JhcHBlciB7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICA+LndyYXBwZXIge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDQ4cHg7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtNDhweDtcclxuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcclxuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cclxuICAgICAgICAgICAgICAgIC5jb250ZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQtaGVhZGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1yaWdodCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGl0bGUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udFNlZ29lVUlUaXRsZShibGFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuYm9keSB7XHJcbiAgICBpLm1zLUljb24ge1xyXG4gICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgfVxyXG59XHJcblxyXG4jbWFpbi1tZW51IC5tZW51IC5tZW51LWl0ZW0uaGFzLXN1Ym1lbnUuZXhwYW5kZWQgLnN1Ym1lbnUtdG9nZ2xlLWljb24ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XHJcbn1cclxuXHJcbi5lYS1zZWFyY2gtZGlzYWJsZWQge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmNvbnRlbnQge1xyXG4gICAgaGVpZ2h0OiAxMDB2aDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG59IiwiXG5cblxuXG5cbmJvZHkge1xuICAmLmxvZ2luZm9ybSB7IFxuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblxuICAgICoge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGNvbG9yOiAjMWExZjM2O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sSGVsdmV0aWNhIE5ldWUsVWJ1bnR1LHNhbnMtc2VyaWY7XG4gICAgfVxuICAgXG4gICAgLmxvZ2luLWhlYWRlcntcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgQGluY2x1ZGUgZm9udExvZ2luQmlnKCRmb250LWNvbG9yOiAkZm9udC1ibGFjayk7XG4gICAgfVxuICAgIC5sb2dvLWxvZ2lue1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgaW1ne1xuICAgICAgICB3aWR0aDogODZweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTI0cHg7XG4gICAgICB9XG4gICAgfVxuICAgIGEge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bnNldDtcbiAgICB9XG4gICAgLmxvZ2luLXJvb3Qge1xuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gICAgLmZsZXgtZmxleCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgICAuYWxpZ24tY2VudGVyIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIC5jZW50ZXItY2VudGVyIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmJveC1yb290IHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5mbGV4LWRpcmVjdGlvbi0tY29sdW1uIHtcbiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG4gICAgLmxvZ2luYmFja2dyb3VuZC1ncmlkQ29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IC1tcy1ncmlkO1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIC1tcy1ncmlkLWNvbHVtbnM6IFtzdGFydF0gMWZyIFtsZWZ0LWd1dHRlcl0gKDg2LjZweClbMTZdIFtsZWZ0LWd1dHRlcl0gMWZyIFtlbmRdO1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbc3RhcnRdIDFmciBbbGVmdC1ndXR0ZXJdIHJlcGVhdCgxNiw4Ni42cHgpIFtsZWZ0LWd1dHRlcl0gMWZyIFtlbmRdO1xuICAgICAgLW1zLWdyaWQtcm93czogW3RvcF0gMWZyIFt0b3AtZ3V0dGVyXSAoNjRweClbOF0gW2JvdHRvbS1ndXR0ZXJdIDFmciBbYm90dG9tXTtcbiAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogW3RvcF0gMWZyIFt0b3AtZ3V0dGVyXSByZXBlYXQoOCw2NHB4KSBbYm90dG9tLWd1dHRlcl0gMWZyIFtib3R0b21dO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDAgLTIlO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyZGVnKSBza2V3KC0xMmRlZyk7XG4gICAgfVxuICAgIC5ib3gtZGl2aWRlci0tbGlnaHQtYWxsLTIge1xuICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4ICNlM2U4ZWU7XG4gICAgfVxuICAgIC5ib3gtYmFja2dyb3VuZC0tYmx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2OWQ0O1xuICAgIH1cbiAgICAuYm94LWJhY2tncm91bmQtLXdoaXRlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5ib3gtYmFja2dyb3VuZC0tYmx1ZTgwMCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyZDYzO1xuICAgIH1cbiAgICAuYm94LWJhY2tncm91bmQtLWdyYXkxMDAge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZThlZTtcbiAgICB9XG4gICAgLmJveC1iYWNrZ3JvdW5kLS1jeWFuMjAwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM3ZmQzZWQ7XG4gICAgfVxuICAgIC5wYWRkaW5nLXRvcC0tNjQge1xuICAgICAgcGFkZGluZy10b3A6IDY0cHg7XG4gICAgfVxuICAgIC5wYWRkaW5nLXRvcC0tMjQge1xuICAgICAgcGFkZGluZy10b3A6IDI0cHg7XG4gICAgfVxuICAgIC5wYWRkaW5nLXRvcC0tNDgge1xuICAgICAgcGFkZGluZy10b3A6IDQ4cHg7XG4gICAgfVxuICAgIC5wYWRkaW5nLWJvdHRvbS0tMjQge1xuICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgfVxuICAgIC5wYWRkaW5nLWJvdHRvbS0tMTUge1xuICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgfVxuICAgIC5zdWJtaXQge1xuICAgICAgcGFkZGluZy1ib3R0b206IDBweDtcbiAgICB9XG4gICAgLmZvcm1iZy1pbm5lciB7XG4gICAgICBtaW4td2lkdGg6IDQ0MHB4O1xuICAgICAgcGFkZGluZzogNDRweDtcbiAgICB9XG4gICAgLmZsZXgtanVzdGlmeUNvbnRlbnQtLWNlbnRlciB7XG4gICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmZvcm1iZyB7XG4gICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICBtYXJnaW46IDBweCBhdXRvO1xuICAgICAgLy93aWR0aDogMTAwJTtcbiAgICAgIC8vbWF4LXdpZHRoOiA0NDhweDtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgYm94LXNoYWRvdzogcmdiYSg2MCwgNjYsIDg3LCAwLjEyKSAwcHggN3B4IDE0cHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuMTIpIDBweCAzcHggNnB4IDBweDtcbiAgICAgIG1heC13aWR0aDogNDQwcHg7XG5cbiAgICAgIC5maWVsZCB7XG4gICAgICAgIGlucHV0e1xuICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkICRmb250LWJsdWUgMXB4O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dDpmb2N1cy12aXNpYmxle1xuICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuc3VibWl0e1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgbWFyZ2luOiA0cHggMHB4IDJweCAwcHg7XG4gICAgICAgIC52dWUtYnRue1xuICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgQGluY2x1ZGUgZm9udExvZ2luKCRmb250LWNvbG9yOiAjZmZmKTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICAgICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGEge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgICAgICAgcHtcbiAgICAgICAgICBAaW5jbHVkZSBmb250TG9naW5TbWFsbCggJGZvbnQtYmx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgICAgY29sb3I6ICMxYTFmMzY7XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuICAgIC5yZXNldC1wYXNzIGEsbGFiZWwge1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAucmVzZXQtcGFzcyA+IGEge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cbiAgICAuZ3JpZC0tNTAtNTAge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmZpZWxkIGlucHV0IHtcbiAgICAgIEBpbmNsdWRlIGZvbnRMb2dpbigkZm9udC1jb2xvcjogJGZvbnQtZ3JheSk7XG4gICAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMzZweDtcbiAgICAgIGJvcmRlcjogdW5zZXQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBvdXRsaW5lLWNvbG9yOiByZ2IoODQgMTA1IDIxMiAvIDAuNSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDApIDBweCAwcHggMHB4IDBweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgMHB4IDBweCAwcHggMHB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSAwcHggMHB4IDBweCAwcHgsXG4gICAgICByZ2JhKDYwLCA2NiwgODcsIDAuMTYpIDBweCAwcHggMHB4IDFweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgMHB4IDBweCAwcHggMHB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSAwcHggMHB4IDBweCAwcHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDBweCAwcHggMHB4IDBweDtcbiAgICB9XG5cbiAgICAuZmllbGQtY2hlY2tib3ggaW5wdXQge1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgIGJveC1zaGFkb3c6IHVuc2V0O1xuICAgICAgbWluLWhlaWdodDogdW5zZXQ7XG4gICAgfVxuICAgIC5maWVsZC1jaGVja2JveCBsYWJlbCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgYS5zc29saW5rIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG4gICAgLmZvb3Rlci1saW5rIHNwYW4ge1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICAubGlzdGluZyBhIHtcbiAgICAgIGNvbG9yOiAjNjk3Mzg2O1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIG1hcmdpbjogMCAxMHB4O1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb257XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAuZXJyb3IgeyAgXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZBRUNFQjtcbiAgICAgICAgY29sb3I6ICNFOTUxNjk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI0U5NTE2OTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIiwiLypcclxuICBZb3VyIHVzZSBvZiB0aGUgY29udGVudCBpbiB0aGUgZmlsZXMgcmVmZXJlbmNlZCBoZXJlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGF0IGh0dHBzOi8vYWthLm1zL2ZhYnJpYy1hc3NldHMtbGljZW5zZVxyXG4qL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ0ZhYnJpY01ETDJJY29ucyc7XHJcbiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ZhYnJpYy1pY29ucy1jNzNiMmY4Mi53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XHJcbn1cclxuXHJcbi5tcy1JY29uIHtcclxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LWZhbWlseTogJ0ZhYnJpY01ETDJJY29ucyc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgc3BlYWs6IG5vbmU7XHJcbn1cclxuXHJcbi8vIE1peGluc1xyXG5AbWl4aW4gbXMtSWNvbi0tQWNjZXB0IHtcclxuICBjb250ZW50OiBcIlxcRThGQlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQWNjZXB0TWVkaXVtIHtcclxuICBjb250ZW50OiBcIlxcRjc4Q1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQWNjb3VudEFjdGl2aXR5IHtcclxuICBjb250ZW50OiBcIlxcRUZGNFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQWNjb3VudE1hbmFnZW1lbnQge1xyXG4gIGNvbnRlbnQ6IFwiXFxGNTVDXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1BZGQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNzEwXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1BcHBJY29uRGVmYXVsdCB7XHJcbiAgY29udGVudDogXCJcXEVDQUFcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUFwcEljb25EZWZhdWx0QWRkIHtcclxuICBjb250ZW50OiBcIlxcRUZEQVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQm9sZEcge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNUIzXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1CdXNpbmVzc0NlbnRlckxvZ28ge1xyXG4gIGNvbnRlbnQ6IFwiXFxGNEIyXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DYW5jZWwge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNzExXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DYW5uZWRDaGF0IHtcclxuICBjb250ZW50OiBcIlxcRjBGMlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQ2hlY2tNYXJrIHtcclxuICBjb250ZW50OiBcIlxcRTczRVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQ2hldnJvbkRvd24ge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNzBEXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DaGV2cm9uTGVmdE1lZCB7XHJcbiAgY29udGVudDogXCJcXEU5NzNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNoZXZyb25SaWdodCB7XHJcbiAgY29udGVudDogXCJcXEU3NkNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNoZXZyb25VcCB7XHJcbiAgY29udGVudDogXCJcXEU3MEVcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNpcmNsZUFkZGl0aW9uIHtcclxuICBjb250ZW50OiBcIlxcRjJFM1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQ2lyY2xlQWRkaXRpb25Tb2xpZCB7XHJcbiAgY29udGVudDogXCJcXEYyRTRcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNpcmNsZVJpbmcge1xyXG4gIGNvbnRlbnQ6IFwiXFxFQTNBXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DbGVhckZpbHRlciB7XHJcbiAgY29udGVudDogXCJcXEVGOEZcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNsaXBib2FyZExpc3Qge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMEUzXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DbGlwYm9hcmRMaXN0UXVlc3Rpb24ge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNEYwXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1DbGlwYm9hcmRTb2xpZCB7XHJcbiAgY29udGVudDogXCJcXEY1RENcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNvbGxhcHNlTWVudSB7XHJcbiAgY29udGVudDogXCJcXEVGNjZcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNvbXBhcmUge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMDU3XCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Db21wYXJlVW5ldmVuIHtcclxuICBjb250ZW50OiBcIlxcRTQyRVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQ29udGFjdCB7XHJcbiAgY29udGVudDogXCJcXEU3N0JcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUNvbnRhY3RJbmZvIHtcclxuICBjb250ZW50OiBcIlxcRTc3OVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tQ29udGVudFNldHRpbmdzIHtcclxuICBjb250ZW50OiBcIlxcRjY0N1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRGVmYXVsdFNldHRpbmdzIHtcclxuICBjb250ZW50OiBcIlxcRjY0OFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRGVsZXRlIHtcclxuICBjb250ZW50OiBcIlxcRTc0RFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRG9jdW1lbnRBcHByb3ZhbCB7XHJcbiAgY29udGVudDogXCJcXEYyOEJcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLURvY3VtZW50YXRpb24ge1xyXG4gIGNvbnRlbnQ6IFwiXFxFQzE3XCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Eb2N1bWVudE1hbmFnZW1lbnQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFRkZDXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Eb2N1bWVudFJlcGx5IHtcclxuICBjb250ZW50OiBcIlxcRUY1N1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRG9jdW1lbnRTZWFyY2gge1xyXG4gIGNvbnRlbnQ6IFwiXFxFRjZDXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1FZGl0IHtcclxuICBjb250ZW50OiBcIlxcRTcwRlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRWRpdENvbnRhY3Qge1xyXG4gIGNvbnRlbnQ6IFwiXFxFRkQzXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1FZGl0TWlycm9yZWQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFQjdFXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1FZGl0U29saWQxMiB7XHJcbiAgY29udGVudDogXCJcXEY0QjVcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUV4Y2VsRG9jdW1lbnQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFRjczXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1GaWxlQnVnIHtcclxuICBjb250ZW50OiBcIlxcRjMwRFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRmlsZUltYWdlIHtcclxuICBjb250ZW50OiBcIlxcRjMxMVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tRmlsZU9mZiB7XHJcbiAgY29udGVudDogXCJcXEUzRkNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUZpbHRlciB7XHJcbiAgY29udGVudDogXCJcXEU3MUNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUZpbHRlckFzY2VuZGluZyB7XHJcbiAgY29udGVudDogXCJcXEYyMUFcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUZpbHRlckRlc2NlbmRpbmcge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMjFCXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1GaWx0ZXJTb2xpZCB7XHJcbiAgY29udGVudDogXCJcXEY0MTJcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUZvbGxvd1VzZXIge1xyXG4gIGNvbnRlbnQ6IFwiXFxFRTA1XCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1GdWxsQ2lyY2xlTWFzayB7XHJcbiAgY29udGVudDogXCJcXEU5MUZcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLUhvbWUge1xyXG4gIGNvbnRlbnQ6IFwiXFxFODBGXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Ib21lU29saWQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFQThBXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1JbWFnZVNlYXJjaCB7XHJcbiAgY29udGVudDogXCJcXEY0RThcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLU1pbmlMaW5rIHtcclxuICBjb250ZW50OiBcIlxcRTczMlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tTmF2aWdhdGVFeHRlcm5hbElubGluZSB7XHJcbiAgY29udGVudDogXCJcXEYzNUZcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVBhZ2VMaW5rIHtcclxuICBjb250ZW50OiBcIlxcRTMwMlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUGFnZUxpc3RGaWx0ZXIge1xyXG4gIGNvbnRlbnQ6IFwiXFxGODEzXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1QQklIb21lTGF5b3V0RXhwYW5kZWQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNjVDXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1QREYge1xyXG4gIGNvbnRlbnQ6IFwiXFxFQTkwXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1QbGF5ZXJTZXR0aW5ncyB7XHJcbiAgY29udGVudDogXCJcXEVGNThcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVBvd2VyUG9pbnREb2N1bWVudCB7XHJcbiAgY29udGVudDogXCJcXEVGNzJcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVByb2Nlc3Mge1xyXG4gIGNvbnRlbnQ6IFwiXFxFOUYzXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Qcm9jZXNzaW5nIHtcclxuICBjb250ZW50OiBcIlxcRTlGNVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUHJvY2Vzc01ldGFUYXNrIHtcclxuICBjb250ZW50OiBcIlxcRjI5MFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUHJvZHVjdCB7XHJcbiAgY29udGVudDogXCJcXEVDRENcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVByb2R1Y3RDYXRhbG9nIHtcclxuICBjb250ZW50OiBcIlxcRUZFOFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUHJvZHVjdExpc3Qge1xyXG4gIGNvbnRlbnQ6IFwiXFxFMzFFXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Qcm9kdWN0UmVsZWFzZSB7XHJcbiAgY29udGVudDogXCJcXEVFMkVcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVByb2R1Y3RWYXJpYW50IHtcclxuICBjb250ZW50OiBcIlxcRUUzMFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUHV6emxlIHtcclxuICBjb250ZW50OiBcIlxcRUE4NlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUXVlcnlMaXN0IHtcclxuICBjb250ZW50OiBcIlxcRjJCOFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tUXVlc3Rpb25uYWlyZSB7XHJcbiAgY29udGVudDogXCJcXEVFMTlcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVJlY2VpcHRVbmRlbGl2ZXJlZCB7XHJcbiAgY29udGVudDogXCJcXEY0MTlcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVNhdmUge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNzRFXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1TYXZlQW5kQ2xvc2Uge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMDM4XCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1TYXZlQW5kUHVibGlzaCB7XHJcbiAgY29udGVudDogXCJcXEY2NzFcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVNlYXJjaCB7XHJcbiAgY29udGVudDogXCJcXEU3MjFcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVNlYXJjaENhbGVuZGFyIHtcclxuICBjb250ZW50OiBcIlxcRjRBRlwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tU2VhcmNoSXNzdWUge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMDlBXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1TZXR0aW5ncyB7XHJcbiAgY29udGVudDogXCJcXEU3MTNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVNpbmdsZUNvbHVtbkVkaXQge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMzIxXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1TdGF0dXNDaXJjbGVRdWVzdGlvbk1hcmsge1xyXG4gIGNvbnRlbnQ6IFwiXFxGMTQyXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1Td2l0Y2hVc2VyIHtcclxuICBjb250ZW50OiBcIlxcRTc0OFwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVGFzayB7XHJcbiAgY29udGVudDogXCJcXEY3RUNcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVRhc2tBZGQge1xyXG4gIGNvbnRlbnQ6IFwiXFxFNEZEXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBtcy1JY29uLS1UYXNrTGlzdCB7XHJcbiAgY29udGVudDogXCJcXEUzQjZcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVRhc2tNYW5hZ2VyIHtcclxuICBjb250ZW50OiBcIlxcRURCN1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVGFza1NvbGlkIHtcclxuICBjb250ZW50OiBcIlxcRjMzM1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVGV4dERvY3VtZW50IHtcclxuICBjb250ZW50OiBcIlxcRjAyOVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVGV4dERvY3VtZW50RWRpdCB7XHJcbiAgY29udGVudDogXCJcXEU0M0JcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVRleHREb2N1bWVudFNldHRpbmdzIHtcclxuICBjb250ZW50OiBcIlxcRTRBQVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVXNlckZvbGxvd2VkIHtcclxuICBjb250ZW50OiBcIlxcRjI1Q1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVXNlck9wdGlvbmFsIHtcclxuICBjb250ZW50OiBcIlxcRjc2N1wiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tVXNlclJlbW92ZSB7XHJcbiAgY29udGVudDogXCJcXEY2OUJcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVdvcmREb2N1bWVudCB7XHJcbiAgY29udGVudDogXCJcXEVGNzFcIjtcclxufVxyXG5cclxuQG1peGluIG1zLUljb24tLVdvcmtGbG93IHtcclxuICBjb250ZW50OiBcIlxcRUEwMVwiO1xyXG59XHJcblxyXG5AbWl4aW4gbXMtSWNvbi0tWmlwRm9sZGVyIHtcclxuICBjb250ZW50OiBcIlxcRjAxMlwiO1xyXG59XHJcblxyXG5cclxuLy8gQ2xhc3Nlc1xyXG4ubXMtSWNvbi0tQWNjZXB0OmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQWNjZXB0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1BY2NlcHRNZWRpdW06YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1BY2NlcHRNZWRpdW1cclxufVxyXG5cclxuLm1zLUljb24tLUFjY291bnRBY3Rpdml0eTpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUFjY291bnRBY3Rpdml0eVxyXG59XHJcblxyXG4ubXMtSWNvbi0tQWNjb3VudE1hbmFnZW1lbnQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1BY2NvdW50TWFuYWdlbWVudFxyXG59XHJcblxyXG4ubXMtSWNvbi0tQWRkOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQWRkXHJcbn1cclxuXHJcbi5tcy1JY29uLS1BcHBJY29uRGVmYXVsdDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUFwcEljb25EZWZhdWx0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1BcHBJY29uRGVmYXVsdEFkZDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUFwcEljb25EZWZhdWx0QWRkXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Cb2xkRzpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUJvbGRHXHJcbn1cclxuXHJcbi5tcy1JY29uLS1CdXNpbmVzc0NlbnRlckxvZ286YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1CdXNpbmVzc0NlbnRlckxvZ29cclxufVxyXG5cclxuLm1zLUljb24tLUNhbmNlbDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNhbmNlbFxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2FubmVkQ2hhdDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNhbm5lZENoYXRcclxufVxyXG5cclxuLm1zLUljb24tLUNoZWNrTWFyazpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNoZWNrTWFya1xyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2hldnJvbkRvd246YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DaGV2cm9uRG93blxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2hldnJvbkxlZnRNZWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DaGV2cm9uTGVmdE1lZFxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2hldnJvblJpZ2h0OmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQ2hldnJvblJpZ2h0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1DaGV2cm9uVXA6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DaGV2cm9uVXBcclxufVxyXG5cclxuLm1zLUljb24tLUNpcmNsZUFkZGl0aW9uOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQ2lyY2xlQWRkaXRpb25cclxufVxyXG5cclxuLm1zLUljb24tLUNpcmNsZUFkZGl0aW9uU29saWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DaXJjbGVBZGRpdGlvblNvbGlkXHJcbn1cclxuXHJcbi5tcy1JY29uLS1DaXJjbGVSaW5nOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQ2lyY2xlUmluZ1xyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2xlYXJGaWx0ZXI6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DbGVhckZpbHRlclxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2xpcGJvYXJkTGlzdDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNsaXBib2FyZExpc3RcclxufVxyXG5cclxuLm1zLUljb24tLUNsaXBib2FyZExpc3RRdWVzdGlvbjpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNsaXBib2FyZExpc3RRdWVzdGlvblxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ2xpcGJvYXJkU29saWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1DbGlwYm9hcmRTb2xpZFxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ29sbGFwc2VNZW51OmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQ29sbGFwc2VNZW51XHJcbn1cclxuXHJcbi5tcy1JY29uLS1Db21wYXJlOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tQ29tcGFyZVxyXG59XHJcblxyXG4ubXMtSWNvbi0tQ29tcGFyZVVuZXZlbjpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNvbXBhcmVVbmV2ZW5cclxufVxyXG5cclxuLm1zLUljb24tLUNvbnRhY3Q6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Db250YWN0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1Db250YWN0SW5mbzpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUNvbnRhY3RJbmZvXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Db250ZW50U2V0dGluZ3M6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Db250ZW50U2V0dGluZ3NcclxufVxyXG5cclxuLm1zLUljb24tLURlZmF1bHRTZXR0aW5nczpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLURlZmF1bHRTZXR0aW5nc1xyXG59XHJcblxyXG4ubXMtSWNvbi0tRGVsZXRlOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRGVsZXRlXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Eb2N1bWVudEFwcHJvdmFsOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRG9jdW1lbnRBcHByb3ZhbFxyXG59XHJcblxyXG4ubXMtSWNvbi0tRG9jdW1lbnRhdGlvbjpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLURvY3VtZW50YXRpb25cclxufVxyXG5cclxuLm1zLUljb24tLURvY3VtZW50TWFuYWdlbWVudDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLURvY3VtZW50TWFuYWdlbWVudFxyXG59XHJcblxyXG4ubXMtSWNvbi0tRG9jdW1lbnRSZXBseTpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLURvY3VtZW50UmVwbHlcclxufVxyXG5cclxuLm1zLUljb24tLURvY3VtZW50U2VhcmNoOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRG9jdW1lbnRTZWFyY2hcclxufVxyXG5cclxuLm1zLUljb24tLUVkaXQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1FZGl0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1FZGl0Q29udGFjdDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUVkaXRDb250YWN0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1FZGl0TWlycm9yZWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1FZGl0TWlycm9yZWRcclxufVxyXG5cclxuLm1zLUljb24tLUVkaXRTb2xpZDEyOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRWRpdFNvbGlkMTJcclxufVxyXG5cclxuLm1zLUljb24tLUV4Y2VsRG9jdW1lbnQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1FeGNlbERvY3VtZW50XHJcbn1cclxuXHJcbi5tcy1JY29uLS1GaWxlQnVnOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRmlsZUJ1Z1xyXG59XHJcblxyXG4ubXMtSWNvbi0tRmlsZUltYWdlOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRmlsZUltYWdlXHJcbn1cclxuXHJcbi5tcy1JY29uLS1GaWxlT2ZmOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRmlsZU9mZlxyXG59XHJcblxyXG4ubXMtSWNvbi0tRmlsdGVyOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRmlsdGVyXHJcbn1cclxuXHJcbi5tcy1JY29uLS1GaWx0ZXJBc2NlbmRpbmc6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1GaWx0ZXJBc2NlbmRpbmdcclxufVxyXG5cclxuLm1zLUljb24tLUZpbHRlckRlc2NlbmRpbmc6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1GaWx0ZXJEZXNjZW5kaW5nXHJcbn1cclxuXHJcbi5tcy1JY29uLS1GaWx0ZXJTb2xpZDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUZpbHRlclNvbGlkXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Gb2xsb3dVc2VyOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tRm9sbG93VXNlclxyXG59XHJcblxyXG4ubXMtSWNvbi0tRnVsbENpcmNsZU1hc2s6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1GdWxsQ2lyY2xlTWFza1xyXG59XHJcblxyXG4ubXMtSWNvbi0tSG9tZTpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUhvbWVcclxufVxyXG5cclxuLm1zLUljb24tLUhvbWVTb2xpZDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLUhvbWVTb2xpZFxyXG59XHJcblxyXG4ubXMtSWNvbi0tSW1hZ2VTZWFyY2g6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1JbWFnZVNlYXJjaFxyXG59XHJcblxyXG4ubXMtSWNvbi0tTWluaUxpbms6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1NaW5pTGlua1xyXG59XHJcblxyXG4ubXMtSWNvbi0tTmF2aWdhdGVFeHRlcm5hbElubGluZTpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLU5hdmlnYXRlRXh0ZXJuYWxJbmxpbmVcclxufVxyXG5cclxuLm1zLUljb24tLVBhZ2VMaW5rOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUGFnZUxpbmtcclxufVxyXG5cclxuLm1zLUljb24tLVBhZ2VMaXN0RmlsdGVyOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUGFnZUxpc3RGaWx0ZXJcclxufVxyXG5cclxuLm1zLUljb24tLVBCSUhvbWVMYXlvdXRFeHBhbmRlZDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVBCSUhvbWVMYXlvdXRFeHBhbmRlZFxyXG59XHJcblxyXG4ubXMtSWNvbi0tUERGOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUERGXHJcbn1cclxuXHJcbi5tcy1JY29uLS1QbGF5ZXJTZXR0aW5nczpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVBsYXllclNldHRpbmdzXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Qb3dlclBvaW50RG9jdW1lbnQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qb3dlclBvaW50RG9jdW1lbnRcclxufVxyXG5cclxuLm1zLUljb24tLVByb2Nlc3M6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qcm9jZXNzXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Qcm9jZXNzaW5nOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUHJvY2Vzc2luZ1xyXG59XHJcblxyXG4ubXMtSWNvbi0tUHJvY2Vzc01ldGFUYXNrOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUHJvY2Vzc01ldGFUYXNrXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Qcm9kdWN0OmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUHJvZHVjdFxyXG59XHJcblxyXG4ubXMtSWNvbi0tUHJvZHVjdENhdGFsb2c6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qcm9kdWN0Q2F0YWxvZ1xyXG59XHJcblxyXG4ubXMtSWNvbi0tUHJvZHVjdExpc3Q6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qcm9kdWN0TGlzdFxyXG59XHJcblxyXG4ubXMtSWNvbi0tUHJvZHVjdFJlbGVhc2U6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qcm9kdWN0UmVsZWFzZVxyXG59XHJcblxyXG4ubXMtSWNvbi0tUHJvZHVjdFZhcmlhbnQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Qcm9kdWN0VmFyaWFudFxyXG59XHJcblxyXG4ubXMtSWNvbi0tUHV6emxlOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tUHV6emxlXHJcbn1cclxuXHJcbi5tcy1JY29uLS1RdWVyeUxpc3Q6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1RdWVyeUxpc3RcclxufVxyXG5cclxuLm1zLUljb24tLVF1ZXN0aW9ubmFpcmU6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1RdWVzdGlvbm5haXJlXHJcbn1cclxuXHJcbi5tcy1JY29uLS1SZWNlaXB0VW5kZWxpdmVyZWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1SZWNlaXB0VW5kZWxpdmVyZWRcclxufVxyXG5cclxuLm1zLUljb24tLVNhdmU6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1TYXZlXHJcbn1cclxuXHJcbi5tcy1JY29uLS1TYXZlQW5kQ2xvc2U6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1TYXZlQW5kQ2xvc2VcclxufVxyXG5cclxuLm1zLUljb24tLVNhdmVBbmRQdWJsaXNoOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tU2F2ZUFuZFB1Ymxpc2hcclxufVxyXG5cclxuLm1zLUljb24tLVNlYXJjaDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVNlYXJjaFxyXG59XHJcblxyXG4ubXMtSWNvbi0tU2VhcmNoQ2FsZW5kYXI6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1TZWFyY2hDYWxlbmRhclxyXG59XHJcblxyXG4ubXMtSWNvbi0tU2VhcmNoSXNzdWU6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1TZWFyY2hJc3N1ZVxyXG59XHJcblxyXG4ubXMtSWNvbi0tU2V0dGluZ3M6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1TZXR0aW5nc1xyXG59XHJcblxyXG4ubXMtSWNvbi0tU2luZ2xlQ29sdW1uRWRpdDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVNpbmdsZUNvbHVtbkVkaXRcclxufVxyXG5cclxuLm1zLUljb24tLVN0YXR1c0NpcmNsZVF1ZXN0aW9uTWFyazpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVN0YXR1c0NpcmNsZVF1ZXN0aW9uTWFya1xyXG59XHJcblxyXG4ubXMtSWNvbi0tU3dpdGNoVXNlcjpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVN3aXRjaFVzZXJcclxufVxyXG5cclxuLm1zLUljb24tLVRhc2s6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1UYXNrXHJcbn1cclxuXHJcbi5tcy1JY29uLS1UYXNrQWRkOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tVGFza0FkZFxyXG59XHJcblxyXG4ubXMtSWNvbi0tVGFza0xpc3Q6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1UYXNrTGlzdFxyXG59XHJcblxyXG4ubXMtSWNvbi0tVGFza01hbmFnZXI6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1UYXNrTWFuYWdlclxyXG59XHJcblxyXG4ubXMtSWNvbi0tVGFza1NvbGlkOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tVGFza1NvbGlkXHJcbn1cclxuXHJcbi5tcy1JY29uLS1UZXh0RG9jdW1lbnQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1UZXh0RG9jdW1lbnRcclxufVxyXG5cclxuLm1zLUljb24tLVRleHREb2N1bWVudEVkaXQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1UZXh0RG9jdW1lbnRFZGl0XHJcbn1cclxuXHJcbi5tcy1JY29uLS1UZXh0RG9jdW1lbnRTZXR0aW5nczpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVRleHREb2N1bWVudFNldHRpbmdzXHJcbn1cclxuXHJcbi5tcy1JY29uLS1Vc2VyRm9sbG93ZWQ6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Vc2VyRm9sbG93ZWRcclxufVxyXG5cclxuLm1zLUljb24tLVVzZXJPcHRpb25hbDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVVzZXJPcHRpb25hbFxyXG59XHJcblxyXG4ubXMtSWNvbi0tVXNlclJlbW92ZTpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVVzZXJSZW1vdmVcclxufVxyXG5cclxuLm1zLUljb24tLVdvcmREb2N1bWVudDpiZWZvcmUge1xyXG4gIEBpbmNsdWRlIG1zLUljb24tLVdvcmREb2N1bWVudFxyXG59XHJcblxyXG4ubXMtSWNvbi0tV29ya0Zsb3c6YmVmb3JlIHtcclxuICBAaW5jbHVkZSBtcy1JY29uLS1Xb3JrRmxvd1xyXG59XHJcblxyXG4ubXMtSWNvbi0tWmlwRm9sZGVyOmJlZm9yZSB7XHJcbiAgQGluY2x1ZGUgbXMtSWNvbi0tWmlwRm9sZGVyXHJcbn0iLCJcbi5jcnVke1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLWxlZnQpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1yaWdodCk7XG4gICAgbWFyZ2luLXRvcDogMThweDtcbiAgICAudGFibGUuZGF0YWdyaWQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XG4gICAgfVxuICAgIFxufVxuXG4uY3VzdG9tLWZvcm0tY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWluLWhlaWdodDogNzB2aDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMDBweDtcbiAgICAvL3BhZGRpbmc6IDE1cHggdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KSAxNXB4IHZhcigtLWxnLWNvbnRlbnQtcGFkZGluZy1sZWZ0KTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLnJvd3tcbiAgICAgICAgLS1icy1ndXR0ZXIteDogMDtcbiAgICAgICAgLS1icy1ndXR0ZXIteTogMDtcbiAgICB9XG4gICAgPiAuZmxleC1maWxsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuZmllbGQtZm9ybV9wYW5lbHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgIC5mb3JtLXBhbmVsLWJvZHl7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLWJzLWd1dHRlci14KSouNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAgLmN1c3RvbS1jb2wge1xuICAgICAgICBmbGV4OiAwIDAgNjAlO1xuICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICBtYXJnaW46IDNweCAwO1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIC5mb3JtLWdyb3Vwe1xuICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICB9XG4gICAgICAgIC5jdXN0b20tZm9ybS1ncm91cCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgID4gLmZvcm0tY29udHJvbC1sYWJlbCAsIGxlZ2VuZHtcbiAgICAgICAgICAgICAgICBmbGV4OiAwIDAgMzAlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMzAlO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmZvcm0td2lkZ2V0IHtcbiAgICAgICAgICAgICAgICBmbGV4OiAwIDAgNjAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOjYwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2wgICwgLmZvcm0tc2VsZWN0e1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgLnRzLWNvbnRyb2wge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbGlnaHRncmF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbGlnaHRncmF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbGlnaHRncmF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJGJsYWNrLWNvbG9yIHNvbGlkIDFweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2stY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmVhLWZpbGV1cGxvYWQge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA4cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAuZWEtdGV4dC1lZGl0b3Itd3JhcHBlcntcbiAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogMjQwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfSAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmN1c3RvbS1mb3JtLWdyb3VwLmFjbC1maWVsZHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICAgICAgICAgIC5ncm91cC1lbGVtZW50IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5ncm91cC1oZWFkZXIgbGFiZWx7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb2wtbWQtMTIge1xuICAgICAgICAgICAgLmZvcm0td2lkZ2V0IHtcbiAgICAgICAgICAgICAgICBmbGV4OiAwIDAgMzglO1xuICAgICAgICAgICAgICAgIHdpZHRoOjM4JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLmNvbC1tZC0yIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxOCU7XG4gICAgICAgICAgICBmbGV4OiAwIDAgNDAlO1xuICAgICAgICAgICAgdG9wOiAycHg7XG4gICAgICAgICAgICAuZm9ybS13aWRnZXQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAzMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6MzAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuY29sLW1kLTExIHtcbiAgICAgICAgICAgIC5mb3JtLXdpZGdldCB7XG4gICAgICAgICAgICAgICAgZmxleDogMCAwIDE4JTtcbiAgICAgICAgICAgICAgICB3aWR0aDoxOCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb2wtbWQtMyB7XG4gICAgICAgICAgICBmbGV4OiAwIDAgNDAlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcmlnaHQ6IDMwJTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMHB4O1xuICAgICAgICAgICAgdG9wOiAycHg7XG4gICAgICAgICAgICAuZm9ybS13aWRnZXQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMCA2MCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6NjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFjY29yZGlvbi1ib2R5e1xuICAgICAgICAuY3VzdG9tLWNvbHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuQG1lZGlhIChtaW4td2lkdGg6IDE0MDBweCl7XG4gICAgLmN1c3RvbS1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIC5jdXN0b20tY29sIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMCAzMCU7XG4gICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgJi5jb2wtbWQtMTIge1xuICAgICAgICAgICAgICAgIC5mb3JtLXdpZGdldCB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAzOCU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOjM4JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmNvbC1tZC0yIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDklO1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAzMCU7XG4gICAgICAgICAgICAgICAgLmZvcm0td2lkZ2V0IHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMCAwIDIwJTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6MjAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY29sLW1kLTExIHtcbiAgICAgICAgICAgICAgICAuZm9ybS13aWRnZXQge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAwIDAgMTglO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDoxOCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5jb2wtbWQtMyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxNSU7XG4gICAgICAgICAgICAgICAgZmxleDogMCAwIDMwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDMwJTtcbiAgICAgICAgICAgICAgICAuZm9ybS13aWRnZXQge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAwIDAgNDAlO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDo0MCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcclxuICAgIC5wYWdlLWFjdGlvbnMge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWJnLWNvbG9yO1xyXG5cclxuICAgICAgICAmLnZ1ZS1hY3Rpb25ze1xyXG4gICAgICAgICAgICB0b3A6IDBweDtcclxuICAgICAgICAgICAgbGVmdDogMHB4O1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgICAgICAgICB6LWluZGV4OiAyMDtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgLmFjdGlvbnMtY29udGFpbmVyIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGxpbmUtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmFjdGlvbnMtY29udGFpbmVyIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgaGVpZ2h0OiAkYWN0aW9uLWJhci1oZWlnaHQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcblxyXG4gICAgICAgICAgICAuZ2xvYmFsLWFjdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuc2VhcmNoLWFjdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAuY29udGVudC1zZWFyY2gtbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweDtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC5jb250ZW50LXNlYXJjaC1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5hY3Rpb24ge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQgO1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4IDhweDtcclxuXHJcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1ob3Zlci1jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJiNjb25maWcge1xyXG4gICAgICAgICAgICAgICAgICAgIC5idG4tbGFiZWx7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAmLmZsb2F0LXJpZ2h0IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgLmFjdGlvbi1pY29ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICYuYnRuLXByaW1hcnkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICYuYnRuLWRhbmdlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb2xvcjogdmFyKC0tYnV0dG9uLWRhbmdlci1iZyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAuYWN0aW9uLWljb24ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGJnLWhlYWRlci1jb2xvci1wcmltYXJ5O1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJGJnLWhlYWRlci1jb2xvci1wcmltYXJ5O1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAmLmVtcHR5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICYuaGlkZGVuIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5idG4tbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICYuZ3JheSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWdyYXktY29sb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAuYWN0aW9uLWxhYmVsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBhLmFjdGlvbiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xyXG5cclxuICAgICAgICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5hY3Rpb24tbGFiZWx7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnV0dG9uLmFjdGlvbntcclxuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5wYWdlLWFjdGlvbnMtc2VwYXJhdG9yIHtcclxuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kcm9wZG93bi1hY3Rpb24ge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblxyXG4gICAgICAgIHNwYW4uYnRuLWxhYmVsIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XHJcbiAgICAgICAgICAgIC8vbWluLXdpZHRoOiAxNjBweDtcclxuICAgICAgICAgICAgLS1kcm9wZG93bi1wYWRkaW5nOiA0cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRyb3Bkb3duLWJnKTtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kcm9wZG93bi1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XHJcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kcm9wZG93bi1jb2xvcik7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcclxuXHJcbiAgICAgICAgICAgIHAge1xyXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcblxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXIgLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCJAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpe1xyXG4gICAgLm1haW4tY29udGVudHtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDB2dyAtIHZhcigtLXNpZGViYXItbWF4LXdpZHRoKSkgO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJvZHktYmcpO1xyXG4gICAgICAgIC5jb250ZW50LXdyYXBwZXIge1xyXG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIC5jb250ZW50e1xyXG4gICAgICAgICAgICAgICAgLmNvbnRlbnQtaGVhZGVye1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOmluaXRpYWwgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1NHB4IDBweCAyOHB4IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgICAgICAucGFnZS1hY3Rpb25ze1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAjbWFpbntcclxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMzBweDtcclxuICAgICAgICAgICAgICAgICAgICAmLmluZGV4e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL292ZXJmbG93LXg6IGF1dG87XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICYqe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAjY29udGVudC1yZXNpemVyLWhhbmRsZXIge1xyXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLnRvcC13cmFwcGVye1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIC5uYXZiYXItY3VzdG9tLW1lbnV7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAwIHZhcigtLWNvbnRlbnQtdG9wLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcclxuICAgIC50b3Atd3JhcHBlcntcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmctaGVhZGVyLWNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgaGVpZ2h0OiAkbWFpbi1oZWFkZXItaGVpZ2h0O1xyXG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgei1pbmRleDogNTAyO1xyXG5cclxuICAgICAgICAubWFpbi1oZWFkZXJ7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICAgICAgaGVpZ2h0OiRtYWluLWhlYWRlci1oZWlnaHQ7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogIHZhcigtLXNpZGViYXItcGFkZGluZy1sZWZ0KTtcclxuICAgICAgICAgICAgI2hlYWRlci1sb2dvIGF7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTJweDtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItY29sb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICAuY29udGVudC10b3B7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAuY29udGVudC1zZWFyY2h7XHJcbiAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQtc2VhcmNoLWljb24ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0W3R5cGU9c2VhcmNoXVtuYW1lPXF1ZXJ5XSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMzUwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJnLWhlYWRlci1jb2xvci1zZWNvbmRhcnkgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJjotd2Via2l0LWF1dG9maWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmOi13ZWJraXQtYXV0b2ZpbGw6Zm9jdXMge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA2MDAwMDBzIDBzLCBjb2xvciA2MDAwMDBzIDBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAubmF2YmFyLWN1c3RvbS1tZW51e1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJG1haW4taGVhZGVyLWhlaWdodDtcclxuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgLmRyb3Bkb3duOmhvdmVye1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiZy1oZWFkZXItY29sb3ItcHJpbWFyeS1kYXJrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC51c2VyLW1lbnUtd3JhcHBlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIC51c2VyLWRldGFpbHN7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAudXNlci1uYW1lLWljb257XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkaGVhZGVyLWNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFNlZ29lVUktUmVndWxhci1maW5hbCwgU2Vnb2UgVUksIFwiU2Vnb2UgVUkgV2ViIChXZXN0IEV1cm9wZWFuKVwiLCBTZWdvZSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBUYWhvbWEsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5kcm9wZG93bi1zZXR0aW5nc3tcclxuICAgICAgICAgICAgICAgICAgICAuZHJvcGRvd24tc2V0dGluZ3MtYnV0dG9ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlLWNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDhweDtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi5zaWRlYmFyLXdyYXBwZXIge1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgfVxyXG4gICAgLnNpZGViYXIge1xyXG4gICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktY29sb3I7XHJcbiAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgI21haW4tbWVudXtcclxuICAgICAgICAgICAgdWwubWVudTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgICAgICA+IC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQgPiBhIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMnB4IHZhcigtLXNpZGViYXItcGFkZGluZy1yaWdodCkgMTBweCAxNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAubWVudS1pdGVtIHtcclxuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICAubWVudS1pdGVtLWxhYmVse1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAmOm5vdCguZXhwYW5kZWQpOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1ob3Zlci1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmOm5vdCguZXhwYW5kZWQpOmZvY3VzIHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgID4gYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDdweCB2YXIoLS1zaWRlYmFyLXBhZGRpbmctcmlnaHQpIDdweCBjYWxjKHZhcigtLXNpZGViYXItcGFkZGluZy1sZWZ0KSArIHZhcigtLXNpZGViYXItbWVudS1pdGVtcy1wYWRkaW5nLWxlZnQpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1zZWxlY3RlZC1ob3Zlci1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmF5LXNlbGVjdGVkLWNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgID4gYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZvbnRTZWdvZVVJU2VtaWJvbGQoJGZvbnQtYmxhY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAubWVudS1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmID4gYXtcclxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1ibGFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzo4cHggdmFyKC0tc2lkZWJhci1wYWRkaW5nLXJpZ2h0KSA2cHggMTRweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzowcHg7XHJcbiAgICAgICAgICAgICAgICAuc3VibWVudS10b2dnbGV7XHJcbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VERUJFOTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC5tZW51LWl0ZW0tY29udGVudHMsIC5tZW51LWljb257XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRibGFjay1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTFweDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAuc3VibWVudS10b2dnbGUtaWNvbntcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJnYig1MCwgNDksIDQ4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAjc2lkZWJhci1yZXNpemVyLWhhbmRsZXJ7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIudnVlLXNwbGl0LWNvbnRhaW5lciB7XHJcbiAgICAtLXJlc3BvbnNpdmUtZ2FwOiAyODA7XHJcbiAgICAtLWRldGFpbC13aWR0aDogODAwO1xyXG4gICAgLS1kZXRhaWwtbWluLXdpdGg6IDQ4MDtcclxuICAgIC0tdGFza2xpc3QtbWluLXdpZHRoOiA0ODA7XHJcbiAgICAtLWN1cnJlbnQtc2lkZWJhci13aWR0aDogdmFyKC0tc2lkZWJhci1tYXgtd2lkdGgpO1xyXG5cclxuICAgIC52dWUtc3BsaXQtZGV0YWlsIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtICRtYWluLWhlYWRlci1oZWlnaHQgLSA0NHB4IC0gMXB4KTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tZGV0YWlsLXdpZHRoKSAtIHZhcigtLWN1cnJlbnQtc2lkZWJhci13aWR0aCkgLSAxMnB4KTtcclxuICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMjIpIDBweCAyNS42cHggNTcuNnB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjE4KSAwcHggNC44cHggMTQuNHB4IDBweDtcclxuXHJcbiAgICAgICAgPioge1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLW1kLWNvbnRlbnQtcGFkZGluZyk7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLW1kLWNvbnRlbnQtcGFkZGluZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmRldGFpbC1vbmx5IHtcclxuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLWN1cnJlbnQtc2lkZWJhci13aWR0aCkpO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICByaWdodDogMHB4O1xyXG4gICAgICAgICAgICAuZGV0YWlsLWNvbnRlbnR7XHJcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDUwJTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi52dWUtZm9ybSB7XHJcbiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtICRtYWluLWhlYWRlci1oZWlnaHQgLSAxcHgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZHJhZ2JhciB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gJG1haW4taGVhZGVyLWhlaWdodCAtIDQ0cHggLSAxcHgpO1xyXG4gICAgICAgIHdpZHRoOiAycHg7XHJcbiAgICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLWRldGFpbC13aWR0aCkgLSB2YXIoLS1jdXJyZW50LXNpZGViYXItd2lkdGgpIC0gNnB4KTtcclxuICAgICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI0ZCRkJGQjtcclxuXHJcbiAgICAgICAgJi5uZXctZHJhZ2JhciB7XHJcbiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtICRtYWluLWhlYWRlci1oZWlnaHQgLSAxcHgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5ub25lIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZHJhZ2Jhcjpob3ZlcixcclxuICAgICYucmVzaXppbmcgLmRyYWdiYXIge1xyXG4gICAgICAgIHdpZHRoOiAycHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0UxREZERDtcclxuICAgIH1cclxuXHJcbiAgICAudnVlLXNwbGl0LWluZGV4IHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAkbWFpbi1oZWFkZXItaGVpZ2h0IC0gNDRweCAtIDFweCk7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1jdXJyZW50LXNpZGViYXItd2lkdGgpKTtcclxuICAgICAgICBvdmVyZmxvdzogYXV0bztcclxuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAgICAgICB3aWR0aDogMTBweDsgLy8gU2xpZ2h0bHkgd2lkZXIgZm9yIGEgbW9yZSBtb2Rlcm4gbG9va1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyAvLyBMaWdodCBncmV5IHRyYWNrLCBzaW1pbGFyIHRvIFdpbmRvd3NcclxuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRTBFMEUwOyAvLyBTdWJ0bGUgc2VwYXJhdGlvbiBmcm9tIHRoZSBjb250ZW50XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDsgLy8gU2hhcnAgZWRnZXMgZm9yIGEgbW9kZXJuIGxvb2tcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0MwQzBDMDsgLy8gQSBkYXJrZXIgZ3JleSBmb3IgdGhlIHRodW1iLCBzdGFuZGluZyBvdXQgYWdhaW5zdCB0aGUgdHJhY2tcclxuXHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0EwQTBBMDsgLy8gU2xpZ2h0bHkgZGFya2VyIG9uIGhvdmVyIGZvciB2aXN1YWwgZmVlZGJhY2tcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi50ZW1waW5kZXgge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAkbWFpbi1oZWFkZXItaGVpZ2h0IC0gMXB4KTtcclxuXHJcbiAgICAgICAgICAgIHNlY3Rpb24ge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgJi5hdHRyaWJ1dGVzLWZpbHRlcnMtc2VjdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9wYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5jb250ZW50LWhlYWRlciB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAwcHg7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAyMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmV4cGFuZGVkLnNwbGl0IC52dWUtc3BsaXQtaW5kZXgge1xyXG4gICAgICAgIHdpZHRoOiB2YXIoLS1kZXRhaWwtd2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgICYuZXhwYW5kZWQgLmRyYWdiYXIge1xyXG4gICAgICAgIGRpc3BsYXk6IGluaXRpYWw7XHJcbiAgICB9XHJcbn0iLCIudnVlLXNwbGl0LWRldGFpbCB7XHJcbiAgICB6LWluZGV4OiAzMDtcclxuICAgXHJcbiAgICAmLmZ1bGwge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICB6LWluZGV4OiA1MDA7XHJcbiAgICAgICAgaGVpZ2h0OiA4MCU7XHJcbiAgICAgICAgd2lkdGg6IDQwJTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcblxyXG4gICAgICAgIC52dWUtZGV0YWlscy1oZWFkZXIge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGVtcC1mb3JtIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC52dWUtZGV0YWlscy1oZWFkZXIudGVtcC1kZXRhaWxzIHtcclxuICAgICAgICBoMiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnRTZWdvZVVJVGl0bGUoYmxhY2spO1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN1YnRpdGxlIHtcclxuICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTRweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5ncm91cC1idG4ge1xyXG4gICAgICAgICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgcGFkZGluZzogMHB4IDhweDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogNDRweDtcclxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1ob3Zlci1jb2xvcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5zZWxlY3RlZCB7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogOHB4OyAvLyBBZGp1c3QgdGhlc2UgdmFsdWVzIHRvIGNoYW5nZSB0aGUgd2lkdGggb2YgdGhlIGJvcmRlclxyXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjNzIGVhc2UsIHJpZ2h0IDAuM3MgZWFzZTtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAycHggcmdiKDAsIDEyMCwgMjEyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1zZWxlY3RlZC1jb2xvcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3MgZWFzZSwgcmlnaHQgMC4zcyBlYXNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpIHtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMDc4RDQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC5kZXRhaWwtY29udGVudCB7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDU0cHg7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDY1cHg7XHJcbiAgICAgICAgbWluLWhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgZm9ybSB7XHJcbiAgICAgICAgICAgIC5mb3JtLXNlY3Rpb24uaGlkZGVuIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnZ1ZS1kZXRhaWxzLXN0aWNreS1oZWFkZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICAgICAgdG9wOiAwcHg7XHJcbiAgICAgICAgei1pbmRleDogMzA7XHJcbiAgICAgICAgaGVpZ2h0OiA0MnB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC00MnB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcclxuICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG5cclxuICAgICAgICAuY2FuY2VsLWljb24tY29udGFpbmVyIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgICAgICAgICB3aWR0aDogMzJweDtcclxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktaG92ZXItY29sb3I7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLmRldGFpbC1jb250YWluZXIge1xyXG4gICAgICAgIG1heC13aWR0aDogNDB2dztcclxuICAgIH1cclxuXHJcbiAgICAuZGV0YWlsLWZvb3RlciB7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7XHJcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtNjVweDtcclxuICAgICAgICBtaW4taGVpZ2h0OiA2NXB4O1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICB6LWluZGV4OiA1MDA7XHJcblxyXG4gICAgICAgIC5idXR0b24tY29udGFpbmVyIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgZ2FwOiAxNnB4O1xyXG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICAgICAgICAgICAudnVlLWJ0biB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jaGlsZHJlbi1kZXRhaWx7XHJcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgICAgICAuZGV0YWlsLWNvbnRlbnR7XHJcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAyMHB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcblxyXG4gICAgfVxyXG59XHJcblxyXG4uYmFja2dyb3VuZC1ibHVyZWQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB6LWluZGV4OiA1MDtcclxuICAgIGluc2V0OiAwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgbGVmdDogMHB4O1xyXG4gICAgdG9wOiAwcHg7XHJcbn0iLCIudnVlLW11bHRpc2VsZWN0IHtcclxuICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgICoge1xyXG4gICAgICAgICAgICBjdXJzb3I6IGluaXRpYWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLXdpZGdldCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgIC50cy13cmFwcGVyIHtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGdyYXk7XHJcblxyXG4gICAgICAgICAgICAmLmlucHV0LWFjdGl2ZSB7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBncmF5O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAudHMtY29udHJvbCB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5mb3JtLW11bHRpLXNlbGVjdCB7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDM1cHg7XHJcblxyXG4gICAgICAgICAgICAudHMtY29udHJvbCB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRpdi5pdGVtIHtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAsIC5uZXctc3R5bGUge1xyXG4gICAgLnZ1ZS1tdWx0aXNlbGVjdCB7XHJcbiAgICAgICAgLmZvcm0td2lkZ2V0IHtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAuZm9ybS1tdWx0aS1zZWxlY3Qge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXIgMXB4O1xyXG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAmLmV4cGFuZGVkIHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRiZy1oZWFkZXItY29sb3ItcHJpbWFyeTtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAudHMtY29udHJvbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4IDhweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjEzMykgMHB4IDMuMnB4IDcuMnB4IDBweCwgcmdiYSgwLCAwLCAwLCAwLjExKSAwcHggMC42cHggMS44cHggMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9wdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggOXB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ncm91cC10aXRsZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggOXB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogYm9sZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9wdGlvbjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1ob3Zlci1jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAub3B0aW9uLnJlbW92ZS1vcHRpb24ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9wdGlvbi5uby1vcHRpb246aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZHJvcGRvd24tY29udGVudC1pbnRlcm5hbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MHZoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAuc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHggOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzJweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLnNlYXJjaC1pY29uLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2UtaW47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuaWNvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRiZy1oZWFkZXItY29sb3ItcHJpbWFyeTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2VhcmNoLWljb24tY29udGFpbmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzFCMUIxRTtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcC5wbGFjZWhvbGRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5pdGVtIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lci5yZWFkb2x5e1xyXG4gICAgICAgICAgICAuZm9ybS1jb250ZW50e1xyXG4gICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0LWRhcmsocmdiKDg0LCA4NCwgODQpKSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcblxyXG59IiwiLmZpbGUtdXBsb2FkLmZvcm0tZ3JvdXB7XHJcbiAgICAuZm9ybS13aWRnZXR7XHJcbiAgICAgICAgLmlucHV0LWdyb3Vwe1xyXG4gICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgLmlucHV0LWNvbnRhaW5lcntcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNjU2MzYxO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAuZmlsZS1sYWJlbHtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiB1bnNldDtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5pdGlhbDtcclxuICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAuYnRuIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IHVuc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzcGFue1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLmlucHV0LWluZm97XHJcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNHB4O1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5pbnB1dC1uYW1le1xyXG4gICAgICAgICAgICAgICAgZmxleC1ncm93OiAyO1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzowcHggMC41cmVtO1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi52dWUtZGF0ZXtcclxuICAgIGlucHV0IHtcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNnB4O1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRncmF5O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgJjpmb2N1cyAsICY6Zm9jdXMtd2l0aGlue1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6IGdyYXk7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLmZvcm0tZ3JvdXAuZmlsZS11cGxvYWQge1xyXG4gICAgLmZpbGUtaW5wdXQtdGl0bGV7XHJcbiAgICAgICAgbWFyZ2luOiAwcHg7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDEwcHg7XHJcbiAgICAgICAgdG9wOiA1cHg7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLWZvcm0taW5wdXQtdGV4dC1jb2xvcik7XHJcbiAgICB9XHJcbiAgICAuaW5wdXRXcmFwcGVyIHtcclxuICAgICAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDIwdnc7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIC8qVXNpbmcgYSBiYWNrZ3JvdW5kIGNvbG9yLCBidXQgeW91IGNhbiB1c2UgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIHJlcHJlc2VudCBhIGJ1dHRvbiovXHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktY29sb3I7XHJcbiAgICB9XHJcbiAgICAuZmlsZUlucHV0IHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB6LWluZGV4OiA5OTtcclxuICAgICAgICAvKlRoaXMgbWFrZXMgdGhlIGJ1dHRvbiBodWdlLiBJZiB5b3Ugd2FudCBhIGJpZ2dlciBidXR0b24sIGluY3JlYXNlIHRoZSBmb250IHNpemUqL1xyXG4gICAgICAgIGZvbnQtc2l6ZTo1MHB4O1xyXG4gICAgICAgIC8qT3BhY2l0eSBzZXR0aW5ncyBmb3IgYWxsIGJyb3dzZXJzKi9cclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIC1tb3otb3BhY2l0eTogMDtcclxuICAgICAgICBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKG9wYWNpdHk9MClcclxuICAgIH1cclxufSIsIi52dWUtZHluYW1pYy1pbnB1dCB7XHJcbiAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxpZ2h0LWdyYXktc2VsZWN0ZWQtY29sb3I7XHJcbiAgICBtYXJnaW46IDBweCAwcHggMTVweCAwcHg7XHJcblxyXG4gICAgaSxcclxuICAgIC5tcy1JY29uIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xyXG4gICAgICAgIHdpZHRoOiAxNHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLnNlbGVjdGVkIHtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG5cclxuICAgICAgICBpLm1zLUljb24ge1xyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpLm1zLUljb24tLUVkaXQge1xyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAgICAgICAgIHdpZHRoOiAwcHg7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0IHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxufVxyXG5cclxuLnZ1ZS1mb3JtLWlucHV0IHtcclxuICAgIGJhY2tncm91bmQ6IGluaXRpYWw7XHJcbiAgICBwYWRkaW5nOiAwcHggOHB4O1xyXG4gICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5yZWFkb25seSB7XHJcbiAgICAudnVlLWNoZWNrYm94IHtcclxuICAgICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5O1xyXG4gICAgfVxyXG59XHJcbi52dWUtY2hlY2tib3gge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuICAgIDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLCBib3JkZXIsIGJvcmRlci1jb2xvcjtcclxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDIwMG1zO1xyXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMjMsIDEpO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XHJcblxyXG4gICAgaSB7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgfVxyXG5cclxuICAgICYuY2hlY2tlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGJ0bi1wcmltYXJ5LWNvbG9yO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRidG4tcHJpbWFyeS1jb2xvcjtcclxuXHJcbiAgICAgICAgaSxcclxuICAgICAgICAubXMtSWNvbiB7XHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi5sYWJlbC1leHBhbmQtY29udGFpbmVyIHtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWFlYWVhO1xyXG4gICAgbWFyZ2luLXRvcDogMTJweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XHJcbiAgICBwYWRkaW5nLXRvcDogMTJweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5sYWJlbC1leHBhbmQtaWNvbiB7XHJcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgICAgICBjb2xvcjogIzAwNzhENDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgdHJhbnNmb3JtOiBpbml0aWFsO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLmRlbGV0ZS1pY29uIHtcclxuICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgJi5jb2xsYXBzZWQge1xyXG4gICAgICAgIC5sYWJlbC1leHBhbmQtaWNvbiB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGVsZXRlLWljb24ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLnRleHQtbGlzdCB7XHJcbiAgICAudnVlLWxpc3QtZWxlbWVudCB7XHJcbiAgICAgICAgbWluLWhlaWdodDogMzJweDtcclxuICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gICAgICAgIGlucHV0IHtcclxuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZXh0YXJlYXtcclxuICAgICAgICAgICAgbWluLWhlaWdodDogMTZweDtcclxuICAgICAgICAgICAgcmVzaXplOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi52dWUtZm9ybSB7XHJcbiAgICAuZm9ybS1zZWN0aW9uIHtcclxuICAgICAgICAuc2VjdGlvbi1oZWFkZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDJweCBsaWdodGdyZXk7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAycHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDZweDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuXHJcbiAgICAgICAgICAgIGgzIHtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcclxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5jb2xscGFzZS1pY29uIHtcclxuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMDc4RDQ7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1ncm91cCB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMnB4IDBweDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcclxuXHJcbiAgICAgICAgICAgIGlucHV0W2Rpc2FibGVkXSxcclxuICAgICAgICAgICAgdGV4dGFyZWFbZGlzYWJsZWRdLmZvcm0taW5wdXQsXHJcbiAgICAgICAgICAgIHNlbGVjdFtkaXNhYmxlZF0ge1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnJlcXVpcmVkIHtcclxuICAgICAgICAgICAgICAgIGlucHV0IHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjZGMzNTQ1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdCB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2RjMzU0NTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBkaXYuZm9ybS1jb250ZW50IHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjZGMzNTQ1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC5jay1lZGl0b3Ige1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4ICNkYzM1NDU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5pbnB1dDpmb2N1cyxcclxuICAgICAgICAgICAgLmlucHV0OmZvY3VzLXZpc2libGUge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIzcHg7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMjNweDtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDBweDtcclxuXHJcbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc4RDQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxhYmVsIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwcHg7XHJcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xyXG5cclxuICAgICAgICAgICAgICAgICYucmVxdWlyZWQge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCIgKlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmdiKDE1MywgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW5pdGlhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogM3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBQcmV2ZW50IHRoZSBhc3RlcmlzayBmcm9tIHdyYXBwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZm9ybS1pbnB1dCB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIG1heC13aWR0aDogNDB2dztcclxuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogNTBweDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3ItZGFyayk7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogLjg3NXJlbTtcclxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5mb3JtLXNlbGVjdCB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5maWVsZC10ZXh0LFxyXG4gICAgICAgIC5maWVsZC10ZXh0YXJlYSB7XHJcblxyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICAgICAgdGV4dGFyZWEge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktY29sb3I7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG5cclxuICAgICAgICAgICAgICAgICY6Zm9jdXMsXHJcbiAgICAgICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIGJsYWNrO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmUtc3R5bGU6IHNvbGlkO1xyXG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmUtd2lkdGg6IDFweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VsZWN0IHtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0Z3JheTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZpZWxkLXNlbGVjdCB7XHJcbiAgICAgICAgICAgIHNlbGVjdCB7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250U2Vnb2VVSVNlbWlib2xkKCRmb250LWNvbG9yOiAkZm9udC1ibGFjayk7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIwdnc7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG5cclxuICAgICAgICAgICAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZmllbGQtZGF0ZSB7XHJcbiAgICAgICAgICAgIGlucHV0IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIwdnc7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0Z3JheTtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcblxyXG4gICAgICAgICAgICAgICAgJjpmb2N1cyxcclxuICAgICAgICAgICAgICAgICY6Zm9jdXMtd2l0aGluIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZmllbGQtdGV4dGFyZWEge1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHJcbiAgICAgICAgICAgIGxhYmVsIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGV4dGFyZWEuZm9ybS1pbnB1dCB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMTA4cHg7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNDB2dztcclxuICAgICAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcclxuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG5cclxuICAgICAgICAgICAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICY6ZGlzYWJsZWQge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogaW5pdGlhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZpZWxkLWxpbmsge1xyXG4gICAgICAgICAgICBhIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xyXG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcblxyXG4gICAgICAgICAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuZXhwYW5kZWQge1xyXG4gICAgICAgICAgICAuY29sbHBhc2UtaWNvbiB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA3OEQ0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZm9ybS1ncm91cCB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC52dWUtbXVsdGlzZWxlY3Qge1xyXG4gICAgICAgICAgICAuZm9ybS13aWRnZXQge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAgICAgLmZvcm0tbXVsdGktc2VsZWN0IHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTFweCBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgZGFya2dyZXkgMXB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNDB2dztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLml0ZW0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5mb3JtLWNvbnRyb2wtbGFiZWwubWFpbi1sYWJlbCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tY29udHJvbC1sYWJlbC5yZXF1aXJlZDo6YWZ0ZXIge1xyXG4gICAgICAgICAgICB6LWluZGV4OiAyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi5mb3JtLWdyb3VwIC5jb2wtZm9ybS1sYWJlbC5yZXF1aXJlZDphZnRlcixcclxuLmZvcm0tZ3JvdXAgbGFiZWwucmVxdWlyZWQ6YWZ0ZXIge1xyXG4gICAgei1pbmRleDogNTAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi50ZW1wLWZvcm0ge1xyXG4gICAgLmZvcm0tc2VjdGlvbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICAgICRnYXA6IDE1cHg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xyXG5cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgICRjb2x1bW5zOiAyOyAvLyBOdW1iZXIgb2YgY29sdW1uc1xyXG4gICAgICAgICAgICBmbGV4OiAwIDAgY2FsYygoMTAwJSAvICRjb2x1bW5zKSAtIGNhbGMoJGdhcCAqICgkY29sdW1ucyAtIDEpKSk7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAvICRjb2x1bW5zKSAtIGNhbGMoJGdhcCAqICgkY29sdW1ucyAtIDEpKSk7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgICAgICAgIG9yZGVyOiAxMDtcclxuXHJcbiAgICAgICAgICAgICYuZmlyc3Qge1xyXG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICYuc2luZ2xlIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmZvcm0tZ3JvdXAge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xyXG5cclxuICAgICAgICAgICAgICAgIGxhYmVsIHtcclxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzJweDtcclxuICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbnB1dCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQudnVlLWZvcm0taW5wdXQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAudnVlLWZvcm0taW5wdXQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHggOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICYuc2VsZWN0ZWQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYmctaGVhZGVyLWNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnZ1ZS1maWVsZC1odG1sIHtcclxuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEyNHB4O1xyXG5cclxuICAgICAgICAgICAgICAgIC5jay1lZGl0b3IgLmNrLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEyNHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLmNrLWVkaXRvci5ja3tcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnZ1ZS1maWVsZC1jaGVja2JveCB7XHJcbiAgICAgICAgICAgICAgICAuZm9ybS1jb250ZW50IHtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lci5jb2wtbGFyZ2Uge1xyXG4gICAgICAgICAgICAkY29sdW1uczogMTtcclxuICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC8gJGNvbHVtbnMpIC0gY2FsYygkZ2FwICogKCRjb2x1bW5zIC0gMSkpKTtcclxuICAgICAgICAgICAgZmxleDogMCAwIGNhbGMoKDEwMCUgLyAkY29sdW1ucykgLSBjYWxjKCRnYXAgKiAoJGNvbHVtbnMgLSAxKSkpO1xyXG5cclxuICAgICAgICAgICAgbGFiZWwuZm9ybS1jb250cm9sLWxhYmVsIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC52aWUtZmllbGQtY29udGFpbmVyLmNvbC1zbWFsbCB7XHJcbiAgICAgICAgICAgICRjb2x1bW5zOiAzO1xyXG4gICAgICAgICAgICBmbGV4OiAwIDAgY2FsYygoMTAwJSAvICRjb2x1bW5zKSAtIGNhbGMoJGdhcCAqICgkY29sdW1ucyAtIDEpKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lci5oYWxmLXJvdyB7XHJcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XHJcbiAgICAgICAgICAgICRjb2x1bW5zOiAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnZ1ZS1maWVsZC1jb250YWluZXIuY29sLXR3by10aGlyZHMge1xyXG4gICAgICAgICAgICAkY29sdW1uczogMjtcclxuICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC8gMyAqICRjb2x1bW5zKSAtICgkZ2FwICogKCRjb2x1bW5zIC0gMSkgLyAzKSk7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMCBjYWxjKCgxMDAlIC8gMyAqICRjb2x1bW5zKSAtICgkZ2FwICogKCRjb2x1bW5zIC0gMSkgLyAzKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lci5jb2wtb25lLXRoaXJkIHtcclxuICAgICAgICAgICAgJGNvbHVtbnM6IDE7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAvIDMgKiAkY29sdW1ucykgLSAoJGdhcCAqICgkY29sdW1ucyAtIDEpIC8gMykpO1xyXG4gICAgICAgICAgICBmbGV4OiAwIDAgY2FsYygoMTAwJSAvIDMgKiAkY29sdW1ucykgLSAoJGdhcCAqICgkY29sdW1ucyAtIDEpIC8gMykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnZ1ZS1maWVsZC1jb250YWluZXIubWFyZ2luLXRvcCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudnVlLWZpZWxkLWNvbnRhaW5lci5maWVsZC1ncm91cCB7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgICAgICAgIC52dWUtbGlzdC1jb250YWluZXIge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmNrLmNrLXBvd2VyZWQtYnkge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udGVtcC1mb3JtIC5mb3JtLXNlY3Rpb24gLnZ1ZS1maWVsZC1jb250YWluZXIucmVhZG9ubHkge1xyXG4gICAgLmZvcm0tZ3JvdXAge1xyXG4gICAgICAgIC5mb3JtLWNvbnRlbnQge1xyXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcblxyXG4gICAgICAgICAgICA+KiB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnZ1ZS1tdWx0aXNlbGVjdCAuZm9ybS13aWRnZXQgLmZvcm0tbXVsdGktc2VsZWN0IHtcclxuICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgICAgLnRzLWNvbnRyb2wge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC50ZXh0IHtcclxuICAgICAgICAgICAgY29sb3I6ICMxQjFCMUU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaXRlbSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMUIxQjFFO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLnZ1ZS1idG57XHJcbiAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBib3JkZXI6IG5vbmUgcmdiKDIzNywgMjM3LCAyMzcpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgcGFkZGluZzogMHB4IDE2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICBtaW4td2lkdGg6IGZpdC1jb250ZW50O1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktc2VsZWN0ZWQtY29sb3I7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgbWluLWhlaWdodDogMzJweDtcclxuICAgIG1pbi13aWR0aDogODBweDtcclxuICAgIHRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0QyRDBDRTtcclxuICAgICAgICBib3JkZXItY29sb3I6ICM2NTYzNjE7XHJcbiAgICB9XHJcbiAgICAmOmRpc2FibGVke1xyXG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDsgICAgIFxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzcsIDIzNywgMjM3KSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGNvbG9yOiByZ2IoMTYxLCAxNjEsIDE2MSkgIWltcG9ydGFudDtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG59XHJcbi52dWUtYnRuLnByaW1hcnl7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRidG4tcHJpbWFyeS1jb2xvcjtcclxuICAgIGJvcmRlci1jb2xvcjogJGJ0bi1wcmltYXJ5LWNvbG9yO1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogICRidG4tcHJpbWFyeS1ob3Zlci1jb2xvcjtcclxuICAgIH1cclxufVxyXG5cclxuLnZ1ZS1idG4uZGFyayB7XHJcbiAgIFxyXG59XHJcblxyXG4udnVlLWJ0bi5kYW5nZXJ7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XHJcbiAgICBib3JkZXItY29sb3I6ICNkYzM1NDU7XHJcbiAgICAmOmhvdmVye1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjYmQyMTMwO1xyXG4gICAgfVxyXG59XHJcblxyXG4udnVlLWJ0bi53YXJuaW5ne1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcclxuICAgIGJvcmRlci1jb2xvcjogI2ZmYzEwNztcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDtcclxuICAgICAgICBib3JkZXItY29sb3I6ICNkMzllMDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbi52dWUtYnRuLnN1Y2Nlc3N7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XHJcbiAgICBib3JkZXItY29sb3I6ICMyOGE3NDU7XHJcbiAgICAmOmhvdmVye1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTg4Mzg7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMWU3ZTM0O1xyXG4gICAgfVxyXG59XHJcblxyXG4udnVlLWJ0bi1hY3Rpb257XHJcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmc6IDBweCA4cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIHdpZHRoOiBmaXQtY29udGVudDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAmOmhvdmVye1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmF5LWhvdmVyLWNvbG9yO1xyXG4gICAgfVxyXG4gICAgaSAsIC5tcy1JY29ue1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgICAgICBjb2xvcjogIzAwNzhENDtcclxuICAgIH1cclxufVxyXG5cclxuIiwiLm1vZGFsLXZ1ZTMtY29udGVudCB7XHJcbiAgd2lkdGg6IDUwdnc7XHJcbn1cclxuXHJcbi5zaW1wbGUtbW9kYWwtY29udGFpbmVyIHtcclxuICAuY2FuY2VsLWljb24tY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG4gICAgbWFyZ2luLXRvcDogMTVweDtcclxuICAgIG1hcmdpbi1ib3R0b206IC00N3B4O1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgd2lkdGg6IDMycHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRURFQkU5O1xyXG4gICAgfVxyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1vZGFsLWNvbnRlbnQge1xyXG4gICAgcGFkZGluZzogMHB4IDI0cHggMjRweDtcclxuXHJcbiAgICAubW9kYWwtY29udGVudC0taGVhZGVyIHtcclxuICAgICAgLnRpdGxlIHtcclxuICAgICAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1jb2xvcjogJGZvbnQtYmxhY2spO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGNvbG9yOiByZ2IoNTAsIDQ5LCA0OCk7XHJcbiAgICAgICAgbWFyZ2luOiAwcHg7XHJcbiAgICAgICAgbWluLWhlaWdodDogMjBweDtcclxuICAgICAgICBwYWRkaW5nOiAxNnB4IDQ2cHggMjBweCAwcHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm1vZGFsLWNvbnRlbnQtLWJvZHl7XHJcbiAgICAgIEBpbmNsdWRlIGZvbnRTZWdvZVVJKCRmb250LWNvbG9yOiAkZm9udC1ibGFjayk7XHJcbiAgICAgIHB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm1vZGFsLWNvbnRlbnQtLWZvb3RlcntcclxuICAgICAgYnV0dG9ue1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsInRhYmxlLFxyXG4udnVlLXRhYmxlIHtcclxuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLWxlZnQpO1xyXG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KTtcclxuICAgIG1hcmdpbi1yaWdodDogNDBweDtcclxuICAgIG1hcmdpbi10b3A6IDE4cHg7XHJcbiAgICAvL3dpZHRoOiAxMDAlO1xyXG4gICAgbWluLXdpZHRoOiA0MHZ3O1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZSAhaW1wb3J0YW50O1xyXG4gICAgYm9yZGVyLXNwYWNpbmc6IDAgMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XHJcblxyXG4gICAgdGJvZHkge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5jaGlsZCAuY2VsbC1jb250ZW50IHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgICAgaGVpZ2h0OiA0MnB4O1xyXG5cclxuICAgICAgICBzdHJvbmcge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnRTZW9nZVVJU21hbGwoJGZvbnQtYmxhY2spO1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGQge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBmb250U2Vnb2VVSSgkZm9udC1ibGFjayk7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogODBweDtcclxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMzZweDtcclxuXHJcbiAgICAgICAgICAgIC5lbnRpdHktbGluayB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuXHJcbiAgICAgICAgICAgICAgICAmLmRpc2FibGVkIHtcclxuICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmNlbGwuY2hpbGRyZW4ge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgICAgICAgICAgIC5leHRlbmQge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAtMjVweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMjVzIGVhc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpLmV4cGFuZGVkIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRkLFxyXG4gICAgICAgIHRoIHtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgICAgICAgICYud3JhcCB7XHJcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aDpmaXJzdC1jaGlsZCxcclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcclxuXHJcbiAgICAgICAgICAgIC5sZXZlbDF7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5sZXZlbDJ7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAubGV2ZWwze1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLmxldmVsNHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5sZXZlbDV7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjVweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGQudGl0bGUsXHJcbiAgICAgICAgdGQuc3ViaGVhZGVyIHtcclxuICAgICAgICAgICAgLmhlYWRlciB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAudGV4dCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJ0aXRsZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRkLnRpdGxlIHtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgICAgICAgICAgIC5zdWJ0YXNrcy1pY29uIHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTEwcHg7XHJcbiAgICAgICAgICAgICAgICByaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgIHRvcDogLTJweDtcclxuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAgICAgICAgICAgICBzdmcge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IGdyYXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5oaWRlLXN1YnRhc2tzIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTE2cHg7XHJcbiAgICAgICAgICAgICAgICByaWdodDogMjNweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGQuc3ViaGVhZGVyIHtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1NHB4O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRkPioge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5jbGlja2FibGUge1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYWN0aW9uIHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcblxyXG4gICAgICAgICAgICBzdmcge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3RlZCB7XHJcblxyXG4gICAgICAgIHRkLFxyXG4gICAgICAgIHRoIHtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICMwMDc4RDQ7XHJcbiAgICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjMDA3OEQ0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLnRhYmxlPjpub3QoY2FwdGlvbik+Kj4qIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi5pbmRleC10YWJsZSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDBweDtcclxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDtcclxuXHJcbiAgICB0aGVhZCB0aCB7XHJcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgICAgICB0b3A6IDQ0cHg7XHJcbiAgICAgICAgei1pbmRleDogMjA7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmctY29sb3I7XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGJvZHkge1xyXG4gICAgICAgIHRyIHtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XHJcblxyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmF5LWhvdmVyLWNvbG9yO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1zZWxlY3RlZC1jb2xvcjtcclxuXHJcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1zZWxlY3RlZC1ob3Zlci1jb2xvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIiNub3RpZmljYXRpb24ge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIG1heC13aWR0aDogMjAwcHg7XHJcbiAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICB6LWluZGV4OiAxMDEwO1xyXG5cclxuICAgICoge1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcclxuICAgIH1cclxuXHJcbiAgICAuc3VjY2VzcyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0RFRjJFNztcclxuICAgICAgICBjb2xvcjogIzM5OTI2NjtcclxuICAgICAgICBib3JkZXItY29sb3I6ICMzOTkyNjY7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFFQ0VCO1xyXG4gICAgICAgIGNvbG9yOiAjRTk1MTY5O1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogI0U5NTE2OTtcclxuICAgIH1cclxufSIsIiAgIC5zdGFuZGFsb25lLW11bHRpc2VsZWN0IC52dWUtbXVsdGlzZWxlY3Qge1xyXG4gICAgICAgLmZvcm0td2lkZ2V0IHtcclxuICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgICAgICAgLmZvcm0tbXVsdGktc2VsZWN0IHtcclxuICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAxMXB4IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgZGFya2dyZXkgMXB4O1xyXG4gICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICBtYXgtd2lkdGg6IDQwdnc7XHJcblxyXG4gICAgICAgICAgICAgICAuaXRlbSB7XHJcbiAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgLmZvcm0tbXVsdGktc2VsZWN0IHtcclxuICAgICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXIgMXB4O1xyXG4gICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICAgICAgICYuZXhwYW5kZWQge1xyXG4gICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmctaGVhZGVyLWNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcclxuICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgLnRzLWNvbnRyb2wge1xyXG4gICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4IDhweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogMzBweDtcclxuICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgIC5kcm9wZG93bi1jb250YWluZXIge1xyXG4gICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTMzKSAwcHggMy4ycHggNy4ycHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuMTEpIDBweCAwLjZweCAxLjhweCAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcclxuICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xyXG4gICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgIC5kcm9wZG93bi1jb250ZW50IHtcclxuICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb24ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggOXB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLmdyb3VwLXRpdGxlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDlweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktY29sb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogYm9sZDtcclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb246aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1ob3Zlci1jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLm9wdGlvbi5yZW1vdmUtb3B0aW9uIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb24ubm8tb3B0aW9uOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAuZHJvcGRvd24tY29udGVudC1pbnRlcm5hbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDQwdmg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAuc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4IDhweDtcclxuICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGlnaHQtZ3JheS1mb2N1cy1ib3JkZXI7XHJcbiAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgLnNlYXJjaC1pY29uLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZS1pbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmctaGVhZGVyLWNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAuc2VhcmNoLWljb24tY29udGFpbmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgICAgICAgY29sb3I6ICMxQjFCMUU7XHJcbiAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7XHJcbiAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgIHAucGxhY2Vob2xkZXIge1xyXG4gICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xyXG4gICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgLml0ZW0ge1xyXG4gICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXktY29sb3I7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICB9XHJcbiAgIH0iLCIudnVlLWZpbHRlcnMge1xyXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctcmlnaHQpO1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmF5LWNvbG9yO1xyXG5cclxuICAgIC52dWUtZmlsdGVycy1vcHRpb25zIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3O1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgICAuZm9ybS1ncm91cCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcclxuXHJcbiAgICAgICAgICAgIC50cy13cmFwcGVyIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG5cclxuICAgICAgICAgICAgICAgIGRpdi5pdGVtIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZvcm0tZ3JvdXAub2xkIHtcclxuICAgICAgICAgICAgZmxleDogMCAwIDIwJTtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMThweDtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiAzMDBweDtcclxuICAgICAgICAgICAgcGFkZGluZzogMTRweCAwcHg7XHJcblxyXG4gICAgICAgICAgICAudHMtd3JhcHBlciB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuXHJcbiAgICAgICAgICAgICAgICBkaXYuaXRlbSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgZmxleDogMCAwIDQwJTtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuZGF0ZS1jb250cm9sIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG5cclxuICAgICAgICAgICAgICAgIC5sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZmllbGQtc2VsZWN0IHtcclxuXHJcbiAgICAgICAgICAgIGRpdixcclxuICAgICAgICAgICAgc2VsZWN0IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZm9ybS1jaGVjay5mb3JtLXN3aXRjaCB7XHJcbiAgICAgICAgICAgIGlucHV0IHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRhc2tsaXN0LWZpbHRlcnMtY2xlYXIge1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA2cHg7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLWdyb3VwIHtcclxuICAgICAgICBsYWJlbCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlucHV0IHtcclxuICAgICAgICAgICAgbWFyZ2luOiAwcHggNHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDM1cHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLnRhc2stZGV0YWlscyB7XHJcbiAgICBwYWRkaW5nLXRvcDogMjJweDtcclxuXHJcbiAgICAudGFzay1kZXRhaWxzLWhlYWRlciB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IHNvbGlkIDVweCAkb3Blbi1jb2xvcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG5cclxuICAgICAgICAmLnRlbXBvcmFsIHtcclxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5jbGFyaWZpY2F0aW9uIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY2xhcmlmeS1jb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYub3ZlcmR1ZSB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJG92ZXJkdWUtY29sb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmRvbmUge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRkb25lLWNvbG9yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5kZWxldGVkIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkZGVsZXRlZC1jb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdWJ0aXRsZSB7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoMiB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoMixcclxuICAgICAgICBwIHtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmFjdGlvbnMge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcblxyXG4gICAgICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4O1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG5cclxuICAgICAgICAgICAgICAgICY6ZGlzYWJsZWQge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogaW5pdGlhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAmLmNyZWF0ZS10YXNrLFxyXG4gICAgICAgICAgICAgICAgJi5jb21wbGV0ZS10YXNrIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3Blbi1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJi5pbi1wcm9ncmVzcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJi5vdmVyZHVlIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3ZlcmR1ZS1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJi5kb25lIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZG9uZS1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJi5jbGFyaWZ5LXRhc2sge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjbGFyaWZ5LWNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAmLmRlbGV0ZS10YXNrIHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGVsZXRlZC1jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRhc2stZm9ybSB7XHJcbiAgICAgICAgLnNhdmUtY29tbWVudCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcblxyXG4gICAgICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLm1lc3NhZ2VzIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblxyXG4gICAgICAgICAgICAubWVzc2FnZSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYyg0MHZ3ICsgMTIwcHgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAuYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjRDgzQjAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICM5MjBmMGY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLm1lc3NhZ2UtaGVhZGVyIHtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGhyIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5maWxlcyB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICAgICAgICAgICAuZmlsZSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYyg0MHZ3ICsgMTIwcHgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHAge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLmRvd25sb2FkIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGRhcmtncmF5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAuZG93bmxvYWRbZGlzYWJsZWQ9dHJ1ZV0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGluaXRpYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAuYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjRDgzQjAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICM5MjBmMGY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5kb3dubG9hZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBibGFjaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBkYXJrZ3JleTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBociB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBociB7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi50YXNrLW1haW4tdGl0bGUge1xyXG4gICAgYm9yZGVyLWxlZnQ6IHNvbGlkIDVweCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcblxyXG4gICAgJi5zdGF0dXMtb3BlbiB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRvcGVuLWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGF0dXMtY2xhcmlmaWNhdGlvbiB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjbGFyaWZ5LWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGF0dXMtaW4tcHJvZ3Jlc3Mge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGF0dXMtb3ZlcmR1ZSB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRvdmVyZHVlLWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGF0dXMtZG9uZSB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRkb25lLWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGF0dXMtZGVsZXRlZCB7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRkZWxldGVkLWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbn0iLCIudGFza2xpc3Qge1xyXG4gIHRyIHtcclxuICAgIC5hZGQge1xyXG4gICAgICBzdmcge1xyXG4gICAgICAgIGZpbGw6ICMwMDc4RDQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuaW1wb3J0YW50IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDM1cHg7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMzVweDtcclxuXHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcclxuICAgICAgICBmaWxsOiAjZGMzNTQ1O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFzay1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG5cclxuICAgIC50YXNrLWVsZW1lbnQge1xyXG4gICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDtcclxuICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG5cclxuICAgICAgaW5wdXQge1xyXG4gICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxhYmVsIHtcclxuICAgICAgICBmb250LXNpemU6IDE3cHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kb25lLXRhc2sge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NSwgMTU1LCAxNTUsIDAuNSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi5zdGF0dXMsXHJcbi5zdGF0dXMuY2hvaWNlIHtcclxuICAqIHtcclxuICAgIHdpZHRoOiAxMTRweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGJvcmRlci13aWR0aDogMHB4O1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcclxuICB9XHJcblxyXG4gIC5vcGVuIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcGVuLWNvbG9yO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gIH1cclxuXHJcbiAgLmluLXByb2dyZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgfVxyXG5cclxuICAub3ZlcmR1ZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3ZlcmR1ZS1jb2xvcjtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICB9XHJcblxyXG4gIC5kb25lIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRkb25lLWNvbG9yO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gIH1cclxuXHJcbiAgLmNsYXJpZmljYXRpb24ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNsYXJpZnktY29sb3I7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG5cclxuICAuZGVsZXRlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGVsZXRlZC1jb2xvcjtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICB9XHJcblxyXG4gIG9wdGlvbi5jbGFyaWZpY2F0aW9uIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgY29sb3I6ICRjbGFyaWZ5LWNvbG9yO1xyXG4gIH1cclxufSIsIi53b3JrZmxvdy1kZXRhaWxze1xyXG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XHJcbiAgICAud29yay1mbG93LWRldGFpbC1oZWFkZXJ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgICAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICAgICAgLmFjdGlvbnN7XHJcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYnV0dG9uIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5nZW5lcmFsLXNlY3Rpb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5oZWFkLWZpZWxke1xyXG4gICAgICAgIGhlaWdodDogNDBweDtcclxuICAgIH1cclxuICAgIC5sYWJlbHtcclxuICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgfVxyXG4gICAgLmZvcm0tY29udHJvbC1sYWJlbHtcclxuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XHJcbiAgICB9XHJcbiAgICAuc2VjdGlvbi1oZWFkZXIge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDJweCBsaWdodGdyZXk7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAzMHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XHJcbiAgICAgICAgaDN7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAuY29sbHBhc2UtaWNvbntcclxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDc4RDQ7XHJcbiAgICAgICAgICAgIHN2Z3tcclxuICAgICAgICAgICAgICAgIGZpbGw6IGdyYXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLndvcmtmbG93LWNvbmRpdGlvbi1mb3JtICwgLndvcmtmbG93LWFjdGlvbi1mb3JtIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5leHBhbmRlZCAud29ya2Zsb3ctY29uZGl0aW9uLWZvcm0gLCAuZXhwYW5kZWQgLndvcmtmbG93LWFjdGlvbi1mb3JtIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxufSIsIlxyXG4ud29ya2Zsb3ctaW5kZXh7XHJcbiAgICAud29ya2Zsb3ctZW50aXRpZXN7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KTtcclxuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheS1jb2xvcjtcclxuICAgICAgICAudnVlLWJ0bntcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5hZGR7XHJcbiAgICAgICAgc3Zne1xyXG4gICAgICAgICAgICBmaWxsOiAjMDA3OEQ0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRyLndvcmtmbG93e1xyXG4gICAgICAgIC5hY3Rpb25ze1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMzBweDtcclxuICAgICAgICAgICAgLnJlbW92ZXtcclxuICAgICAgICAgICAgICAgIHN2Z3tcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAjZGMzNTQ1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmFjdGl2ZS1pbmRleHtcclxuICAgICAgICAmOmNoZWNrZWR7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc4RDQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhlaWdodDogMjNweDtcclxuICAgICAgICB3aWR0aDogMjNweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xyXG4gICAgfVxyXG59XHJcbiIsIi53b3JrZmxvdy1hY3Rpb257XHJcbiAgICBib3JkZXI6IHNvbGlkIDFweCBsaWdodGdyYXk7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gICAgcGFkZGluZzogMTZweDtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgIC5mb3JtLXNlY3Rpb257XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgICAgICAuZm9ybS1ncm91cHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcclxuICAgICAgICAgICAgPiBsYWJlbHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDZweDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmLmFsaWduLWNlbnRlcntcclxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAuaGFuZGxlci1zZWN0aW9ue1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgLmZvcm0tZ3JvdXB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAucmVtb3ZlLWFjdGlvbntcclxuICAgICAgICAgICAgZmlsbDogcmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIi53b3JrZmxvdy1jb25kaXRpb257XHJcbiAgICBib3JkZXI6IHNvbGlkIDFweCBsaWdodGdyYXk7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gICAgcGFkZGluZzogMTZweDtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgIC5mb3JtLXNlY3Rpb257XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgICAgICAuZm9ybS1ncm91cHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcclxuICAgICAgICAgICAgPiBsYWJlbHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDZweDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC50eXBlLXNlY3Rpb257XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAuZm9ybS1ncm91cHtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5yZW1vdmUtY29uZGl0aW9ue1xyXG4gICAgICAgICAgICBmaWxsOiByZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiLmRvY3VtZW50LWRldGFpbHN7XHJcbiAgICAuZG9jdW1lbnQtZGV0YWlscy1oZWFkZXIge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDI4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbC1sYWJlbCB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLXNlY3Rpb24ge1xyXG4gICAgICAgIC5mb3JtLWdyb3VwLmZpbGUge1xyXG4gICAgICAgICAgICBpZnJhbWUgLCBvYmplY3R7XHJcbiAgICAgICAgICAgICAgICBhc3BlY3QtcmF0aW86IDEuNDE0MjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuIiwiLnJlbGF0ZWQtZG9jdW1lbnRze1xyXG4gICAgLmZpbGUge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogY2FsYyg0MHZ3ICsgMTIwcHgpO1xyXG5cclxuICAgICAgICBwIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XHJcblxyXG4gICAgICAgICAgICAuZG93bmxvYWQge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxN3B4O1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBkYXJrZ3JheTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmRvd25sb2FkW2Rpc2FibGVkPXRydWVdIHtcclxuICAgICAgICAgICAgICAgIGN1cnNvcjogaW5pdGlhbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmFjdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgICAgICAgICAgICAgIC5kZWxldGUge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAjRDgzQjAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogIzkyMGYwZjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLmRvd25sb2FkIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogYmxhY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogZGFya2dyZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBociB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCIuZG9jdW1lbnQtcmVxdWVzdHtcclxuICAgIC5kb2N1bWVudC1yZXF1ZXN0LWZvcm17XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLXJpZ2h0KTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA4MHB4O1xyXG4gICAgICAgIC5mb3JtLWdyb3Vwe1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAucmVzZXQtZGF0ZS1ncm91cHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHNjcmlwdD5cclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgcm9sZUFjbHM6IE9iamVjdCxcclxuICAgICAgICBhY2xPcHRpb25zOiBPYmplY3QsXHJcbiAgICAgICAgZGF0YTogT2JqZWN0XHJcbiAgICB9LFxyXG5cclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge30sXHJcbiAgICAgICAgICAgIHBlcnNvbkFjbHM6IHt9LFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFjbE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuYWNsT3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5oZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tlbGVtZW50Lmdyb3VwXSA9IHsgZXhwYW5kZWQ6IGZhbHNlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wZXJzb25BY2xzID0gdGhpcy5kYXRhLnBlcnNvbkFjbHM7XHJcbiAgICB9LFxyXG5cclxuICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hY2xPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmFjbE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGVhZGVyICYmICh0aGlzLmFsbEdyb3VwdmFsdWVzU2VsZWN0ZWQoZWxlbWVudCkgfHwgdGhpcy5ub1ZhbHVlc1NlbGVjdGVkKGVsZW1lbnQpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVIaWRkZW4oZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBoYW5kbGVDb21wYW55Um9sZUNoYW5nZSh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvbXBhbnkgcm9sZSBjaGFuZ2VkXCIsIHZhbHVlKTtcclxuICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmRhdGEudXBkYXRlQ29tcGFueVJvbGVVcmwsIHtcclxuICAgICAgICAgICAgICAgIGNvbXBhbnlSb2xlSWQ6IHZhbHVlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ3JvdXBIZWFkZXIoaGVhZGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoZWFkZXIgPyAnZ3JvdXAtaGVhZGVyJyA6ICcnO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGFsbEdyb3VwdmFsdWVzU2VsZWN0ZWQoYWNsLCBvbmx5Um9sZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGxldCBncm91cCA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBjaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBPYmplY3QudmFsdWVzKHRoaXMuYWNsT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmhlYWRlcikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ncm91cCA9PT0gYWNsLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9sZUFjbHMgPSB0eXBlb2YgdGhpcy5yb2xlQWNscyA9PT0gJ29iamVjdCcgPyBPYmplY3QudmFsdWVzKHRoaXMucm9sZUFjbHMpIDogdGhpcy5yb2xlQWNscztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJvbGVBY2xzLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUpICYmICghdGhpcy5wZXJzb25BY2xzLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUpIHx8IG9ubHlSb2xlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ3JvdXAgJiYgY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBub1ZhbHVlc1NlbGVjdGVkKGFjbCkge1xyXG4gICAgICAgICAgICBsZXQgZ3JvdXAgPSB0cnVlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmFjbE9wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5oZWFkZXIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZ3JvdXAgPT09IGFjbC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvbGVBY2xzID0gdHlwZW9mIHRoaXMucm9sZUFjbHMgPT09ICdvYmplY3QnID8gT2JqZWN0LnZhbHVlcyh0aGlzLnJvbGVBY2xzKSA6IHRoaXMucm9sZUFjbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGVBY2xzLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUpIHx8IHRoaXMucGVyc29uQWNscy5pbmNsdWRlcyhlbGVtZW50LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgaXNDaGVja2VkKGFjbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmlzQWRtaW5Sb2xlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYWNsLmhlYWRlcikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrZWQgPSB0aGlzLmFsbEdyb3VwdmFsdWVzU2VsZWN0ZWQoYWNsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcnNvbkFjbHMuaW5jbHVkZXMoYWNsLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgcm9sZUFjbHMgPSB0eXBlb2YgdGhpcy5yb2xlQWNscyA9PT0gJ29iamVjdCcgPyBPYmplY3QudmFsdWVzKHRoaXMucm9sZUFjbHMpIDogdGhpcy5yb2xlQWNscztcclxuICAgICAgICAgICAgcmV0dXJuIHJvbGVBY2xzLmluY2x1ZGVzKGFjbC52YWx1ZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgaXNEaXNhYmxlZChhY2wpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5pc0FkbWluUm9sZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFjbC5oZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFsbEdyb3VwdmFsdWVzU2VsZWN0ZWQoYWNsLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCByb2xlQWNscyA9IHR5cGVvZiB0aGlzLnJvbGVBY2xzID09PSAnb2JqZWN0JyA/IE9iamVjdC52YWx1ZXModGhpcy5yb2xlQWNscykgOiB0aGlzLnJvbGVBY2xzO1xyXG4gICAgICAgICAgICByZXR1cm4gcm9sZUFjbHMuaW5jbHVkZXMoYWNsLnZhbHVlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b2dnbGVIaWRkZW4oYWNsLCBlID0gbnVsbCkge1xyXG4gICAgICAgICAgICBsZXQgZ3JvdXAgPSBhY2wuZ3JvdXA7XHJcbiAgICAgICAgICAgIGxldCBleHBhbmRlZCA9IHRoaXMuaGVhZGVyc1tncm91cF0uZXhwYW5kZWQ7XHJcbiAgICAgICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZ3JvdXA9XCIke2dyb3VwfVwiXTpub3QoLmdyb3VwLWhlYWRlcilgKTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhY2wuaGVhZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXBFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtZ3JvdXA9XCIke2dyb3VwfVwiXS5ncm91cC1oZWFkZXJgKTtcclxuICAgICAgICAgICAgICAgIGxldCBpY29uID0gZ3JvdXBFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2knKTtcclxuICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGljb24uY2xhc3NMaXN0LnJlbW92ZSgnZmEtY2hldnJvbi1kb3duJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdmYS1jaGV2cm9uLXVwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzW2dyb3VwXS5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpY29uLmNsYXNzTGlzdC5yZW1vdmUoJ2ZhLWNoZXYtdXAnKTtcclxuICAgICAgICAgICAgICAgICAgICBpY29uLmNsYXNzTGlzdC5hZGQoJ2ZhLWNoZXZyb24tZG93bicpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tncm91cF0uZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG5cclxuXHJcbiAgICAgICAgZ3JvdXBUb2dnbGVTZWxlY3QoYWNsLCBlKSB7XHJcbiAgICAgICAgICAgIGlmIChhY2wuaGVhZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSBhY2wudmFsdWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1ncm91cD1cIiR7Z3JvdXB9XCJdOm5vdCguZ3JvdXAtaGVhZGVyKTpub3QoOmRpc2FibGVkKWApO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrZWQgPSBlLnRhcmdldC5jaGVja2VkO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgJiYgIWlucHV0LmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIE9iamVjdC52YWx1ZXModGhpcy5hY2xPcHRpb25zKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmdyb3VwID09PSBncm91cCAmJiAhZWxlbWVudC5oZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQgJiYgIXRoaXMucGVyc29uQWNscy5pbmNsdWRlcyhlbGVtZW50LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJzb25BY2xzLnB1c2goZWxlbWVudC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNoZWNrZWQgJiYgdGhpcy5wZXJzb25BY2xzLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcnNvbkFjbHMgPSB0aGlzLnBlcnNvbkFjbHMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gZWxlbWVudC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJzb25BY2xzLmluY2x1ZGVzKGFjbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcnNvbkFjbHMgPSB0aGlzLnBlcnNvbkFjbHMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gYWNsLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJzb25BY2xzLnB1c2goYWNsLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBlcnNvbmFsQWNscygpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVBlcnNvbmFsQWNscygpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJVcGRhdGluZyBwZXJzb25hbCBBQ0xzXCIsIHRoaXMuZGF0YS5uZXdBY2xzKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5uZXdBY2xzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2UtdmFsdWUnLCB0aGlzLnBlcnNvbkFjbHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmRhdGEudXBkYXRlQWNsc1VybCwge1xyXG4gICAgICAgICAgICAgICAgICAgIHBlcnNvbkFjbHM6IHRoaXMucGVyc29uQWNscyxcclxuICAgICAgICAgICAgICAgICAgICBwZXJzb25JZDogdGhpcy5kYXRhLnBlcnNvbklkXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgaXNIZWFkZXJFeHBhbmRlZChncm91cCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oZWFkZXJzW2dyb3VwXS5leHBhbmRlZDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHdhdGNoOiB7XHJcbiAgICAgICAgcGVyc29uQWNsczoge1xyXG4gICAgICAgICAgICBoYW5kbGVyKG5ld0FjbHMpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQZXJzb25hbEFjbHMoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG48L3NjcmlwdD5cclxuXHJcblxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInBlcnNvbi1hY2xzXCI+XHJcbiAgICAgICAgPGZvcm0gY2xhc3M9XCJ2dWUtZm9ybVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uIGV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtc2VsZWN0IGFjbC1maWVsZCBmb3JtLWdyb3VwIGN1c3RvbS1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImNvbC1mb3JtLWxhYmVsIHJlcXVpcmVkXCI+QUNMczwvbGVnZW5kPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2wtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ2Zvcm0tY2hlY2stbGl0ZSAnICsgZ3JvdXBIZWFkZXIoYWNsLmhlYWRlcilcIiA6ZGF0YS1ncm91cD1cImFjbC5ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cImFjbCBpbiBhY2xPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgOmlkPVwiYWNsLnZhbHVlXCIgOm5hbWU9XCJhY2wudmFsdWVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJncm91cFRvZ2dsZVNlbGVjdChhY2wsICRldmVudClcIiA6dmFsdWU9XCJhY2wudmFsdWVcIiA6Y2hlY2tlZD1cImlzQ2hlY2tlZChhY2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0Rpc2FibGVkKGFjbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBAY2xpY2suc3RvcD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjbC5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIHYtaWY9XCJhY2wuaGVhZGVyXCIgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLXVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJ0b2dnbGVIaWRkZW4oYWNsLCAkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4ucGVyc29uLWFjbHMge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcclxuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO1xyXG4gICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO1xyXG59XHJcblxyXG4uZm9ybS1jaGVjay1saXRlLmhpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uYWNsLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICBmbGV4OiAwIDAgNzAlO1xyXG59XHJcblxyXG4uY29sLWZvcm0tbGFiZWwge1xyXG4gICAgZmxleDogMCAwIDMwJTtcclxufVxyXG5cclxuLmZvcm0tY2hlY2stbGl0ZSB7XHJcbiAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXB4O1xyXG59XHJcblxyXG4uZm9ybS1jaGVjay1saXRlOm5vdCguZ3JvdXAtaGVhZGVyKSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbn1cclxuXHJcbi5mb3JtLWNoZWNrLWxpdGUuZ3JvdXAtaGVhZGVyIHtcclxuICAgIHBhZGRpbmctdG9wOiAzcHg7XHJcbiAgICBtYXJnaW4tdG9wOiAzcHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjtcclxufVxyXG5cclxuLmZvcm0tY2hlY2stbGl0ZS5ncm91cC1oZWFkZXI6Zmlyc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLXRvcDogMHB4O1xyXG4gICAgcGFkZGluZy10b3A6IDBweDtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbn1cclxuXHJcbi5mb3JtLWNoZWNrLWxpdGUgLmZvcm0tY2hlY2stbGFiZWwge1xyXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG59XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgZG9jdW1lbnQ6IE9iamVjdCxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3VwZGF0ZS1kb2N1bWVudCddLFxuICAgIGRhdGEoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnOiBudWxsXG4gICAgICB9XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBsZW5ndGgoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5ibG9ja3MubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFkZEJsb2NrKGlkKSB7XG5cbiAgICAgICAgICAgIGlmKHRoaXMuZG9jdW1lbnQuYmxvY2tzW2lkXSkge1xuICAgICAgICAgICAgICAgIGxldCBibG9jayA9IHt9O1xuICAgICAgICAgICAgICAgIGJsb2NrLmhlYWRlciA9IFwiXCI7XG4gICAgICAgICAgICAgICAgYmxvY2sudGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgYmxvY2suaWQgPSBpZDtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJsb2Nrcy5zcGxpY2UoIGlkLCAwLCBibG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYmxvY2tzW2lkXSA9IHt9O1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5ibG9ja3NbaWRdLmhlYWRlciA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJsb2Nrc1tpZF0uYm9keSA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmluZGV4QmxvY2tzKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRvY3VtZW50LmJsb2NrcylcblxuICAgICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlLWRvY3VtZW50JyAsIHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluZGV4QmxvY2tzKCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaWQgLGJsb2NrXSBvZiB0aGlzLmRvY3VtZW50LmJsb2Nrcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBibG9jay5pZCA9IGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZUJsb2NrKGlkKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJsb2Nrcy5zcGxpY2UoaWQsMSlcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZS1kb2N1bWVudCcgLCB0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGFuZ2VUZXh0KGlkICwgZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5ibG9ja3NbaWRdLnRleHQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZS1kb2N1bWVudCcgLCB0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGFuZ2VIZWFkZXIoaWQgLCBldmVudCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJsb2Nrc1tpZF0uaGVhZGVyID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGUtZG9jdW1lbnQnICwgdGhpcy5kb2N1bWVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXJyYXltb3ZlKGFyciwgZnJvbUluZGV4LCB0b0luZGV4KSB7XG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFycltmcm9tSW5kZXhdO1xuICAgICAgICAgICAgYXJyLnNwbGljZShmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgICAgYXJyLnNwbGljZSh0b0luZGV4LCAwLCBlbGVtZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGFydERyYWcoZXZ0LCBpdGVtKSB7XG4gICAgICAgICAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG4gICAgICAgICAgICBldnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG4gICAgICAgICAgICBldnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ2l0ZW1JRCcsIGl0ZW0uaWQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uRHJvcChldnQsIGxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JRCA9IGV2dC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnaXRlbUlEJyk7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09IGl0ZW1JRCk7XG4gICAgICAgICAgICBpdGVtLmxpc3QgPSBsaXN0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGlzRHJhZ2dhYmxlKGlkKSB7XG4gICAgICAgICAgICBpZih0aGlzLmRyYWcgPT0gaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGFydERyYWcoaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZyA9IGlkO1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0b3BEcmFnKCkge1xuICAgICAgICAgICAgdGhpcy5kcmFnID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wWm9uZShpZCAsIGxhc3QpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuZHJhZyAhPSBudWxsICkge1xuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmRyYWcgIT0gaWQgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZHJhZyArIDEgPT0gaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkRyb3AoZXZlbnQgLCBpZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVCbG9jayh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgdGhpcy5hZGRCbG9jayhpZCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYmxvY2tzW2lkXS50ZXh0ID0gYmxvY2sudGV4dDtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYmxvY2tzW2lkXS5oZWFkZXIgPSBibG9jay5oZWFkZXI7XG5cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gIGV2ZW50LnRhcmdldC5maXJzdENoaWxkO1xuICAgICAgICAgICAgaWYoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYm9yZGVyU3R5bGUgPSBcInNvbGlkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGUtZG9jdW1lbnQnICwgdGhpcy5kb2N1bWVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25EcmFnRW50ZXIoZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gIGV2ZW50LnRhcmdldC5maXJzdENoaWxkO1xuICAgICAgICAgICAgaWYoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYm9yZGVyU3R5bGUgPSBcImRvdHRlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9ICBldmVudC50YXJnZXQuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGlmKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJvcmRlclN0eWxlID0gXCJzb2xpZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICAgIDxkaXYgIGNsYXNzPVwiZG9jdW1lbnQtYnVpbGRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtYmxvY2stYWRkIHRleHQtY2VudGVyXCIgPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIEBjbGljaz1cImFkZEJsb2NrKDApXCI+PHN0cm9uZz4rPC9zdHJvbmc+IEFkZCBCbG9jazwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJyLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWJsb2NrXCIgOmRyYWdnYWJsZT1cImlzRHJhZ2dhYmxlKGlkKVwiIHYtZm9yPVwiKGJsb2NrICwgaWQgKSBpbiBkb2N1bWVudC5ibG9ja3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1ibG9jay1kcm9wXCIgIEBkcm9wPVwib25Ecm9wKCRldmVudCwgaWQpXCJcbiAgICAgICAgICAgIEBkcmFnb3Zlci5wcmV2ZW50XG4gICAgICAgICAgICBAZHJhZ2VudGVyPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBAZHJhZ2xlYXZlPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwiZHJvcC1saW5lXCIgdi1zaG93PVwiZHJvcFpvbmUoaWQgLCBmYWxzZSlcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtYmxvY2stZHJhZyB0ZXh0LXJpZ2h0XCIgPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBAbW91c2VlbnRlcj1cInN0YXJ0RHJhZyhpZClcIiBAbW91c2VsZWF2ZT1cInN0b3BEcmFnKClcIj5EcmFnPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1ibG9jay1oZWFkZXJcIiA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIidoZWFkZXItJysgaWRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiA+QmxvY2sgSGVhZGVyOjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGRvY3VtZW50LWJsb2NrLWhlYWRlclwiIHR5cGU9XCJ0ZXh0XCIgOmlkPVwiJ2hlYWRlci0nKyBpZFwiIDp2YWx1ZT1cImJsb2NrLmhlYWRlclwiIEBjaGFuZ2U9XCJjaGFuZ2VIZWFkZXIoaWQgLCAkZXZlbnQpXCIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtYmxvY2stdGV4dFwiID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiJ3RleHQtJysgaWRcIj5CbG9jayBUZXh0OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCIndGV4dC0nKyBpZFwiIHJvd3M9XCIzXCIgQGNoYW5nZT1cImNoYW5nZVRleHQoaWQgLCAkZXZlbnQpXCIgOnZhbHVlPVwiYmxvY2sudGV4dFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGRvY3VtZW50LWJsb2NrLWVkaXRcIiA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIEBjbGljaz1cImFkZEJsb2NrKGlkICsgMSlcIj48c3Ryb25nPis8L3N0cm9uZz4gQWRkIEJsb2NrPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgQGNsaWNrPVwicmVtb3ZlQmxvY2soaWQpXCI+PHN0cm9uZz48L3N0cm9uZz4gUmVtb3ZlIEJsb2NrPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1ibG9jay1kcm9wXCIgIEBkcm9wPVwib25Ecm9wKCRldmVudCwgbGVuZ3RoIC0gMSlcIlxuICAgICAgICAgICAgQGRyYWdvdmVyLnByZXZlbnRcbiAgICAgICAgICAgIEBkcmFnZW50ZXI9XCJvbkRyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIEBkcmFnbGVhdmU9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJkcm9wLWxpbmVcIiB2LXNob3c9XCJkcm9wWm9uZShsZW5ndGggLSAxICwgdHJ1ZSlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gIFxuPC90ZW1wbGF0ZT5cblxuXG48c3R5bGU+XG4gICAgLmRvY3VtZW50LWJ1aWxkZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cblxuICAgIC5kb2N1bWVudC1ibG9jay1lZGl0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuZG9jdW1lbnQtYmxvY2stZHJvcHtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBcbiAgICB9XG5cbiAgICAuZHJvcC1saW5lIHtcbiAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsdWU7XG4gICAgfVxuPC9zdHlsZT4iLCI8c2NyaXB0PlxuaW1wb3J0IERvY3VtZW50QnVpbGRlciBmcm9tICcuL0RvY3VtZW50QnVpbGRlci52dWUnO1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIFxuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IFN0cmluZyxcbiAgICAgICAgdmVyc2lvbnM6IE9iamVjdFxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBEb2N1bWVudEJ1aWxkZXJcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvY3VtZW50OiB7YmxvY2tzOltdfSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiAxLFxuICAgICAgICAgICAgcGRmOiAxLFxuICAgICAgICAgICAgYnVpbGRlcjoyXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzZWxlY3RlZFN0eWxlKGlkKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50Q2xhc3MgPSBcImJ0biBcIjtcbiAgICAgICAgICAgIGlmKGlkID09IHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudENsYXNzICsgXCJidG4tcHJpbWFyeVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRDbGFzcyArIFwiYnRuLXNlY29uZGFyeVwiXG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICBjaGFuZ2VOZXdEb2N1bWVudENob2ljZShpZCkge1xuICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gaWQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlRG9jdW1lbnQodXBkYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IHVwZGF0ZWQ7XG4gICAgICAgIH1cbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtbmV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdmVyc2lvbnNcIj5cbiAgICAgICAgICAgIDxoMj5WZXJzaW9uczwvaDI+XG4gICAgICAgICAgICA8cCB2LWlmPVwiIXZlcnNpb25zXCI+Tm8gdmVyc2lvbnMgYXZhbGlhYmxlPC9wPlxuICAgICAgICA8L2Rpdj4gICAgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItbmV3LWRvY3VtZW50LWNob2ljZVwiPlxuICAgICAgICAgICAgPGgyPk5ldyBkb2N1bWVudCB0eXBlPC9oMj5cbiAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwic2VsZWN0ZWRTdHlsZShwZGYpXCIgQGNsaWNrPVwiY2hhbmdlTmV3RG9jdW1lbnRDaG9pY2UocGRmKVwiPnBkZiB1cGxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwic2VsZWN0ZWRTdHlsZShidWlsZGVyKVwiIEBjbGljaz1cImNoYW5nZU5ld0RvY3VtZW50Q2hvaWNlKGJ1aWxkZXIpXCI+ZG9jdW1lbnQgYnVpbGRlcjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj4gICAgXG4gICAgICAgIDxkaXYgdi1zaG93PVwic2VsZWN0ZWQgPT0gcGRmXCIgY2xhc3M9XCJjb250YWluZXItcGRmLXVwbG9hZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBkZlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiID5VcGxvYWQgcGRmIGZpbGU6PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInBkZi1pbnB1dCBmb3JtLWNvbnRyb2xcIiB0eXBlPVwiZmlsZVwiIGlkPVwicGRmXCIgYWNjZXB0PVwiYXBwbGljYXRpb24vcGRmXCIgLz5cbiAgICAgICAgPC9kaXY+ICBcbiAgICAgICAgPERvY3VtZW50QnVpbGRlciB2LXNob3c9XCJzZWxlY3RlZCA9PSBidWlsZGVyXCIgOmRvY3VtZW50PVwiZG9jdW1lbnRcIiB2LW9uOnVwZGF0ZS1kb2N1bWVudD1cInVwZGF0ZURvY3VtZW50XCIgLz5cbiAgICA8L2Rpdj4gIFxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAgIC5kb2N1bWVudC1uZXcge1xuICAgICAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMDBweDtcbiAgICB9XG5cbiAgICAuY29udGFpbmVyLXZlcnNpb25ze1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cblxuICAgIC5jb250YWluZXItbmV3LWRvY3VtZW50LWNob2ljZXtcbiAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICB9XG4gICAgLmNvbnRhaW5lci1uZXctZG9jdW1lbnQtY2hvaWNlIC5idG57XG4gICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgIH1cbiAgICAuY29udGFpbmVyLXBkZi11cGxvYWR7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgfVxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgcHJvcHM6IHtcclxuICAgIGRvY3VtZW50czogT2JqZWN0LFxyXG4gICAgc2VsZWN0ZWREb2N1bWVudDogT2JqZWN0LFxyXG4gICAgdHJhbnM6IE9iamVjdCxcclxuICAgIGRhdGE6IE9iamVjdCxcclxuICAgIG9wdGlvbnM6IE9iamVjdCxcclxuICAgIGxpc3Rpbmc6IE9iamVjdCxcclxuICAgIG1vZGFsOiBCb29sZWFuXHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YVN0cmluZyk7XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBzZWxlY3REb2N1bWVudChkb2N1bWVudCkge1xyXG4gICAgICB0aGlzLiRlbWl0KFwic2VsZWN0RG9jdW1lbnRcIiwgZG9jdW1lbnQpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkb2N1bWVudENoaWxkcmVuKGRvY3VtZW50KSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5leHBhbmRlZCkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGRvY3VtZW50LmNoaWxkcmVuKS5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZWxlY3RlZERvY3VtZW50Q2xhc3MoaWQpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREb2N1bWVudCAmJiB0aGlzLnNlbGVjdGVkRG9jdW1lbnQuaWQgPT0gaWQpIHtcclxuICAgICAgICByZXR1cm4gXCJzZWxlY3RlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBkZXBhcnRtZW50TGFiZWwoZGVwYXJ0bWVudCwgYWJyZXYgPSBmYWxzZSkge1xyXG4gICAgICBpZiAoZGVwYXJ0bWVudCA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFicmV2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kZXBhcnRtZW50W2RlcGFydG1lbnRdLmFicmV2O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5vcHRpb25zLmRlcGFydG1lbnRbZGVwYXJ0bWVudF0ubGFiZWw7XHJcbiAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICBwZXJzb25Hcm91cExhYmVsKHBlcnNvbkdyb3VwLCBhYnJldiA9IGZhbHNlKSB7XHJcbiAgICAgIGlmIChwZXJzb25Hcm91cCA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFicmV2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5ncm91cFtwZXJzb25Hcm91cF0uYWJyZXY7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLm9wdGlvbnMuZ3JvdXBbcGVyc29uR3JvdXBdLmxhYmVsO1xyXG4gICAgICByZXR1cm4gbGFiZWw7XHJcbiAgICB9LFxyXG4gICAgdHlwZUxhYmVsKHR5cGUpIHtcclxuICAgICAgaWYgKHR5cGUgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5vcHRpb25zLmRvY3VtZW50VHlwZXNbdHlwZV0ubGFiZWw7XHJcbiAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICByZWxhdGVkRG9jdW1lbnRzTGFiZWxzKHJlbGF0ZWREb2N1bWVudHMpIHtcclxuICAgICAgaWYgKHJlbGF0ZWREb2N1bWVudHMgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBsYWJlbHMgPSBcIlwiO1xyXG4gICAgICBmb3IgKGNvbnN0IHJlbGF0ZWREb2N1bWVudCBpbiByZWxhdGVkRG9jdW1lbnRzKSB7XHJcbiAgICAgICAgbGV0IGRvY3VtZW50ID0gcmVsYXRlZERvY3VtZW50c1tyZWxhdGVkRG9jdW1lbnRdO1xyXG4gICAgICAgIGxhYmVscyArPSB0aGlzLm9wdGlvbnMuZG9jdW1lbnRzW2RvY3VtZW50XS5sYWJlbCArIFwiLCBcIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbGFiZWxzO1xyXG4gICAgfSxcclxuICAgIHBlcnNvbkxhYmVsKHBlcnNvbikge1xyXG4gICAgICBpZiAocGVyc29uID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gXCJOL0FcIjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMub3B0aW9ucy5wZXJzb25bcGVyc29uXS5sYWJlbDtcclxuICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfSxcclxuXHJcbiAgICBvcmlnaW5MYWJlbChvcmlnaW4pIHtcclxuICAgICAgaWYgKG9yaWdpbiA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiTi9BXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNbb3JpZ2luXTtcclxuICAgIH0sXHJcblxyXG4gICAgb25saW5rQ2xpY2soZW50aXR5LCBlKSB7XHJcbiAgICAgIGlmICghdGhpcy5kYXRhLnJlbGF0ZWRBY2xzW2VudGl0eV0pIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZW50aXR5TGlua0NsYXNzKGVudGl0eSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhlbnRpdHkpO1xyXG4gICAgICBsZXQgY2xhc3NOYW1lID0gXCJlbnRpdHktbGlua1wiO1xyXG4gICAgICBpZiAoZW50aXR5ICYmICF0aGlzLmRhdGEucmVsYXRlZEFjbHNbZW50aXR5XSkge1xyXG4gICAgICAgIGNsYXNzTmFtZSArPSBcIiBkaXNhYmxlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjbGFzc05hbWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGVudGl0eUxpbmtVcmwodXJsLCBlbnRpdHkpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5yZWxhdGVkQWNsc1tlbnRpdHldKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH0sXHJcblxyXG4gICAgYWNjb3VudGFibGVzTGFiZWxzKGFjY291bnRhYmxlcykge1xyXG4gICAgICBpZiAoYWNjb3VudGFibGVzID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBlbnRpdGllcyA9IHRoaXMub3B0aW9ucy5hY2NvdW50YWJsZUdyb3VwcztcclxuICAgICAgbGV0IGxhYmVscyA9IFwiXCI7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY291bnRhYmxlcykge1xyXG4gICAgICAgIGNvbnN0IGFjY291bnRhYmxlID0gYWNjb3VudGFibGVzW2tleV07XHJcbiAgICAgICAgaWYgKGFjY291bnRhYmxlLmdyb3VwID09IGVudGl0aWVzLkRlcGFydG1lbnQudmFsdWUpIHtcclxuICAgICAgICAgIGxhYmVscyArPSB0aGlzLmRlcGFydG1lbnRMYWJlbChhY2NvdW50YWJsZS52YWx1ZSwgdHJ1ZSkgKyBcIiwgXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY2NvdW50YWJsZS5ncm91cCA9PSBlbnRpdGllcy5QZXJzb25ncm91cC52YWx1ZSkge1xyXG4gICAgICAgICAgbGFiZWxzICs9IHRoaXMucGVyc29uR3JvdXBMYWJlbChhY2NvdW50YWJsZS52YWx1ZSwgdHJ1ZSkgKyBcIiwgXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY2NvdW50YWJsZS5ncm91cCA9PSBlbnRpdGllcy5QZXJzb24udmFsdWUpIHtcclxuICAgICAgICAgIGxhYmVscyArPSB0aGlzLnBlcnNvbkxhYmVsKGFjY291bnRhYmxlLnZhbHVlKSArIFwiLCBcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGxhYmVscy50cmltKCkucmVwbGFjZSgvLFxccyokLywgXCJcIik7XHJcbiAgICB9LFxyXG5cclxuICAgIG1hcEV4dGVuc2lvblRvRmlsZVR5cGUoZG9jdW1lbnQpIHtcclxuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZG9jdW1lbnQuZmlsZSA/IGRvY3VtZW50LmZpbGUuc3BsaXQoJy4nKS5wb3AoKSA6IG51bGw7XHJcbiAgICAgIGlmKCFleHRlbnNpb24pIHJldHVybiBcImZhLXNvbGlkIGZhLWZpbGUtY2lyY2xlLXhtYXJrXCI7XHJcbiAgICAgIGNvbnN0IGZpbGVUeXBlcyA9IHtcclxuICAgICAgICAgIHBkZjogXCJmYS1maWxlLXBkZiBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICBkb2M6IFwiZmEtZmlsZS13b3JkIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIGRvY3g6IFwiZmEtZmlsZS13b3JkIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIHhsczogXCJmYS1maWxlLWV4Y2VsIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIHhsc3g6IFwiZmEtZmlsZS1leGNlbCBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICBwcHQ6IFwiZmEtZmlsZS1wb3dlcnBvaW50IGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIHBwdHg6IFwiZmEtZmlsZS1wb3dlcnBvaW50IGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIGpwZzogXCJmYS1maWxlLWltYWdlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIGpwZWc6IFwiZmEtZmlsZS1pbWFnZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICBwbmc6IFwiZmEtZmlsZS1pbWFnZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICBnaWY6IFwiZmEtZmlsZS1pbWFnZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICB0eHQ6IFwiZmEtZmlsZS1hbHQgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgY3N2OiBcImZhLWZpbGUtY3N2IGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIHppcDogXCJmYS1maWxlLWFyY2hpdmUgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgcmFyOiBcImZhLWZpbGUtYXJjaGl2ZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICB0YXI6IFwiZmEtZmlsZS1hcmNoaXZlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgIGd6OiBcImZhLWZpbGUtYXJjaGl2ZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICBkZWZhdWx0OiBcImZhLWZpbGUgZmEtcmVndWxhclwiXHJcbiAgICAgICAgfTtcclxuICAgICAgcmV0dXJuIGZpbGVUeXBlc1tleHRlbnNpb25dIHx8IGZpbGVUeXBlcy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG5cclxuICBjb21wdXRlZDoge1xyXG5cclxuICB9XHJcblxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1pbmRleCB2dWUtc3BsaXQtaW5kZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmRleC1jb250YWluZXJcIj5cclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWhlYWRlclwiIHYtaWY9XCIhbW9kYWxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1oZWFkZXItdGl0bGVcIj5cclxuICAgICAgICAgIDxoMSBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHRyYW5zLmRvY3VtZW50ICsgJ3MnIH19XHJcbiAgICAgICAgICA8L2gxPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZG9jdW1lbnQtZmlsdGVycy1zZWN0aW9uXCI+XHJcbiAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInZ1ZS10YWJsZSBkb2N1bWVudHMtdGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImV4dGVuZFwiIHYtaWY9XCIhbW9kYWxcIj48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJmaWxlLWljb25cIj48aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtZmlsZVwiPjwvaT48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ0aXRsZVwiPnt7IHRyYW5zLm5hbWUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgdHJhbnMuZG9jdW1lbnROdW1iZXIgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgdHJhbnMudmVyc2lvbiB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD57eyB0cmFucy5yZXZpc2lvbiB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5kZXBhcnRtZW50XCI+e3sgdHJhbnMuZGVwYXJ0bWVudCB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy52YWxpZEZyb21cIj57eyB0cmFucy52YWxpZEZyb20gfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggdi1pZj1cImxpc3RpbmcudmFsaWRUb1wiPnt7IHRyYW5zLnZhbGlkVG8gfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggdi1pZj1cImxpc3RpbmcudHlwZVwiPnt7IHRyYW5zLnR5cGUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggdi1pZj1cImxpc3Rpbmcub3JpZ2luXCI+e3sgdHJhbnMub3JpZ2luIH19PC90aD5cclxuICAgICAgICAgICAgPHRoIHYtaWY9XCJsaXN0aW5nLnJlbGF0ZWREb2N1bWVudHNcIj57eyB0cmFucy5yZWxhdGVkRG9jdW1lbnRzIH19PC90aD5cclxuICAgICAgICAgICAgPHRoIHYtaWY9XCJsaXN0aW5nLmNyZWF0ZWRCeVwiPnt7IHRyYW5zLmNyZWF0ZWRCeSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5jcmVhdGVkQXRcIj57eyB0cmFucy5jcmVhdGVkQXQgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggdi1pZj1cImxpc3RpbmcuZWRpdGVkQnlcIj57eyB0cmFucy5lZGl0ZWRCeSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5lZGl0ZWRBdFwiPnt7IHRyYW5zLmVkaXRlZEF0IH19PC90aD5cclxuICAgICAgICAgICAgPHRoIHYtaWY9XCJsaXN0aW5nLmFwcHJvdmVkQnlcIj57eyB0cmFucy5hcHByb3ZlZEJ5IH19PC90aD5cclxuICAgICAgICAgICAgPHRoIHYtaWY9XCJsaXN0aW5nLmFwcHJvdmVkQXRcIj57eyB0cmFucy5hcHByb3ZlZEF0IH19PC90aD5cclxuICAgICAgICAgICAgPHRoIHYtaWY9XCJsaXN0aW5nLnB1Ymxpc2hlZEJ5XCI+e3sgdHJhbnMucHVibGlzaGVkQnkgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggdi1pZj1cImxpc3RpbmcucHVibGlzaGVkQXRcIj57eyB0cmFucy5wdWJsaXNoZWRBdCB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5jcmVhdGlvbkFjY291bnRhYmxlXCI+e3sgdHJhbnMuY3JlYXRpb25BY2NvdW50YWJsZSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5hcHByb3ZhbEFjY291bnRhYmxlXCI+e3sgdHJhbnMuYXBwcm92YWxBY2NvdW50YWJsZSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCB2LWlmPVwibGlzdGluZy5wdWJsaXNoaW5nQWNjb3VudGFibGVcIj57eyB0cmFucy5wdWJsaXNoaW5nQWNjb3VudGFibGUgfX08L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImV2ZW50LWdyb3VwXCIgdi1mb3I9XCJkb2N1bWVudCBpbiBkb2N1bWVudHNcIj5cclxuICAgICAgICAgIDx0ciA6Y2xhc3M9XCJzZWxlY3RlZERvY3VtZW50Q2xhc3MoZG9jdW1lbnQuaWQpXCIgQGNsaWNrLnN0b3A9XCJzZWxlY3REb2N1bWVudChkb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPHRkICB2LWlmPVwiIW1vZGFsXCIgY2xhc3M9XCJleHRlbmRcIiA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLXN1YnRhc2tzIHN1YnRhc2tzLWljb25cIiBAY2xpY2suc3RvcD1cImRvY3VtZW50LmV4cGFuZGVkID0gZmFsc2U7XCJcclxuICAgICAgICAgICAgICAgIHYtaWY9XCJkb2N1bWVudC5leHBhbmRlZFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjFlbVwiXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjwhLS0hIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTIzMy40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjU2IDMzOC43IDg2LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctc3VidGFza3Mgc3VidGFza3MtaWNvblwiIEBjbGljay5zdG9wPVwiZG9jdW1lbnQuZXhwYW5kZWQgPSB0cnVlO1wiXHJcbiAgICAgICAgICAgICAgICB2LWlmPVwiIWRvY3VtZW50LmV4cGFuZGVkXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMWVtXCJcclxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMjAgNTEyXCI+PCEtLSEgRm9udCBBd2Vzb21lIEZyZWUgNi40LjIgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjMgRm9udGljb25zLCBJbmMuIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMzEwLjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDI1NiA3My40IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJmaWxlLWljb25cIj5cclxuICAgICAgICAgICAgICA8aSA6Y2xhc3M9XCJgJHttYXBFeHRlbnNpb25Ub0ZpbGVUeXBlKGRvY3VtZW50KX1gXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUgaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj57eyBkb2N1bWVudC5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IHt7IGRvY3VtZW50LmRvY3VtZW50TnIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IHt7IGRvY3VtZW50LnZlcnNpb24udG9GaXhlZCgyKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD4ge3sgZG9jdW1lbnQucmV2aXNpb24udG9GaXhlZCgyKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5kZXBhcnRtZW50XCI+IHt7IGRlcGFydG1lbnRMYWJlbChkb2N1bWVudC5kZXBhcnRtZW50KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy52YWxpZEZyb21cIj4ge3sgZG9jdW1lbnQudmFsaWRGcm9tIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIHYtaWY9XCJsaXN0aW5nLnZhbGlkVG9cIj4ge3sgZG9jdW1lbnQudmFsaWRUbyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy50eXBlXCI+IHt7IHR5cGVMYWJlbChkb2N1bWVudC50eXBlKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5vcmlnaW5cIj4gPGEgdi1pZj1cImRvY3VtZW50Lm9yaWdpblwiIDpjbGFzcz1cImVudGl0eUxpbmtDbGFzcyhkb2N1bWVudC5vcmlnaW4pXCJcclxuICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwib25saW5rQ2xpY2soZG9jdW1lbnQub3JpZ2luLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIDpocmVmPVwiZW50aXR5TGlua1VybChkb2N1bWVudC5vcmlnaW5VcmwsIGRvY3VtZW50Lm9yaWdpbilcIj4ge3sgb3JpZ2luTGFiZWwoZG9jdW1lbnQub3JpZ2luKSB9fSA8L2E+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid3JhcFwiIHYtaWY9XCJsaXN0aW5nLnJlbGF0ZWREb2N1bWVudHNcIj4ge3sgcmVsYXRlZERvY3VtZW50c0xhYmVscyhkb2N1bWVudC5yZWxhdGVkRG9jdW1lbnRzKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5jcmVhdGVkQnlcIj4ge3sgcGVyc29uTGFiZWwoZG9jdW1lbnQuY3JlYXRlZEJ5KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5jcmVhdGVkQXRcIj4ge3sgZG9jdW1lbnQuY3JlYXRlZEF0IH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIHYtaWY9XCJsaXN0aW5nLmVkaXRlZEJ5XCI+IHt7IHBlcnNvbkxhYmVsKGRvY3VtZW50LmVkaXRlZEJ5KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5lZGl0ZWRBdFwiPiB7eyBkb2N1bWVudC5lZGl0ZWRBdCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5hcHByb3ZlZEJ5XCI+IHt7IHBlcnNvbkxhYmVsKGRvY3VtZW50LmFwcHJvdmVkQnkpIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIHYtaWY9XCJsaXN0aW5nLmFwcHJvdmVkQXRcIj4ge3sgZG9jdW1lbnQuYXBwcm92ZWRBdCA/PyBcIk4vQVwiIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIHYtaWY9XCJsaXN0aW5nLnB1Ymxpc2hlZEJ5XCI+IHt7IHBlcnNvbkxhYmVsKGRvY3VtZW50LnB1Ymxpc2hlZEJ5KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5wdWJsaXNoZWRBdFwiPiB7eyBkb2N1bWVudC5wdWJsaXNoZWRBdCA/PyBcIk4vQVwiIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid3JhcFwiIHYtaWY9XCJsaXN0aW5nLmNyZWF0aW9uQWNjb3VudGFibGVcIj4ge3sgYWNjb3VudGFibGVzTGFiZWxzKGRvY3VtZW50LmFjY291bnRhYmxlcy5jcmVhdGlvbikgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid3JhcFwiIHYtaWY9XCJsaXN0aW5nLmFwcHJvdmFsQWNjb3VudGFibGVcIj4ge3sgYWNjb3VudGFibGVzTGFiZWxzKGRvY3VtZW50LmFjY291bnRhYmxlcy5hcHByb3ZhbCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid3JhcFwiIHYtaWY9XCJsaXN0aW5nLnB1Ymxpc2hpbmdBY2NvdW50YWJsZVwiPiB7e1xyXG4gICAgICAgICAgICAgIGFjY291bnRhYmxlc0xhYmVscyhkb2N1bWVudC5hY2NvdW50YWJsZXMucHVibGlzaGluZykgfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciA6Y2xhc3M9XCInZG9jdW1lbnQtY2hpbGQgJyArIHNlbGVjdGVkRG9jdW1lbnRDbGFzcyhjaGlsZERvY3VtZW50LmlkKVwiXHJcbiAgICAgICAgICAgIEBjbGljay5zdG9wPVwic2VsZWN0RG9jdW1lbnQoY2hpbGREb2N1bWVudClcIiB2LWZvcj1cImNoaWxkRG9jdW1lbnQgaW4gZG9jdW1lbnRDaGlsZHJlbihkb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZXh0ZW5kXCI+PC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZmlsZS1pY29uIGNoaWxkXCI+XHJcbiAgICAgICAgICAgICAgPGkgOmNsYXNzPVwiYCR7bWFwRXh0ZW5zaW9uVG9GaWxlVHlwZShjaGlsZERvY3VtZW50KX1gXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0aXRsZSBzdWJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2thYmxlIGhlYWRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IGNoaWxkRG9jdW1lbnQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPiB7eyBjaGlsZERvY3VtZW50LmRvY3VtZW50TnIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IHt7IGNoaWxkRG9jdW1lbnQudmVyc2lvbi50b0ZpeGVkKDIpIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPiB7eyBjaGlsZERvY3VtZW50LnJldmlzaW9uLnRvRml4ZWQoMikgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcuZGVwYXJ0bWVudFwiPiB7eyBkZXBhcnRtZW50TGFiZWwoY2hpbGREb2N1bWVudC5kZXBhcnRtZW50KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy52YWxpZEZyb21cIj4ge3sgY2hpbGREb2N1bWVudC52YWxpZEZyb20gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcudmFsaWRUb1wiPiB7eyBjaGlsZERvY3VtZW50LnZhbGlkVG8gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcudHlwZVwiPiB7eyB0eXBlTGFiZWwoY2hpbGREb2N1bWVudC50eXBlKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5vcmlnaW5cIj4gPGEgdi1pZj1cImNoaWxkRG9jdW1lbnQub3JpZ2luXCIgOmNsYXNzPVwiZW50aXR5TGlua0NsYXNzKGNoaWxkRG9jdW1lbnQub3JpZ2luKVwiXHJcbiAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cIm9ubGlua0NsaWNrKGNoaWxkRG9jdW1lbnQub3JpZ2luLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIDpocmVmPVwiZW50aXR5TGlua1VybChjaGlsZERvY3VtZW50Lm9yaWdpblVybCwgY2hpbGREb2N1bWVudC5vcmlnaW4pXCI+IHt7XHJcbiAgICAgICAgICAgICAgICAgIG9yaWdpbkxhYmVsKGNoaWxkRG9jdW1lbnQub3JpZ2luKVxyXG4gICAgICAgICAgICAgICAgfX0gPC9hPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndyYXBcIiB2LWlmPVwibGlzdGluZy5yZWxhdGVkRG9jdW1lbnRzXCI+IHt7IHJlbGF0ZWREb2N1bWVudHNMYWJlbHMoY2hpbGREb2N1bWVudC5yZWxhdGVkRG9jdW1lbnRzKSB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcuY3JlYXRlZEJ5XCI+IHt7IHBlcnNvbkxhYmVsKGNoaWxkRG9jdW1lbnQuY3JlYXRlZEJ5KSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5jcmVhdGVkQXRcIj4ge3sgY2hpbGREb2N1bWVudC5jcmVhdGVkQXQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcuZWRpdGVkQnlcIj4ge3sgcGVyc29uTGFiZWwoY2hpbGREb2N1bWVudC5lZGl0ZWRCeSkgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcuZWRpdGVkQXRcIj4ge3sgY2hpbGREb2N1bWVudC5lZGl0ZWRBdCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCB2LWlmPVwibGlzdGluZy5hcHByb3ZlZEJ5XCI+IHt7IHBlcnNvbkxhYmVsKGNoaWxkRG9jdW1lbnQuYXBwcm92ZWRCeSkgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcuYXBwcm92ZWRBdFwiPiB7eyBjaGlsZERvY3VtZW50LmFwcHJvdmVkQXQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcucHVibGlzaGVkQnlcIj4ge3sgcGVyc29uTGFiZWwoY2hpbGREb2N1bWVudC5wdWJsaXNoZWRCeSkgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgdi1pZj1cImxpc3RpbmcucHVibGlzaGVkQXRcIj4ge3sgY2hpbGREb2N1bWVudC5wdWJsaXNoZWRBdCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndyYXBcIiB2LWlmPVwibGlzdGluZy5jcmVhdGlvbkFjY291bnRhYmxlXCI+IHt7XHJcbiAgICAgICAgICAgICAgYWNjb3VudGFibGVzTGFiZWxzKGNoaWxkRG9jdW1lbnQuYWNjb3VudGFibGVzLmNyZWF0aW9uKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndyYXBcIiB2LWlmPVwibGlzdGluZy5hcHByb3ZhbEFjY291bnRhYmxlXCI+IHt7XHJcbiAgICAgICAgICAgICAgYWNjb3VudGFibGVzTGFiZWxzKGNoaWxkRG9jdW1lbnQuYWNjb3VudGFibGVzLmFwcHJvdmFsKSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndyYXBcIiB2LWlmPVwibGlzdGluZy5wdWJsaXNoaW5nQWNjb3VudGFibGVcIj4ge3tcclxuICAgICAgICAgICAgICBhY2NvdW50YWJsZXNMYWJlbHMoY2hpbGREb2N1bWVudC5hY2NvdW50YWJsZXMucHVibGlzaGluZykgfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG50YWJsZSB0ciB0aDpmaXJzdC1jaGlsZCxcclxudGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQsXHJcbi52dWUtdGFibGUgdHIgdGg6Zmlyc3QtY2hpbGQsXHJcbi52dWUtdGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQge1xyXG4gIHBhZGRpbmctbGVmdDogMTRweDtcclxuICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gIG1pbi13aWR0aDogNDNweDtcclxufVxyXG5cclxuLnRhYmxlIHRyIHRkLnN1YmhlYWRlciwgLnZ1ZS10YWJsZSB0ciB0ZC5zdWJoZWFkZXIge1xyXG4gIHBhZGRpbmctbGVmdDogMHB4O1xyXG59XHJcblxyXG4uZmlsZS1pY29uIHtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbn1cclxuXHJcbi5maWxlLWljb24uY2hpbGQge1xyXG4gIGZvbnQtc2l6ZTogMThweDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCB7IHRvSGFuZGxlcnMgfSBmcm9tICd2dWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgcHJvcHM6IFsnb3B0aW9ucycsICdsYWJlbCcsICd2dWVEaXNhYmxlZCcsICdpbml0aWFsVmFsdWUnLCAnY29uZmlnJywgJ2lzUmVxdWlyZWQnXSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBcIlwiLFxyXG4gICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb25zOiB7fSxcclxuICAgICAgICAgICAgaW5wdXRBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaW5nbGVPcHRpb246IG51bGwsXHJcbiAgICAgICAgICAgIGlucHV0VmFsdWU6IFwiXCIsXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIGNvbnN0IGFwcCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgIG9wdGlvbi5pbmRleCA9IGtleTtcclxuICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICBpZiAoYXBwLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHVwZGF0ZVZhbHVlKCkge1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNpbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxWYWx1ZSB8fCBPYmplY3Qua2V5cyh0aGlzLmluaXRpYWxWYWx1ZSkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZU9wdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZS5ncm91cCA9PSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV0uZ3JvdXAgJiYgdGhpcy5pbml0aWFsVmFsdWUuaWQgPT0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcgJiYgIXRoaXMuY29uZmlnLmdyb3VwICYmIHRoaXMuaW5pdGlhbFZhbHVlID09IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZU9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxWYWx1ZSB8fCBPYmplY3Qua2V5cyh0aGlzLmluaXRpYWxWYWx1ZSkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAmJiB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5ncm91cHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkS2V5IGluIHRoaXMuaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlW3NlbGVjdGVkS2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5ncm91cCA9PSBvcHRpb24uZ3JvdXAgJiYgaW5pdGlhbFZhbHVlLnZhbHVlID09IG9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaW5pdGlhbFZhbHVlICYmIHRoaXMuaW5pdGlhbFZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdE9wdGlvbihvcHRpb24sIGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNpbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24odGhpcy5zaW5nbGVPcHRpb24sIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVZhbHVlJywgdGhpcy5zaW5nbGVPcHRpb24sIGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zW29wdGlvbi5pbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuYXZhbGlhYmxlT3B0aW9ucykubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlVmFsdWUnLCB0aGlzLnNlbGVjdGVkVmFsdWVzLCBlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICAvLy9cclxuXHJcbiAgICAgICAgcmVtb3ZlT3B0aW9uKG9wdGlvbiwgZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZU9wdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VWYWx1ZScsIG51bGwsIGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1tvcHRpb24uaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlVmFsdWUnLCB0aGlzLnNlbGVjdGVkVmFsdWVzLCBlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVPcHRpb25zKCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE9wdGlvbnNba2V5XSA9IHRoaXMubW9kZWxWYWx1ZVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25JbnB1dENoYW5nZShlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGV4cGFuZCgpIHtcclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnb25DbGljaycpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudnVlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdyb3VwT3B0aW9ucyhncm91cEtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB7fTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hdmFsaWFibGVPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmF2YWxpYWJsZU9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNpbmdsZU9wdGlvbiAmJiB0aGlzLnNpbmdsZU9wdGlvbi52YWx1ZSA9PSBvcHRpb24udmFsdWUgJiYgb3B0aW9uLmdyb3VwID09IHRoaXMuc2luZ2xlT3B0aW9uLmdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmdyb3VwID09IGdyb3VwS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBPcHRpb25zW2tleV0gPSBvcHRpb247XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwT3B0aW9ucztcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyKCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbG9zZSgpIHtcclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICBhY3RpdmVDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbnB1dC1hY3RpdmVcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdmFsaWFibGVPcHRpb25zKCkge1xyXG4gICAgICAgICAgICBjb25zdCBhdmFsaWFibGVPcHRpb25zID0gW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5zaW5nbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkT3B0aW9ucztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcktleSBpbiB0aGlzLmZpbHRlcmVkT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbZmlsdGVyS2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRPcHRpb25zW2ZpbHRlck9wdGlvbi5pbmRleF0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF2YWxpYWJsZU9wdGlvbnMucHVzaChmaWx0ZXJPcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhdmFsaWFibGVPcHRpb25zO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucygpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0ge307XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY3VycmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5ncm91cHMgJiYgdGhpcy5jdXJyZW50T3B0aW9uc1tvcHRpb24uaW5kZXhdLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zW2tleV0gPSBvcHRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uc1trZXldID0gb3B0aW9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0ge307XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY3VycmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzW2tleV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IG9wdGlvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZ3JvdXBcIjogb3B0aW9uLmdyb3VwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlc1trZXldID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkaXNhYmxlZENsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52dWVEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZGlzYWJsZWRcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjdXJyZW50U2luZ2xlVmFsdWUoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpbmdsZU9wdGlvbiAmJiB0aGlzLnNpbmdsZU9wdGlvbi5sYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2luZ2xlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlNlbGVjdCBhbiBvcHRpb25cIlxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGlzU2luZ2xlSW5wdXRWaXNpYmxlKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPcHRpb25zIHx8IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRPcHRpb25zKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNpbmdsZVZhbHVlQ2xhc3MoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5zaW5nbGUgJiYgdGhpcy5zaW5nbGVPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInNpbmdsZS12YWx1ZVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRpc3BsYXlNb2RlKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJncm91cHNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJub3JtYWxcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZXF1aXJlZENsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcucmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInJlcXVpcmVkXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgaXNSZXF1aXJlZENsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZXF1aXJlZFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGZpbHRlcmVkT3B0aW9ucygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRWYWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmN1cnJlbnRPcHRpb25zIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXJyYXkgPSBPYmplY3QudmFsdWVzKHRoaXMuY3VycmVudE9wdGlvbnMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50QXJyYXkuZmlsdGVyKG9wdGlvbiA9PlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG5cclxuICAgIHdhdGNoOiB7XHJcbiAgICAgICAgaW5pdGlhbFZhbHVlKGN1cnJlbnRWYWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH0sXHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgICA8ZGl2IDpjbGFzcz1cImB2dWUtbXVsdGlzZWxlY3QgZmllbGQtc2VsZWN0IGZvcm0tZ3JvdXAgY3VzdG9tLWZvcm0tZ3JvdXAgJHtkaXNhYmxlZENsYXNzfSAke2lzUmVxdWlyZWRDbGFzc31gXCI+XHJcbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cIidmb3JtLWNvbnRyb2wtbGFiZWwgJyArIHJlcXVpcmVkQ2xhc3NcIj5cclxuICAgICAgICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXdpZGdldFwiPlxyXG4gICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIid0cy13cmFwcGVyIGZvcm0tbXVsdGktc2VsZWN0IG11bHRpIHBsdWdpbi1kcm9wZG93bl9pbnB1dCBwbHVnaW4tY2xlYXJfYnV0dG9uIHBsdWdpbi1yZW1vdmVfYnV0dG9uICcgKyBhY3RpdmVDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICBAbW91c2VvdmVyPVwidGhpcy5hY3RpdmUgPSB0cnVlXCIgQG1vdXNlbGVhdmU9XCJ0aGlzLmFjdGl2ZSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHMtY29udHJvbFwiIHJvbGU9XCJjb21ib2JveFwiIEBjbGljay5zdG9wPVwiZXhwYW5kKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCB2LWlmPVwiaXNTaW5nbGVJbnB1dFZpc2libGVcIiA6Y2xhc3M9XCIncGxhY2Vob2xkZXIgJyArIHNpbmdsZVZhbHVlQ2xhc3NcIj48c3BhbiBjbGFzcz1cInRleHRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2luZ2xlVmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sbHBhc2UtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMWVtXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyelwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiIGRhdGEtdHMtaXRlbT1cIlwiIHYtZm9yPVwib3B0aW9uIGluIHNlbGVjdGVkT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIHYtaWY9XCIhdnVlRGlzYWJsZWRcIiBAY2xpY2suc3RvcD1cInJlbW92ZU9wdGlvbihvcHRpb24sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVcIiB0YWJpbmRleD1cIi0xXCIgdGl0bGU9XCJcIj7DlzwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhdnVlRGlzYWJsZWQgJiYgZmFsc2VcIiBjbGFzcz1cImNsZWFyLWJ1dHRvblwiIHRpdGxlPVwiXCI+4qivPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInRoaXMuZXhwYW5kZWQgfHwgdGhpcy5pbnB1dEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cy1kcm9wZG93biBtdWx0aSBwbHVnaW4tZHJvcGRvd25faW5wdXQgcGx1Z2luLWNsZWFyX2J1dHRvbiBwbHVnaW4tcmVtb3ZlX2J1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJ0aGlzLmV4cGFuZGVkID0gdGhpcy5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cImxpc3Rib3ggXCIgdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwidHMtZHJvcGRvd24tY29udGVudCBleHRlcm5hbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHJlZj1cImlucHV0XCIgY2xhc3M9XCJzZWFyY2gtaW5wdXQgaXRlbXMtcGxhY2Vob2xkZXJcIiB2LWlmPVwiIXZ1ZURpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb2N1cz1cInRoaXMuaW5wdXRBY3RpdmUgPSB0cnVlXCIgQGJsdXI9XCJ0aGlzLmlucHV0QWN0aXZlID0gZmFsc2VcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCIgQGlucHV0PVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvbGU9XCJsaXN0Ym94IFwiIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cInRzLWRyb3Bkb3duLWNvbnRlbnQgaW50ZXJuYWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtc2VsZWN0YWJsZT1cIlwiIDpjbGFzcz1cIidvcHRpb24gcmVtb3ZlLW9wdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdE9wdGlvbih7IHZhbHVlOiAwIH0sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5zaW5nbGUgJiYgdGhpcy5zaW5nbGVPcHRpb24gJiYgIXRoaXMuY29uZmlnLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaXNwbGF5TW9kZSA9PSAnbm9ybWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1zZWxlY3RhYmxlPVwiXCIgOmNsYXNzPVwiJ29wdGlvbidcIiBAY2xpY2s9XCJzZWxlY3RPcHRpb24ob3B0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gYXZhbGlhYmxlT3B0aW9uc1wiPnt7IG9wdGlvbi5sYWJlbCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cIk9iamVjdC5rZXlzKGF2YWxpYWJsZU9wdGlvbnMpLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJvcHRpb24gbm8tb3B0aW9uXCI+Tm8gb3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFsaWFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiZGlzcGxheU1vZGUgPT0gJ2dyb3VwcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwiZ3JvdXAgaW4gdGhpcy5jb25maWcuZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC10aXRsZVwiIHYtaWY9XCJPYmplY3Qua2V5cyhncm91cE9wdGlvbnMoZ3JvdXAudmFsdWUpKS5sZW5ndGggPiAwXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1zZWxlY3RhYmxlPVwiXCIgOmNsYXNzPVwiJ29wdGlvbiBncm91cC1vcHRpb24gJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3RPcHRpb24ob3B0aW9uLCAkZXZlbnQsIGdyb3VwLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBncm91cE9wdGlvbnMoZ3JvdXAudmFsdWUpXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tc3BhY2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5wbHVnaW4tZHJvcGRvd25faW5wdXQge1xyXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxucC5wbGFjZWhvbGRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgbWFyZ2luOiAwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbTtcclxuICAgIGN1cnNvcjogaW5pdGlhbDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG9wYWNpdHk6IDE7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlciAuY29sbHBhc2UtaWNvbiB7XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxufVxyXG5cclxuLnBsYWNlaG9sZGVyIHN2ZyB7XHJcbiAgICBmaWxsOiBncmF5O1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLnBsYWNlaG9sZGVyIC50ZXh0IHtcclxuICAgIG9wYWNpdHk6IC41O1xyXG59XHJcblxyXG4ucGxhY2Vob2xkZXIuc2luZ2xlLXZhbHVlIC50ZXh0IHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbn1cclxuXHJcbi50cy13cmFwcGVyLm11bHRpIC50cy1jb250cm9sIHtcclxuICAgIHBhZGRpbmc6IDJweCAwLjc1cmVtIDNweCAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGMkYxO1xyXG4gICAgbWFyZ2luOiAzcHggMHJlbSAhaW1wb3J0YW50O1xyXG5cclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dDpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRzLWRyb3Bkb3duLWNvbnRlbnQgLm9wdGlvbiB7XHJcbiAgICBwYWRkaW5nOiAzcHggMHJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udHMtY29udHJvbCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG59XHJcblxyXG4uZXh0ZXJuYWwtY29udGFpbmVyIHtcclxuICAgIG92ZXJmbG93LXk6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5pbnRlcm5hbC1jb250YWluZXIge1xyXG4gICAgcGFkZGluZzogMHJlbSAhaW1wb3J0YW50O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBvdmVyZmxvdy14OiBhdXRvICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5vcHRpb24ge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5vcHRpb24ucmVtb3ZlLW9wdGlvbiB7XHJcbiAgICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG4ub3B0aW9uLm5vLW9wdGlvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IGluaXRpYWw7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5ib3R0b20tc3BhY2Uge1xyXG4gICAgaGVpZ2h0OiAzNnB4O1xyXG59XHJcblxyXG4uZ3JvdXAtdGl0bGUge1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0tZm9ybS10eXBlLWF1dG9jb21wbGV0ZS1vcHRncm91cC1iZyk7XHJcbiAgICBjb2xvcjogdmFyKC0tZm9ybS10eXBlLWF1dG9jb21wbGV0ZS1vcHRncm91cC1jb2xvcik7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG4udnVlLW11bHRpc2VsZWN0LnJlcXVpcmVkIC50cy13cmFwcGVyIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkYzI2MjYgIWltcG9ydGFudDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBEb2N1bWVudEluZGV4IGZyb20gJy4uLy4uL3BhZ2VzL0RvY3VtZW50L0RvY3VtZW50SW5kZXgudnVlJztcclxuaW1wb3J0IERvY3VtZW50RmlsdGVyIGZyb20gJy4uLy4uL3BhZ2VzL0RvY3VtZW50L0RvY3VtZW50RmlsdGVyLnZ1ZSdcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgbmFtZTogJ1JlbGF0ZWREb2N1bWVudHNNb2RhbCcsXHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgRG9jdW1lbnRJbmRleCxcclxuICAgICAgICBEb2N1bWVudEZpbHRlclxyXG4gICAgfSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgZGF0YTogT2JqZWN0LFxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNSZWxhdGVkRG9jdW1lbnRzVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IHt9LFxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHNlbGVjdE5ld0RvY3VtZW50cyhlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZWxlY3ROZXdEb2N1bWVudHMnKTtcclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzYXZlQW5kQ2xvc2UoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3NhdmUtYW5kLWNsb3NlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzYXZlQW5kQ29udGludWUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3NhdmUtYW5kLWNvbnRpbnVlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmaWx0ZXJMaXN0KGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZpbHRlckxpc3QnLCBmaWx0ZXJzKTtcclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnZmlsdGVyLWxpc3QnLCBmaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAvLyBZb3VyIGNvbXB1dGVkIHByb3BlcnRpZXMgZ28gaGVyZVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgLy8gQ29kZSB0byBydW4gd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWRcclxuICAgIH0sXHJcbn07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0ZWQtZG9jdW1lbnRzLW1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8RG9jdW1lbnRJbmRleCA6b3B0aW9ucz1cImRhdGEub3B0aW9uc1wiIDpkb2N1bWVudHM9XCJkYXRhLmRvY3VtZW50c1wiIDp0cmFucz1cImRhdGEudHJhbnNcIiA6ZGF0YT1cImRhdGFcIlxyXG4gICAgICAgICAgICA6c2VsZWN0ZWQtZG9jdW1lbnQ9XCJudWxsXCIgQHNlbGVjdC1kb2N1bWVudD1cIlwiIDpsaXN0aW5nPVwie31cIiA6bW9kYWw9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxEb2N1bWVudEZpbHRlciByZWY9XCJmaWx0ZXJcIiA6b3B0aW9ucz1cImRhdGEub3B0aW9uc1wiIDpjbGVhcmVkRmlsdGVycz1cIm51bGxcIiA6ZmlsdGVycz1cImZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgQGZpbHRlci1saXN0PVwiZmlsdGVyTGlzdFwiIEBzaG93LWZpbHRlcnM9XCJzaG93RmlsdGVycyA9IHRydWVcIiA6bGlzdGluZz1cInt9XCIgOnRyYW5zPVwiZGF0YS50cmFuc1wiXHJcbiAgICAgICAgICAgICAgICA6bW9kYWw9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvRG9jdW1lbnRGaWx0ZXI+XHJcbiAgICAgICAgPC9Eb2N1bWVudEluZGV4PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCIgc3R5bGU9XCJwYWRkaW5nOiAxMnB4IDIycHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjQwLCAyNDAsIDI0MCk7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC12dWUzLWZvb3Rlci1jYW5jZWxcIiBAY2xpY2s9XCJjYW5jZWxcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweDsgaGVpZ2h0OiAzMHB4OyBwYWRkaW5nOiAwcHggOHB4OyBib3JkZXItcmFkaXVzOiAycHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMTcsIDIxNywgMjE3KTsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246IHJlbGF0aXZlO1wiPjwhLS0tLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDQ0cHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5jYW5jZWw8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXZ1ZTMtZm9vdGVyLW9rXCIgQGNsaWNrPVwic2F2ZUFuZENsb3NlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcHg7IGhlaWdodDogMzBweDsgcGFkZGluZzogMHB4IDhweDsgYm9yZGVyLXJhZGl1czogMnB4OyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY3LCAxNDksIDI1NSk7IGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246IHJlbGF0aXZlO1wiPjwhLS0tLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDQ0cHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj5zYXZlIGFuZCBjbG9zZTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXZ1ZTMtZm9vdGVyLW9rXCIgQGNsaWNrPVwic2F2ZUFuZENvbnRpbnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDMwcHg7IHBhZGRpbmc6IDBweCA4cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHJnYig2NywgMTQ5LCAyNTUpOyBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBjdXJzb3I6IHBvaW50ZXI7IHBvc2l0aW9uOiByZWxhdGl2ZTtcIj48IS0tLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWluLXdpZHRoOiA0NHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+c2F2ZSBhbmQgY29udGludWU8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcblxyXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XHJcblxyXG48c3R5bGU+XHJcbi5kb2N1bWVudC1maWx0ZXJzLXNlY3Rpb24gLnNlYXJjaC1jb250YWluZXIge1xyXG4gICAgbWFyZ2luOiAyMHB4IDBweDtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjQwLCAyNDAsIDI0MCk7XHJcbn1cclxuXHJcbi5kb2N1bWVudC1maWx0ZXJzLXNlY3Rpb24gLmNvbnRlbnQtc2VhcmNoLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1sZy1jb250ZW50LXBhZGRpbmctbGVmdCk7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxufVxyXG5cclxuLmRvY3VtZW50LWZpbHRlcnMtc2VjdGlvbiAuY29udGVudC1zZWFyY2gtbGFiZWwgaW5wdXQge1xyXG4gICAgd2lkdGg6IDMwMHB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwMHB4O1xyXG59XHJcblxyXG4uZG9jdW1lbnQtZmlsdGVycy1zZWN0aW9uIC5jb250ZW50LXNlYXJjaC1sYWJlbCAuY29udGVudC1zZWFyY2gtaWNvbiB7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHNjcmlwdD5cclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuaW1wb3J0IFJlbGF0ZWREb2N1bWVudHNNb2RhbCBmcm9tICcuL1JlbGF0ZWREb2N1bWVudHNNb2RhbC52dWUnO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ3VzZW1vZGFsLXZ1ZTMnO1xyXG5pbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgTW9kYWwsXHJcbiAgICAgICAgUmVsYXRlZERvY3VtZW50c01vZGFsXHJcbiAgICB9LFxyXG4gICAgbmFtZTogJ1JlbGF0ZWREb2N1bWVudHMnLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBkYXRhOiBPYmplY3QsXHJcbiAgICB9LFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpc1JlbGF0ZWREb2N1bWVudHNWaXNpYmxlOiByZWYoZmFsc2UpLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiB7fSxcclxuICAgICAgICAgICAgbW9kYWxEYXRhOiBPYmplY3QsXHJcbiAgICAgICAgICAgIHJlbGF0ZWREb2N1bWVudHM6IHt9LFxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHNlbGVjdE5ld0RvY3VtZW50cyhlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZWxlY3ROZXdEb2N1bWVudHMnKTtcclxuICAgICAgICAgICAgdGhpcy5pc1JlbGF0ZWREb2N1bWVudHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBnZXREb2N1bWVudHMoKSB7XHJcbiAgICAgICAgICAgIGxldCBhcHAgPSB0aGlzO1xyXG4gICAgICAgICAgICBheGlvc1xyXG4gICAgICAgICAgICAgICAgLnBvc3QodGhpcy5kYXRhLmRvY3VtZW50RmlsdGVyTW9kYWwsIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBhcHAuZmlsdGVyc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBhcHAubW9kYWxEYXRhID0gZGF0YTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBtYXBFeHRlbnNpb25Ub0ZpbGVUeXBlKGRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGRvY3VtZW50LmZpbGUgPyBkb2N1bWVudC5maWxlLnNwbGl0KCcuJykucG9wKCkgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikgcmV0dXJuIFwiZmEtc29saWQgZmEtZmlsZS1jaXJjbGUteG1hcmtcIjtcclxuICAgICAgICAgICAgY29uc3QgZmlsZVR5cGVzID0ge1xyXG4gICAgICAgICAgICAgICAgcGRmOiBcImZhLWZpbGUtcGRmIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIGRvYzogXCJmYS1maWxlLXdvcmQgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgZG9jeDogXCJmYS1maWxlLXdvcmQgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgeGxzOiBcImZhLWZpbGUtZXhjZWwgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgeGxzeDogXCJmYS1maWxlLWV4Y2VsIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIHBwdDogXCJmYS1maWxlLXBvd2VycG9pbnQgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgcHB0eDogXCJmYS1maWxlLXBvd2VycG9pbnQgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAganBnOiBcImZhLWZpbGUtaW1hZ2UgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAganBlZzogXCJmYS1maWxlLWltYWdlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIHBuZzogXCJmYS1maWxlLWltYWdlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIGdpZjogXCJmYS1maWxlLWltYWdlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIHR4dDogXCJmYS1maWxlLWFsdCBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICAgICAgICBjc3Y6IFwiZmEtZmlsZS1jc3YgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgemlwOiBcImZhLWZpbGUtYXJjaGl2ZSBmYS1yZWd1bGFyXCIsXHJcbiAgICAgICAgICAgICAgICByYXI6IFwiZmEtZmlsZS1hcmNoaXZlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIHRhcjogXCJmYS1maWxlLWFyY2hpdmUgZmEtcmVndWxhclwiLFxyXG4gICAgICAgICAgICAgICAgZ3o6IFwiZmEtZmlsZS1hcmNoaXZlIGZhLXJlZ3VsYXJcIixcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFwiZmEtZmlsZSBmYS1yZWd1bGFyXCJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbGVUeXBlc1tleHRlbnNpb25dIHx8IGZpbGVUeXBlcy5kZWZhdWx0O1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIG9uRmlsdGVyTGlzdChmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25TYXZlQW5kQ2xvc2UoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWxhdGVkRG9jdW1lbnRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmUoKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvblNhdmVBbmRDb250aW51ZSgpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2F2ZSgpIHtcclxuICAgICAgICAgICAgbGV0IGFwcCA9IHRoaXM7XHJcbiAgICAgICAgICAgIGxldCBzYXZlRGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogYXBwLm1vZGFsRGF0YS5kb2N1bWVudHMsXHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzSWQ6IGFwcC5kYXRhLnByb2Nlc3NJZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coc2F2ZURhdGEpO1xyXG4gICAgICAgICAgICBheGlvc1xyXG4gICAgICAgICAgICAgICAgLnBvc3QodGhpcy5kYXRhLnNhdmVSZWxhdGVkRG9jdW1lbnRzVXJsLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogc2F2ZURhdGFcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLnJlbGF0ZWREb2N1bWVudHMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZW1vdmVEb2N1bWVudChkb2N1bWVudCkge1xyXG4gICAgICAgICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgICAgICAgbGV0IHJlbW92ZURhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudC5pZCxcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NJZDogYXBwLmRhdGEucHJvY2Vzc0lkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBheGlvc1xyXG4gICAgICAgICAgICAgICAgLnBvc3QodGhpcy5kYXRhLnJlbW92ZVJlbGF0ZWREb2N1bWVudHNVcmwsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZW1vdmVEYXRhXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFwcC5yZWxhdGVkRG9jdW1lbnRzW2RvY3VtZW50LmlkXTtcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAvLyBZb3VyIGNvbXB1dGVkIHByb3BlcnRpZXMgZ28gaGVyZVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5nZXREb2N1bWVudHMoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IHsgcHJvY2Vzc0lkOiB0aGlzLmRhdGEucHJvY2Vzc0lkIH07XHJcbiAgICAgICAgbGV0IGFwcCA9IHRoaXM7XHJcbiAgICAgICAgYXhpb3NcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5kYXRhLmdldFJlbGF0ZWREb2N1bWVudHNVcmwsIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBhcHAucmVsYXRlZERvY3VtZW50cyA9IGRhdGE7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkLWRvY3VtZW50cy1jb250YWluZXJcIj5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cInJlbGF0ZWQtZG9jdW1lbnRzIHZ1ZS1mb3JtXCIgbmFtZT1cInRhc2tGb3JtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlY3Rpb24gZmlsZXMgZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMz5SZWxhdGVkIERvY3VtZW50czwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLXNlY3Rpb24gY29sbHBhc2UtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIxZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PCEtLSEgRm9udCBBd2Vzb21lIEZyZWUgNi40LjIgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjMgRm9udGljb25zLCBJbmMuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzMy40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjU2IDMzOC43IDg2LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpbGUtdXBsb2FkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImZpbGVVcGxvYWRcIj5SZWxhdGVkIERvY3VtZW50czo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS13aWRnZXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxldXBsb2FkLWNvbnRhaW5lclwiIEBjbGljaz1cInNlbGVjdE5ld0RvY3VtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbmFtZSBpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNlbGVjdC1kb2N1bWVudC1sYWJlbFwiIGZvcj1cImZpbGVVcGxvYWRcIj5zZWxlY3QgbmV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1pbmZvIGlucHV0LWNvbnRhaW5lclwiPjwhLS12LWlmLS0+PCEtLXYtaWYtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJ0blwiIGZvcj1cIk5vcm1hdGl2ZVJlZmVyZW5jZV9maWxlc18wX2ZpbGVfZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZm9sZGVyLW9wZW4tb1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZVwiIHYtZm9yPVwiIGRvY3VtZW50ICBpbiAgcmVsYXRlZERvY3VtZW50cyBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZFwiIEBjbGljaz1cIlwiIDpkaXNhYmxlZD1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZmlsZS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSA6Y2xhc3M9XCJgJHttYXBFeHRlbnNpb25Ub0ZpbGVUeXBlKGRvY3VtZW50KX1gXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2N1bWVudC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2LWlmPVwiZmFsc2VcIiBAY2xpY2s9XCJkb3dubG9hZERvY3VtZW50KGRvY3VtZW50KVwiIGNsYXNzPVwiZG93bmxvYWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjQuMiBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZSAoQ29tbWVyY2lhbCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMyBGb250aWNvbnMsIEluYy4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI3NC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMjc0LjdWMzJ6TTY0IDM1MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjQxNmMwLTM1LjMtMjguNy02NC02NC02NEgzNDYuNWwtNDUuMyA0NS4zYy0yNSAyNS02NS41IDI1LTkwLjUgMEwxNjUuNSAzNTJINjR6bTM2OCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgQGNsaWNrPVwicmVtb3ZlRG9jdW1lbnQoZG9jdW1lbnQpXCIgY2xhc3M9XCJkZWxldGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjQuMiBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZSAoQ29tbWVyY2lhbCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMyBGb250aWNvbnMsIEluYy4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cImZpbGUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxNb2RhbCBjbGFzcz1cInJlbGF0ZWQtZG9jdW1lbnQtbW9kYWxcIiB2LW1vZGVsOnZpc2libGU9XCJpc1JlbGF0ZWREb2N1bWVudHNWaXNpYmxlXCIgOndpZHRoPVwiJydcIiA6aGVpZ2h0PVwiJydcIlxyXG4gICAgICAgICAgICA6b2stYnV0dG9uPVwie31cIiA6Y2FuY2VsLWJ1dHRvbj1cInt9XCIgOnRpdGxlPVwiJydcIj5cclxuICAgICAgICAgICAgPFJlbGF0ZWREb2N1bWVudHNNb2RhbCA6ZGF0YT1cIm1vZGFsRGF0YVwiIEBmaWx0ZXItbGlzdD1cIm9uRmlsdGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICBAY2xvc2U9XCJpc1JlbGF0ZWREb2N1bWVudHNWaXNpYmxlID0gZmFsc2VcIiBAc2F2ZS1hbmQtY2xvc2U9XCJvblNhdmVBbmRDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICBAc2F2ZS1hbmQtY29udGludWU9XCJvblNhdmVBbmRDb250aW51ZVwiPjwvUmVsYXRlZERvY3VtZW50c01vZGFsPlxyXG4gICAgICAgIDwvTW9kYWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGU+XHJcbi5yZWxhdGVkLWRvY3VtZW50LW1vZGFsIC5tb2RhbC12dWUzLWhlYWRlciB7XHJcbiAgICBoZWlnaHQ6IDQ4cHg7XHJcbn1cclxuXHJcbi5yZWxhdGVkLWRvY3VtZW50LW1vZGFsIC5tb2RhbC12dWUzLWJvZHkge1xyXG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5yZWxhdGVkLWRvY3VtZW50LW1vZGFsIC5tb2RhbC12dWUzLWZvb3RlciB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuPC9zdHlsZT5cclxuPHN0eWxlIHNjb3BlZD5cclxuLnJlbGF0ZWQtZG9jdW1lbnRzIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDcwcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbn1cclxuXHJcbi5zZWxlY3QtZG9jdW1lbnQtbGFiZWwge1xyXG4gICAgcGFkZGluZzogMHB4O1xyXG59XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cbmltcG9ydCBEb2N1bWVudE5ldyBmcm9tICcuL0RvY3VtZW50L0RvY3VtZW50TmV3LnZ1ZSc7XG5pbXBvcnQgUmVsYXRlZERvY3VtZW50cyBmcm9tICcuL0RvY3VtZW50L1JlbGF0ZWREb2N1bWVudHMudnVlJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgZGF0YTogT2JqZWN0XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBEb2N1bWVudE5ldyxcbiAgICBSZWxhdGVkRG9jdW1lbnRzXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvdW50OiAwLFxuICAgICAgcmVsYXRlZERvY3VtZW50c0NydWRzUmVxdWlyZWQ6IFtcIlByb2Nlc3NcIl0sXG4gICAgfVxuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbm9NYXJnaW5CdG4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGVkRG9jdW1lbnRzQ3J1ZHNSZXF1aXJlZCA/IFwibm9NYXJnaW5CdG5cIiA6IFwiXCI7XG4gICAgfVxuICB9LFxuXG4gIG1vdW50ZWQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5kYXRhKTtcbiAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuY2xlYXItYnV0dG9uYCkpO1xuICB9XG4gIC8vPHBlcnNvbkFjbHMgdi1pZj1cIm5hbWUgPT0gJ1BlcnNvbidcIiA6cm9sZS1hY2xzPVwiZGF0YS5yb2xlQWNsc1wiIDphY2wtb3B0aW9ucz1cImRhdGEuYWNsc09wdGlvbnNcIiA6ZGF0YT1cImRhdGFcIi8+XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cImBjcnVkLW5ldyAke25vTWFyZ2luQnRufWBcIj5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPERvY3VtZW50TmV3IDpuYW1lPVwibmFtZVwiIHYtaWY9XCJuYW1lID09ICdEb2N1bWVudCdcIj4gPC9Eb2N1bWVudE5ldz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4ubm9NYXJnaW5CdG4gLmN1c3RvbS1mb3JtLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbn1cbjwvc3R5bGU+IiwiPHNjcmlwdD5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIHByb3BzOiB7XHJcbiAgICBkYXRhOiBPYmplY3QsXHJcbiAgICBmaWVsZDogT2JqZWN0LFxyXG4gICAgZWxlbWVudDogT2JqZWN0LFxyXG4gICAgY2hpbGRyZW46IEJvb2xlYW5cclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgY3JlYXRlZCgpIHtcclxuXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBkeW5hbWljVmFsdWVUb09wdGlvbnNDb252ZXJzaW9uKHZhbHVlKSB7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge307XHJcbiAgICAgIGZvciAobGV0IHZhbHVlSWQgaW4gdmFsdWUpIHtcclxuICAgICAgICBsZXQgdmFsdWVJdGVtID0gdmFsdWVbdmFsdWVJZF07XHJcbiAgICAgICAgb3B0aW9uc1snaWQnICsgdmFsdWVJZF0gPSB7IGxhYmVsOiB2YWx1ZUl0ZW0sIHZhbHVlOiAnaWQnICsgdmFsdWVJZCB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfSxcclxuXHJcbiAgICBmb3JtYXQodmFsdWUpIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLm9wdGlvbnMgJiYgdGhpcy5maWVsZC5vcHRpb25zLmZvcm1hdCkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB0aGlzLmZpZWxkLm9wdGlvbnMuZm9ybWF0KTtcclxuICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBpbWFnZVNyYyh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zLmZpbGVOYW1lVHlwZSAmJiB0aGlzLmRhdGEudXBsb2Fkc1t2YWx1ZV0gJiYgIXRoaXMuZGF0YS51cGxvYWRzW3ZhbHVlXS51cGxvYWRJZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEudXBsb2Fkc1t2YWx1ZV0ubmFtZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhLnVwbG9hZHNbdmFsdWVdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS51cGxvYWRzW3ZhbHVlXS51cmw7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjaG9pY2VDdXN0b21Dc3MoY2hvaWNlKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLm9wdGlvbnMgJiYgdGhpcy5maWVsZC5vcHRpb25zLmNob2ljZXNIYXNDdXN0b21Dc3MgJiYgY2hvaWNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNob2ljZS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY2hvaWNlO1xyXG4gICAgfSxcclxuICAgIG11bHRpU2VsZWN0TGFiZWwodmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuZmllbGQuY2hvaWNlcykge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZSA9IHRoaXMuZmllbGQuY2hvaWNlcy5maW5kKGMgPT4gYy52YWx1ZSA9PT0gdmFsdWUudmFsdWUgJiYgYy5ncm91cCA9PSB2YWx1ZS5ncm91cCk7XHJcbiAgICAgICAgcmV0dXJuIGNob2ljZSA/IGNob2ljZS5sYWJlbCA6IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBjZWxsVHlwZSgpIHtcclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLmZpZWxkLnR5cGU7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnR5cGUgPT0gXCJkeW5hbWljVHlwZVwiICYmIHRoaXMuZmllbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuc291cmNlVHlwZSA9PSBcImZpZWxkXCIpIHtcclxuICAgICAgICAgIGxldCBzb3VyY2VGaWVsZCA9IHRoaXMuZGF0YS5maWVsZHNbdGhpcy5maWVsZC5vcHRpb25zLnNvdXJjZUZpZWxkXTtcclxuICAgICAgICAgIGlmIChzb3VyY2VGaWVsZCkge1xyXG4gICAgICAgICAgICB0eXBlID0gdGhpcy5lbGVtZW50LmZpZWxkc1tzb3VyY2VGaWVsZC5uYW1lXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQudHlwZSA9PSBcImN1c3RvbVwiICYmIHRoaXMuZmllbGQub3B0aW9ucyAmJiB0aGlzLmZpZWxkLm9wdGlvbnMuY3VzdG9tVHlwZSkge1xyXG4gICAgICAgIHR5cGUgPSB0aGlzLmZpZWxkLm9wdGlvbnMuY3VzdG9tVHlwZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZSA9PSAndGV4dCdcclxuICAgICAgICB8fCB0eXBlID09ICd0ZXh0YXJlYSdcclxuICAgICAgICB8fCB0eXBlID09ICdwcmltYXJ5S2V5J1xyXG4gICAgICAgIHx8IHR5cGUgPT0gJ251bWJlcidcclxuICAgICAgICB8fCB0eXBlID09ICdpbnRlZ2VyJykge1xyXG4gICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZSA9PSAnbGluaycpIHtcclxuICAgICAgICByZXR1cm4gJ2xpbmsnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gJ2Nob2ljZSdcclxuICAgICAgICB8fCB0eXBlID09ICdzZWxlY3QnXHJcbiAgICAgICAgfHwgdHlwZSA9PSAnZW50aXR5J1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Nob2ljZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZSA9PSAnbGlzdCcgfHwgdHlwZSA9PSAnbXVsdGknIHx8IHR5cGUgPT0gJ2VudGl0eU11bHRpJykge1xyXG4gICAgICAgIHJldHVybiAnbGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0eXBlID09ICdodG1sJykge1xyXG4gICAgICAgIHJldHVybiAnaHRtbCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZSA9PSAndXBsb2FkJyAmJiB0aGlzLmZpZWxkLm9wdGlvbnMgJiYgdGhpcy5maWVsZC5vcHRpb25zLmltYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuICdpbWFnZSc7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY2hvaWNlQ3VzdG9tQ3NzS2V5KCkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zICYmIHRoaXMuZmllbGQub3B0aW9ucy5jaG9pY2VzSGFzQ3VzdG9tQ3NzKSB7XHJcbiAgICAgICAgcmV0dXJuICcgJyArIHRoaXMuZmllbGQub3B0aW9ucy5jaG9pY2VzQ3VzdG9tQ3NzS2V5O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0sXHJcbiAgICBmaWVsZFZhbHVlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdO1xyXG4gICAgfSxcclxuXHJcbiAgICBib29sVmFsdWUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkVmFsdWUgPT09IHRydWUgfHwgdGhpcy5maWVsZFZhbHVlID09PSAndHJ1ZScgfHwgdGhpcy5maWVsZFZhbHVlID09PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZFZhbHVlID09PSBmYWxzZSB8fCB0aGlzLmZpZWxkVmFsdWUgPT09ICdmYWxzZScgfHwgdGhpcy5maWVsZFZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcblxyXG5cclxuICAgIGRhdGVGaWVsZFZhbHVlKCkge1xyXG4gICAgICBpZiAoIXRoaXMuZmllbGRWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5maWVsZFZhbHVlLmRhdGUgPyB0aGlzLmZpZWxkVmFsdWUuZGF0ZSA6IHRoaXMuZmllbGRWYWx1ZTtcclxuICAgICAgY29uc3QgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICBpZiAoIWRhdGVPYmogfHwgaXNOYU4oZGF0ZU9iai5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBkYXRlT2JqLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJzItZGlnaXQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XHJcbiAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRlLnJlcGxhY2UoL1xcLy9nLCAnLicpO1xyXG4gICAgfSxcclxuXHJcbiAgICBmaWVsZENob2ljZXMoKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnR5cGUgPT0gJ2R5bmFtaWNUeXBlJyAmJiB0aGlzLmZpZWxkLnNvdXJjZVR5cGUgPT0gJ2ZpZWxkJykge1xyXG4gICAgICAgIGxldCBvcHRpb25zRmllbGQgPSB0aGlzLmRhdGEuZmllbGRzW3RoaXMuZmllbGQub3B0aW9ucy5zb3VyY2VGaWVsZE9wdGlvbnNdO1xyXG4gICAgICAgIGlmIChvcHRpb25zRmllbGQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNWYWx1ZVRvT3B0aW9uc0NvbnZlcnNpb24odGhpcy5lbGVtZW50LmZpZWxkc1tvcHRpb25zRmllbGQubmFtZV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkLmNob2ljZXM7XHJcbiAgICB9LFxyXG5cclxuICAgIGNoaWxkcmVuQ2xhc3MoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgbGV0IG5leHRlZExldmVsID0gdGhpcy5lbGVtZW50Lm9wdGlvbnMubmVzdGVkTGV2ZWwgPz8gMDtcclxuICAgICAgICByZXR1cm4gJ2NoaWxkcmVuIGxldmVsJyArIG5leHRlZExldmVsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICA8ZGl2IDpjbGFzcz1cIidjZWxsICcgKyBjaGlsZHJlbkNsYXNzXCI+XHJcbiAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50IHRleHRcIiB2LWlmPVwiY2VsbFR5cGUgPT0gJ3RleHQnXCI+XHJcbiAgICAgIDxzcGFuPnt7IGZvcm1hdChmaWVsZFZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiA6Y2xhc3M9XCInY2VsbC1jb250ZW50IGNob2ljZScgKyBjaG9pY2VDdXN0b21Dc3NLZXlcIiB2LWVsc2UtaWY9XCJjZWxsVHlwZSA9PSAnY2hvaWNlJ1wiPlxyXG4gICAgICA8c3BhbiB2LWlmPVwiZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLmNvdW50cnlcIlxyXG4gICAgICAgIDpjbGFzcz1cImBmbGFnLWljb24gZmxhZy1pY29uLSR7ZmllbGRDaG9pY2VzW2ZpZWxkVmFsdWVdID8gZmllbGRDaG9pY2VzW2ZpZWxkVmFsdWVdLnZhbHVlLnRvTG93ZXJDYXNlKCkgOiAnJ31gXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiB2LWlmPVwiZmllbGQubXVsdGlTZWxlY3RcIiBjbGFzcz1cIm11bHRpLXNlbGVjdC1pbmRpY2F0b3JcIj5cclxuICAgICAgICA8c3BhbiB2LWZvcj1cIih2YWx1ZSwgaW5kZXgpIGluIGZpZWxkVmFsdWVcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgIHt7IG11bHRpU2VsZWN0TGFiZWwodmFsdWUpIH19PHNwYW4gdi1pZj1cImluZGV4IDwgZmllbGRWYWx1ZS5sZW5ndGggLSAxXCI+LCA8L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIHYtZWxzZSA6Y2xhc3M9XCJjaG9pY2VDdXN0b21Dc3MoZmllbGRDaG9pY2VzW2ZpZWxkVmFsdWVdKVwiPnt7IGZpZWxkQ2hvaWNlc1tmaWVsZFZhbHVlXSA/XHJcbiAgICAgICAgZmllbGRDaG9pY2VzW2ZpZWxkVmFsdWVdLmxhYmVsIDogXCJcIiB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNlbGwtY29udGVudCBsaXN0XCIgdi1lbHNlLWlmPVwiY2VsbFR5cGUgPT0gJ2xpc3QnXCI+XHJcbiAgICAgIDxzcGFuPnt7IGZpZWxkVmFsdWUgPyBmaWVsZFZhbHVlLmxlbmd0aCArICcgb3B0aW9ucycgOiBcIlwiIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50IGJvb2xlYW5cIiB2LWVsc2UtaWY9XCJjZWxsVHlwZSA9PSAnYm9vbGVhbidcIj5cclxuICAgICAgPGlucHV0IG5hbWU9XCJhY3RpdmVcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgYWN0aXZlLWluZGV4XCIgaWQ9XCJhY3RpdmVcIiA6Y2hlY2tlZD1cImJvb2xWYWx1ZVwiXHJcbiAgICAgICAgZGlzYWJsZWQgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNlbGwtY29udGVudCBkYXRlXCIgdi1lbHNlLWlmPVwiY2VsbFR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgIDxzcGFuPnt7IGRhdGVGaWVsZFZhbHVlIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50IGltYWdlXCIgdi1lbHNlLWlmPVwiY2VsbFR5cGUgPT0gJ2ltYWdlJyAmJiBmaWVsZFZhbHVlXCI+XHJcbiAgICAgIDxpbWcgOnNyYz1cImltYWdlU3JjKGZpZWxkVmFsdWUpXCIgYWx0PVwiaW1hZ2VcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50IGxpbmtcIiB2LWVsc2UtaWY9XCJjZWxsVHlwZSA9PSAnbGluaycgJiYgZmllbGRWYWx1ZVwiPlxyXG4gICAgICA8YSA6aHJlZj1cImZpZWxkVmFsdWVcIiB0YXJnZXQ9XCJfc2VsZlwiPjxpIGNsYXNzPVwiZmEgZmEtbGlua1wiPjwvaT48L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuLmZsYWctaWNvbiB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbn1cclxuXHJcbi5pbWFnZSBpbWcge1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG59XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cclxuaW1wb3J0IHsgdG9IYW5kbGVycyB9IGZyb20gJ3Z1ZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBwcm9wczogWydvcHRpb25zJywgJ2xhYmVsJywgJ3Z1ZURpc2FibGVkJywgJ2luaXRpYWxWYWx1ZScsICdjb25maWcnLCAnaXNSZXF1aXJlZCcsICdwbGFjZWhvbGRlciddLFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkb2N1bWVudFR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGV4cGFuZGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgY3VycmVudE9wdGlvbnM6IHt9LFxyXG4gICAgICAgICAgICBpbnB1dEFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNpbmdsZU9wdGlvbjogbnVsbCxcclxuICAgICAgICAgICAgaW5wdXRWYWx1ZTogXCJcIixcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwID0gdGhpcztcclxuICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmN1cnJlbnRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgb3B0aW9uLmluZGV4ID0ga2V5O1xyXG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGlmIChhcHAuZXhwYW5kZWQgJiYgIWFwcC4kZWwuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHVwZGF0ZVZhbHVlKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbFZhbHVlIHx8IE9iamVjdC5rZXlzKHRoaXMuaW5pdGlhbFZhbHVlKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmN1cnJlbnRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmdyb3VwcyAmJiB0aGlzLmluaXRpYWxWYWx1ZS5ncm91cCA9PSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV0uZ3JvdXAgJiYgdGhpcy5pbml0aWFsVmFsdWUudmFsdWUgPT0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmluaXRpYWxWYWx1ZS5ncm91cCA9PSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV0uZ3JvdXAgJiYgdGhpcy5pbml0aWFsVmFsdWUuaWQgPT0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcgJiYgIXRoaXMuY29uZmlnLmdyb3VwICYmIHRoaXMuaW5pdGlhbFZhbHVlID09IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZU9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy5pbml0aWFsVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoWy4uLnRoaXMuaW5pdGlhbFZhbHVlXSkgPT0gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LnZhbHVlcyh0aGlzLnNlbGVjdGVkVmFsdWVzKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInJldHVyblwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxWYWx1ZSB8fCBPYmplY3Qua2V5cyh0aGlzLmluaXRpYWxWYWx1ZSkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAmJiB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5ncm91cHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkS2V5IGluIHRoaXMuaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuaW5pdGlhbFZhbHVlW3NlbGVjdGVkS2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5ncm91cCA9PSBvcHRpb24uZ3JvdXAgJiYgaW5pdGlhbFZhbHVlLnZhbHVlID09IG9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaW5pdGlhbFZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy5pbml0aWFsVmFsdWUpICYmIHRoaXMuaW5pdGlhbFZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdE9wdGlvbihvcHRpb24sIGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNpbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0hlcmVWYWx1ZScsIG9wdGlvbik7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmNsZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24odGhpcy5zaW5nbGVPcHRpb24sIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5ncm91cHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy5zaW5nbGVHcm91cE9wdGlvbiwgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuc2luZ2xlT3B0aW9uLnZhbHVlLCBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1tvcHRpb24uaW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmF2YWxpYWJsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENoYW5nZSh0aGlzLnNlbGVjdGVkVmFsdWVzLCBlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBlbWl0Q2hhbmdlKHZhbHVlLCBldmVudCkge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuY29uZmlnLnJldHVybkRhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlVmFsdWUnLCB2YWx1ZSwgZXZlbnQsIGRhdGEpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHJlbW92ZU9wdGlvbihvcHRpb24sIGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNpbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVPcHRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKG51bGwsIGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1tvcHRpb24uaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuc2VsZWN0ZWRWYWx1ZXMsIGUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZU9wdGlvbnMoKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMub3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1trZXldID0gdGhpcy5tb2RlbFZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvbklucHV0Q2hhbmdlKGUpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gZS50YXJnZXQudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZXhwYW5kKCkge1xyXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdvbkNsaWNrJyk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy52dWVEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ3JvdXBPcHRpb25zKGdyb3VwS2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmF2YWxpYWJsZU9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuYXZhbGlhYmxlT3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlT3B0aW9uICYmIHRoaXMuc2luZ2xlT3B0aW9uLnZhbHVlID09IG9wdGlvbi52YWx1ZSAmJiBvcHRpb24uZ3JvdXAgPT0gdGhpcy5zaW5nbGVPcHRpb24uZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uZ3JvdXAgPT0gZ3JvdXBLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cE9wdGlvbnNba2V5XSA9IG9wdGlvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBPcHRpb25zO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlKCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgYWN0aXZlQ2xhc3MoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW5wdXQtYWN0aXZlXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2luZ2xlR3JvdXBPcHRpb24oKSB7XHJcbiAgICAgICAgICAgIHZhciBzaW5nbGVHcm91cE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLnNpbmdsZU9wdGlvbi5ncm91cCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNpbmdsZU9wdGlvbi52YWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVHcm91cE9wdGlvbjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdmFsaWFibGVPcHRpb25zKCkge1xyXG4gICAgICAgICAgICBjb25zdCBhdmFsaWFibGVPcHRpb25zID0gW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5zaW5nbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkT3B0aW9ucztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcktleSBpbiB0aGlzLmZpbHRlcmVkT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbZmlsdGVyS2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRPcHRpb25zW2ZpbHRlck9wdGlvbi5pbmRleF0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF2YWxpYWJsZU9wdGlvbnMucHVzaChmaWx0ZXJPcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhdmFsaWFibGVPcHRpb25zO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucygpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0ge307XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY3VycmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5ncm91cHMgJiYgdGhpcy5jdXJyZW50T3B0aW9uc1tvcHRpb24uaW5kZXhdLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zW2tleV0gPSBvcHRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uc1trZXldID0gb3B0aW9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY3VycmVudE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBvcHRpb24udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImdyb3VwXCI6IG9wdGlvbi5ncm91cCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZGlzYWJsZWRDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudnVlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRpc2FibGVkXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZXhwYW5kZUNsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiIGV4cGFuZGVkXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgaW5wdXRBY3RpdmVDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1cnJlbnRTaW5nbGVWYWx1ZSgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlT3B0aW9uICYmIHRoaXMuc2luZ2xlT3B0aW9uLmxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaW5nbGVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgIT0gJycgPyB0aGlzLnBsYWNlaG9sZGVyIDogXCJTZWxlY3QgYW4gb3B0aW9uXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY3VycmVudFNpbmdsZUlkKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaW5nbGVPcHRpb24gJiYgdGhpcy5zaW5nbGVPcHRpb24udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpbmdsZU9wdGlvbi52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBpc1NpbmdsZUlucHV0VmlzaWJsZSgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNpbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkT3B0aW9ucyB8fCBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkT3B0aW9ucykubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzaW5nbGVWYWx1ZUNsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuc2luZ2xlICYmIHRoaXMuc2luZ2xlT3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzaW5nbGUtdmFsdWVcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkaXNwbGF5TW9kZSgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmdyb3Vwcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZ3JvdXBzXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwibm9ybWFsXCI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVxdWlyZWRDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZXF1aXJlZFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGlzUmVxdWlyZWRDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicmVxdWlyZWRcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBmaWx0ZXJlZE9wdGlvbnMoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VmFsdWUgPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5jdXJyZW50T3B0aW9ucyB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFycmF5ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmN1cnJlbnRPcHRpb25zKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEFycmF5LmZpbHRlcihvcHRpb24gPT5cclxuICAgICAgICAgICAgICAgIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgfSxcclxuXHJcbiAgICB3YXRjaDoge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZShjdXJyZW50VmFsdWUsIG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdIZXJlJyArIGN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvcHRpb25zKGN1cnJlbnRWYWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSBvbGRWYWx1ZSAmJiBvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmluYWxPcHRpb25zID0ge307XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbE9wdGlvbnNba2V5XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjdXJyZW50VmFsdWVba2V5XS5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogb3B0aW9uLmdyb3VwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBvcHRpb24uc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsT3B0aW9uc1trZXldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGN1cnJlbnRWYWx1ZVtrZXldLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZVtrZXldLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGN1cnJlbnRWYWx1ZVtrZXldLmdyb3VwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IGZpbmFsT3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdIZXJlJywgdGhpcy5jdXJyZW50T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgdnVlLW11bHRpc2VsZWN0IGZpZWxkLXNlbGVjdCBmb3JtLWdyb3VwIGN1c3RvbS1mb3JtLWdyb3VwICR7ZGlzYWJsZWRDbGFzc30gJHtpc1JlcXVpcmVkQ2xhc3N9YFwiPlxyXG4gICAgICAgIDxsYWJlbCA6Y2xhc3M9XCInZm9ybS1jb250cm9sLWxhYmVsICcgKyByZXF1aXJlZENsYXNzXCI+XHJcbiAgICAgICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS13aWRnZXRcIj5cclxuICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCIndHMtd3JhcHBlciBmb3JtLW11bHRpLXNlbGVjdCBtdWx0aSBwbHVnaW4tZHJvcGRvd25faW5wdXQgcGx1Z2luLWNsZWFyX2J1dHRvbiBwbHVnaW4tcmVtb3ZlX2J1dHRvbiAnICsgYWN0aXZlQ2xhc3MgKyBleHBhbmRlQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgQG1vdXNlb3Zlcj1cInRoaXMuYWN0aXZlID0gdHJ1ZVwiIEBtb3VzZWxlYXZlPVwidGhpcy5hY3RpdmUgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRzLWNvbnRyb2xcIiByb2xlPVwiY29tYm9ib3hcIiBAY2xpY2s9XCJleHBhbmQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIHYtaWY9XCJpc1NpbmdsZUlucHV0VmlzaWJsZVwiIDpjbGFzcz1cIidwbGFjZWhvbGRlciAnICsgc2luZ2xlVmFsdWVDbGFzc1wiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImNvbmZpZy5jb3VudHJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImBmbGFnLWljb24gZmxhZy1pY29uLSR7Y3VycmVudFNpbmdsZUlkLnRvTG93ZXJDYXNlKCl9YFwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cInRleHRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaW5nbGVWYWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xscGFzZS1pY29uXCIgdi1pZj1cIiF2dWVEaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1zLUljb24gbXMtSWNvbi0tQ2hldnJvbkRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiBkYXRhLXRzLWl0ZW09XCJcIiB2LWZvcj1cIm9wdGlvbiBpbiBzZWxlY3RlZE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiB2LWlmPVwiIXZ1ZURpc2FibGVkXCIgQGNsaWNrPVwicmVtb3ZlT3B0aW9uKG9wdGlvbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ1ZS1yZW1vdmVcIiB0YWJpbmRleD1cIi0xXCIgdGl0bGU9XCJcIj4gPGkgY2xhc3M9XCJpY29uIG1zLUljb24gbXMtSWNvbi0tQ2FuY2VsXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhdnVlRGlzYWJsZWQgJiYgZmFsc2VcIiBjbGFzcz1cImNsZWFyLWJ1dHRvblwiIHRpdGxlPVwiXCI+4qivPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInRoaXMuZXhwYW5kZWQgfHwgdGhpcy5pbnB1dEFjdGl2ZVwiIGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJ0aGlzLmV4cGFuZGVkID0gdGhpcy5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ3NlYXJjaC1jb250YWluZXIgJyArIGlucHV0QWN0aXZlQ2xhc3NcIiB2LWlmPVwiIXZ1ZURpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1zLUljb24gbXMtSWNvbi0tU2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcmVmPVwiaW5wdXRcIiBjbGFzcz1cInNlYXJjaC1pbnB1dCBpdGVtcy1wbGFjZWhvbGRlclwiIEBmb2N1cz1cInRoaXMuaW5wdXRBY3RpdmUgPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYmx1cj1cInRoaXMuaW5wdXRBY3RpdmUgPSBmYWxzZVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlucHV0PVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudC1pbnRlcm5hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBkYXRhLXNlbGVjdGFibGU9XCJcIiA6Y2xhc3M9XCInb3B0aW9uIHJlbW92ZS1vcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3RPcHRpb24oeyAnY2xlYXInOiB0cnVlIH0sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5zaW5nbGUgJiYgdGhpcy5zaW5nbGVPcHRpb24gJiYgIXRoaXMuY29uZmlnLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaXNwbGF5TW9kZSA9PSAnbm9ybWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1zZWxlY3RhYmxlPVwiXCIgOmNsYXNzPVwiJ29wdGlvbidcIiBAY2xpY2s9XCJzZWxlY3RPcHRpb24ob3B0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gYXZhbGlhYmxlT3B0aW9uc1wiPiA8c3BhbiB2LWlmPVwiY29uZmlnLmNvdW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiYGZsYWctaWNvbiBmbGFnLWljb24tJHtvcHRpb24udmFsdWUudG9Mb3dlckNhc2UoKX1gXCI+PC9zcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiT2JqZWN0LmtleXMoYXZhbGlhYmxlT3B0aW9ucykubGVuZ3RoID09IDBcIiBjbGFzcz1cIm9wdGlvbiBuby1vcHRpb25cIj5Ob1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWxpYWJsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaXNwbGF5TW9kZSA9PSAnZ3JvdXBzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJncm91cCBpbiB0aGlzLmNvbmZpZy5ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLXRpdGxlXCIgdi1pZj1cIk9iamVjdC5rZXlzKGdyb3VwT3B0aW9ucyhncm91cC52YWx1ZSkpLmxlbmd0aCA+IDBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAubGFiZWwgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBkYXRhLXNlbGVjdGFibGU9XCJcIiA6Y2xhc3M9XCInb3B0aW9uIGdyb3VwLW9wdGlvbiAnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNlbGVjdE9wdGlvbihvcHRpb24sICRldmVudCwgZ3JvdXAudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIGdyb3VwT3B0aW9ucyhncm91cC52YWx1ZSlcIj4ge3sgb3B0aW9uLmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tc3BhY2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5wbGFjZWhvbGRlciAuY29sbHBhc2UtaWNvbiB7XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxufVxyXG5cclxuLnBsYWNlaG9sZGVyIHN2ZyB7XHJcbiAgICBmaWxsOiBncmF5O1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLnBsYWNlaG9sZGVyIC50ZXh0IHtcclxuICAgIG9wYWNpdHk6IC41O1xyXG59XHJcblxyXG4ucGxhY2Vob2xkZXIuc2luZ2xlLXZhbHVlIC50ZXh0IHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbn1cclxuXHJcbi5zZWFyY2gtaW5wdXQ6Zm9jdXMge1xyXG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi50cy1jb250cm9sIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi50ZW1wLWZvcm0udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAudnVlLW11bHRpc2VsZWN0IC5mb3JtLXdpZGdldCAuZm9ybS1tdWx0aS1zZWxlY3QgLml0ZW0ge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTVweDtcclxuICAgIHBhZGRpbmc6IDBweCA4cHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xyXG59XHJcblxyXG4udnVlLXJlbW92ZSB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xyXG4gICAgY29sb3I6IHJnYig5NiwgOTQsIDkyKTtcclxuICAgIGhlaWdodDogMjRweDtcclxuICAgIHdpZHRoOiAyNHB4O1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbn1cclxuXHJcbi52dWUtcmVtb3ZlOmhvdmVyIHtcclxuXHJcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjAwLCAyMDAsIDIwMCk7XHJcbn1cclxuXHJcbi5mbGFnLWljb24ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbn1cclxuXHJcbi5ib3R0b20tc3BhY2Uge1xyXG4gICAgaGVpZ2h0OiAzNnB4O1xyXG59XHJcblxyXG4uZ3JvdXAtdGl0bGUge1xyXG4gICAgYmFja2dyb3VuZDogdmFyKC0tZm9ybS10eXBlLWF1dG9jb21wbGV0ZS1vcHRncm91cC1iZyk7XHJcbiAgICBjb2xvcjogdmFyKC0tZm9ybS10eXBlLWF1dG9jb21wbGV0ZS1vcHRncm91cC1jb2xvcik7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG4udnVlLW11bHRpc2VsZWN0LnJlcXVpcmVkIC50cy13cmFwcGVyIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkYzI2MjYgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNpbmdsZS12YWx1ZSB7XHJcbiAgICBtYXJnaW4tdG9wOiAycHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRzLXdyYXBwZXIge1xyXG4gICAgbWluLWhlaWdodDogMzJweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZGlzYWJsZWQgLnRzLWNvbnRyb2wge1xyXG4gICAgb3BhY2l0eTogLjg1O1xyXG4gICAgYm9yZGVyLWNvbG9yOiBsaWdodC1kYXJrKHJnYig4NCwgODQsIDg0KSkgIWltcG9ydGFudDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgdGl0bGU6IFN0cmluZyxcclxuICAgICAgICB2dWVQbGFjZWhvbGRlcjogU3RyaW5nLFxyXG4gICAgICAgIHZhbHVlOiBPYmplY3QsXHJcbiAgICAgICAgdnVlUmVxdWlyZWQ6IEJvb2xlYW4sXHJcbiAgICAgICAgZGF0YUlkOiBTdHJpbmcsXHJcbiAgICAgICAgaW5kZXg6IE51bWJlclxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsZU5hbWU6IFwiXCIsXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQoKSB7XHJcblxyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBvcGVuVXBsb2FkKCkge1xyXG4gICAgICAgICAgICB0aGlzLiRyZWZzLnVwbG9hZC5jbGljaygpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdEZpbGUoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gZS50YXJnZXQuZmlsZXNbMF07XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZVZhbHVlJywgZmlsZSwgdGhpcy5pbmRleCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY2xlYXJVcGxvYWQoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImNsZWFyVXBsb2FkXCIsIGUpO1xyXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdjbGVhclVwbG9hZCcsIG51bGwsIHRoaXMuaW5kZXgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZm9ybWF0Qnl0ZXMoYnl0ZXMsIGRlY2ltYWxzID0gMCkge1xyXG4gICAgICAgICAgICBpZiAoIStieXRlcykgcmV0dXJuICcwIEJ5dGVzJ1xyXG5cclxuICAgICAgICAgICAgY29uc3QgayA9IDEwMjRcclxuICAgICAgICAgICAgY29uc3QgZG0gPSBkZWNpbWFscyA8IDAgPyAwIDogZGVjaW1hbHNcclxuICAgICAgICAgICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ11cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGAke3BhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKX0gJHtzaXplc1tpXX1gXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGZpbGVuYW1lKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUub3JpZ2luYWxOYW1lIHx8IHRoaXMudmFsdWUubmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52dWVQbGFjZWhvbGRlcjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZXF1aXJlZENsYXNzKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52dWVSZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdyZXF1aXJlZCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwbG9hZExpc3RDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcgdXBsb2FkLWxpc3QnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWxlLXVwbG9hZCBgICsgcmVxdWlyZWRDbGFzcyArIHVwbG9hZExpc3RDbGFzc1wiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImZpbGVVcGxvYWRcIiB2LWlmPVwidGl0bGVcIj57eyB0aXRsZSB9fTo8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXdpZGdldFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZXVwbG9hZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJodG1sLWZpbGUtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgQGNoYW5nZT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiIDpkYXRhPVwidmFsdWVcIiByZWY9XCJ1cGxvYWRcIiB0eXBlPVwiZmlsZVwiIDppZD1cImRhdGFJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGVzdC50eHRcIiBjbGFzcz1cImQtbm9uZSBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW5hbWUgaW5wdXQtY29udGFpbmVyXCIgQGNsaWNrPVwib3BlblVwbG9hZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZpbGUtbGFiZWxcIiBmb3I9XCJmaWxlVXBsb2FkXCI+e3sgZmlsZW5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1pbmZvIGlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwidmFsdWUgJiYgZmFsc2VcIj57eyBmb3JtYXRCeXRlcyh2YWx1ZS5zaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHYtaWY9XCJ2YWx1ZVwiIEBjbGljaz1cImNsZWFyVXBsb2FkKClcIiBjbGFzcz1cImJ0biBlYS1maWxldXBsb2FkLWRlbGV0ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiTm9ybWF0aXZlUmVmZXJlbmNlX2ZpbGVzXzBfZmlsZV9kZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYnRuXCIgZm9yPVwiTm9ybWF0aXZlUmVmZXJlbmNlX2ZpbGVzXzBfZmlsZV9maWxlXCIgQGNsaWNrPVwib3BlblVwbG9hZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZvbGRlci1vcGVuLW9cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuLnJlcXVpcmVkIC5maWxldXBsb2FkLWNvbnRhaW5lciAuaW5wdXQtY29udGFpbmVyIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkYzM1NDUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZpbGV1cGxvYWQtY29udGFpbmVyIC5pbnB1dC1jb250YWluZXIge1xyXG4gICAgd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7XHJcbiAgICBmbGV4LWdyb3c6IGluaXRpYWwgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnVwbG9hZC1saXN0IHt9XHJcblxyXG4udXBsb2FkLWxpc3QgLmZpbGUtbGFiZWwge1xyXG4gICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XHJcbiAgICA8ZGl2IHJlZj1cInBkZkNvbnRhaW5lclwiIGNsYXNzPVwicGRmLWNvbnRhaW5lclwiPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHsgZ2V0RG9jdW1lbnQsIEdsb2JhbFdvcmtlck9wdGlvbnMsIFBERldvcmtlciB9IGZyb20gJ3BkZmpzLWRpc3QvYnVpbGQvcGRmJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICd2dWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBmaWxlOiBPYmplY3QsXHJcbiAgICAgICAgZmlsZU5hbWU6IFN0cmluZyxcclxuICAgICAgICBkYXRhOiBPYmplY3QsXHJcblxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzaXplOiBudWxsLFxyXG4gICAgICAgICAgICB0aW1lb3V0OiBudWxsLFxyXG4gICAgICAgICAgICBjYW52YXM6IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIEdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3BkZmpzLWRpc3RANC4wLjM3OS9idWlsZC9wZGYud29ya2VyLm1qc1wiO1xyXG4gICAgICAgIHRoaXMubG9hZFBkZigpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uUmVzaXplKTtcclxuICAgIH0sXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgYXN5bmMgbG9hZFBkZigpIHtcclxuICAgICAgICAgICAgY29uc3QgYXBwID0gdGhpcztcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGUpO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBOb3cgdXNlIFBERi5qcyB3aXRoIHRoZSBvYmplY3QgVVJMXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nVGFzayA9IGdldERvY3VtZW50KG9iamVjdFVSTCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGRmID0gYXdhaXQgbG9hZGluZ1Rhc2sucHJvbWlzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgcGRmLmdldFBhZ2UoMSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzY2FsZSA9IDEgKiBkZXZpY2VQaXhlbFJhdGlvOyAvLyBBZGp1c3Qgc2NhbGUgYmFzZWQgb24gZGV2aWNlIHBpeGVsIHJhdGlvXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh7IHNjYWxlIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2FudmFzUGFyZW50ID0gYXdhaXQgdGhpcy4kcmVmcy5wZGZDb250YWluZXI7XHJcbiAgICAgICAgICAgICAgICBjYW52YXNQYXJlbnQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgICAgICAgICBhcHAuY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgICAgICAgICAgICBjYW52YXNQYXJlbnQuYXBwZW5kQ2hpbGQoYXBwLmNhbnZhcyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBhcHAuY2FudmFzO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZvcm0tc2VjdGlvbjpub3QoLmhpZGRlbiknKTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2FudmFzRGltZW5zaW9ucygpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NvbnRhaW5lcicsIGNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBjb250YWluZXIub2Zmc2V0V2lkdGggfHwgY29udGFpbmVyLmNsaWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb250YWluZXJXaWR0aCcsIGNvbnRhaW5lcldpZHRoKTtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IHBhZ2UuZ2V0Vmlld3BvcnQoeyBzY2FsZTogY29udGFpbmVyV2lkdGggLyB2aWV3cG9ydC53aWR0aCAqIHNjYWxlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWV3cG9ydCcsIHZpZXdwb3J0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gdmlld3BvcnQud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHZpZXdwb3J0LmhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLnN0eWxlLndpZHRoID0gYCR7dmlld3BvcnQud2lkdGggLyBkZXZpY2VQaXhlbFJhdGlvfXB4YDtcclxuICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gYCR7dmlld3BvcnQuaGVpZ2h0IC8gZGV2aWNlUGl4ZWxSYXRpb31weGA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2FudmFzRGltZW5zaW9ucygpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjYW52YXNDb250ZXh0OiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSxcclxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogdmlld3BvcnRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlciA9IGF3YWl0IHBhZ2UucmVuZGVyKHJlbmRlckNvbnRleHQpLnByb21pc2U7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBQREY6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb21JbigpIHtcclxuICAgICAgICAgICAgLy8gSW1wbGVtZW50IHpvb20gaW4gZnVuY3Rpb25hbGl0eVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgem9vbU91dCgpIHtcclxuICAgICAgICAgICAgLy8gSW1wbGVtZW50IHpvb20gb3V0IGZ1bmN0aW9uYWxpdHlcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvblJlc2l6ZSgpIHtcclxuXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZFBkZigpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLiRlbWl0KCdyZXNldCcpO1xyXG4gICAgICAgICAgICB9LCA1MCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBiZWZvcmVEZXN0cm95KCkge1xyXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblJlc2l6ZUV2ZW50KTtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7IC8vIENsZWFudXAgb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICAgICAgICB9LFxyXG5cclxuXHJcbiAgICB9LFxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBmaWxlTmFtZSgpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkUGRmKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi8qIEFkZCBzdHlsZXMgZm9yIHlvdXIgUERGIHZpZXdlciBoZXJlICovXHJcblxyXG4uYWN0aW9uLWJhciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG59XHJcblxyXG4ucGRmLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbn1cclxuXHJcbmNhbnZhcyB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVNdWx0aXNlbGVjdCBmcm9tICcuL2ZpZWxkcy9WdWVNdWx0aVNlbGVjdEZpZWxkJztcclxuaW1wb3J0IFZ1ZVVwbG9hZCBmcm9tICcuL2ZpZWxkcy9WdWVVcGxvYWQnO1xyXG5pbXBvcnQgQ0tFZGl0b3IgZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS12dWUnO1xyXG5pbXBvcnQgeyB3YXRjaCB9IGZyb20gJ3Z1ZSc7XHJcbmltcG9ydCBWdWVQZGYgZnJvbSAnLi9WdWVQZGYyLnZ1ZSc7XHJcbmltcG9ydCB7IFZ1ZURyYWdnYWJsZU5leHQgfSBmcm9tICd2dWUtZHJhZ2dhYmxlLW5leHQnO1xyXG5pbXBvcnQgTXlVcGxvYWRBZGFwdGVyUGx1Z2luIGZyb20gJy4uLy4uL2NrZWRpdG9yL015VXBsb2FkQWRhcHRlclBsdWdpbic7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbmFtZTogJ1Z1ZUZpZWxkJyxcclxuICBjb21wb25lbnRzOiB7XHJcbiAgICBWdWVNdWx0aXNlbGVjdCxcclxuICAgIFZ1ZVVwbG9hZCxcclxuICAgIFZ1ZURyYWdnYWJsZU5leHQsXHJcbiAgICBWdWVQZGYsXHJcbiAgICBNeVVwbG9hZEFkYXB0ZXJQbHVnaW4sXHJcbiAgICBja2VkaXRvcjogQ0tFZGl0b3IuY29tcG9uZW50LFxyXG4gIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIGRhdGE6IE9iamVjdCxcclxuICAgIGZpZWxkOiBPYmplY3QsXHJcbiAgICBlbGVtZW50OiBPYmplY3QsXHJcbiAgICBzdGF0ZTogT2JqZWN0LFxyXG4gICAgY29uZmlnOiBPYmplY3QsXHJcbiAgICBjdXN0b21WYWx1ZTogT2JqZWN0LFxyXG4gICAgY3VzdG9tQ2hvaWNlczogT2JqZWN0LFxyXG4gICAgY3VzdG9tUmV0dXJuVmFsdWU6IE9iamVjdCxcclxuICAgIGN1c3RvbVJlcXVpcmVkOiBCb29sZWFuLFxyXG4gICAgc3ViZmllbGQ6IEJvb2xlYW4sXHJcbiAgICByZWFkb25seTogQm9vbGVhbixcclxuICB9LFxyXG5cclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZEVsZW1lbnQ6IG51bGwsXHJcbiAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICBkeW5hbWljTXVsdGlDb25maWc6IHt9LFxyXG4gICAgICBkeW5hbWljRmllbGROdW1iZXJUeXBlOiBudWxsLFxyXG4gICAgICBwcmV2RHluYW1pY1R5cGU6IG51bGwsXHJcbiAgICAgIHByZXZFbGVtZW50OiBudWxsLFxyXG4gICAgICBkcmFnVmFsdWU6IFtdLFxyXG4gICAgICBja0NvbnRlbnQ6IFwiXCIsXHJcbiAgICAgIGZyZWVDb250ZW50OiBcIlwiLFxyXG4gICAgICBmcmVlQm9vbDogZmFsc2UsXHJcbiAgICAgIGZsYWc6IDAsXHJcbiAgICAgIGZpbGVOYW1lOiBudWxsLFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgY3JlYXRlZCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PSAnZmlsZScpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PSAnaHRtbCcgfHwgKHRoaXMuZmllbGRUeXBlID09ICdsaXN0JyAmJiB0aGlzLmxpc3RUeXBlID09ICdodG1sJykpIHtcclxuICAgICAgdGhpcy5ja0NvbnRlbnQgPSB0aGlzLnZhbHVlID8/ICcnO1xyXG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT0gJ2xpc3QnKSB7XHJcbiAgICAgICAgdGhpcy5ja0NvbnRlbnQgPSB0aGlzLnZhbHVlID8/IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBlZGl0b3IoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmVkaXRvcjtcclxuICAgIH0sXHJcbiAgICBlZGl0b3JDb25maWcoKSB7XHJcbiAgICAgIHZhciBjb25maWcgPSB0aGlzLnN0YXRlLmVkaXRvckNvbmZpZztcclxuICAgICAgY29uZmlnLnRvb2xiYXIucGxhY2Vob2xkZXIgPSB0aGlzLmZpZWxkLnBsYWNlaG9sZGVyO1xyXG4gICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgfSxcclxuICAgIGZpZWxkTXVsdGlTZWxlY3RDb25maWcoKSB7XHJcbiAgICAgIGxldCBjb25maWcgPSB7fTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5maWVsZC5tdWx0aVNlbGVjdCkge1xyXG4gICAgICAgIGNvbmZpZy5zaW5nbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgY29uZmlnLnJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5keW5hbWljTXVsdGlDb25maWcpIHtcclxuICAgICAgICBjb25maWcgPSBPYmplY3QuYXNzaWduKGNvbmZpZywgdGhpcy5keW5hbWljTXVsdGlDb25maWcpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygnZ3JvdXBzJykpIHtcclxuICAgICAgICBjb25maWcuZ3JvdXBzID0gdGhpcy5maWVsZE9wdGlvbnMoJ2dyb3VwcycpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygnY291bnRyeScpKSB7XHJcbiAgICAgICAgY29uZmlnLmNvdW50cnkgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9LFxyXG4gICAgbnVtYmVyVHlwZSgpIHtcclxuICAgICAgaWYgKHRoaXMuZHluYW1pY0ZpZWxkTnVtYmVyVHlwZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNGaWVsZE51bWJlclR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGQubnVtYmVyVHlwZTtcclxuICAgIH0sXHJcblxyXG4gICAgc2VsZWN0ZWRDbGFzcygpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgICByZXR1cm4gXCJzZWxlY3RlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfSxcclxuICAgIGNoZWNrZWRDbGFzcygpIHtcclxuICAgICAgaWYgKHRoaXMuZmllbGRUeXBlID09IFwiYm9vbGVhblwiICYmIHRoaXMudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gXCJjaGVja2VkXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9LFxyXG4gICAgZXhwYW5kZWRDbGFzcygpIHtcclxuICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcclxuICAgICAgICByZXR1cm4gXCJleHBhbmRlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcImNvbGxhcHNlZFwiO1xyXG4gICAgfSxcclxuICAgIHZhbHVlKCkge1xyXG4gICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZHJhZ1ZhbHVlID0gdGhpcy5jdXN0b21WYWx1ZS52YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZS52YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN1YmZpZWxkKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcmFnVmFsdWUgPSB0aGlzLmVsZW1lbnQuZmllbGRzW3RoaXMuZmllbGQubmFtZV07XHJcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuZmllbGRzW3RoaXMuZmllbGQubmFtZV07XHJcbiAgICB9LFxyXG4gICAgaXNWaXNpYmxlKCkge1xyXG4gICAgICBpZiAoIXRoaXMuZmllbGQuY29uZGl0aW9uYWxEaXNwbGF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgY29uZGl0aW9uSWQgaW4gdGhpcy5maWVsZC5jb25kaXRpb25hbERpc3BsYXkpIHtcclxuICAgICAgICAgIGxldCBjb25kaXRpb24gPSB0aGlzLmZpZWxkLmNvbmRpdGlvbmFsRGlzcGxheVtjb25kaXRpb25JZF07XHJcbiAgICAgICAgICBpZiAoY29uZGl0aW9uLmFueSAmJiB0aGlzLmVsZW1lbnQuZmllbGRzW2NvbmRpdGlvbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3IgKGxldCB2YWx1ZUlkIGluIGNvbmRpdGlvbi52YWx1ZXMpIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlID0gY29uZGl0aW9uLnZhbHVlc1t2YWx1ZUlkXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb25kaXRpb25cIiwgY29uZGl0aW9uLCB2YWx1ZSwgdGhpcy5lbGVtZW50LmZpZWxkc1tjb25kaXRpb24uZmllbGRdKTtcclxuICAgICAgICAgICAgbGV0IG51bGxWYWx1ZSA9IHZhbHVlID09PSAnbnVsbCcgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50LmZpZWxkc1tjb25kaXRpb24uZmllbGRdID09IHZhbHVlIHx8IChudWxsVmFsdWUgJiYgIXRoaXMuZWxlbWVudC5maWVsZHNbY29uZGl0aW9uLmZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGZpZWxkVHlwZSgpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnR5cGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHlwZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC50eXBlID09ICdjdXN0b20nICYmIHRoaXMuZmllbGRPcHRpb25zKCdjdXN0b21UeXBlJykpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZE9wdGlvbnMoJ2N1c3RvbVR5cGUnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC50eXBlID09ICdkeW5hbWljVHlwZScpIHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZC5zb3VyY2VUeXBlID09IFwiZmllbGRcIikge1xyXG4gICAgICAgICAgbGV0IHNvdXJjZUZpZWxkID0gdGhpcy5kYXRhLmZpZWxkc1t0aGlzLmZpZWxkLm9wdGlvbnMuc291cmNlRmllbGRdO1xyXG4gICAgICAgICAgaWYgKHNvdXJjZUZpZWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNUeXBlQ29udmVyc2lvbih0aGlzLmVsZW1lbnQuZmllbGRzW3NvdXJjZUZpZWxkLm5hbWVdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1R5cGVDb252ZXJzaW9uKHRoaXMuZmllbGQub3B0aW9ucy5maWVsZFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5maWVsZC50eXBlO1xyXG4gICAgfSxcclxuXHJcbiAgICBsaXN0VHlwZSgpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmxpc3RUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmxpc3RUeXBlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygnbGlzdFR5cGUnKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkT3B0aW9ucygnbGlzdFR5cGUnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5maWVsZC5saXN0VHlwZTtcclxuICAgIH0sXHJcblxyXG4gICAgZmlsZSgpIHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGEuY3VycmVudERvd25sb2Fkcykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuY3VycmVudERvd25sb2Fkc1t0aGlzLmZpZWxkLm5hbWVdO1xyXG4gICAgfSxcclxuXHJcbiAgICBmaWVsZFZhbHVlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdO1xyXG4gICAgfSxcclxuICAgIGZpZWxkQ2hvaWNlcygpIHtcclxuICAgICAgaWYgKHRoaXMuZmllbGQudHlwZSA9PSBcImR5bmFtaWNUeXBlXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZC5zb3VyY2VUeXBlID09IFwiZmllbGRcIikge1xyXG4gICAgICAgICAgbGV0IG9wdGlvbnNGaWVsZCA9IHRoaXMuZGF0YS5maWVsZHNbdGhpcy5maWVsZC5vcHRpb25zLnNvdXJjZUZpZWxkT3B0aW9uc107XHJcbiAgICAgICAgICBpZiAob3B0aW9uc0ZpZWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNWYWx1ZVRvT3B0aW9uc0NvbnZlcnNpb24odGhpcy5lbGVtZW50LmZpZWxkc1tvcHRpb25zRmllbGQubmFtZV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5vcHRpb25zLmZpZWxkT3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hvaWNlcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNob2ljZXM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuY2hvaWNlcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmNob2ljZXM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfSxcclxuXHJcbiAgICBmaWVsZENsYXNzZXMoKSB7XHJcbiAgICAgIGxldCBjbGFzc2VzID0gJyc7XHJcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkRmllbGQpIHtcclxuICAgICAgICBjbGFzc2VzICs9ICdyZWFkb25seSAnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PSAnZ3JvdXAnKSB7XHJcbiAgICAgICAgY2xhc3NlcyArPSAnZmllbGQtZ3JvdXAgJztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgY2xhc3NlcyArPSAnbWFyZ2luLXRvcCAnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnR5cGUgPT0gJ2R5bmFtaWNUeXBlJyAmJiAodGhpcy5maWVsZFR5cGUgPT0gJ2Nob2ljZScgfHwgdGhpcy5maWVsZFR5cGUgPT0gJ2h0bWwnIHx8IHRoaXMuZmllbGRUeXBlID09ICdib29sZWFuJykpIHtcclxuICAgICAgICBjbGFzc2VzICs9ICdjb2wtbGFyZ2UgJztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5jc3MpIHtcclxuICAgICAgICBjbGFzc2VzICs9IHRoaXMuZmllbGQuY3NzO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5jc3MpIHtcclxuICAgICAgICBjbGFzc2VzICs9IHRoaXMuY29uZmlnLmNzcztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY2xhc3NlcztcclxuICAgIH0sXHJcblxyXG4gICAgaXNEcmFnZ2FibGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5kcmFnZ2FibGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuZHJhZ2dhYmxlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygnZHJhZ2dhYmxlJykpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZE9wdGlvbnMoJ2RyYWdnYWJsZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLmRyYWdnYWJsZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcbiAgICBmaWVsZExhYmVsKCkge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubGFiZWw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGQubGFiZWw7XHJcbiAgICB9LFxyXG4gICAgZHJhZ1ZhbHVlQ29tcHV0ZWQoKSB7XHJcbiAgICAgIGlmICh0aGlzLnN1YmZpZWxkICYmICF0aGlzLmlzRHJhZ2dhYmxlKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmRyYWdWYWx1ZTtcclxuICAgIH0sXHJcbiAgICBkaXNhYmxlZEZpZWxkKCkge1xyXG4gICAgICBpZiAodGhpcy5lbGVtZW50Lm5ldykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZGlzYWJsZWQgPSAhdGhpcy5lbGVtZW50LmNydWQudXBkYXRlO1xyXG4gICAgICBkaXNhYmxlZCA9IHRoaXMuZmllbGQucmVhZG9ubHkgPyB0cnVlIDogZGlzYWJsZWRcclxuICAgICAgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkT25VcGRhdGUgPyB0cnVlIDogZGlzYWJsZWQ7XHJcbiAgICAgIGRpc2FibGVkID0gdGhpcy5lbGVtZW50Lm9wdGlvbnMucmVhZG9ubHkgPyB0cnVlIDogZGlzYWJsZWQ7XHJcbiAgICAgIGRpc2FibGVkID0gdGhpcy5maWVsZC5vcHRpb25zLndyaXRlT25seSA/IGZhbHNlIDogZGlzYWJsZWQ7XHJcbiAgICAgIGRpc2FibGVkID0gdGhpcy5yZWFkb25seSA/IHRydWUgOiBkaXNhYmxlZDtcclxuICAgICAgcmV0dXJuIGRpc2FibGVkO1xyXG4gICAgfSxcclxuICAgIGRpc2FibGVkT25VcGRhdGUoKSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZE9wdGlvbnMoJ3JlYWRPbmx5T25VcGRhdGUnKSAmJiAhdGhpcy5lbGVtZW50Lm5ldykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgY3VycmVudE1lc3NhZ2UoKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlWyd0ZW1wJ10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVsndGVtcCddO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWluRGF0ZSgpIHtcclxuICAgICAgbGV0IG1pbkRhdGUgPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5maWVsZE9wdGlvbnMoJ2NvbmRpdGlvbkZ1dHVyZScpKSB7XHJcbiAgICAgICAgbWluRGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwibWluRGF0ZVwiLCBtaW5EYXRlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZE9wdGlvbnMoJ3N0YXJ0RGF0ZUZpZWxkJykpIHtcclxuICAgICAgICBjb25zdCBmaWVsZERhdGEgPSB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkc1t0aGlzLmZpZWxkT3B0aW9ucygnc3RhcnREYXRlRmllbGQnKV07XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJmaWVsZERhdGFcIiwgZmllbGREYXRhKTtcclxuICAgICAgICBpZiAoZmllbGREYXRhICYmICFtaW5EYXRlKSB7XHJcbiAgICAgICAgICBtaW5EYXRlID0gZmllbGREYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGREYXRhICYmIGZpZWxkRGF0YSA+IG1pbkRhdGUpIHtcclxuICAgICAgICAgIG1pbkRhdGUgPSBmaWVsZERhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtaW5EYXRlO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgaXNSZXF1aXJlZEZpbGwoKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkRmlsbCB8fCB0aGlzLmZpZWxkT3B0aW9ucygncXVpY2tSZXF1aXJlZCcpKSB7XHJcbiAgICAgICAgcmV0dXJuICdyZXF1aXJlZCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY3VzdG9tUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfSxcclxuICAgIGlzUmVxdWlyZWQoKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkICYmIHRoaXMuZmllbGQubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZE9wdGlvbnMoJ3F1aWNrUmVxdWlyZWQnKSkge1xyXG4gICAgICAgIC8vcmV0dXJuICdyZXF1aXJlZCc7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfSxcclxuXHJcbiAgICB1cGxvYWRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlLnZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3ViZmllbGQpIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbGVtZW50Lm5ldyAmJiB2YWx1ZSA9PSBcInRlbXBcIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQudGVtcFVwbG9hZHNbdGhpcy5maWVsZC5uYW1lXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLnVwbG9hZHNbdmFsdWVdO1xyXG4gICAgfSxcclxuICAgIHVwbG9hZFZhbHVlTGlzdCh2YWx1ZSwgaW5kZXgpIHtcclxuICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZS52YWx1ZVtpbmRleF07XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWJmaWVsZCkge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVsZW1lbnQubmV3ICYmIHZhbHVlID09IFwidGVtcFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC50ZW1wVXBsb2Fkc1t0aGlzLmZpZWxkLm5hbWVdW2luZGV4XTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhcInVwbG9hZFZhbHVlTGlzdFwiLCB2YWx1ZSwgaW5kZXgsIHRoaXMuZGF0YS51cGxvYWRzW3ZhbHVlXSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGEudXBsb2Fkc1t2YWx1ZS52YWx1ZV07XHJcbiAgICB9LFxyXG4gICAgb25DaGFuZ2UoZXZlbnQsIGZpZWxkKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygncXVpY2tSZXF1aXJlZCcpKSB7XHJcbiAgICAgICAgZmllbGQub3B0aW9ucy5xdWlja1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT0gJ2RhdGUnICYmIHRoaXMuZmllbGRPcHRpb25zKCdlbmREYXRlRmllbGQnKSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VEYXRlKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGaWVsZChldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBvbkNoYW5nZURhdGUoZXZlbnQsIGZpZWxkKSB7XHJcbiAgICAgIGNvbnN0IGVuZERhdGVGaWVsZFZhbHVlID0gdGhpcy5lbGVtZW50LmZpZWxkc1t0aGlzLmZpZWxkT3B0aW9ucygnZW5kRGF0ZUZpZWxkJyldO1xyXG4gICAgICBjb25zdCBlbmREYXRlRmllbGQgPSB0aGlzLmRhdGEuZmllbGRzW3RoaXMuZmllbGRPcHRpb25zKCdlbmREYXRlRmllbGQnKV07XHJcbiAgICAgIGlmIChlbmREYXRlRmllbGRWYWx1ZSAmJiBuZXcgRGF0ZShldmVudC50YXJnZXQudmFsdWUpID4gbmV3IERhdGUoZW5kRGF0ZUZpZWxkVmFsdWUpKSB7XHJcbiAgICAgICAgLy90aGlzLiRlbWl0KCdjaGFuZ2UtdmFsdWUnLCB7IG5hbWU6IGVuZERhdGVGaWVsZC5uYW1lLCB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlLCBjdXN0b21SZXR1cm5WYWx1ZTogdGhpcy5jdXN0b21SZXR1cm5WYWx1ZSwgZm9yY2VVcGRhdGU6IGZhbHNlIH0pO1xyXG4gICAgICAgIGVuZERhdGVGaWVsZC5vcHRpb25zLnF1aWNrUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkT3B0aW9ucygnY29uZGl0aW9uTWVzc2FnZScpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLnF1aWNrQWxlcnQgPSB7XHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgbW9kZTogJ2FsZXJ0JyxcclxuICAgICAgICAgICAgbmFtZTogJ3F1aWNrQWxlcnQnLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmZpZWxkT3B0aW9ucygnY29uZGl0aW9uTWVzc2FnZScpXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvbk11bHRpQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0RmllbGQodmFsdWUpO1xyXG4gICAgfSxcclxuICAgIHNldEZpZWxkKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW1pdENoYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBhZGROZXdMaXN0RWxlbWVudCgpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmN1c3RvbUFkZEFjdGlvbikge1xyXG4gICAgICAgIHRoaXMuJGVtaXQoJ2N1c3RvbS1hZGQnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIHZhbHVlID0gW107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubGlzdFR5cGUgPT0gJ2FycmF5JyB8fCB0aGlzLmxpc3RUeXBlID09ICd1cGxvYWQnKSB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsdWUucHVzaCh7IGxhYmVsOiAnJywgdmFsdWU6ICcnIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlLnB1c2goJycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdENoYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBjaGFuZ2VMaXN0RWxlbWVudChldmVudCwgaW5kZXgpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmN1c3RvbUNoYW5nZUFjdGlvbikge1xyXG4gICAgICAgIHRoaXMuJGVtaXQoJ2N1c3RvbS1jaGFuZ2UnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgaW5kZXg6IGluZGV4LCB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5saXN0VHlwZSA9PSAnYXJyYXknIHx8IHRoaXMubGlzdFR5cGUgPT0gJ3VwbG9hZCcpIHtcclxuICAgICAgICB2YWx1ZVtpbmRleF1bdGhpcy5maWVsZE9wdGlvbnMoJ2FycmF5TGlzdExhYmVsRmllbGQnKSA/PyAnbGFiZWwnXSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZVtpbmRleF0gPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWl0Q2hhbmdlVmFsdWUodmFsdWUpO1xyXG4gICAgfSxcclxuICAgIGVtaXRDaGFuZ2VWYWx1ZSh2YWx1ZSwgZm9yY2VVcGRhdGUgPSBmYWxzZSkge1xyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZEZpZWxkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZS12YWx1ZScsIHsgbmFtZTogdGhpcy5maWVsZC5uYW1lLCB2YWx1ZTogdmFsdWUsIGN1c3RvbVJldHVyblZhbHVlOiB0aGlzLmN1c3RvbVJldHVyblZhbHVlLCBmb3JjZVVwZGF0ZTogZm9yY2VVcGRhdGUgfSk7XHJcbiAgICB9LFxyXG4gICAgb25Gb2N1cygpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9LFxyXG4gICAgb25FbGVtZW50Rm9jdXMoaW5kZXgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBpbmRleDtcclxuICAgIH0sXHJcbiAgICBvbkJsdXIoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH0sXHJcbiAgICBvbkVsZW1lbnRCbHVyKGluZGV4KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgIH0sXHJcbiAgICBzZWxlY3RlZEVsZW1lbnRDbGFzcyhpbmRleCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQgPT0gaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gXCJzZWxlY3RlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfSxcclxuICAgIHRvZ2dsZUV4cGFuZCgpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgfSxcclxuICAgIGZvY3VzSW5wdXQoZXZlbnQpIHtcclxuICAgICAgbGV0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKSB8fCBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpO1xyXG4gICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgfSxcclxuICAgIHJlbW92ZUVsZW1lbnQoaW5kZXgpIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmN1c3RvbURlbGV0ZUFjdGlvbikge1xyXG4gICAgICAgIHRoaXMuJGVtaXQoJ2N1c3RvbS1kZWxldGUnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgaW5kZXg6IGluZGV4IH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICB2YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmVtaXRDaGFuZ2VWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGR5bmFtaWNWYWx1ZVRvT3B0aW9uc0NvbnZlcnNpb24odmFsdWUpIHtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7fTtcclxuICAgICAgZm9yIChsZXQgdmFsdWVJZCBpbiB2YWx1ZSkge1xyXG4gICAgICAgIGxldCB2YWx1ZUl0ZW0gPSB2YWx1ZVt2YWx1ZUlkXTtcclxuICAgICAgICBvcHRpb25zWydpZCcgKyB2YWx1ZUlkXSA9IHsgbGFiZWw6IHZhbHVlSXRlbSwgdmFsdWU6ICdpZCcgKyB2YWx1ZUlkIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9LFxyXG5cclxuICAgIGR5bmFtaWNUeXBlQ29udmVyc2lvbihpbnB1dCkge1xyXG4gICAgICB0aGlzLmR5bmFtaWNNdWx0aUNvbmZpZyA9IHt9O1xyXG4gICAgICBpZiAodGhpcy5wcmV2RHluYW1pY1R5cGUgJiYgdGhpcy5wcmV2RHluYW1pY1R5cGUgIT0gaW5wdXQgJiYgdGhpcy5wcmV2RWxlbWVudCA9PSB0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgIGlmIChpbnB1dCA9PSAnbXVsdGknKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmV2RWxlbWVudCA9IHRoaXMuZWxlbWVudDtcclxuICAgICAgdGhpcy5wcmV2RHluYW1pY1R5cGUgPSBpbnB1dDtcclxuICAgICAgc3dpdGNoIChpbnB1dCkge1xyXG4gICAgICAgIGNhc2UgJ3RleHQnOlxyXG4gICAgICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgIHJldHVybiAnZGF0ZSc7XHJcbiAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgcmV0dXJuICdib29sZWFuJztcclxuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcclxuICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgY2FzZSAnZGVjaW1hbCc6XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGaWVsZE51bWJlclR5cGUgPSBpbnB1dDtcclxuICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcclxuICAgICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgIGNhc2UgJ2VudGl0eSc6XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNNdWx0aUNvbmZpZy5zaW5nbGUgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuICdjaG9pY2UnO1xyXG4gICAgICAgIGNhc2UgJ211bHRpJzpcclxuICAgICAgICBjYXNlICdlbnRpdHlNdWx0aSc6XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNNdWx0aUNvbmZpZy5zaW5nbGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiAnY2hvaWNlJztcclxuICAgICAgICBjYXNlICdodG1sJzpcclxuICAgICAgICBjYXNlICd0ZXh0QXJlYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ2h0bWwnO1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICAgIHJldHVybiAnZ3JvdXAnO1xyXG4gICAgICAgIGNhc2UgJ2xpc3QnOlxyXG4gICAgICAgICAgcmV0dXJuICdsaXN0JztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIG51bWJlcklucHV0U3RlcCh0eXBlKSB7XHJcbiAgICAgIGlmICh0eXBlID09ICdpbnRlcmdlcicpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZmxvYXQnKSB7XHJcbiAgICAgICAgcmV0dXJuICcwLjAwMDEnO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2RlY2ltYWwnKSB7XHJcbiAgICAgICAgcmV0dXJuICcwLjAxJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9LFxyXG5cclxuICAgIGNoZWNrYm94Q2xpY2soKSB7XHJcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkRmllbGQpIHJldHVybjtcclxuICAgICAgdGhpcy5zZXRGaWVsZCghdGhpcy52YWx1ZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGZpZWxkT3B0aW9ucyhvcHRpb24pIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnW29wdGlvbl0pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdbb3B0aW9uXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zICYmIHRoaXMuZmllbGQub3B0aW9uc1tvcHRpb25dKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuICAgIGFycmF5c0FyZUVxdWFsKGEsIGIpIHtcclxuICAgICAgYSA/Pz0gW107XHJcbiAgICAgIGIgPz89IFtdO1xyXG4gICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhW2ldKSAhPT0gSlNPTi5zdHJpbmdpZnkoYltpXSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBmaWVsZEdyb3VwQ2hhbmdlKHsgbmFtZSwgdmFsdWUsIGN1c3RvbVJldHVyblZhbHVlIH0pIHtcclxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlLXZhbHVlJywgeyBuYW1lLCB2YWx1ZSwgY3VzdG9tUmV0dXJuVmFsdWUsIGluZGV4OiB0aGlzLmN1c3RvbVJldHVyblZhbHVlIH0pO1xyXG4gICAgfSxcclxuICAgIHJlbW92ZUZpZWxkR3JvdXAoKSB7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3JlbW92ZS1maWVsZC1ncm91cCcsIHsgaW5kZXg6IHRoaXMuY3VzdG9tUmV0dXJuVmFsdWUgfSk7XHJcbiAgICB9LFxyXG4gICAgdXBkYXRlVXBsb2FkVmFsdWUodmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJ1cGRhdGVVcGxvYWRWYWx1ZVwiLCB2YWx1ZSk7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3VwbG9hZC1maWxlJywgeyBuYW1lOiB0aGlzLmZpZWxkLm5hbWUsIGZpbGU6IHZhbHVlIH0pO1xyXG4gICAgfSxcclxuICAgIGNsZWFyVXBsb2FkVmFsdWUoKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY2xlYXJVcGxvYWRWYWx1ZVwiKTtcclxuICAgICAgdGhpcy4kZW1pdCgndXBsb2FkLWZpbGUnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgZmlsZTogbnVsbCB9KTtcclxuICAgIH0sXHJcbiAgICB1cGRhdGVVcGxvYWRWYWx1ZUxpc3QodmFsdWUsIGluZGV4KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidXBkYXRlVXBsb2FkVmFsdWVMaXN0XCIsIGluZGV4KTtcclxuICAgICAgdGhpcy4kZW1pdCgndXBsb2FkLWZpbGUnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgZmlsZTogdmFsdWUsIGluZGV4OiBpbmRleCB9KTtcclxuICAgIH0sXHJcbiAgICBjbGVhclVwbG9hZFZhbHVlTGlzdCh2YWx1ZSwgaW5kZXgpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJjbGVhclVwbG9hZFZhbHVlTGlzdFwiLCBpbmRleCk7XHJcbiAgICAgIHZhciBmaWVsZFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgY29uc29sZS5sb2coXCJmaWVsZFZhbHVlXCIsIGZpZWxkVmFsdWUsIGluZGV4KTtcclxuICAgICAgaWYgKCFmaWVsZFZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGZpZWxkVmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgY29uc29sZS5sb2coXCJmaWVsZFZhbHVlIGFmdGVyXCIsIGZpZWxkVmFsdWUpO1xyXG4gICAgICB0aGlzLmVtaXRDaGFuZ2VWYWx1ZShmaWVsZFZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBvblNldEZsYWcoZmxhZykge1xyXG4gICAgICB0aGlzLmZsYWcgPSBmbGFnO1xyXG4gICAgfSxcclxuICAgIG9uUmVzZXQoKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSkpO1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gbnVsbDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IHZhbHVlO1xyXG4gICAgICB9LCA1MCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGRvd25sb2FkRmlsZShpbmRleCA9IG51bGwpIHtcclxuICAgICAgdmFyIGZpbGUgPSAodGhpcy5maWVsZC50eXBlID09IFwibGlzdFwiKSA/IHRoaXMuZGF0YS5kb3dubG9hZHNbdGhpcy5lbGVtZW50LmlkXVt0aGlzLmZpZWxkLm5hbWVdW2luZGV4XSA6IHRoaXMudmFsdWU7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ2Rvd25sb2FkLWZpbGUnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgZmlsZTogZmlsZSwgaW5kZXg6IGluZGV4IH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICB2aWV3RmlsZShpbmRleCA9IG51bGwpIHtcclxuICAgICAgdmFyIGZpbGUgPSAodGhpcy5maWVsZC50eXBlID09IFwibGlzdFwiKSA/IHRoaXMuZGF0YS5kb3dubG9hZHNbdGhpcy5lbGVtZW50LmlkXVt0aGlzLmZpZWxkLm5hbWVdW2luZGV4XSA6IHRoaXMudmFsdWU7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3ZpZXctZmlsZScsIHsgbmFtZTogdGhpcy5maWVsZC5uYW1lLCBmaWxlOiBmaWxlLCBpbmRleDogaW5kZXggfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZUN1cnJlbnRNZXNzYWdlKGV2ZW50LCBmaWVsZCkge1xyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0ge307XHJcbiAgICAgIH1cclxuICAgICAgdmFsdWVbJ3RlbXAnXSA9IHRoaXMuZnJlZUNvbnRlbnQ7XHJcbiAgICAgIHRoaXMuZnJlZUNvbnRlbnQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmZyZWVCb29sID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW1pdENoYW5nZVZhbHVlKHZhbHVlLCB0cnVlKTtcclxuICAgIH0sXHJcblxyXG4gICAgbWVzc2FnZVR5cGVUZXh0KG1vZGUsIHR5cGUpIHtcclxuICAgICAgaWYgKG1vZGUgPT0gXCJzeXN0ZW1cIikge1xyXG4gICAgICAgIHJldHVybiBtb2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtb2RlID09ICdjb21tZW50Jykge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhLnRyYW5zW3R5cGUgKyAnTWVzc2FnZVR5cGUnXTtcclxuICAgIH1cclxuICB9LFxyXG4gIHdhdGNoOiB7XHJcbiAgICBkcmFnVmFsdWU6IHtcclxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZhbHVlLCBvbGRWYWx1ZSkge1xyXG5cclxuICAgICAgICBpZiAoIW9sZFZhbHVlIHx8IG9sZFZhbHVlLmxlbmd0aCA9PSAwIHx8IHRoaXMuYXJyYXlzQXJlRXF1YWwodmFsdWUsIHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuY3VzdG9tRHJhZ2dhYmxlQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2N1c3RvbS1kcmFnZ2FibGUnLCB7IG5hbWU6IHRoaXMuZmllbGQubmFtZSwgdmFsdWU6IHZhbHVlLCBvbGRWYWx1ZTogb2xkVmFsdWUgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdmFsdWU6IHtcclxuICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZhbHVlLCBvbGRWYWx1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PSAnaHRtbCcgfHwgKHRoaXMuZmllbGRUeXBlID09ICdsaXN0JyAmJiB0aGlzLmxpc3RUeXBlID09ICdodG1sJykpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PSAnbGlzdCcpIHtcclxuICAgICAgICAgICAgdGhpcy5ja0NvbnRlbnQgPSB0aGlzLnZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNrQ29udGVudCA9IHRoaXMudmFsdWUgPz8gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgY2tDb250ZW50OiB7XHJcbiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uICh2YWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnY2tDb250ZW50JywgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZW1pdENoYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgOmNsYXNzPVwiJ3Z1ZS1maWVsZC1jb250YWluZXIgJyArIGZpZWxkQ2xhc3Nlc1wiIHYtc2hvdz1cImlzVmlzaWJsZVwiPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtdGV4dCAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ3RleHQnXCI+XHJcbiAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsICR7aXNSZXF1aXJlZCgpfWBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICA8ZGl2IDpjbGFzcz1cIidmb3JtLWNvbnRlbnQgJyArIHNlbGVjdGVkQ2xhc3NcIj5cclxuICAgICAgICA8YSB2LWlmPVwiZmllbGRPcHRpb25zKCdsaW5rJylcIiA6aHJlZj1cInZhbHVlXCI+e3sgZmllbGRPcHRpb25zKCdsaW5rTGFiZWwnKSB9fTwvYT5cclxuICAgICAgICA8aW5wdXQgdi1lbHNlIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInRpdGxlXCIgOnZhbHVlPVwidmFsdWVcIiBjbGFzcz1cInZ1ZS1mb3JtLWlucHV0XCIgOmlkPVwiJ2xhYmVsLScgKyBmaWVsZC5uYW1lXCJcclxuICAgICAgICAgIDpwbGFjZWhvbGRlcj1cImZpZWxkLnBsYWNlaG9sZGVyXCIgQGNoYW5nZT1cIm9uQ2hhbmdlKCRldmVudCwgZmllbGQpXCIgQGtleXVwLmVudGVyLnN0b3A9XCJvbkNoYW5nZSgkZXZlbnQsIGZpZWxkKVwiXHJcbiAgICAgICAgICBAZm9jdXM9XCJvbkZvY3VzXCIgQGJsdXI9XCJvbkJsdXJcIiA6ZGlzYWJsZWQ9XCJkaXNhYmxlZEZpZWxkXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtbnVtYmVyICR7aXNSZXF1aXJlZEZpbGwoKX1gXCIgdi1pZj1cImZpZWxkVHlwZSA9PSAnbnVtYmVyJ1wiPlxyXG4gICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCAke2lzUmVxdWlyZWQoKX1gXCIgOmZvcj1cIidsYWJlbC0nICsgZmllbGQubmFtZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgPGRpdiA6Y2xhc3M9XCInZm9ybS1jb250ZW50ICcgKyBzZWxlY3RlZENsYXNzXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBuYW1lPVwidGl0bGVcIiA6dmFsdWU9XCJ2YWx1ZVwiIGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiA6aWQ9XCInbGFiZWwtJyArIGZpZWxkLm5hbWVcIlxyXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwiZmllbGQucGxhY2Vob2xkZXJcIiA6c3RlcD1cIm51bWJlcklucHV0U3RlcChudW1iZXJUeXBlKVwiIEBjaGFuZ2U9XCJvbkNoYW5nZSgkZXZlbnQsIGZpZWxkKVwiXHJcbiAgICAgICAgICBAZm9jdXM9XCJvbkZvY3VzXCIgQGJsdXI9XCJvbkJsdXJcIiA6ZGlzYWJsZWQ9XCJkaXNhYmxlZEZpZWxkXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtZGF0ZSAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsICR7aXNSZXF1aXJlZCgpfWBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICA8ZGl2IDpjbGFzcz1cIidmb3JtLWNvbnRlbnQgJyArIHNlbGVjdGVkQ2xhc3NcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBuYW1lPVwidGl0bGVcIiA6dmFsdWU9XCJ2YWx1ZVwiIGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiA6aWQ9XCInbGFiZWwtJyArIGZpZWxkLm5hbWVcIlxyXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwiZmllbGQucGxhY2Vob2xkZXJcIiBAY2hhbmdlPVwib25DaGFuZ2UoJGV2ZW50LCBmaWVsZClcIiBAZm9jdXM9XCJvbkZvY3VzXCIgQGJsdXI9XCJvbkJsdXJcIlxyXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRGaWVsZFwiIDptaW49XCJtaW5EYXRlXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtY2hlY2tib3ggJHtpc1JlcXVpcmVkRmlsbCgpfWBcIiB2LWlmPVwiZmllbGRUeXBlID09ICdib29sZWFuJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCIndnVlLWNoZWNrYm94ICcgKyBjaGVja2VkQ2xhc3NcIiBAY2xpY2s9XCJjaGVja2JveENsaWNrXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tQ2hlY2tNYXJrXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxsYWJlbCA6Zm9yPVwiJ2xhYmVsLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC1tZXNzYWdlcyAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ21lc3NhZ2VzJ1wiPlxyXG4gICAgICA8ZGl2IDpjbGFzcz1cIidsYWJlbC1leHBhbmQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWwgJHtpc1JlcXVpcmVkKCl9YFwiIDpmb3I9XCInbGFiZWwtJyArIGZpZWxkLm5hbWVcIj57eyBmaWVsZC5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGkgQGNsaWNrPVwidG9nZ2xlRXhwYW5kXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIGxhYmVsLWV4cGFuZC1pY29uXCI+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgdi1pZj1cImV4cGFuZGVkXCIgY2xhc3M9XCJ2dWUtbWVzc2FnZS1jb250YWluZXIgdGV4dC1saXN0XCI+XHJcbiAgICAgICAgPGRpdiB0eXBlPVwiYnV0dG9uXCIgQGNsaWNrLnN0b3A9XCJmcmVlQm9vbCA9IHRydWVcIiBjbGFzcz1cInZ1ZS1idG4tYWN0aW9uICBuZXctbWVzc2FnZVwiIHYtaWY9XCIhZnJlZUJvb2xcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gbXMtSWNvbiBtcy1JY29uLS1BZGRcIj48L2k+PHNwYW4+e3sgZmllbGRPcHRpb25zKCdhZGRMYWJlbCcpID09ICdkZWZhdWx0JyA/XHJcbiAgICAgICAgICAgIGRhdGEudHJhbnNbJ25ldyBjb21tZW50J10gOiBmaWVsZE9wdGlvbnMoJ25ld0xhYmVsJykgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHRleHRhcmVhIG5hbWU9XCJ0aXRsZVwiIGNsYXNzPVwidnVlLW1lc3NhZ2UtaW5wdXRcIiB2LW1vZGVsPVwiZnJlZUNvbnRlbnRcIiBAZm9jdXM9XCJvbkVsZW1lbnRGb2N1cyhpbmRleClcIlxyXG4gICAgICAgICAgQGJsdXI9XCJvbkVsZW1lbnRCbHVyKGluZGV4KVwiIHYtaWY9XCJmcmVlQm9vbFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPGRpdiB0eXBlPVwiYnV0dG9uXCIgQGNsaWNrLnN0b3A9XCJ1cGRhdGVDdXJyZW50TWVzc2FnZSgkZXZlbnQsIGZpZWxkKVwiIGNsYXNzPVwidnVlLWJ0bi1hY3Rpb25cIiB2LWlmPVwiZnJlZUNvbnRlbnRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gbXMtSWNvbiBtcy1JY29uLS1BZGQgXCI+PC9pPjxzcGFuPnt7IGZpZWxkT3B0aW9ucygnYWRkTGFiZWwnKSA9PSAnZGVmYXVsdCcgP1xyXG4gICAgICAgICAgICBkYXRhLnRyYW5zWydhZGQgY29tbWVudCddIDogZmllbGRPcHRpb25zKCdhZGRMYWJlbCcpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1lc3NhZ2VzXCI+XHJcbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidtZXNzYWdlICcgKyBtZXNzYWdlLnR5cGVcIiB2LWZvcj1cIm1lc3NhZ2UgaW4gdmFsdWVcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlLWhlYWRlclwiPnt7IG1lc3NhZ2UuZGF0ZSB9fSZuYnNwOy0mbmJzcDt7eyBtZXNzYWdlLnBlcnNvbiA/IG1lc3NhZ2UucGVyc29uIDpcclxuICAgICAgICAgICAgICBcIlN5c3RlbVwiIH19ICZuYnNwO1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVzc2FnZS10eXBlLWJveFwiPnt7IG1lc3NhZ2VUeXBlVGV4dChtZXNzYWdlLm1vZGUsIG1lc3NhZ2UudHlwZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgdi1pZj1cIm1lc3NhZ2UudHlwZSA9PSAnY29tbWVudCcgJiYgZGF0YS5jb25maWcudXNlcklkID09IG1lc3NhZ2UucGVyc29uSWQgJiYgZmFsc2VcIj5cclxuICAgICAgICAgICAgICA8c3ZnIEBjbGljaz1cInJlbW92ZUNvbW1lbnQoJGV2ZW50LCBtZXNzYWdlKVwiIGNsYXNzPVwiZGVsZXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxZW1cIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PCEtLSEgRm9udCBBd2Vzb21lIEZyZWUgNi40LjIgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjMgRm9udGljb25zLCBJbmMuIC0tPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiIHYtaHRtbD1cIm1lc3NhZ2UubWVzc2FnZVwiPjwvcD5cclxuICAgICAgICAgICAgPGhyIGNsYXNzPVwibWVzc2FnZS1lbmRcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtaHRtbCAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ2h0bWwnXCIgOmRpc2FibGVkPVwiZGlzYWJsZWRGaWVsZFwiPlxyXG4gICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCAke2lzUmVxdWlyZWQoKX1gXCIgOmZvcj1cIidsYWJlbC0nICsgZmllbGQubmFtZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgPGNrZWRpdG9yIGNsYXNzPVwiY2stZWRpdG9yXCIgOmVkaXRvcj1cImVkaXRvclwiIHYtbW9kZWw9XCJja0NvbnRlbnRcIiA6Y29uZmlnPVwiZWRpdG9yQ29uZmlnXCIgOmRpc2FibGVkPVwiZGlzYWJsZWRGaWVsZFwiPlxyXG4gICAgICA8L2NrZWRpdG9yPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPFZ1ZU11bHRpc2VsZWN0IDpyZWY9XCJmaWVsZC5uYW1lXCIgOmxhYmVsPVwiZmllbGQubGFiZWxcIiA6aXNSZXF1aXJlZD1cImZpZWxkLnJlcXVpcmVkRmlsbFwiXHJcbiAgICAgIDppbml0aWFsLXZhbHVlPVwidmFsdWUgPz8gKGZpZWxkLmRlZmF1bHRWYWx1ZSA/IGZpZWxkLmRlZmF1bHRWYWx1ZSA6IHZhbHVlKVwiIDpvcHRpb25zPVwiZmllbGRDaG9pY2VzXCJcclxuICAgICAgOmNvbmZpZz1cImZpZWxkTXVsdGlTZWxlY3RDb25maWdcIiA6dnVlLWRpc2FibGVkPVwiZGlzYWJsZWRGaWVsZFwiIEBjaGFuZ2UtdmFsdWU9XCJvbk11bHRpQ2hhbmdlXCJcclxuICAgICAgOnBsYWNlaG9sZGVyPVwiZmllbGQucGxhY2Vob2xkZXJcIlxyXG4gICAgICB2LWlmPVwiZmllbGRUeXBlID09ICdjaG9pY2UnIHx8IGZpZWxkVHlwZSA9PSAnZW50aXR5JyB8fCBmaWVsZFR5cGUgPT0gJ2VudGl0eU11bHRpJ1wiIC8+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtbGlzdCAgJHtpc1JlcXVpcmVkRmlsbCgpfWBcIiB2LWlmPVwiZmllbGRUeXBlID09ICdsaXN0J1wiPlxyXG4gICAgICA8ZGl2IDpjbGFzcz1cIidsYWJlbC1leHBhbmQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcbiAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWwgJHtpc1JlcXVpcmVkKCl9YFwiIDpmb3I9XCInbGFiZWwtJyArIGZpZWxkLm5hbWVcIj57eyBmaWVsZC5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGkgQGNsaWNrPVwidG9nZ2xlRXhwYW5kXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIGxhYmVsLWV4cGFuZC1pY29uXCJcclxuICAgICAgICAgIHYtaWY9XCJmaWVsZE9wdGlvbnMoJ2xpc3RFeHBhbmQnKVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxWdWVEcmFnZ2FibGVOZXh0IHYtbW9kZWw9XCJkcmFnVmFsdWVcIiB2LWlmPVwiZXhwYW5kZWQgJiYgbGlzdFR5cGUgPT0gJ3RleHQnXCIgY2xhc3M9XCJ2dWUtbGlzdC1jb250YWluZXIgdGV4dC1saXN0XCI+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgdnVlLWxpc3QtZWxlbWVudCB2dWUtZHluYW1pYy1pbnB1dCAke3NlbGVjdGVkRWxlbWVudENsYXNzKGluZGV4KX1gXCJcclxuICAgICAgICAgIHYtZm9yPVwiKGxpc3RFbGVtZW50LCBpbmRleCkgaW4gdmFsdWVcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgIDxpIEBjbGljaz1cImZvY3VzSW5wdXQoJGV2ZW50KVwiIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1FZGl0XCI+PC9pPlxyXG5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiIDp2YWx1ZT1cImxpc3RFbGVtZW50XCIgY2xhc3M9XCJ2dWUtZm9ybS1pbnB1dFwiXHJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJjaGFuZ2VMaXN0RWxlbWVudCgkZXZlbnQsIGluZGV4KVwiIEBmb2N1cz1cIm9uRWxlbWVudEZvY3VzKGluZGV4KVwiIEBibHVyPVwib25FbGVtZW50Qmx1cihpbmRleClcIj5cclxuXHJcbiAgICAgICAgICA8aSBAY2xpY2s9XCJyZW1vdmVFbGVtZW50KGluZGV4KVwiIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1EZWxldGVcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuXHJcbiAgICAgIDxWdWVEcmFnZ2FibGVOZXh0IHYtbW9kZWw9XCJkcmFnVmFsdWVcIiB2LWlmPVwiZXhwYW5kZWQgJiYgbGlzdFR5cGUgPT0gJ3RleHRhcmVhJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJ2dWUtbGlzdC1jb250YWluZXIgdGV4dC1saXN0XCI+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgdnVlLWxpc3QtZWxlbWVudCB2dWUtZHluYW1pYy1pbnB1dCAke3NlbGVjdGVkRWxlbWVudENsYXNzKGluZGV4KX1gXCJcclxuICAgICAgICAgIHYtZm9yPVwiKGxpc3RFbGVtZW50LCBpbmRleCkgaW4gdmFsdWVcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgIDxpIEBjbGljaz1cImZvY3VzSW5wdXQoJGV2ZW50KVwiIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1FZGl0XCI+PC9pPlxyXG4gICAgICAgICAgPHRleHRhcmVhIG5hbWU9XCJ0aXRsZVwiIGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiA6dmFsdWU9XCJsaXN0RWxlbWVudFwiIEBjaGFuZ2U9XCJjaGFuZ2VMaXN0RWxlbWVudCgkZXZlbnQsIGluZGV4KVwiXHJcbiAgICAgICAgICAgIEBmb2N1cz1cIm9uRWxlbWVudEZvY3VzKGluZGV4KVwiIEBibHVyPVwib25FbGVtZW50Qmx1cihpbmRleClcIj48L3RleHRhcmVhPlxyXG5cclxuICAgICAgICAgIDxpIEBjbGljaz1cInJlbW92ZUVsZW1lbnQoaW5kZXgpXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLURlbGV0ZVwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9WdWVEcmFnZ2FibGVOZXh0PlxyXG5cclxuICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1tb2RlbD1cImRyYWdWYWx1ZVwiIHYtaWY9XCJleHBhbmRlZCAmJiBsaXN0VHlwZSA9PSAnaHRtbCdcIlxyXG4gICAgICAgIGNsYXNzPVwidnVlLWxpc3QtY29udGFpbmVyIHRleHQtbGlzdCBodG1sLWxpc3RcIj5cclxuICAgICAgICA8ZGl2IDpjbGFzcz1cImB2dWUtbGlzdC1lbGVtZW50IHZ1ZS1keW5hbWljLWlucHV0ICR7c2VsZWN0ZWRFbGVtZW50Q2xhc3MoaW5kZXgpfWBcIlxyXG4gICAgICAgICAgdi1mb3I9XCIobGlzdEVsZW1lbnQsIGluZGV4KSBpbiB2YWx1ZVwiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGNrZWRpdG9yIGNsYXNzPVwiY2stZWRpdG9yXCIgOmVkaXRvcj1cImVkaXRvclwiIHYtbW9kZWw9XCJja0NvbnRlbnRbaW5kZXhdXCIgOmNvbmZpZz1cImVkaXRvckNvbmZpZ1wiPjwvY2tlZGl0b3I+XHJcblxyXG4gICAgICAgICAgPGkgQGNsaWNrPVwicmVtb3ZlRWxlbWVudChpbmRleClcIiBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tRGVsZXRlXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L1Z1ZURyYWdnYWJsZU5leHQ+XHJcblxyXG4gICAgICA8VnVlRHJhZ2dhYmxlTmV4dCB2LW1vZGVsPVwiZHJhZ1ZhbHVlXCIgdi1pZj1cImV4cGFuZGVkICYmIGxpc3RUeXBlID09ICdhcnJheSdcIlxyXG4gICAgICAgIGNsYXNzPVwidnVlLWxpc3QtY29udGFpbmVyIGFycmF5LWxpc3RcIj5cclxuICAgICAgICA8ZGl2IDpjbGFzcz1cImB2dWUtbGlzdC1lbGVtZW50IHZ1ZS1keW5hbWljLWlucHV0ICR7c2VsZWN0ZWRFbGVtZW50Q2xhc3MoaW5kZXgpfWBcIlxyXG4gICAgICAgICAgdi1mb3I9XCIobGlzdEVsZW1lbnQsIGluZGV4KSBpbiB2YWx1ZVwiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGkgQGNsaWNrPVwiZm9jdXNJbnB1dCgkZXZlbnQpXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUVkaXRcIj48L2k+XHJcblxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInRpdGxlXCIgOnZhbHVlPVwibGlzdEVsZW1lbnRbdGhpcy5maWVsZE9wdGlvbnMoJ2FycmF5TGlzdExhYmVsRmllbGQnKSA/PyAnbGFiZWwnXVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiBAY2hhbmdlPVwiY2hhbmdlTGlzdEVsZW1lbnQoJGV2ZW50LCBpbmRleClcIiBAZm9jdXM9XCJvbkVsZW1lbnRGb2N1cyhpbmRleClcIlxyXG4gICAgICAgICAgICBAYmx1cj1cIm9uRWxlbWVudEJsdXIoaW5kZXgpXCI+XHJcblxyXG4gICAgICAgICAgPGkgQGNsaWNrPVwicmVtb3ZlRWxlbWVudChpbmRleClcIiBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tRGVsZXRlXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L1Z1ZURyYWdnYWJsZU5leHQ+XHJcblxyXG5cclxuICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1tb2RlbD1cImRyYWdWYWx1ZVwiIHYtaWY9XCJleHBhbmRlZCAmJiBsaXN0VHlwZSA9PSAnZGlzcGxheSdcIlxyXG4gICAgICAgIGNsYXNzPVwidnVlLWxpc3QtY29udGFpbmVyIGRpc3BsYXktbGlzdFwiPlxyXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiYHZ1ZS1saXN0LWVsZW1lbnQgdnVlLWR5bmFtaWMtaW5wdXQgJHtzZWxlY3RlZEVsZW1lbnRDbGFzcyhpbmRleCl9YFwiXHJcbiAgICAgICAgICB2LWZvcj1cIihsaXN0RWxlbWVudCwgaW5kZXgpIGluIHZhbHVlXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgICAgICA8cD57eyBsaXN0RWxlbWVudC5uYW1lIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L1Z1ZURyYWdnYWJsZU5leHQ+XHJcblxyXG5cclxuICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1tb2RlbD1cImRyYWdWYWx1ZVwiIHYtaWY9XCJleHBhbmRlZCAmJiBsaXN0VHlwZSA9PSAndXBsb2FkJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJ2dWUtbGlzdC1jb250YWluZXIgZGlzcGxheS1saXN0XCI+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgdnVlLWxpc3QtZWxlbWVudCB2dWUtZHluYW1pYy1pbnB1dCAke3NlbGVjdGVkRWxlbWVudENsYXNzKGluZGV4KX1gXCJcclxuICAgICAgICAgIHYtZm9yPVwiKGxpc3RFbGVtZW50LCBpbmRleCkgaW4gdmFsdWVcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtdXBsb2FkLWNvbnRhaW5lciB1cGxvYWQtbGlzdFwiPlxyXG5cclxuICAgICAgICAgICAgPFZ1ZVVwbG9hZCA6dnVlLXBsYWNlaG9sZGVyPVwiZGF0YS50cmFucy5maWxlVXBsb2FkXCIgOnZhbHVlPVwidXBsb2FkVmFsdWVMaXN0KGxpc3RFbGVtZW50LCBpbmRleClcIlxyXG4gICAgICAgICAgICAgIEB1cGRhdGUtdmFsdWU9XCJ1cGRhdGVVcGxvYWRWYWx1ZUxpc3RcIiBAY2xlYXItdXBsb2FkPVwiY2xlYXJVcGxvYWRWYWx1ZUxpc3RcIiA6aW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICA8L1Z1ZVVwbG9hZD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZCBhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZXllXCIgQGNsaWNrPVwidmlld0ZpbGUoaW5kZXgpXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCIgQGNsaWNrPVwiZG93bmxvYWRGaWxlKGluZGV4KVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuXHJcbiAgICAgIDxkaXYgdHlwZT1cImJ1dHRvblwiIHYtaWY9XCJleHBhbmRlZCAmJiBmaWVsZE9wdGlvbnMoJ2FkZCcpXCIgQGNsaWNrLnN0b3A9XCJhZGROZXdMaXN0RWxlbWVudFwiIGNsYXNzPVwidnVlLWJ0bi1hY3Rpb25cIlxyXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkRmllbGRcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImFjdGlvbi1pY29uIG1zLUljb24gbXMtSWNvbi0tQWRkXCI+PC9pPjxzcGFuPnt7IGZpZWxkT3B0aW9ucygnYWRkTGFiZWwnKSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIHZ1ZS1maWVsZC1saXN0ICAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ2N1c3RvbUxpc3QnXCI+XHJcbiAgICAgIDxkaXYgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJyArIGV4cGFuZGVkQ2xhc3NcIj5cclxuICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCAke2lzUmVxdWlyZWQoKX1gXCIgOmZvcj1cIidsYWJlbC0nICsgZmllbGQubmFtZVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICA8aSBAY2xpY2s9XCJ0b2dnbGVFeHBhbmRcIiBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tQ2hldnJvbkRvd24gbGFiZWwtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgdi1pZj1cImZpZWxkT3B0aW9ucygnbGlzdEV4cGFuZCcpXCI+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1tb2RlbD1cImRyYWdWYWx1ZVwiIHYtaWY9XCJleHBhbmRlZFwiIGNsYXNzPVwidnVlLWxpc3QtY29udGFpbmVyIHRleHQtbGlzdFwiXHJcbiAgICAgICAgOmRyYWdnYWJsZT1cImlzRHJhZ2dhYmxlXCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImxpc3RcIj5cclxuICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuICAgICAgPGRpdiBjbGFzcz1cImFmdGVybGlzdC1jb250YWluZXJcIiB2LWlmPVwiZXhwYW5kZWQgJiYgZmllbGRPcHRpb25zKCdhZGQnKVwiPlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJhZGRcIj5cclxuICAgICAgICAgIDxkaXYgdHlwZT1cImJ1dHRvblwiIEBjbGljay5zdG9wPVwiYWRkTmV3TGlzdEVsZW1lbnRcIiBjbGFzcz1cInZ1ZS1idG4tYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gbXMtSWNvbiBtcy1JY29uLS1BZGRcIj48L2k+PHNwYW4+e3sgZmllbGRPcHRpb25zKCdhZGRMYWJlbCcpIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zbG90PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIHZ1ZS1ncm91cC1maWVsZCAgJHtpc1JlcXVpcmVkRmlsbCgpfWBcIiB2LWlmPVwiZmllbGRUeXBlID09ICdncm91cCdcIj5cclxuICAgICAgPGRpdiA6Y2xhc3M9XCInbGFiZWwtZXhwYW5kLWNvbnRhaW5lciAnICsgZXhwYW5kZWRDbGFzc1wiPlxyXG4gICAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsICR7aXNSZXF1aXJlZCgpfWBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGRMYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGkgQGNsaWNrPVwidG9nZ2xlRXhwYW5kXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIGxhYmVsLWV4cGFuZC1pY29uXCI+PC9pPlxyXG4gICAgICAgIDxpIHYtaWY9XCJmaWVsZE9wdGlvbnMoJ3JlbW92ZScpXCIgQGNsaWNrPVwicmVtb3ZlRmllbGRHcm91cFwiIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1EZWxldGUgZGVsZXRlLWljb25cIj48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8VnVlRHJhZ2dhYmxlTmV4dCB2LW1vZGVsPVwiZHJhZ1ZhbHVlQ29tcHV0ZWRcIiB2LWlmPVwiZXhwYW5kZWRcIiBjbGFzcz1cInZ1ZS1saXN0LWNvbnRhaW5lciBmaWVsZEdyb3VwXCJcclxuICAgICAgICA6ZHJhZ2dhYmxlPVwiaXNEcmFnZ2FibGVcIj5cclxuICAgICAgICA8VnVlRmllbGQgOmRhdGE9XCJkYXRhXCIgOnN1YmZpZWxkPVwidHJ1ZVwiIDpmaWVsZD1cInN1YmZpZWxkXCIgOmVsZW1lbnQ9XCJlbGVtZW50XCIgOmNvbmZpZz1cImNvbmZpZ1wiXHJcbiAgICAgICAgICA6Y3VzdG9tUmVxdWlyZWQ9XCJmaWVsZE9wdGlvbnMoJ3JlcXVpcmVkJykgPyBmaWVsZE9wdGlvbnMoJ3JlcXVpcmVkJylbc3ViZmllbGQubmFtZV0gOiBmYWxzZVwiXHJcbiAgICAgICAgICA6Y3VzdG9tVmFsdWU9XCJ7IHZhbHVlOiB2YWx1ZVtzdWJmaWVsZC5uYW1lXSB9XCIgOmN1c3RvbVJldHVyblZhbHVlPVwieyAnc3ViZmllbGQnOiBzdWJmaWVsZC5uYW1lIH1cIlxyXG4gICAgICAgICAgQGNoYW5nZVZhbHVlPVwiZmllbGRHcm91cENoYW5nZVwiIDprZXk9XCJzdWJmaWVsZC5pZFwiIHYtZm9yPVwic3ViZmllbGQgaW4gZmllbGQuc3ViZmllbGRzXCIgLz5cclxuICAgICAgPC9WdWVEcmFnZ2FibGVOZXh0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtdXBsb2FkICAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ3VwbG9hZCdcIj5cclxuICAgICAgPFZ1ZVVwbG9hZCA6dGl0bGU9XCJmaWVsZC5sYWJlbFwiIDp2dWUtcGxhY2Vob2xkZXI9XCJkYXRhLnRyYW5zLmZpbGVVcGxvYWRcIiA6dmFsdWU9XCJ1cGxvYWRWYWx1ZSh2YWx1ZSlcIlxyXG4gICAgICAgIEB1cGRhdGUtdmFsdWU9XCJ1cGRhdGVVcGxvYWRWYWx1ZVwiIEBjbGVhci11cGxvYWQ9XCJjbGVhclVwbG9hZFZhbHVlXCI+PC9WdWVVcGxvYWQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgOmNsYXNzPVwiYGZvcm0tZ3JvdXAgdnVlLWdyb3VwLWZpZWxkICAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ2N1c3RvbSdcIj5cclxuXHJcbiAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgOmNsYXNzPVwiYGZvcm0tZ3JvdXAgZmlsZSAke2lzUmVxdWlyZWRGaWxsKCl9YFwiIHYtaWY9XCJmaWVsZFR5cGUgPT0gJ2ZpbGUnXCI+XHJcbiAgICAgIDxkaXYgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJyArIGV4cGFuZGVkQ2xhc3NcIj5cclxuICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCAke2lzUmVxdWlyZWQoKX1gXCIgOmZvcj1cIidsYWJlbC0nICsgZmllbGQubmFtZVwiPnt7IGZpZWxkTGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWljb25zXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiBAY2xpY2s9XCJ2aWV3RmlsZShmYWxzZSlcIiB2LWlmPVwiZmlsZVwiPjwvaT5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCIgQGNsaWNrPVwiZG93bmxvYWRGaWxlKGZhbHNlKVwiIHYtaWY9XCJmaWxlXCI+PC9pPlxyXG4gICAgICAgICAgPGkgdi1pZj1cImZpZWxkT3B0aW9ucygnZXhwYW5kcycpXCIgQGNsaWNrPVwidG9nZ2xlRXhwYW5kXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIGxhYmVsLWV4cGFuZC1pY29uXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHNsb3QgbmFtZT1cImZpbGVQcmVDb250ZW50XCIgOmV4cGFuZGVkPVwiZXhwYW5kZWRcIj48L3Nsb3Q+XHJcbiAgICAgIDxWdWVQZGYgdi1pZj1cInZhbHVlICYmIGZpbGVcIiB2LXNob3c9XCJleHBhbmRlZFwiIDpmaWxlPVwiZmlsZVwiIDpmaWxlLW5hbWU9XCJ2YWx1ZVwiIDpkYXRhPVwiZGF0YVwiIHJlZj1cInBkZlwiIDprZXk9XCJmbGFnXCJcclxuICAgICAgICBAcmVzZXQ9XCJvblJlc2V0XCIgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmNrLWVkaXRvciAuY2stY29udGVudCB7XHJcbiAgbWluLWhlaWdodDogMTI0cHg7XHJcbiAgLyogUmVwbGFjZSB3aXRoIHRoZSBoZWlnaHQgeW91IHdhbnQgKi9cclxufVxyXG5cclxuLmNrLmNrLXBvd2VyZWQtYnkge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZpbGUgLmxhYmVsLWV4cGFuZC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5maWxlIC5mYXMge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZpbGUgLmZhLWRvd25sb2FkLFxyXG4uZmlsZSAubGFiZWwtZXhwYW5kLWljb24ge1xyXG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xyXG5cclxufVxyXG5cclxuLmh0bWwtbGlzdCB7XHJcbiAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xyXG4gIG1pbi1oZWlnaHQ6IDQwcHg7XHJcbn1cclxuXHJcbi52dWUtbWVzc2FnZS1pbnB1dCB7XHJcbiAgcGFkZGluZzogNnB4O1xyXG59XHJcblxyXG4uZm9ybS1ncm91cC5tZXNzYWdlcyB7XHJcbiAgbWFyZ2luLXRvcDogMThweDtcclxuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG59XHJcblxyXG4ubWVzc2FnZS5pbmZvIC5tZXNzYWdlLWhlYWRlciB7XHJcbiAgY29sb3I6ICMwMDc4ZDQ7XHJcbn1cclxuXHJcbi5tZXNzYWdlLndhcm5pbmcgLm1lc3NhZ2UtaGVhZGVyIHtcclxuICBjb2xvcjogI2Q4M2IwMTtcclxufVxyXG5cclxuLnVwbG9hZC1saXN0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udXBsb2FkLmFjdGlvbnMge1xyXG4gIHdpZHRoOiAxMCU7XHJcblxyXG59XHJcblxyXG4udXBsb2FkLmFjdGlvbnMgLmZhLWV5ZSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4ucmVhZG9ubHkgLnZ1ZS1idG4tYWN0aW9uIHtcclxuICBvcGFjaXR5OiAwLjY7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG48L3N0eWxlPlxyXG48c3R5bGU+XHJcbi52dWUtZmllbGQtaHRtbFtkaXNhYmxlZD10cnVlXSAuY2suY2stZWRpdG9yX190b3Age1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgeyBkYXRhIH0gZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IFZ1ZUZpZWxkIGZyb20gJy4vVnVlRmllbGQudnVlJztcclxuaW1wb3J0IFZ1ZU11bHRpc2VsZWN0IGZyb20gJy4vZmllbGRzL1Z1ZU11bHRpU2VsZWN0RmllbGQnO1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgY29tcG9uZW50czoge1xyXG4gICAgVnVlRmllbGQsXHJcbiAgICBWdWVNdWx0aXNlbGVjdFxyXG4gIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIGRhdGE6IE9iamVjdCxcclxuICAgIHN0YXRlOiBPYmplY3QsXHJcbiAgICBlbnRpdHk6IFN0cmluZ1xyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGZpbHRlcnM6IHt9XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWx0ZXJzKSk7XHJcbiAgfSxcclxuXHJcbiAgbWV0aG9kczoge1xyXG4gICAgb25GaWx0ZXJDaGFuZ2VWYWx1ZShmaWVsZE5hbWUsIHZhbHVlLCB0eXBlLCBvcHRpb24gPSBudWxsKSB7XHJcbiAgICAgIGlmICh0eXBlID09PSAndGV4dCcpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnNbZmllbGROYW1lXSA9IHtcclxuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZE5hbWUsXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NlbGVjdCcgfHwgdHlwZSA9PT0gJ2VudGl0eScpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnNbZmllbGROYW1lXSA9IHtcclxuICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgICAgZmllbGQ6IGZpZWxkTmFtZSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUtcmFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzW2ZpZWxkTmFtZV0gPSB7XHJcbiAgICAgICAgICB0eXBlOiAnZGF0ZS1yYW5nZScsXHJcbiAgICAgICAgICBmaWVsZDogZmllbGROYW1lXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNbZmllbGROYW1lXVsndmFsdWUnXSA9IHt9O1xyXG4gICAgICAgIGlmIChvcHRpb24gPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tmaWVsZE5hbWVdWyd2YWx1ZSddWydzdGFydCddID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb24gPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNbZmllbGROYW1lXVsndmFsdWUnXVsnZW5kJ10gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGlzQWN0aXZlID0gdGhpcy5pc0ZpbHRlckFjdGl2ZSgpO1xyXG4gICAgICB0aGlzLmZpbHRlcnNbJ19faXNBY3RpdmUnXSA9IGlzQWN0aXZlO1xyXG4gICAgfSxcclxuXHJcbiAgICBhcHBseUZpbHRlcnMoKSB7XHJcblxyXG4gICAgICBsZXQgaXNBY3RpdmUgPSB0aGlzLmlzRmlsdGVyQWN0aXZlKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyc1snX19pc0FjdGl2ZSddID0gaXNBY3RpdmU7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdBcHBseWluZyBmaWx0ZXJzOicsIHRoaXMuZmlsdGVycyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdGaWx0ZXJzIGFjdGl2ZSBzdGF0dXM6JywgSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSk7XHJcbiAgICAgIHRoaXMuc3RhdGUuZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdDbGVhcmluZyBmaWx0ZXJzJywgdGhpcy5zdGF0ZS5maWx0ZXJzKTtcclxuICAgIH0sXHJcblxyXG4gICAgb25NdWx0aUNoYW5nZSh2YWx1ZSwgZSwgZmllbGROYW1lKSB7XHJcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2VWYWx1ZShmaWVsZE5hbWUsIHZhbHVlLCAnc2VsZWN0Jyk7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uRW50aXR5Q2hhbmdlKHZhbHVlLCBlLCBmaWVsZE5hbWUpIHtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZVZhbHVlKGZpZWxkTmFtZSwgdmFsdWUsICdlbnRpdHknKTtcclxuICAgIH0sXHJcblxyXG4gICAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSB7fTtcclxuICAgICAgdGhpcy5maWx0ZXJzWydfX2lzQWN0aXZlJ10gPSBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgaXNGaWx0ZXJBY3RpdmUoKSB7XHJcbiAgICAgIGZvciAobGV0IGZpbHRlcktleSBpbiB0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICBsZXQgZmlsdGVyID0gdGhpcy5maWx0ZXJzW2ZpbHRlcktleV07XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0ZXh0IHZhbHVlIGlzIG5vdCBlbXB0eVxyXG4gICAgICAgICAgaWYgKGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWUudHJpbSgpICE9PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci50eXBlID09PSAnc2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2VudGl0eScpIHtcclxuICAgICAgICAgIC8vIENoZWNrIGlmIHNlbGVjdCB2YWx1ZSBpcyBub3QgZW1wdHkgKGNvdWxkIGJlIGFycmF5IG9yIHNpbmdsZSB2YWx1ZSlcclxuICAgICAgICAgIGlmIChmaWx0ZXIudmFsdWUgJiZcclxuICAgICAgICAgICAgKChBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSkgJiYgZmlsdGVyLnZhbHVlLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSkgJiYgZmlsdGVyLnZhbHVlICE9PSAnJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdkYXRlLXJhbmdlJykge1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyIHN0YXJ0IG9yIGVuZCBkYXRlIGhhcyBhIHZhbHVlXHJcbiAgICAgICAgICBpZiAoKGZpbHRlci5zdGFydCAmJiBmaWx0ZXIuc3RhcnQgIT09ICcnKSB8fFxyXG4gICAgICAgICAgICAoZmlsdGVyLmVuZCAmJiBmaWx0ZXIuZW5kICE9PSAnJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBhY3RpdmUgZmlsdGVycyBmb3VuZFxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGZpZWxkTXVsdGlTZWxlY3RDb25maWcoZmllbGQpIHtcclxuICAgICAgbGV0IGNvbmZpZyA9IHt9O1xyXG4gICAgICBjb25maWcucmV0dXJuRGF0YSA9IGZpZWxkLm5hbWU7XHJcbiAgICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICAgIGNvbmZpZy5yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRPcHRpb25zKCdncm91cHMnKSkge1xyXG4gICAgICAgIGNvbmZpZy5ncm91cHMgPSB0aGlzLmZpZWxkT3B0aW9ucygnZ3JvdXBzJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRPcHRpb25zKCdjb3VudHJ5JykpIHtcclxuICAgICAgICBjb25maWcuY291bnRyeSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgIH0sXHJcblxyXG4gICAgZmllbGRPcHRpb25zKGZpZWxkLCBvcHRpb24pIHtcclxuICAgICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9uc1tvcHRpb25dKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkLm9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gIH0sXHJcblxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBpbmRleEZpbHRlckZpZWxkcygpIHtcclxuICAgICAgbGV0IGluZGV4RmllbGRzID0ge307XHJcbiAgICAgIGZvciAobGV0IGZpZWxkSWQgaW4gdGhpcy5kYXRhLmZpZWxkcykge1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHRoaXMuZGF0YS5maWVsZHNbZmllbGRJZF07XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NoZWNraW5nIGZpZWxkIGZvciBmaWx0ZXI6JywgZmllbGQpO1xyXG4gICAgICAgIGlmIChmaWVsZC5pbmRleCAmJiBmaWVsZC5oYXNGaWx0ZXIpIHtcclxuICAgICAgICAgIGluZGV4RmllbGRzW2ZpZWxkLm5hbWVdID0gZmllbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbmRleEZpZWxkcztcclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cInZ1ZS1maWx0ZXJzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidnVlLWZpbHRlcnMtb3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpbHRlci1pbmRleC1maWVsZFwiIHYtZm9yPVwiZmllbGQgaW4gaW5kZXhGaWx0ZXJGaWVsZHNcIiA6a2V5PVwiJ2ZpbHRlci0nICsgZmllbGQubmFtZVwiPlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImZpZWxkLmZpbHRlckZpZWxkID09PSAndGV4dCdcIiBjbGFzcz1cImZpbHRlci1maWVsZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIDpmb3I9XCInZmlsdGVyLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IDppZD1cIidmaWx0ZXItJyArIGZpZWxkLm5hbWVcIiB0eXBlPVwidGV4dFwiIDpuYW1lPVwiZmllbGQubmFtZVwiIDp2YWx1ZT1cImZpbHRlcnNbZmllbGQubmFtZV0/LnZhbHVlXCJcclxuICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwiJ1NlYXJjaCAnICsgZmllbGQubGFiZWxcIiBAaW5wdXQ9XCJvbkZpbHRlckNoYW5nZVZhbHVlKGZpZWxkLm5hbWUsICRldmVudC50YXJnZXQudmFsdWUsICd0ZXh0JylcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1pbnB1dFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJmaWVsZC5maWx0ZXJGaWVsZCA9PT0gJ3NlbGVjdCdcIiBjbGFzcz1cImZpbHRlci1maWVsZCBzdGFuZGFsb25lLW11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICA8VnVlTXVsdGlzZWxlY3QgOnJlZj1cImZpZWxkLm5hbWVcIiA6bGFiZWw9XCJmaWVsZC5sYWJlbFwiIDppc1JlcXVpcmVkPVwiZmllbGQucmVxdWlyZWRGaWxsXCJcclxuICAgICAgICAgICAgOmluaXRpYWwtdmFsdWU9XCJmaWx0ZXJzW2ZpZWxkLm5hbWVdPy52YWx1ZSA/PyAoZmllbGQuZGVmYXVsdFZhbHVlID8gZmllbGQuZGVmYXVsdFZhbHVlIDogdmFsdWUpXCJcclxuICAgICAgICAgICAgOm9wdGlvbnM9XCJmaWVsZC5jaG9pY2VzXCIgOmNvbmZpZz1cImZpZWxkTXVsdGlTZWxlY3RDb25maWcoZmllbGQpXCIgOnZ1ZS1kaXNhYmxlZD1cImRpc2FibGVkRmllbGRcIlxyXG4gICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwib25NdWx0aUNoYW5nZVwiIDpwbGFjZWhvbGRlcj1cImZpZWxkLnBsYWNlaG9sZGVyXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHYtZWxzZS1pZj1cImZpZWxkLmZpbHRlckZpZWxkID09PSAnZW50aXR5J1wiIGNsYXNzPVwiZmlsdGVyLWZpZWxkIHN0YW5kYWxvbmUtbXVsdGlzZWxlY3RcIj5cclxuICAgICAgICAgIDxWdWVNdWx0aXNlbGVjdCA6cmVmPVwiZmllbGQubmFtZVwiIDpsYWJlbD1cImZpZWxkLmxhYmVsXCIgOmlzUmVxdWlyZWQ9XCJmaWVsZC5yZXF1aXJlZEZpbGxcIlxyXG4gICAgICAgICAgICA6aW5pdGlhbC12YWx1ZT1cImZpbHRlcnNbZmllbGQubmFtZV0/LnZhbHVlID8/IChmaWVsZC5kZWZhdWx0VmFsdWUgPyBmaWVsZC5kZWZhdWx0VmFsdWUgOiB2YWx1ZSlcIlxyXG4gICAgICAgICAgICA6b3B0aW9ucz1cImZpZWxkLmNob2ljZXNcIiA6Y29uZmlnPVwiZmllbGRNdWx0aVNlbGVjdENvbmZpZyhmaWVsZClcIiA6dnVlLWRpc2FibGVkPVwiZGlzYWJsZWRGaWVsZFwiXHJcbiAgICAgICAgICAgIEBjaGFuZ2UtdmFsdWU9XCJvbkVudGl0eUNoYW5nZVwiIDpwbGFjZWhvbGRlcj1cImZpZWxkLnBsYWNlaG9sZGVyXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHYtZWxzZS1pZj1cImZpZWxkLmZpbHRlckZpZWxkID09PSAnZGF0ZS1yYW5nZSdcIiBjbGFzcz1cImZpbHRlci1maWVsZCBmaWx0ZXItZGF0ZS1yYW5nZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIDpmb3I9XCInZmlsdGVyLScgKyBmaWVsZC5uYW1lXCI+e3sgZmllbGQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcmFuZ2UtaW5wdXRzXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6aWQ9XCInZmlsdGVyLXN0YXJ0LScgKyBmaWVsZC5uYW1lXCIgdHlwZT1cImRhdGVcIiA6bmFtZT1cImZpZWxkLm5hbWUgKyAnX3N0YXJ0J1wiXHJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiZmlsdGVyc1tmaWVsZC5uYW1lXT8udmFsdWU/LnN0YXJ0XCJcclxuICAgICAgICAgICAgICBAaW5wdXQ9XCJvbkZpbHRlckNoYW5nZVZhbHVlKGZpZWxkLm5hbWUsICRldmVudC50YXJnZXQudmFsdWUsICdkYXRlLXJhbmdlJywgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWlucHV0IGZpbHRlci1kYXRlLXN0YXJ0XCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXNlcGFyYXRvclwiPnt7IGRhdGEudHJhbnMudG8gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6aWQ9XCInZmlsdGVyLWVuZC0nICsgZmllbGQubmFtZVwiIHR5cGU9XCJkYXRlXCIgOm5hbWU9XCJmaWVsZC5uYW1lICsgJ19lbmQnXCJcclxuICAgICAgICAgICAgICA6dmFsdWU9XCJmaWx0ZXJzW2ZpZWxkLm5hbWVdPy52YWx1ZT8uZW5kXCJcclxuICAgICAgICAgICAgICBAaW5wdXQ9XCJvbkZpbHRlckNoYW5nZVZhbHVlKGZpZWxkLm5hbWUsICRldmVudC50YXJnZXQudmFsdWUsICdkYXRlLXJhbmdlJywgJ2VuZCcpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1pbnB1dCBmaWx0ZXItZGF0ZS1lbmRcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG4gcHJpbWFyeVwiIEBjbGljaz1cImFwcGx5RmlsdGVyc1wiPjxzcGFuPnt7IGRhdGEudHJhbnMuYXBwbHlGaWx0ZXJzIH19PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidnVlLWJ0biBzZWNvbmRhcnlcIiBAY2xpY2s9XCJjbGVhckZpbHRlcnNcIiB2LWlmPVwidGhpcy5maWx0ZXJzLl9faXNBY3RpdmVcIj48c3Bhbj57e1xyXG4gICAgICAgIGRhdGEudHJhbnMuY2xlYXJGaWx0ZXJzIH19PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4udnVlLWZpbHRlcnMge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udnVlLWZpbHRlcnMtb3B0aW9ucyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgZ2FwOiAxNnB4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxufVxyXG5cclxuLnZ1ZS1maWx0ZXItaW5kZXgtZmllbGQge1xyXG4gIGZsZXg6IDEgMSAyMjBweDtcclxuICBtaW4td2lkdGg6IDIyMHB4O1xyXG4gIG1heC13aWR0aDogMzIwcHg7XHJcbn1cclxuXHJcbi5maWx0ZXItZmllbGQge1xyXG4gIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZmlsdGVyLWZpZWxkIGxhYmVsIHtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tYm90dG9tOiA2cHg7XHJcbiAgY29sb3I6ICMzMjMxMzA7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsICdPeHlnZW4nLCAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5maWx0ZXItaW5wdXQge1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMmQwY2U7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgJ094eWdlbicsICdVYnVudHUnLCAnQ2FudGFyZWxsJywgJ0ZpcmEgU2FucycsICdEcm9pZCBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gIGNvbG9yOiAjMzIzMTMwO1xyXG4gIGhlaWdodDogMzJweDtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0O1xyXG59XHJcblxyXG4uZmlsdGVyLWlucHV0OmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICNjN2M2YzQ7XHJcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNjN2M2YzQ7XHJcbn1cclxuXHJcbi5maWx0ZXItaW5wdXQ6Zm9jdXMge1xyXG4gIGJvcmRlci1jb2xvcjogIzAwNzhkNDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjMDA3OGQ0O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbn1cclxuXHJcbi5maWx0ZXItaW5wdXQ6OnBsYWNlaG9sZGVyIHtcclxuICBjb2xvcjogIzYwNWU1YztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbi5maWx0ZXItc2VsZWN0IHtcclxuICBwYWRkaW5nOiA2cHggMTJweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZDJkMGNlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsICdPeHlnZW4nLCAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICBjb2xvcjogIzMyMzEzMDtcclxuICBtaW4taGVpZ2h0OiAzMnB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0O1xyXG59XHJcblxyXG4uZmlsdGVyLXNlbGVjdDpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjYzdjNmM0O1xyXG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjYzdjNmM0O1xyXG59XHJcblxyXG4uZmlsdGVyLXNlbGVjdDpmb2N1cyB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMDA3OGQ0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICMwMDc4ZDQ7XHJcbn1cclxuXHJcbi8qIERhdGUgcmFuZ2Ugc3BlY2lmaWMgc3R5bGluZyAqL1xyXG4uZmlsdGVyLWRhdGUtcmFuZ2Uge1xyXG4gIG1pbi13aWR0aDogMjgwcHg7XHJcbn1cclxuXHJcbi5kYXRlLXJhbmdlLWlucHV0cyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogOHB4O1xyXG59XHJcblxyXG4uZmlsdGVyLWRhdGUtc3RhcnQsXHJcbi5maWx0ZXItZGF0ZS1lbmQge1xyXG4gIGZsZXg6IDE7XHJcbn1cclxuXHJcbi5kYXRlLXNlcGFyYXRvciB7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGNvbG9yOiAjNjA1ZTVjO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBwYWRkaW5nOiAwIDRweDtcclxufVxyXG5cclxuLyogTWljcm9zb2Z0IDM2NSBCdXR0b24gU3R5bGUgKGlmIHlvdSBhZGQgY2xlYXIvYXBwbHkgYnV0dG9ucykgKi9cclxuLmZpbHRlci1idXR0b24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDc4ZDQ7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNzhkNDtcclxuICBjb2xvcjogI2ZmZmZmZjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBwYWRkaW5nOiA2cHggMTZweDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0O1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsICdSb2JvdG8nLCAnT3h5Z2VuJywgJ1VidW50dScsICdDYW50YXJlbGwnLCAnRmlyYSBTYW5zJywgJ0Ryb2lkIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZmlsdGVyLWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwNmViZTtcclxuICBib3JkZXItY29sb3I6ICMxMDZlYmU7XHJcbn1cclxuXHJcbi5maWx0ZXItYnV0dG9uOmFjdGl2ZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNWE5ZTtcclxuICBib3JkZXItY29sb3I6ICMwMDVhOWU7XHJcbn1cclxuXHJcbi5maWx0ZXItYnV0dG9uLXNlY29uZGFyeSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2QyZDBjZTtcclxuICBjb2xvcjogIzMyMzEzMDtcclxufVxyXG5cclxuLmZpbHRlci1idXR0b24tc2Vjb25kYXJ5OmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMmYxO1xyXG4gIGJvcmRlci1jb2xvcjogI2M3YzZjNDtcclxufVxyXG5cclxuLyogUmVzcG9uc2l2ZSBicmVha3BvaW50cyAqL1xyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAudnVlLWZpbHRlcnMge1xyXG4gICAgcGFkZGluZzogMTJweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XHJcbiAgfVxyXG5cclxuICAudnVlLWZpbHRlcnMtb3B0aW9ucyB7XHJcbiAgICBnYXA6IDEycHg7XHJcbiAgfVxyXG5cclxuICAudnVlLWZpbHRlci1pbmRleC1maWVsZCB7XHJcbiAgICBmbGV4OiAxIDEgMTAwJTtcclxuICAgIG1heC13aWR0aDogbm9uZTtcclxuICAgIG1pbi13aWR0aDogYXV0bztcclxuICB9XHJcblxyXG4gIC5maWx0ZXItZGF0ZS1yYW5nZSB7XHJcbiAgICBtaW4td2lkdGg6IGF1dG87XHJcbiAgfVxyXG5cclxuICAuZGF0ZS1yYW5nZS1pbnB1dHMge1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGdhcDogOHB4O1xyXG4gIH1cclxuXHJcbiAgLmRhdGUtc2VwYXJhdG9yIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcclxuICAudnVlLWZpbHRlci1pbmRleC1maWVsZCB7XHJcbiAgICBmbGV4OiAxIDEgY2FsYyg1MCUgLSA4cHgpO1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkge1xyXG4gIC52dWUtZmlsdGVyLWluZGV4LWZpZWxkIHtcclxuICAgIGZsZXg6IDEgMSBjYWxjKDMzLjMzMyUgLSAxMXB4KTtcclxuICB9XHJcbn1cclxuXHJcbi8qIE1pY3Jvc29mdCAzNjUgRm9jdXMgU3RhdGVzICovXHJcbi5maWx0ZXItZmllbGQ6Zm9jdXMtd2l0aGluIGxhYmVsIHtcclxuICBjb2xvcjogIzAwNzhkNDtcclxufVxyXG5cclxuLyogTG9hZGluZyBzdGF0ZSBzdHlsaW5nIChNaWNyb3NvZnQgMzY1IHNoaW1tZXIgZWZmZWN0KSAqL1xyXG4uZmlsdGVyLWxvYWRpbmcge1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2YzZjJmMSAyNSUsICNmYWY5ZjggNTAlLCAjZjNmMmYxIDc1JSk7XHJcbiAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7XHJcbiAgYW5pbWF0aW9uOiBzaGltbWVyIDEuNXMgaW5maW5pdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGhlaWdodDogMzJweDtcclxufVxyXG5cclxuLnZ1ZS1idG4ge1xyXG4gIG1hcmdpbi10b3A6IDE2cHg7XHJcbn1cclxuPC9zdHlsZT5cclxuPHN0eWxlPlxyXG4uZmlsdGVyLWZpZWxkIGxhYmVsIHtcclxuICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVDZWxsIGZyb20gJy4vVnVlQ2VsbC52dWUnO1xyXG5pbXBvcnQgVnVlQWN0aW9ucyBmcm9tICcuL1Z1ZUFjdGlvbnMudnVlJztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZUNlbGwsXHJcbiAgICAgICAgVnVlQWN0aW9uc1xyXG4gICAgfSxcclxuICAgIG5hbWU6ICdSZWN1cnNpdmVUYWJsZVJvdycsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGVsZW1lbnQ6IE9iamVjdCxcclxuICAgICAgICBpbmRleEZpZWxkczogT2JqZWN0LFxyXG4gICAgICAgIGluZGV4QWN0aW9uczogT2JqZWN0LFxyXG4gICAgICAgIGRhdGE6IE9iamVjdCxcclxuICAgICAgICBlZGl0QWN0aW9uOiBPYmplY3QsXHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICByb3dDbGFzcygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jaGlsZHJlbiA/ICdwYXJlbnQnIDogJ2NoaWxkJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIG9uQWN0aW9uQ2xpY2socGF5bG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdhY3Rpb25DbGljaycsIHBheWxvYWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25HbG9iYWxBY3Rpb25DbGljayhwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2dsb2JhbEFjdGlvbkNsaWNrJywgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGVtcGxhdGU+XHJcbiAgICAgICAgPHRyIEBjbGljay5zdG9wPVwib25BY3Rpb25DbGljayh7IGU6ICRldmVudCwgZWxlbWVudDogZWxlbWVudCwgYWN0aW9uOiBlZGl0QWN0aW9uIH0pXCIgOmNsYXNzPVwicm93Q2xhc3NcIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZmllbGQtdGl0bGVcIiB2LWZvcj1cImZpZWxkIGluIGluZGV4RmllbGRzXCIgOmtleT1cImZpZWxkLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0YWJsZS1jZWxsXCIgOmZpZWxkPVwiZmllbGRcIiA6ZWxlbWVudD1cImVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dnVlQ2VsbCA6ZmllbGQ9XCJmaWVsZFwiIDplbGVtZW50PVwiZWxlbWVudFwiIDpkYXRhPVwiZGF0YVwiIDpjaGlsZHJlbj1cIiEhZWxlbWVudC5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJmaWVsZC5uYW1lID09PSBPYmplY3Qua2V5cyhpbmRleEZpZWxkcylbMF0gJiYgZWxlbWVudC5jaGlsZHJlblwiIGNsYXNzPVwiZXh0ZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSA6Y2xhc3M9XCJgbXMtSWNvbiBtcy1JY29uLS1DaGV2cm9uRG93biBzdWJtZW51LXRvZ2dsZS1pY29uYCArIChlbGVtZW50LmV4cGFuZGVkID8gJyBleHBhbmRlZCcgOiAnJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwiZWxlbWVudC5leHBhbmRlZCA9ICFlbGVtZW50LmV4cGFuZGVkO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92dWVDZWxsPlxyXG4gICAgICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJmaWVsZC1hY3Rpb25zXCIgdi1pZj1cImluZGV4QWN0aW9ucy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGFibGUtYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2dWVBY3Rpb25zIDpkYXRhPVwiZGF0YVwiIDplbGVtZW50PVwiZWxlbWVudFwiIDptb2RlPVwiJ2luZGV4J1wiIDp0ZW1wbGF0ZT1cIidpbmRleCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAYWN0aW9uQ2xpY2s9XCJvbkFjdGlvbkNsaWNrXCIgQGdsb2JhbEFjdGlvbkNsaWNrPVwib25HbG9iYWxBY3Rpb25DbGlja1wiPjwvdnVlQWN0aW9ucz5cclxuICAgICAgICAgICAgICAgIDwvc2xvdD5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiZWxlbWVudC5leHBhbmRlZFwiIHYtZm9yPVwiY2hpbGRFbGVtZW50IGluIGVsZW1lbnQuY2hpbGRyZW5cIiA6a2V5PVwiY2hpbGRFbGVtZW50LmlkXCI+XHJcbiAgICAgICAgICAgIDxyZWN1cnNpdmUtdGFibGUtcm93IDplbGVtZW50PVwiY2hpbGRFbGVtZW50XCIgOmluZGV4RmllbGRzPVwiaW5kZXhGaWVsZHNcIiA6aW5kZXhBY3Rpb25zPVwiaW5kZXhBY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIDpkYXRhPVwiZGF0YVwiIDplZGl0QWN0aW9uPVwiZWRpdEFjdGlvblwiIEBhY3Rpb25DbGljaz1cIm9uQWN0aW9uQ2xpY2tcIlxyXG4gICAgICAgICAgICAgICAgQGdsb2JhbEFjdGlvbkNsaWNrPVwib25HbG9iYWxBY3Rpb25DbGlja1wiIC8+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvdGVtcGxhdGU+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4vKiBBZGQgeW91ciBzdHlsZXMgaGVyZSAqL1xyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVGaWVsZCBmcm9tICcuL1Z1ZUZpZWxkLnZ1ZSc7XHJcbmltcG9ydCBWdWVBY3Rpb25zIGZyb20gJy4vVnVlQWN0aW9ucy52dWUnO1xyXG5pbXBvcnQgVnVlRGV0YWlsTWl4aW4gZnJvbSAnLi4vbWl4aW5zL1Z1ZURldGFpbE1peGluJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBjb21wb25lbnRzOiB7XHJcbiAgICBWdWVGaWVsZCxcclxuICAgIFZ1ZUFjdGlvbnNcclxuICB9LFxyXG5cclxuICBtaXhpbnM6IFtWdWVEZXRhaWxNaXhpbl0sXHJcblxyXG4gIHByb3BzOiB7XHJcbiAgICBpc0NoaWxkcmVuOiBCb29sZWFuLFxyXG4gICAgZGF0YTogT2JqZWN0LFxyXG4gICAgY2hpbGQ6IE9iamVjdCxcclxuICAgIHN0YXRlOiBPYmplY3QsXHJcbiAgICBjdXN0b21ncm91cHM6IE9iamVjdFxyXG4gIH0sXHJcblxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgOmNsYXNzPVwiJ2NoaWxkcmVuLWRldGFpbCdcIlxyXG4gICAgdi1pZj1cImNoaWxkICYmIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuY3VycmVudENoaWxkICYmIGNoaWxkLmlkID09IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuY3VycmVudENoaWxkLmlkXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRldGFpbC1jb250ZW50XCI+XHJcbiAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImNvbnRlbnQtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IDpjbGFzcz1cIid2dWUtZGV0YWlscy1oZWFkZXIgdGVtcC1kZXRhaWxzJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRpdGxlXCI+ICB7e2VsZW1lbnRDaGlsZExhYmVsKGVsZW1lbnQpfX08L2gyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVTdWJ0aXRsZVwiIDplbGVtZW50PVwiZWxlbWVudFwiPjwvc2xvdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ2dyb3VwLWJ0biAnICsgc2VsZWN0ZWRHcm91cENsYXNzKGdyb3VwKVwiIHYtZm9yPVwiZ3JvdXAgaW4gZGV0YWlsR3JvdXBzQnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwic2VsZWN0R3JvdXAoJGV2ZW50LCBncm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWxhYmVsXCI+e3sgZ3JvdXAubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImV4dHJhQnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2xvdD5cclxuICAgICAgICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwicG9zdFN1YnRpdGxlXCIgOmVsZW1lbnQ9XCJlbGVtZW50XCI+PC9zbG90PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zbG90PlxyXG5cclxuICAgICAgICA8c2xvdCBuYW1lPVwiY29udGVudC1mb3JtXCI+XHJcbiAgICAgICAgICA8Zm9ybSBjbGFzcz1cInZ1ZS1mb3JtIHRlbXAtZm9ybVwiIEBzdWJtaXQucHJldmVudD1cIm9uU3VibWl0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgOmRhdGEta2V5PVwia2V5XCIgOmNsYXNzPVwiJ2Zvcm0tc2VjdGlvbiAnICsgY2xhc3NFeHBhbmRlZChncm91cC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoZ3JvdXAsIGtleSkgaW4gZGV0YWlsR3JvdXBzXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxWdWVGaWVsZCB2LWZvcj1cImZpZWxkIGluIGRldGFpbEZpZWxkcyhncm91cClcIiA6a2V5PVwiZ3JvdXAubmFtZSArIGZpZWxkLm5hbWVcIiA6ZWxlbWVudD1cImVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgOmRhdGE9XCJkYXRhXCIgOmZpZWxkPVwiZmllbGRcIiBAY2hhbmdlLXZhbHVlPVwib25DaGFuZ2VWYWx1ZVwiIEB1cGxvYWRGaWxlPVwib25GaWxlVXBsb2FkXCJcclxuICAgICAgICAgICAgICAgIEBkb3dubG9hZEZpbGU9XCJvbkRvd25sb2FkRmlsZVwiIEB2aWV3RmlsZT1cIm9uVmlld0ZpbGVcIj48L1Z1ZUZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiY3VzdG9tRmllbGRzR2VuZXJhbFwiIDpncm91cC1uYW1lPVwiZ3JvdXAubmFtZVwiPlxyXG4gICAgICAgICAgICAgIDwvc2xvdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjdXN0b21GaWVsZHNcIj5cclxuICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvc2xvdD5cclxuICAgICAgPC9zbG90PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuLmJhc2UtZGV0YWlsLWFjdGlvbnMgLnZ1ZS1idG4ge1xyXG4gIG1hcmdpbi1yaWdodDogMzJweDtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcclxuICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XHJcblxyXG4gIC5pY29uIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gIH1cclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVGaWVsZCBmcm9tICcuL1Z1ZUZpZWxkLnZ1ZSc7XHJcbmltcG9ydCBWdWVBY3Rpb25zIGZyb20gJy4vVnVlQWN0aW9ucy52dWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZUZpZWxkLFxyXG4gICAgICAgIFZ1ZUFjdGlvbnNcclxuICAgIH0sXHJcblxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBkYXRhOiBPYmplY3QsXHJcbiAgICAgICAgc3RhdGU6IE9iamVjdCxcclxuICAgICAgICBlbGVtZW50OiBPYmplY3RcclxuICAgIH0sXHJcblxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjaGFuZ2VMb2dWaXNpYmxlOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGNoYW5nZWxvZ0V4cGFuZGVkQ2xhc3MoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUxvZ1Zpc2libGUgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCc7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlVmVyc2lvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5hY3Rpb25zLnVwZGF0ZVZlcnNpb24gPyB0aGlzLmRhdGEuYWN0aW9ucy51cGRhdGVWZXJzaW9uIDogbnVsbDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBtYW5hZ2VBcHByb3ZhbCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5hY3Rpb25zLm1hbmFnZUFwcHJvdmFsID8gdGhpcy5kYXRhLmFjdGlvbnMubWFuYWdlQXBwcm92YWwgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGZvcm1hdENoYW5nZWxvZyhjb250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVZlcnNpb25BY3Rpb24oZXZlbnQsIGFjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdhY3Rpb24nLCB7IGV2ZW50LCBhY3Rpb24sIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCB9KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBtYW5hZ2VBcHByb3ZhbEFjdGlvbihldmVudCwgYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmVsZW1lbnQuZmllbGRzLnZBcHByb3ZhbExpbms7XHJcbiAgICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdObyBhcHByb3ZhbCBsaW5rIGF2YWlsYWJsZSBmb3IgdGhpcyBlbGVtZW50LicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH0sXHJcblxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCIndmVyc2lvbi1jb250cm9sJ1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXIgcmVhZG9ubHkgXCIgdi1pZj1cImVsZW1lbnQuZmllbGRzLnZBcHByb3ZhbFN0YXR1c0xhYmVsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJhcHByb3ZhbFwiPnt7IGRhdGEudHJhbnMuYXBwcm92YWxTdGF0dXMgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7eyBlbGVtZW50LmZpZWxkcy52QXBwcm92YWxTdGF0dXNMYWJlbCB9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciByZWFkb25seSBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImFwcHJvdmFsXCI+e3sgZGF0YS50cmFucy5hY3Rpb25zIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ3Z1ZS1idG4gJyArIHVwZGF0ZVZlcnNpb24uY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ1cGRhdGVWZXJzaW9uICYmICFlbGVtZW50LmZpZWxkcy52QXBwcm92YWxTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInVwZGF0ZVZlcnNpb25BY3Rpb24oJGV2ZW50LCB1cGRhdGVWZXJzaW9uKVwiIDpkaXNhYmxlZD1cInRoaXMuc3RhdGUuYWN0aW9uV2FpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVwZGF0ZVZlcnNpb24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ3Z1ZS1idG4gJyArIG1hbmFnZUFwcHJvdmFsLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICB2LWlmPVwibWFuYWdlQXBwcm92YWwgJiYgZWxlbWVudC5maWVsZHMudkFwcHJvdmFsU3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJtYW5hZ2VBcHByb3ZhbEFjdGlvbigkZXZlbnQsIG1hbmFnZUFwcHJvdmFsKVwiIDpkaXNhYmxlZD1cInRoaXMuc3RhdGUuYWN0aW9uV2FpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1hbmFnZUFwcHJvdmFsLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciBjb2wtbGFyZ2VcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY2hhbmdlbG9nc1wiIHYtaWY9XCJlbGVtZW50LmZpZWxkcy52Q2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidsYWJlbC1leHBhbmQtY29udGFpbmVyICcgKyBjaGFuZ2Vsb2dFeHBhbmRlZENsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWxgXCIgZm9yPVwiY2hhbmdlbG9ncy1jb250ZW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS50cmFucy5jaGFuZ2Vsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIEBjbGljaz1cImNoYW5nZUxvZ1Zpc2libGUgPSAhY2hhbmdlTG9nVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1DaGV2cm9uRG93biBsYWJlbC1leHBhbmQtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFuZ2Vsb2dzLWNvbnRlbnRcIiB2LWlmPVwiY2hhbmdlTG9nVmlzaWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIoY2hhbmdlbG9nLCBpbmRleCkgaW4gZWxlbWVudC5maWVsZHMudkNoYW5nZWxvZ1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDY+e3sgZGF0YS50cmFucy52ZXJzaW9uICsgJyAnICsgY2hhbmdlbG9nLnZlcnNpb24gKyAnLCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudHJhbnMucmV2aXNpb24gKyAnICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlbG9nLnJldmlzaW9uIH19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgdi1odG1sPVwiZm9ybWF0Q2hhbmdlbG9nKGNoYW5nZWxvZy5jb250ZW50KVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlPlxyXG4uY2hhbmdlbG9ncy1jb250ZW50IHtcclxuICAgIG1hcmdpbi10b3A6IDM2cHggIWltcG9ydGFudDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbn1cclxuXHJcbi5jaGFuZ2Vsb2dzIGg2IHtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVGaWVsZCBmcm9tICcuL1Z1ZUZpZWxkLnZ1ZSc7XHJcbmltcG9ydCBWdWVBY3Rpb25zIGZyb20gJy4vVnVlQWN0aW9ucy52dWUnO1xyXG5pbXBvcnQgVnVlRGV0YWlsTWl4aW4gZnJvbSAnLi4vbWl4aW5zL1Z1ZURldGFpbE1peGluJztcclxuaW1wb3J0IFZ1ZUNoaWxkcmVuRGV0YWlscyBmcm9tICcuL1Z1ZUNoaWxkcmVuRGV0YWlscy52dWUnO1xyXG5pbXBvcnQgVnVlVmVyc2lvbkNvbnRyb2wgZnJvbSAnLi9WdWVWZXJzaW9uQ29udHJvbC52dWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGNvbXBvbmVudHM6IHtcclxuICAgIFZ1ZUZpZWxkLFxyXG4gICAgVnVlQWN0aW9ucyxcclxuICAgIFZ1ZVZlcnNpb25Db250cm9sLFxyXG4gICAgVnVlQ2hpbGRyZW5EZXRhaWxzXHJcbiAgfSxcclxuXHJcbiAgbWl4aW5zOiBbVnVlRGV0YWlsTWl4aW5dLFxyXG5cclxuICBwcm9wczoge1xyXG4gICAgY2hpbGQ6IE9iamVjdCxcclxuICAgIGRhdGE6IE9iamVjdCxcclxuICAgIHN0YXRlOiBPYmplY3QsXHJcbiAgICBlbnRpdHk6IFN0cmluZyxcclxuICAgIGN1c3RvbWdyb3VwczogT2JqZWN0LFxyXG4gICAgaXNDaGlsZHJlbjogQm9vbGVhblxyXG4gIH0sXHJcblxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgOmNsYXNzPVwiZGV0YWlsQ2xhc3NcIiB2LWlmPVwiZWxlbWVudFwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ2dWUtZGV0YWlscy1zdGlja3ktaGVhZGVyXCI+XHJcbiAgICAgIDxzbG90IG5hbWU9XCJzdGlja3ktaGVhZGVyXCI+XHJcblxyXG4gICAgICAgIDxkaXYgdi1pZj1cImFjdGlvbkNhbmNlbFwiIGNsYXNzPVwiY2FuY2VsLWljb24tY29udGFpbmVyXCIgQGNsaWNrPVwib25DYW5jZWxDbGljaygkZXZlbnQsIGFjdGlvbkNhbmNlbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtcy1JY29uIG1zLUljb24tLUNhbmNlbFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvc2xvdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtY29udGVudFwiPlxyXG4gICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiPlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJjb250ZW50LWhlYWRlclwiPlxyXG4gICAgICAgICAgPGRpdiA6Y2xhc3M9XCIndnVlLWRldGFpbHMtaGVhZGVyIHRlbXAtZGV0YWlscydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIiA6bGFiZWw9XCJlbGVtZW50TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGl0bGVcIj57eyBlbGVtZW50TGFiZWwgfX0gPC9oMj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uXCIgdi1pZj1cImRhdGEuY29uZmlnLmhhc1ZlcnNpb25pbmcgJiYgZWxlbWVudCAmJiBlbGVtZW50LmZpZWxkcy52ZXJzaW9uTGFiZWxcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmllbGRzLnZlcnNpb25MYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gOmNsYXNzPVwiJ3N0YXR1cyAnICsgKGVsZW1lbnQgPyBlbGVtZW50LmZpZWxkcy5zdGF0dXMgOiAnJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJkYXRhLmNvbmZpZy5oYXNBcHByb3ZhbCAmJiBlbGVtZW50LmZpZWxkcy5zdGF0dXMgJiYgdGhpcy5kYXRhLmZpZWxkcy5zdGF0dXNcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhLmZpZWxkcy5zdGF0dXMuY2hvaWNlc1tlbGVtZW50LmZpZWxkcy5zdGF0dXNdLmxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlU3VidGl0bGVcIiA6ZWxlbWVudD1cImVsZW1lbnRcIj48L3Nsb3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInN1YnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ2dyb3VwLWJ0biAnICsgc2VsZWN0ZWRHcm91cENsYXNzKGdyb3VwKVwiIHYtZm9yPVwiZ3JvdXAgaW4gZGV0YWlsR3JvdXBzQnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdEdyb3VwKCRldmVudCwgZ3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tbGFiZWxcIj57eyBncm91cC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJleHRyYUJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgICAgICAgPC9zbG90PlxyXG5cclxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwb3N0U3VidGl0bGVcIiA6ZWxlbWVudD1cImVsZW1lbnRcIj48L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCIgdi1pZj1cImlzU2VjdGlvbkV4cGFuZGVkKCdzeXN0ZW1DaGlsZHJlbicpXCI+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJ2dWUtYm9yZGVyXCIgLz5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ2dyb3VwLWJ0biAnICsgc2VsZWN0ZWRDaGlsZEdyb3VwQ2xhc3MoY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJjaGlsZCBpbiBsb2FkZWRDaGlsZHJlbihlbGVtZW50LCBkZXRhaWxHcm91cHNbJ3N5c3RlbUNoaWxkcmVuJ10pXCJcclxuICAgICAgICAgICAgICAgICAgQGNsaWNrLnN0b3A9XCJzZWxlY3RDdXJyZW50Q2hpbGQoY2hpbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWxhYmVsXCI+e3sgZWxlbWVudENoaWxkTGFiZWwoY2hpbGQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljay5zdG9wPVwibmV3Q2hpbGRDdXN0b20oZWxlbWVudClcIiB2LXNob3c9XCJzaG93TmV3Q2hpbGRFbGVtZW50KGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cC1idG4gbmV3XCIgdi1pZj1cIiFlbGVtZW50Lm9wdGlvbnMucmVhZG9ubHlcIj48c3BhbiBjbGFzcz1cImJ0bi1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gbXMtSWNvbiBtcy1JY29uLS1BZGRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb24tbGFiZWxcIj57eyB0aGlzLmRhdGEudHJhbnMubmV3IH19PC9zcGFuPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiIHYtaWY9XCJpc1NlY3Rpb25FeHBhbmRlZCgnc3lzdGVtUHJldmlvdXNSZXZpc2lvbnMnKVwiPlxyXG4gICAgICAgICAgICAgIDxociBjbGFzcz1cInZ1ZS1ib3JkZXJcIiAvPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ2dyb3VwLWJ0biAnICsgc2VsZWN0ZWRQcmV2aW91c1JldmlzaW9uQ2xhc3MoY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgIHYtZm9yPVwiY2hpbGQgaW4gbG9hZGVkUHJldmlvdXNSZXZpc2lvbnMoZWxlbWVudCwgZGV0YWlsR3JvdXBzWydzeXN0ZW1QcmV2aW91c1JldmlzaW9ucyddKVwiXHJcbiAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cInNlbGVjdEN1cnJlbnRWZXJzaW9uKGNoaWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tbGFiZWxcIj57eyB2ZXJzaW9uTGFiZWwoY2hpbGQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2xvdD5cclxuICAgICAgICA8c2xvdCBuYW1lPVwiY29udGVudC1mb3JtXCI+XHJcbiAgICAgICAgICA8Zm9ybSBjbGFzcz1cInZ1ZS1mb3JtIHRlbXAtZm9ybVwiIEBzdWJtaXQucHJldmVudD1cIm9uU3VibWl0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgOmRhdGEta2V5PVwia2V5XCIgOmNsYXNzPVwiJ2Zvcm0tc2VjdGlvbiAnICsgY2xhc3NFeHBhbmRlZChncm91cC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoZ3JvdXAsIGtleSkgaW4gZGV0YWlsR3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImN1c3RvbUZpZWxkc0dlbmVyYWxSZXBsYWNlXCIgOmdyb3VwLW5hbWU9XCJncm91cC5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8VnVlRmllbGRcclxuICAgICAgICAgICAgICAgICAgdi1pZj1cInRoaXMuZGF0YS5jb25maWcucGFyZW50RmllbGRHcm91cCAmJiBrZXkgPT0gdGhpcy5kYXRhLmNvbmZpZy5wYXJlbnRGaWVsZEdyb3VwICYmICFvcmlnaW5hbFdpdGhDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgIDplbGVtZW50PVwiZWxlbWVudFwiIDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCIgOmZpZWxkPVwiZGF0YS5maWVsZHMuc3lzdGVtUGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgQGRvd25sb2FkRmlsZT1cIm9uRG93bmxvYWRGaWxlXCIgOmN1c3RvbVZhbHVlPVwic3lzdGVtUGFyZW50VmFsdWUoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICA6Y3VzdG9tQ2hvaWNlcz1cInN5c3RlbVBhcmVudENob2ljZXNcIiBAY2hhbmdlLXZhbHVlPVwib25TeXN0ZW1QYXJlbnRDaGFuZ2VWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIDpyZWFkb25seT1cImVsZW1lbnQucGFyZW50SWQgIT0gbnVsbFwiPiA8L1Z1ZUZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPFZ1ZUZpZWxkIHYtZm9yPVwiZmllbGQgaW4gZGV0YWlsRmllbGRzKGdyb3VwKVwiIDprZXk9XCJncm91cC5uYW1lICsgZmllbGQubmFtZVwiIDplbGVtZW50PVwiZWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgIDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCIgOmZpZWxkPVwiZmllbGRcIiBAY2hhbmdlLXZhbHVlPVwib25DaGFuZ2VWYWx1ZVwiIEB1cGxvYWRGaWxlPVwib25GaWxlVXBsb2FkXCJcclxuICAgICAgICAgICAgICAgICAgQGRvd25sb2FkRmlsZT1cIm9uRG93bmxvYWRGaWxlXCIgQHZpZXdGaWxlPVwib25WaWV3RmlsZVwiPjwvVnVlRmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8VnVlQ2hpbGRyZW5EZXRhaWxzIDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCIgOmNoaWxkPVwiY2hpbGRcIlxyXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cImNoaWxkIGluIGxvYWRlZENoaWxkcmVuKGVsZW1lbnQsIGdyb3VwKVwiIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCIgcmVmPVwiZGV0YWlsc1wiXHJcbiAgICAgICAgICAgICAgICAgIEB1cGxvYWQtZmlsZT1cIm9uRmlsZVVwbG9hZFwiIEBhY3Rpb25DbGljaz1cIm9uQWN0aW9uQ2xpY2tcIiBAY3VzdG9tQWN0aW9uPVwib25DdXN0b21BY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICA6aXNDaGlsZHJlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpjdXN0b21GaWVsZHNHZW5lcmFsPVwieyBncm91cE5hbWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjdXN0b21GaWVsZHNHZW5lcmFsXCIgOmdyb3VwLW5hbWU9XCJncm91cE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L1Z1ZUNoaWxkcmVuRGV0YWlscz5cclxuICAgICAgICAgICAgICAgIDxWdWVDaGlsZHJlbkRldGFpbHMgOmRhdGE9XCJkYXRhXCIgOnN0YXRlPVwic3RhdGVcIiA6Y2hpbGQ9XCJ0aGlzLmRhdGEuZWxlbWVudHNbY2hpbGQucmVjb3ZlckVudGl0eUlkXVwiXHJcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwiY2hpbGQgaW4gbG9hZGVkUHJldmlvdXNSZXZpc2lvbnMoZWxlbWVudCwgZ3JvdXApXCIgcmVmPVwiZGV0YWlsc1wiIEBhY3Rpb25DbGljaz1cIm9uQWN0aW9uQ2xpY2tcIlxyXG4gICAgICAgICAgICAgICAgICA6aXNDaGlsZHJlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpjdXN0b21GaWVsZHNHZW5lcmFsPVwieyBncm91cE5hbWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjdXN0b21GaWVsZHNHZW5lcmFsXCIgOmdyb3VwLW5hbWU9XCJncm91cE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L1Z1ZUNoaWxkcmVuRGV0YWlscz5cclxuICAgICAgICAgICAgICAgIDxWdWVWZXJzaW9uQ29udHJvbCB2LWlmPVwiZ3JvdXAubmFtZSA9PT0gJ3N5c3RlbVZlcnNpb25Db250cm9sJ1wiIDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgOmVsZW1lbnQ9XCJlbGVtZW50XCIgQGFjdGlvbj1cIm9uQWN0aW9uQ2xpY2tcIj5cclxuICAgICAgICAgICAgICAgIDwvVnVlVmVyc2lvbkNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiY3VzdG9tRmllbGRzR2VuZXJhbFwiIDpncm91cC1uYW1lPVwiZ3JvdXAubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgICAgIDwvc2xvdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjdXN0b21GaWVsZHNcIj5cclxuICAgICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvc2xvdD5cclxuICAgICAgPC9zbG90PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IDpjbGFzcz1cIidkZXRhaWwtZm9vdGVyICcgKyBhY3Rpb25XYWl0Q2xhc3NcIj5cclxuICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXNlLWRldGFpbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyQ29udGFpbmVyXCI+PC9zbG90PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG4gcHJpbWFyeVwiIHYtaWY9XCJhY3Rpb25TYXZlXCIgOmRpc2FibGVkPVwic2F2ZURpc2FibGVkXCJcclxuICAgICAgICAgICAgICBAY2xpY2s9XCJvblNhdmVDbGljaygkZXZlbnQsIGFjdGlvblNhdmUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aW9uU2F2ZS5sYWJlbCB9fTwvc3Bhbj4gPGkgdi1pZj1cInNhdmVEaXNhYmxlZCAmJiB0aGlzLnN0YXRlLnNhdmVBY3Rpb24gPT0gJ3NhdmUnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbiBtcy1JY29uIG1zLUljb24tLUNoZWNrTWFya1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdi1pZj1cImFjdGlvbkNhbmNlbFwiIGNsYXNzPVwidnVlLWJ0biBzZWNvbmRhcnlcIiBAY2xpY2s9XCJvbkNhbmNlbENsaWNrKCRldmVudCwgYWN0aW9uQ2FuY2VsKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGFjdGlvbkNhbmNlbC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdi1mb3I9XCJhY3Rpb24gaW4gZGV0YWlsQWN0aW9uc1wiIDprZXk9XCJhY3Rpb24ubmFtZVwiIGNsYXNzPVwidnVlLWJ0blwiIDpjbGFzcz1cImFjdGlvbi5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgQGNsaWNrPVwib25BY3Rpb25DbGljayh7ICRldmVudCwgYWN0aW9uIH0pXCIgOmRpc2FibGVkPVwiYWN0aW9uLnJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPiA8aSB2LWlmPVwiYWN0aW9uLmljb25cIiBjbGFzcz1cImljb24gbXMtSWNvbiBtcy1JY29uLS17eyBhY3Rpb24uaWNvbiB9fVwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJjdXN0b21CdXR0b25cIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItZXh0cmEtYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3Nsb3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlPlxyXG4uYmFzZS1kZXRhaWwtYWN0aW9ucyAudnVlLWJ0biB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAzMnB4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuXHJcbiAgLmljb24ge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgfVxyXG59XHJcblxyXG4uZ3JvdXAtYnRuLm5ldyB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmdyb3VwLWJ0bi5uZXcgLmJ0bi1sYWJlbCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4uZ3JvdXAtYnRuLm5ldyAuYWN0aW9uLWxhYmVsIHtcclxuICBtYXJnaW4tbGVmdDogMnB4O1xyXG59XHJcblxyXG4uZ3JvdXAtYnRuLm5ldyAuYnRuLWxhYmVsIGkge1xyXG4gIG1hcmdpbi1yaWdodDogNHB4ICFpbXBvcnRhbnQ7XHJcbiAgbWFyZ2luLWxlZnQ6IDRweDtcclxufVxyXG5cclxuaHIudnVlLWJvcmRlciB7XHJcbiAgb3BhY2l0eTogMTtcclxuICBjb2xvcjogI2VhZWFlYTtcclxufVxyXG5cclxuLmFjdGlvbi13YWl0LmRldGFpbC1mb290ZXIgKiB7XHJcbiAgb3BhY2l0eTogMC41O1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG4udGl0bGUtY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxufVxyXG5cclxuLnRpdGxlLWNvbnRhaW5lciBzcGFuIHtcclxuICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxNHB4O1xyXG59XHJcblxyXG4udGl0bGUtY29udGFpbmVyIC5zdGF0dXMuYWN0aXZlIHtcclxuICBjb2xvcjogIzBkNmVmZDtcclxuICAvKiBCb290c3RyYXAgNSBwcmltYXJ5ICovXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi50aXRsZS1jb250YWluZXIgLnN0YXR1cy5kcmFmdCB7XHJcbiAgY29sb3I6ICNkYzM1NDU7XHJcbiAgLyogQm9vdHN0cmFwIDUgZGFuZ2VyICovXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi50aXRsZS1jb250YWluZXIgLnN0YXR1cy51cGRhdGVkIHtcclxuICBjb2xvcjogI2ZmYzEwNztcclxuICAvKiBCb290c3RyYXAgNSB3YXJuaW5nICovXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5idG4tbGluay52dWUtZmllbGQtbGFiZWwgYnV0dG9uIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmJ0bi1saW5rLnZ1ZS1maWVsZC1sYWJlbCBhIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50O1xyXG4gICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAndXNlbW9kYWwtdnVlMyc7XHJcbmltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgQ0tFZGl0b3IgZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS12dWUnO1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgTW9kYWwsXHJcbiAgICAgICAgY2tlZGl0b3I6IENLRWRpdG9yLmNvbXBvbmVudCxcclxuXHJcbiAgICB9LFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBkYXRhOiBPYmplY3QsXHJcbiAgICAgICAgZW50aXR5OiBTdHJpbmcsXHJcbiAgICAgICAgc3RhdGU6IE9iamVjdCxcclxuICAgICAgICBlbGVtZW50OiBPYmplY3QsXHJcbiAgICAgICAgbWVzc2FnZXNWaXNpYmlsaXR5OiBPYmplY3RcclxuICAgIH0sXHJcbiAgICBkYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHZpc2libGU6IHJlZih0cnVlKVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGVkaXRvcigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZWRpdG9yID8gdGhpcy5zdGF0ZS5lZGl0b3IgOiBDbGFzc2ljRWRpdG9yO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZWRpdG9yQ29uZmlnKCkge1xyXG4gICAgICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5zdGF0ZS5lZGl0b3JDb25maWc7XHJcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyLnBsYWNlaG9sZGVyID0gdGhpcy5kYXRhLnRyYW5zLmNoYW5nZWxvZztcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFueVZpc2libGUoKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG1lc3NhZ2VJZCBpbiB0aGlzLm1lc3NhZ2VzVmlzaWJpbGl0eSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzVmlzaWJpbGl0eVttZXNzYWdlSWRdO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWVzc2FnZXMoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5tZXNzYWdlcylcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5tZXNzYWdlcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhbGVydE1lc3NhZ2VzKCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGF0YS5tZXNzYWdlcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IG1lc3NhZ2VJZCBpbiB0aGlzLmRhdGEubWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMuZGF0YS5tZXNzYWdlc1ttZXNzYWdlSWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1vZGUgPT0gJ2FsZXJ0JyAmJiB0aGlzLm1lc3NhZ2VzVmlzaWJpbGl0eVttZXNzYWdlLm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHByZXZpZXdGaWxlVXJsKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLnByZXZpZXdGaWxlVXJsO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3VzdG9tQ2hlY2tib3hDb25maWcoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuY29uZmlnLmN1c3RvbUZyb250ZW5kQ29uZmlnLmNoZWNrYm94ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBvbkNhbmNlbENsaWNrKGV2ZW50LCBtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2NhbmNlbE1vZGFsQ2xpY2snLCB7IG1lc3NhZ2U6IG1lc3NhZ2UsIGV2ZW50OiBldmVudCB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQWN0aW9uQ2xpY2soZXZlbnQsIG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2FjdGlvbk1vZGFsQ2xpY2snLCB7IG1lc3NhZ2U6IG1lc3NhZ2UsIGV2ZW50OiBldmVudCB9KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRTcGxpdENvbmZpZ3VyYXRpb24oZXZlbnQpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YS5jb25maWcuc3BsaXQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlQ29uZmlndXJhdGlvbicsIHsga2V5OiAnc3BsaXQnLCB2YWx1ZTogZXZlbnQudGFyZ2V0LmNoZWNrZWQsIHVzZXI6IHRydWUgfSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2V0Q3VzdG9tQ29uZmlnKGV2ZW50LCBjb25maWcpIHtcclxuICAgICAgICAgICAgY29uZmlnLnZhbHVlID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZUNvbmZpZ3VyYXRpb24nLCB7IGtleTogY29uZmlnLm5hbWUsIHZhbHVlOiBldmVudC50YXJnZXQuY2hlY2tlZCwgdXNlcjogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBtZXNzYWdlc1Zpc2liaWxpdHk6IHtcclxuICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdGhpcy5hbnlWaXNpYmxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZWVwOiB0cnVlXHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdmlzaWJsZToge1xyXG4gICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbiAodmFsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHZpc0lkIGluIHRoaXMubWVzc2FnZXNWaXNpYmlsaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNWaXNpYmlsaXR5W3Zpc0lkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgdi1mb3I9XCJtZXNzYWdlIGluIG1lc3NhZ2VzXCIgOmtleT1cIm1lc3NhZ2UubmFtZVwiPlxyXG4gICAgICAgICAgICA8TW9kYWwgY2xhc3M9XCJzaW1wbGUtbW9kYWwgXCIgdi1tb2RlbDp2aXNpYmxlPVwidmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICA6Y2FuY2VsLWJ1dHRvbj1cInsgdGV4dDogdGhpcy5kYXRhLnRyYW5zLmNhbmNlbCwgb25jbGljazogKCkgPT4geyB0aGlzLm9uQ2FuY2VsQ2xpY2soJGV2ZW50LCBtZXNzYWdlKSB9IH1cIlxyXG4gICAgICAgICAgICAgICAgdi1pZj1cIm1lc3NhZ2UubW9kZSA9PSAnbW9kYWwnICYmIG1lc3NhZ2VzVmlzaWJpbGl0eVttZXNzYWdlLm5hbWVdXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidzaW1wbGUtbW9kYWwtY29udGFpbmVyICdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FuY2VsLWljb24tY29udGFpbmVyXCIgQGNsaWNrPVwib25DYW5jZWxDbGljaygkZXZlbnQsIG1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtcy1JY29uIG1zLUljb24tLUNhbmNlbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC0taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0aXRsZVwiPnt7IG1lc3NhZ2UudGl0bGUgfX08L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtaWY9XCJtZXNzYWdlLm1lc3NhZ2VcIj57eyBtZXNzYWdlLm1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwic2ltcGxlTW9kYWxCb2R5XCIgOm1lc3NhZ2U9XCJtZXNzYWdlXCIgOmVkaXRvcj1cImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvckNvbmZpZz1cImVkaXRvckNvbmZpZ1wiPjwvc2xvdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50LS1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gOmNsYXNzPVwiJ3Z1ZS1idG4gJyArIG1lc3NhZ2UuYWN0aW9uQ2xhc3NcIiBAY2xpY2s9XCJvbkFjdGlvbkNsaWNrKCRldmVudCwgbWVzc2FnZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZXNzYWdlLmFjdGlvbkxhYmVsIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidnVlLWJ0blwiIEBjbGljaz1cIm9uQ2FuY2VsQ2xpY2soJGV2ZW50LCBtZXNzYWdlKVwiPnt7IHRoaXMuZGF0YS50cmFucy5jYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L01vZGFsPlxyXG4gICAgICAgICAgICA8TW9kYWwgY2xhc3M9XCJzaW1wbGUtbW9kYWwgY29uZmlndXJhdGlvblwiIHYtbW9kZWw6dmlzaWJsZT1cInZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgOmNhbmNlbC1idXR0b249XCJ7IHRleHQ6IHRoaXMuZGF0YS50cmFucy5jYW5jZWwsIG9uY2xpY2s6ICgpID0+IHsgdGhpcy5vbkNhbmNlbENsaWNrKCRldmVudCwgbWVzc2FnZSkgfSB9XCJcclxuICAgICAgICAgICAgICAgIHYtaWY9XCJtZXNzYWdlLm1vZGUgPT0gJ2NvbmZpZycgJiYgbWVzc2FnZXNWaXNpYmlsaXR5W21lc3NhZ2UubmFtZV1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ3NpbXBsZS1tb2RhbC1jb250YWluZXIgdnVlLWZvcm0nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbmNlbC1pY29uLWNvbnRhaW5lclwiIEBjbGljaz1cIm9uQ2FuY2VsQ2xpY2soJGV2ZW50LCBtZXNzYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbXMtSWNvbiBtcy1JY29uLS1DYW5jZWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IGZvcm0tc2VjdGlvbiBleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC0taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0aXRsZVwiPnt7IHRoaXMuZGF0YS50cmFucy5lbGVtZW50RGlzcGxheUNvbmZpZ3VyYXRpb24gfX08L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY2hlY2tib3gtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiYWN0aXZlXCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgaWQ9XCJhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJzZXRTcGxpdENvbmZpZ3VyYXRpb24oJGV2ZW50KVwiIDpjaGVja2VkPVwiZGF0YS5jb25maWcuc3BsaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPnt7IHRoaXMuZGF0YS50cmFucy5zcGxpdFNjcmVlbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwiY29uZmlnIGluIGN1c3RvbUNoZWNrYm94Q29uZmlnXCIgOmtleT1cImNvbmZpZy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBjaGVja2JveC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJhY3RpdmVcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiA6aWQ9XCJjb25maWcubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cInNldEN1c3RvbUNvbmZpZygkZXZlbnQsIGNvbmZpZylcIiA6Y2hlY2tlZD1cImNvbmZpZy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+e3sgY29uZmlnLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Nb2RhbD5cclxuXHJcbiAgICAgICAgICAgIDxNb2RhbCBjbGFzcz1cInNpbXBsZS1tb2RhbCBjb25maWd1cmF0aW9uIGRvY3VtZW50VXBkYXRlXCIgdi1tb2RlbDp2aXNpYmxlPVwidmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICA6Y2FuY2VsLWJ1dHRvbj1cInsgdGV4dDogdGhpcy5kYXRhLnRyYW5zLmNhbmNlbCwgb25jbGljazogKCkgPT4geyB0aGlzLm9uQ2FuY2VsQ2xpY2soJGV2ZW50LCBtZXNzYWdlKSB9IH1cIlxyXG4gICAgICAgICAgICAgICAgdi1pZj1cIm1lc3NhZ2UubW9kZSA9PSAnZG9jdW1lbnRVcGRhdGUnICYmIG1lc3NhZ2VzVmlzaWJpbGl0eVttZXNzYWdlLm5hbWVdXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInc2ltcGxlLW1vZGFsLWNvbnRhaW5lciB2dWUtZm9ybSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FuY2VsLWljb24tY29udGFpbmVyXCIgQGNsaWNrPVwib25DYW5jZWxDbGljaygkZXZlbnQsIG1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtcy1JY29uIG1zLUljb24tLUNhbmNlbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgZm9ybS1zZWN0aW9uIGV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50LS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRpdGxlXCI+e3sgbWVzc2FnZS50aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC0tYm9keVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZWRpdG9yLWxhYmVsXCI+e3sgdGhpcy5kYXRhLnRyYW5zLmNoYW5nZWxvZyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxja2VkaXRvciBjbGFzcz1cImNrLWVkaXRvclwiIDplZGl0b3I9XCJlZGl0b3JcIiB2LW1vZGVsPVwibWVzc2FnZS5kYXRhLmRvY3VtZW50Q2hhbmdlbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29uZmlnPVwiZWRpdG9yQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NrZWRpdG9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNoZWNrYm94LWdyb3VwIGRvY3VtZW50LXVwZGF0ZS1jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIiFtZXNzYWdlLmRhdGEuaGlkZVZlcnNpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJkb2N1bWVudFVwZGF0ZS1hY3RpdmVcIiBuYW1lPVwiYWN0aXZlXCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIm1lc3NhZ2UuZGF0YS5kb2N1bWVudElzTmV3VmVyc2lvbiA9ICRldmVudC50YXJnZXQuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjaGVja2VkPVwibWVzc2FnZS5kYXRhLmRvY3VtZW50SXNOZXdWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpc2FibGVkPVwibWVzc2FnZS5kYXRhLmZvcmNlZE5ld1ZlcnNpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZG9jdW1lbnRVcGRhdGUtYWN0aXZlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj57eyBkYXRhLnRyYW5zLmlzTmV3VmVyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleGlwcmF0aW9uLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwibWVzc2FnZS5kYXRhLnZlcnNpb25FeHBpcmF0aW9uRGF0ZSAmJiBtZXNzYWdlLmRhdGEucmV2aXNpb25FeHBpcmF0aW9uRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAobWVzc2FnZS5kYXRhLmRvY3VtZW50SXNOZXdWZXJzaW9uKSA/IG1lc3NhZ2UuZGF0YS52ZXJzaW9uRXhwaXJhdGlvbkRhdGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLnJldmlzaW9uRXhwaXJhdGlvbkRhdGUgfX0ge3sgZGF0YS50cmFucy5leHBpcmF0aW9uRGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiA6Y2xhc3M9XCIndnVlLWJ0biAnICsgbWVzc2FnZS5hY3Rpb25DbGFzc1wiIEBjbGljaz1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCBtZXNzYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2UuYWN0aW9uTGFiZWwgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2dWUtYnRuXCIgQGNsaWNrPVwib25DYW5jZWxDbGljaygkZXZlbnQsIG1lc3NhZ2UpXCI+e3sgdGhpcy5kYXRhLnRyYW5zLmNhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L01vZGFsPlxyXG5cclxuICAgICAgICAgICAgPE1vZGFsIGNsYXNzPVwic2ltcGxlLW1vZGFsIGNvbmZpZ3VyYXRpb24gdmVyc2lvblVwZGF0ZVwiIHYtbW9kZWw6dmlzaWJsZT1cInZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgOmNhbmNlbC1idXR0b249XCJ7IHRleHQ6IHRoaXMuZGF0YS50cmFucy5jYW5jZWwsIG9uY2xpY2s6ICgpID0+IHsgdGhpcy5vbkNhbmNlbENsaWNrKCRldmVudCwgbWVzc2FnZSkgfSB9XCJcclxuICAgICAgICAgICAgICAgIHYtaWY9XCJtZXNzYWdlLm1vZGUgPT0gJ3ZlcnNpb25VcGRhdGUnICYmIG1lc3NhZ2VzVmlzaWJpbGl0eVttZXNzYWdlLm5hbWVdXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInc2ltcGxlLW1vZGFsLWNvbnRhaW5lciB2dWUtZm9ybSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FuY2VsLWljb24tY29udGFpbmVyXCIgQGNsaWNrPVwib25DYW5jZWxDbGljaygkZXZlbnQsIG1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtcy1JY29uIG1zLUljb24tLUNhbmNlbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgZm9ybS1zZWN0aW9uIGV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50LS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRpdGxlXCI+e3sgbWVzc2FnZS50aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC0tYm9keVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZWRpdG9yLWxhYmVsXCI+e3sgdGhpcy5kYXRhLnRyYW5zLmNoYW5nZWxvZyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxja2VkaXRvciBjbGFzcz1cImNrLWVkaXRvclwiIDplZGl0b3I9XCJlZGl0b3JcIiB2LW1vZGVsPVwibWVzc2FnZS5kYXRhLmNoYW5nZWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbmZpZz1cImVkaXRvckNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ja2VkaXRvcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjaGVja2JveC1ncm91cCBkb2N1bWVudC11cGRhdGUtY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJkb2N1bWVudFVwZGF0ZS1hY3RpdmVcIiBuYW1lPVwiYWN0aXZlXCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIm1lc3NhZ2UuZGF0YS5pc05ld1ZlcnNpb24gPSAkZXZlbnQudGFyZ2V0LmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2hlY2tlZD1cIm1lc3NhZ2UuZGF0YS5pc05ld1ZlcnNpb25cIiA6ZGlzYWJsZWQ9XCJtZXNzYWdlLmRhdGEuZm9yY2VWZXJzaW9uVXBkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRvY3VtZW50VXBkYXRlLWFjdGl2ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+e3sgZGF0YS50cmFucy5pc05ld1ZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC0tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIDpjbGFzcz1cIid2dWUtYnRuICcgKyBtZXNzYWdlLmFjdGlvbkNsYXNzXCIgQGNsaWNrPVwib25BY3Rpb25DbGljaygkZXZlbnQsIG1lc3NhZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZS5hY3Rpb25MYWJlbCB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG5cIiBAY2xpY2s9XCJvbkNhbmNlbENsaWNrKCRldmVudCwgbWVzc2FnZSlcIj57eyB0aGlzLmRhdGEudHJhbnMuY2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvTW9kYWw+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwibm90aWZpY2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJtZXNzYWdlIGluIGFsZXJ0TWVzc2FnZXNcIiA6a2V5PVwibWVzc2FnZS5uYW1lXCIgOmNsYXNzPVwibWVzc2FnZS5hbGVydFR5cGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2UubWVzc2FnZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cIm5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPE1vZGFsIGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lclwiIHYtbW9kZWw6dmlzaWJsZT1cInZpc2libGVcIiA6Y2FuY2VsLWJ1dHRvbj1cInt9XCJcclxuICAgICAgICAgICAgdi1pZj1cIm1lc3NhZ2VzVmlzaWJpbGl0eVsndmlld0ZpbGVNb2RhbCddXCI+XHJcbiAgICAgICAgICAgIDxpZnJhbWUgdi1pZj1cInByZXZpZXdGaWxlVXJsXCIgOnNyYz1cInByZXZpZXdGaWxlVXJsXCIgZnJhbWVCb3JkZXI9XCIwXCIgc2Nyb2xsaW5nPVwiYXV0b1wiIGhlaWdodD1cIjEwMCVcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgPjwvaWZyYW1lPlxyXG4gICAgICAgIDwvTW9kYWw+XHJcbiAgICAgICAgPE1vZGFsIGNsYXNzPVwidmlkZW8tY29udGFpbmVyIGlmcmFtZS1jb250YWluZXJcIiB2LW1vZGVsOnZpc2libGU9XCJ2aXNpYmxlXCIgOmNhbmNlbC1idXR0b249XCJ7fVwiXHJcbiAgICAgICAgICAgIHYtaWY9XCJtZXNzYWdlc1Zpc2liaWxpdHlbJ3ZpZXdWaWRlb01vZGFsJ11cIj5cclxuICAgICAgICAgICAgPHZpZGVvIHYtaWY9XCJwcmV2aWV3RmlsZVVybFwiIGNvbnRyb2xzPlxyXG4gICAgICAgICAgICAgICAgPHNvdXJjZSA6c3JjPVwicHJldmlld0ZpbGVVcmxcIiB0eXBlPVwidmlkZW8vbXA0XCI+XHJcbiAgICAgICAgICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdmlkZW8gdGFnLlxyXG4gICAgICAgICAgICA8L3ZpZGVvPlxyXG4gICAgICAgIDwvTW9kYWw+XHJcbiAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGU+XHJcbi5tb2RhbHMtY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uZWRpdG9yLWxhYmVsIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5zaW1wbGUtbW9kYWwgLm1vZGFsLXZ1ZTMtY29udGVudCB7XHJcbiAgICB0b3A6IDI1dmggIWltcG9ydGFudDtcclxuICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNpbXBsZS1tb2RhbC5kb2N1bWVudFVwZGF0ZSAubW9kYWwtdnVlMy1jb250ZW50LFxyXG4uc2ltcGxlLW1vZGFsLnZlcnNpb25VcGRhdGUgLm1vZGFsLXZ1ZTMtY29udGVudCB7XHJcbiAgICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7XHJcbiAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5zaW1wbGUtbW9kYWwgLm1vZGFsLXZ1ZTMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnNpbXBsZS1tb2RhbCAubW9kYWwtdnVlMy1ib2R5IHtcclxuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uc2ltcGxlLW1vZGFsIC5tb2RhbC12dWUzLWZvb3RlciB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb25maWd1cmF0aW9uIC5zaW1wbGUtbW9kYWwtY29udGFpbmVyIC5tb2RhbC1jb250ZW50IHtcclxuICAgIHBhZGRpbmc6IDI0cHggMjRweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuLmNvbmZpZ3VyYXRpb24gLnNpbXBsZS1tb2RhbC1jb250YWluZXIgLm1vZGFsLWNvbnRlbnQgLmZvcm0tY2hlY2staW5wdXQge1xyXG5cclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbn1cclxuXHJcbi5jb25maWd1cmF0aW9uIC5zaW1wbGUtbW9kYWwtY29udGFpbmVyIC5tb2RhbC1jb250ZW50IC5jaGVja2JveC1ncm91cCB7XHJcbiAgICBtYXJnaW46IDBweDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4uY29uZmlndXJhdGlvbiAuZm9ybS1jaGVjay1pbnB1dDpmb2N1cyB7XHJcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb25maWd1cmF0aW9uIC5tb2RhbC1jb250ZW50LS1oZWFkZXIgaDIudGl0bGUge1xyXG4gICAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDIycHggIWltcG9ydGFudDtcclxuICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uaWZyYW1lLWNvbnRhaW5lciAubW9kYWwtdnVlMy1jb250ZW50IHtcclxuICAgIHdpZHRoOiA3MCUgIWltcG9ydGFudDtcclxuICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcclxuICAgIHRvcDogNTBweCAhaW1wb3J0YW50O1xyXG4gICAgcmVzaXplOiBib3RoO1xyXG4gICAgbWluLXdpZHRoOiAyMDBweDtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG59XHJcblxyXG4uaWZyYW1lLWNvbnRhaW5lciAubW9kYWwtdnVlMy1ib2R5IHtcclxuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udmlkZW8tY29udGFpbmVyIHZpZGVvIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaWZyYW1lLWNvbnRhaW5lci52aWRlby1jb250YWluZXIgLm1vZGFsLXZ1ZTMtY29udGVudCB7XHJcbiAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmlmcmFtZS1jb250YWluZXIudmlkZW8tY29udGFpbmVyIC5tb2RhbC12dWUzLWNvbnRlbnQgLm1vZGFsLXZ1ZTMtYm9keSB7XHJcbiAgICBtaW4taGVpZ2h0OiAyNzBweDtcclxuICAgIG1pbi13aWR0aDogNDgwcHg7XHJcbiAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmlmcmFtZS1jb250YWluZXIudmlkZW8tY29udGFpbmVyIC5tb2RhbC12dWUzLWNvbnRlbnQge1xyXG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xyXG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcclxuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnZpZGVvLWNvbnRhaW5lciAubW9kYWwtdnVlMy1mb290ZXIge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uY2suY2stZWRpdG9yX19tYWluPi5jay1lZGl0b3JfX2VkaXRhYmxlIHtcclxuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xyXG59XHJcblxyXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cC5kb2N1bWVudC11cGRhdGUtY2hlY2tib3gge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgVnVlSW5kZXggZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVJbmRleC52dWUnO1xyXG5pbXBvcnQgVnVlRmlsdGVyIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRmlsdGVyLnZ1ZSc7XHJcbmltcG9ydCBWdWVFbGVtZW50TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL1Z1ZUVsZW1lbnRNaXhpbic7XHJcbmltcG9ydCBWdWVFbGVtZW50IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRWxlbWVudC52dWUnO1xyXG5pbXBvcnQgVnVlRGV0YWlscyBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZURldGFpbHMudnVlJztcclxuaW1wb3J0IFZ1ZU1lc3NhZ2VzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlTWVzc2FnZXMudnVlJztcclxuaW1wb3J0IFZ1ZU11bHRpU2VsZWN0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmllbGRzL1Z1ZU11bHRpU2VsZWN0RmllbGQnO1xyXG5pbXBvcnQgVnVlRmllbGQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVGaWVsZC52dWUnO1xyXG5pbXBvcnQgeyBWdWVEcmFnZ2FibGVOZXh0IH0gZnJvbSAndnVlLWRyYWdnYWJsZS1uZXh0J1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZUluZGV4LFxyXG4gICAgICAgIFZ1ZUZpbHRlcixcclxuICAgICAgICBWdWVFbGVtZW50LFxyXG4gICAgICAgIFZ1ZURldGFpbHMsXHJcbiAgICAgICAgVnVlTWVzc2FnZXMsXHJcbiAgICAgICAgVnVlTXVsdGlTZWxlY3QsXHJcbiAgICAgICAgVnVlRmllbGQsXHJcbiAgICAgICAgVnVlRHJhZ2dhYmxlTmV4dFxyXG4gICAgfSxcclxuICAgIG1peGluczogW1Z1ZUVsZW1lbnRNaXhpbl0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGRhdGFTdHJpbmc6IFN0cmluZyxcclxuICAgICAgICBlbnRpdHk6IFN0cmluZyxcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ3JvdXBJbmRleERhdGE6IHt9LFxyXG4gICAgICAgICAgICBncm91cEZpZWxkT3JkZXI6IFtdLFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIG9uU3RhdGVVcGRhdGUodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1c3RvbVZpZXdzKCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VzdG9tVmlld3MnKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChsZXQgZmllbGRHcm91cElkIGluIHRoaXMuY3VycmVudEF0dHJpYnV0ZUdyb3Vwcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kaXNwbGF5Wydncm91cCcgKyBmaWVsZEdyb3VwSWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBRYXR0cmlidXRlT3B0aW9ucyhpbmRleCkge1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZGF0YS5maWVsZHMuZ3JvdXBzLmNob2ljZXM7XHJcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVPcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgICAgICAgICAgZm9yIChsZXQgb3B0aW9uSWQgaW4gb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4TnVtYmVyID0gcGFyc2VJbnQoaW5kZXgucmVwbGFjZSgnZ3JvdXAnLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRHcm91cCA9IHRoaXMuZ3JvdXBGaWVsZFtpbmRleE51bWJlcl07XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLmdyb3VwRmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT0gY3VycmVudEdyb3VwICYmIChncm91cC5hdHRyaWJ1dGVzLmluY2x1ZGVzKG9wdGlvbklkKSB8fCBncm91cC5hdHRyaWJ1dGVzLmluY2x1ZGVzKHBhcnNlSW50KG9wdGlvbklkKSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVPcHRpb25zW29wdGlvbklkXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU9wdGlvbnM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgUXNlbGVjdEF0dHJpYnV0ZXModmFsdWUsIGUsIGluZGV4KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZWxlY3RBdHRyaWJ1dGVzJywgdmFsdWUsIGUsIGluZGV4KTtcclxuICAgICAgICAgICAgbGV0IGluZGV4TnVtYmVyID0gcGFyc2VJbnQoaW5kZXgucmVwbGFjZSgnZ3JvdXAnLCAnJykpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHNbaW5kZXhOdW1iZXJdLmF0dHJpYnV0ZXMgPSB2YWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjbGFzc0V4cGFuZGVkKGNsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlY3Rpb25FeHBhbmRlZChjbGFzc05hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhY3RpdmVcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJoaWRkZW5cIjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlzU2VjdGlvbkV4cGFuZGVkKGNsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5W2NsYXNzTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGN1c3RvbURldGFpbEdyb3VwcyhjdXN0b25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgbGV0IGN1c3RvbUdyb3VwcyA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoIWN1c3Rvbk9ubHkpIHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbUdyb3VwcyA9IHsgLi4udGhpcy5kYXRhLmdyb3VwcyB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQgfHwgIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tR3JvdXBzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBmaWVsZEdyb3VwSWQgaW4gdGhpcy5jdXJyZW50QXR0cmlidXRlR3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmllbGRHcm91cCA9IHsgLi4uIHRoaXMuY3VycmVudEF0dHJpYnV0ZUdyb3Vwc1tmaWVsZEdyb3VwSWRdIH07XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSB7fTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmxhYmVsID0gZmllbGRHcm91cC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAubmFtZSA9IGZpZWxkR3JvdXAuaWQgfHwgJ25ldyc7XHJcbiAgICAgICAgICAgICAgICBncm91cC5hdHRyaWJ1dGVzID0gZmllbGRHcm91cC5hdHRyaWJ1dGVzO1xyXG4gICAgICAgICAgICAgICAgY3VzdG9tR3JvdXBzWydncm91cCcgKyBmaWVsZEdyb3VwSWRdID0gZ3JvdXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUdyb3VwcztcclxuICAgICAgICB9LFxyXG5cclxuXHJcbiAgICAgICAgUXNlbGVjdEdyb3VwKGUsIGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGdyb3VwIGluIHRoaXMuZGlzcGxheSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kaXNwbGF5W2dyb3VwXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZGlzcGxheVtncm91cC5uYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgUWNoYW5nZUdyb3VwTmFtZShldmVudCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4TnVtYmVyID0gcGFyc2VJbnQoaW5kZXgucmVwbGFjZSgnZ3JvdXAnLCAnJykpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHNbaW5kZXhOdW1iZXJdLm5hbWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgUWRlbGV0ZUF0dHJpYnV0ZUdyb3VwKGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0ZS5kaXNwbGF5Wydncm91cCcgKyBpbmRleF07XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSB0aGlzLmRhdGEuYWN0aW9ucy5zYXZlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnYWN0aW9uZEVMRVRFJywgYWN0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aW9uKG51bGwsIGFjdGlvbik7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgUWdyb3VwQWRkKCkge1xyXG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVNldE5ld0dyb3VwKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUFjdGlvbihudWxsLCB0aGlzLmRhdGEuYWN0aW9ucy5zYXZlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBRZ3JvdXBEZWxldGUoeyBpbmRleCB9KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlQXR0cmlidXRlR3JvdXAodGhpcy5ncm91cEluZGV4RGF0YVt0aGlzLmN1cnJlbnRFbGVtZW50LmlkXVtpbmRleCArIDFdKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBRZ3JvdXBVcGRhdGUoeyBpbmRleCwgdmFsdWUgfSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2dyb3VwVXBkYXRlJywgdmFsdWUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIFFncm91cFJlYXJyYW5nZSh7IHZhbHVlLCBvbGRWYWx1ZSB9KSB7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3VycmVudEdyb3VwKGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXBJZCA9IG51bGw7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGdyb3VwIGluIHRoaXMuc3RhdGUuZGlzcGxheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGlzcGxheVtncm91cF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXBJZCA9IGdyb3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChncm91cC5uYW1lICE9IGN1cnJlbnRHcm91cElkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgY3VycmVudEdyb3VwID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXBJZCBpbiB0aGlzLmN1cnJlbnRBdHRyaWJ1dGVHcm91cHMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZUdyb3Vwc1tncm91cElkXTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50R3JvdXBJZCA9PSBncm91cC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9IGdyb3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50R3JvdXA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhdHRyaWJ1dGVGaWVsZHMoZ3JvdXApIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2dyb3VwJywgZ3JvdXApO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudEdyb3VwID0gdGhpcy5jdXJyZW50R3JvdXAoZ3JvdXApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudEdyb3VwRmllbGRzJywgY3VycmVudEdyb3VwKTtcclxuICAgICAgICAgICAgbGV0IGZpZWxkcyA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGVJZCBpbiBncm91cC5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5maWVsZHMgJiYgY3VycmVudEdyb3VwLmZpZWxkcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnRHcm91cC5maWVsZHMnLCBjdXJyZW50R3JvdXAuZmllbGRzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwLmZpZWxkcy5kYXRhW2dyb3VwLmF0dHJpYnV0ZXNbYXR0cmlidXRlSWRdXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbYXR0cmlidXRlSWRdID0geyB2YWx1ZTogY3VycmVudEdyb3VwLmZpZWxkcy5kYXRhW2dyb3VwLmF0dHJpYnV0ZXNbYXR0cmlidXRlSWRdXSwgaWQ6IGdyb3VwLmF0dHJpYnV0ZXNbYXR0cmlidXRlSWRdIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlQWN0aW9uKG51bGwsIHRoaXMuZGF0YS5hY3Rpb25zLnNhdmUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZmllbGRzJywgZmllbGRzKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdHRyaWJ1dGVWYWx1ZShncm91cCwgYXR0cmlidXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVWYWx1ZScsIGdyb3VwLCBhdHRyaWJ1dGUpO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudEdyb3VwID0gdGhpcy5jdXJyZW50R3JvdXAoZ3JvdXApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwLmZpZWxkcyAmJiBjdXJyZW50R3JvdXAuZmllbGRzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYXR0cmlidXRlVmFsdWUnLCBjdXJyZW50R3JvdXAuZmllbGRzLnZhbHVlW2F0dHJpYnV0ZS5uYW1lXSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyAndmFsdWUnOiBjdXJyZW50R3JvdXAuZmllbGRzLnZhbHVlW2F0dHJpYnV0ZS5uYW1lXSB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geyAndmFsdWUnOiBudWxsIH07XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXR0cmlidXRlVXBkYXRlKHsgbmFtZSwgdmFsdWUsIGN1c3RvbVJldHVyblZhbHVlIH0pIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2F0dHJpYnV0ZVVwZGF0ZScsIG5hbWUsIHZhbHVlLCBjdXN0b21SZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSB0aGlzLmN1cnJlbnRHcm91cChjdXN0b21SZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICghY3VycmVudEdyb3VwLmZpZWxkcykge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmZpZWxkcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY3VycmVudEdyb3VwLmZpZWxkcy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEdyb3VwLmZpZWxkcy52YWx1ZSA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRHcm91cC5maWVsZHMudmFsdWVbbmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzaG93QXR0cmlidXRlKGdyb3VwLCBpbmRleCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXAuYXR0cmlidXRlcy5pbmNsdWRlcyhOdW1iZXIoaW5kZXgpKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdHRyaWJ1dGVPcmRlckxpc3QoZ3JvdXApIHtcclxuICAgICAgICAgICAgbGV0IG9yZGVyTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBhdHRyaWJ1dGVJZCBpbiBncm91cC5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gdGhpcy5kYXRhLmZpZWxkcy5ncm91cHMuY2hvaWNlc1tncm91cC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZUlkXV07XHJcbiAgICAgICAgICAgICAgICBsZXQgb3JkZXIgPSB7ICduYW1lJzogYXR0cmlidXRlLmxhYmVsLCAnaWQnOiBhdHRyaWJ1dGUudmFsdWUgfTtcclxuICAgICAgICAgICAgICAgIG9yZGVyTGlzdC5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXJMaXN0O1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIG9yZGVyVXBkYXRlKHsgdmFsdWUsIGN1c3RvbVJldHVyblZhbHVlIH0pIHtcclxuICAgICAgICAgICAgO1xyXG5cclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRHcm91cCA9IHRoaXMuY3VycmVudEdyb3VwKGN1c3RvbVJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRPcmRlciA9IFtdO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudEdyb3VwJywgY3VycmVudEdyb3VwKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgb3JkZXIgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcmRlcltvcmRlcl0gPSB2YWx1ZVtvcmRlcl0uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEdyb3VwLmF0dHJpYnV0ZXMgPSBjdXJyZW50T3JkZXI7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50R3JvdXAnLCBjdXJyZW50R3JvdXApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudE9yZGVyJywgY3VycmVudE9yZGVyKTtcclxuICAgICAgICB9LFxyXG4gICAgfSxcclxuXHJcbiAgICBjb21wdXRlZDoge1xyXG5cclxuICAgICAgICBkaXNwbGF5KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kaXNwbGF5O1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1cnJlbnRFbGVtZW50KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdHRyaWJ1dGVTZXRGaWVsZHMoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzLmF0dHJpYnV0ZVNldDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjdXJyZW50QXR0cmlidXRlU2V0KCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuYXR0cmlidXRlU2V0O1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1cnJlbnRBdHRyaWJ1dGVHcm91cHMoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5hdHRyaWJ1dGVHcm91cHM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb3JkZXJWYWx1ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLm9yZGVyO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIFFncm91cFZhbHVlKCkge1xyXG4gICAgICAgICAgICBsZXQgZ3JvdXBWYWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBncm91cElkIGluIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW2dyb3VwSWRdO1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBWYWx1ZS5wdXNoKGdyb3VwLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwSW5kZXhEYXRhW3RoaXMuY3VycmVudEVsZW1lbnQuaWRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cEluZGV4RGF0YVt0aGlzLmN1cnJlbnRFbGVtZW50LmlkXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cEluZGV4RGF0YVt0aGlzLmN1cnJlbnRFbGVtZW50LmlkXVtncm91cFZhbHVlLmxlbmd0aF0gPSBncm91cElkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBncm91cFZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNldENvbmZpZygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaXN0JyxcclxuICAgICAgICAgICAgICAgIGxpc3RUeXBlOiAnYXJyYXknLFxyXG4gICAgICAgICAgICAgICAgY3NzOiAnY29sLWxhcmdlICcsXHJcbiAgICAgICAgICAgICAgICBhZGQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhZGRMYWJlbDogJ0FkZCBHcm91cCcsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21BZGRBY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21EZWxldGVBY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tQ2hhbmdlQWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbURyYWdnYWJsZUFjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhcnJheUxpc3RMYWJlbEZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBjdXJyZW50QXR0cmlidXRlU2V0OiB7XHJcbiAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uICh2YWx1ZSwgb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBvbGRWYWx1ZSAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUFjdGlvbihudWxsLCB0aGlzLmRhdGEuYWN0aW9ucy5zYXZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCIndnVlLWRvY3VtZW50LWNvbnRhaW5lciB2dWUtc3BsaXQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcblxyXG4gICAgICAgIDxWdWVJbmRleCAgOnN0YXRlPVwic3RhdGVcIiA6ZGF0YT1cImRhdGFcIiA6ZW50aXR5PVwiZW50aXR5XCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiIEBnbG9iYWxBY3Rpb25DbGljaz1cIm9uR2xvYmFsQWN0aW9uQ2xpY2tcIlxyXG4gICAgICAgICAgICByZWY9XCJpbmRleFwiIDpjdXJyZW50RWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCIgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYWdiYXIgbmV3LWRyYWdiYXJcIiBAbW91c2Vkb3duPVwiZHJhZygkZXZlbnQpXCIgQG1vdXNldXA9XCJzdG9wRHJhZygkZXZlbnQpXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDxWdWVEZXRhaWxzIDpkYXRhPVwiZGF0YVwiIDplbnRpdHk9XCJlbnRpdHlcIiA6c3RhdGU9XCJzdGF0ZVwiIHYtc2hvdz1cInRoaXMuc3RhdGUudmlldyA9PT0gJ2RldGFpbHMnXCJcclxuICAgICAgICAgICAgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIiByZWY9XCJkZXRhaWxzXCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiXHJcbiAgICAgICAgICAgIDpjdXN0b21ncm91cHM9XCJjdXN0b21EZXRhaWxHcm91cHMoKVwiPlxyXG5cclxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpjdXN0b21GaWVsZHM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidmb3JtLXNlY3Rpb24gJyArIGNsYXNzRXhwYW5kZWQoZ3JvdXAubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtZm9yPVwiKGdyb3VwLCBpbmRleCkgaW4gY3VzdG9tRGV0YWlsR3JvdXBzKHRydWUpXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFZ1ZUZpZWxkIHYtc2hvdz1cInNob3dBdHRyaWJ1dGUoZ3JvdXAsIGF0dHJpYnV0ZS5pZClcIiA6a2V5PVwiJ2F0dHJpYnV0ZScgKyBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDplbGVtZW50PVwic3RhdGUuY3VycmVudEVsZW1lbnRcIiA6ZGF0YT1cImRhdGFcIiA6ZmllbGQ9XCJhdHRyaWJ1dGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y3VzdG9tLXZhbHVlPVwiYXR0cmlidXRlVmFsdWUoZ3JvdXAsIGF0dHJpYnV0ZS52YWx1ZSlcIiBAY2hhbmdlLXZhbHVlPVwiYXR0cmlidXRlVXBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOmN1c3RvbS1yZXR1cm4tdmFsdWU9XCJncm91cFwiIHYtZm9yPVwiKGF0dHJpYnV0ZSwgaW5kZXgpIGluIGF0dHJpYnV0ZUZpZWxkcyhncm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1Z1ZUZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Y3VzdG9tLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L1Z1ZURldGFpbHM+XHJcblxyXG5cclxuICAgICAgICA8VnVlTWVzc2FnZXMgOmRhdGE9XCJkYXRhXCIgOmVudGl0eT1cImVudGl0eVwiIDpzdGF0ZT1cInN0YXRlXCIgOmVsZW1lbnQ9XCJjdXJyZW50RWxlbWVudFwiIEBjYW5jZWxNb2RhbENsaWNrPVwib25DYW5jZWxNb2RhbENsaWNrXCJcclxuICAgICAgICAgICAgQGFjdGlvbk1vZGFsQ2xpY2s9XCJvbkFjdGlvbk1vZGFsQ2xpY2tcIiA6bWVzc2FnZXNWaXNpYmlsaXR5PVwibWVzc2FnZXNWaXNpYmlsaXR5XCIgQGNoYW5nZUNvbmZpZ3VyYXRpb249XCJvbkNoYW5nZUNvbmZpZ3VyYXRpb25cIj5cclxuICAgICAgICA8L1Z1ZU1lc3NhZ2VzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kLWJsdXJlZFwiIHYtaWY9XCIhZGF0YS5jb25maWcuc3BsaXQgJiYgdGhpcy5zdGF0ZS52aWV3ID09PSAnZGV0YWlscydcIiBAY2xpY2s9XCJpbmRleE1vZGUoKVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLm5ldy1hdHRyaWJ1dGUge1xyXG4gICAgY29sb3I6IHJnYigwLCAxMDgsIDE5MCk7XHJcbn1cclxuXHJcbi5uZXctYXR0cmlidXRlLWdyb3VwIGkge1xyXG4gICAgYm90dG9tOiAtMnB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG5cclxuLmRlbGV0ZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgVnVlSW5kZXggZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVJbmRleC52dWUnO1xyXG5pbXBvcnQgVnVlRmlsdGVyIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRmlsdGVyLnZ1ZSc7XHJcbmltcG9ydCBWdWVFbGVtZW50TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL1Z1ZUVsZW1lbnRNaXhpbic7XHJcbmltcG9ydCBWdWVFbGVtZW50IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRWxlbWVudC52dWUnO1xyXG5pbXBvcnQgVnVlRGV0YWlscyBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZURldGFpbHMudnVlJztcclxuaW1wb3J0IFZ1ZU1lc3NhZ2VzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlTWVzc2FnZXMudnVlJztcclxuaW1wb3J0IFZ1ZU11bHRpU2VsZWN0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmllbGRzL1Z1ZU11bHRpU2VsZWN0RmllbGQnO1xyXG5pbXBvcnQgVnVlRmllbGQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVGaWVsZC52dWUnO1xyXG5pbXBvcnQgeyBWdWVEcmFnZ2FibGVOZXh0IH0gZnJvbSAndnVlLWRyYWdnYWJsZS1uZXh0J1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZUluZGV4LFxyXG4gICAgICAgIFZ1ZUZpbHRlcixcclxuICAgICAgICBWdWVFbGVtZW50LFxyXG4gICAgICAgIFZ1ZURldGFpbHMsXHJcbiAgICAgICAgVnVlTWVzc2FnZXMsXHJcbiAgICAgICAgVnVlTXVsdGlTZWxlY3QsXHJcbiAgICAgICAgVnVlRmllbGQsXHJcbiAgICAgICAgVnVlRHJhZ2dhYmxlTmV4dFxyXG4gICAgfSxcclxuICAgIG1peGluczogW1Z1ZUVsZW1lbnRNaXhpbl0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGRhdGFTdHJpbmc6IFN0cmluZyxcclxuICAgICAgICBlbnRpdHk6IFN0cmluZyxcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ3JvdXBJbmRleERhdGE6IHt9LFxyXG4gICAgICAgICAgICBncm91cEZpZWxkT3JkZXI6IFtdLFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIG9uU3RhdGVVcGRhdGUodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1c3RvbVZpZXdzKCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGxldCBmaWVsZEdyb3VwSWQgaW4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRpc3BsYXlbJ2dyb3VwJyArIGZpZWxkR3JvdXBJZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGF0dHJpYnV0ZU9wdGlvbnMoaW5kZXgpIHtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLmRhdGEuZmllbGRzLmdyb3Vwcy5jaG9pY2VzO1xyXG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlT3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XHJcbiAgICAgICAgICAgIGZvciAobGV0IG9wdGlvbklkIGluIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBpbmRleE51bWJlciA9IHBhcnNlSW50KGluZGV4LnJlcGxhY2UoJ2dyb3VwJywgJycpKTtcclxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSB0aGlzLmdyb3VwRmllbGRbaW5kZXhOdW1iZXJdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5ncm91cEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9IGN1cnJlbnRHcm91cCAmJiAoZ3JvdXAuYXR0cmlidXRlcy5pbmNsdWRlcyhvcHRpb25JZCkgfHwgZ3JvdXAuYXR0cmlidXRlcy5pbmNsdWRlcyhwYXJzZUludChvcHRpb25JZCkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlT3B0aW9uc1tvcHRpb25JZF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVPcHRpb25zO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdEF0dHJpYnV0ZXModmFsdWUsIGUsIGluZGV4KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZWxlY3RBdHRyaWJ1dGVzJywgdmFsdWUsIGUsIGluZGV4KTtcclxuICAgICAgICAgICAgbGV0IGluZGV4TnVtYmVyID0gcGFyc2VJbnQoaW5kZXgucmVwbGFjZSgnZ3JvdXAnLCAnJykpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHNbaW5kZXhOdW1iZXJdLmF0dHJpYnV0ZXMgPSB2YWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjbGFzc0V4cGFuZGVkKGNsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlY3Rpb25FeHBhbmRlZChjbGFzc05hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhY3RpdmVcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gXCJoaWRkZW5cIjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlzU2VjdGlvbkV4cGFuZGVkKGNsYXNzTmFtZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5W2NsYXNzTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGN1c3RvbUdyb3VwcyhjdXN0b25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgbGV0IGN1c3RvbUdyb3VwcyA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoIWN1c3Rvbk9ubHkpIHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbUdyb3VwcyA9IHsgLi4udGhpcy5kYXRhLmdyb3VwcyB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQgfHwgIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tR3JvdXBzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBmaWVsZEdyb3VwSWQgaW4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmllbGRHcm91cCA9IHsgLi4uIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1tmaWVsZEdyb3VwSWRdIH07XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSB7fTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmxhYmVsID0gZmllbGRHcm91cC5uYW1lO1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAubmFtZSA9IGZpZWxkR3JvdXAuaWQgfHwgJ25ldyc7XHJcbiAgICAgICAgICAgICAgICBncm91cC5hdHRyaWJ1dGVzID0gZmllbGRHcm91cC5hdHRyaWJ1dGVzO1xyXG4gICAgICAgICAgICAgICAgY3VzdG9tR3JvdXBzWydncm91cCcgKyBmaWVsZEdyb3VwSWRdID0gZ3JvdXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUdyb3VwcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhdHRyaWJ1dGVTZXROZXdHcm91cChuYW1lKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKCFlbGVtZW50LmZpZWxkcy5ncm91cHMpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuZmllbGRzLmdyb3VwcyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZpZWxkcy5ncm91cHNbZWxlbWVudC5maWVsZHMuZ3JvdXBzLmxlbmd0aCAtIDFdICYmIGVsZW1lbnQuZmllbGRzLmdyb3Vwc1tlbGVtZW50LmZpZWxkcy5ncm91cHMubGVuZ3RoIC0gMV0ubmV3KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUgPz8gJ05ldyBHcm91cCcsXHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2VsZWN0R3JvdXAoZSwgZ3JvdXApIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXAgaW4gdGhpcy5kaXNwbGF5KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRpc3BsYXlbZ3JvdXBdID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kaXNwbGF5W2dyb3VwLm5hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjaGFuZ2VHcm91cE5hbWUoZXZlbnQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleE51bWJlciA9IHBhcnNlSW50KGluZGV4LnJlcGxhY2UoJ2dyb3VwJywgJycpKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW2luZGV4TnVtYmVyXS5uYW1lID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRlbGV0ZUF0dHJpYnV0ZUdyb3VwKGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0ZS5kaXNwbGF5Wydncm91cCcgKyBpbmRleF07XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSB0aGlzLmRhdGEuYWN0aW9ucy5zYXZlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnYWN0aW9uZEVMRVRFJywgYWN0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aW9uKG51bGwsIGFjdGlvbik7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ3JvdXBBZGQoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlU2V0TmV3R3JvdXAoKTtcclxuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aW9uKG51bGwsIHRoaXMuZGF0YS5hY3Rpb25zLnNhdmUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdyb3VwRGVsZXRlKHsgaW5kZXggfSkge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUF0dHJpYnV0ZUdyb3VwKHRoaXMuZ3JvdXBJbmRleERhdGFbdGhpcy5jdXJyZW50RWxlbWVudC5pZF1baW5kZXggKyAxXSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ3JvdXBVcGRhdGUoeyBpbmRleCwgdmFsdWUgfSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2dyb3VwVXBkYXRlJywgdmFsdWUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdyb3VwUmVhcnJhbmdlKHsgdmFsdWUsIG9sZFZhbHVlIH0pIHtcclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjdXJyZW50R3JvdXAoZ3JvdXApIHtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRHcm91cElkID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXAgaW4gdGhpcy5zdGF0ZS5kaXNwbGF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kaXNwbGF5W2dyb3VwXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cElkID0gZ3JvdXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdyb3VwLm5hbWUgIT0gY3VycmVudEdyb3VwSWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBncm91cElkIGluIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW2dyb3VwSWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cElkID09IGdyb3VwLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEdyb3VwID0gZ3JvdXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRHcm91cDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGF0dHJpYnV0ZUZpZWxkcyhncm91cCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZ3JvdXAnLCBncm91cCk7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSB0aGlzLmN1cnJlbnRHcm91cChncm91cCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50R3JvdXBGaWVsZHMnLCBjdXJyZW50R3JvdXApO1xyXG4gICAgICAgICAgICBsZXQgZmllbGRzID0ge307XHJcbiAgICAgICAgICAgIGZvciAobGV0IGF0dHJpYnV0ZUlkIGluIGdyb3VwLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50R3JvdXAgJiYgY3VycmVudEdyb3VwLmZpZWxkcyAmJiBjdXJyZW50R3JvdXAuZmllbGRzLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudEdyb3VwLmZpZWxkcycsIGN1cnJlbnRHcm91cC5maWVsZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50R3JvdXAuZmllbGRzLmRhdGFbZ3JvdXAuYXR0cmlidXRlc1thdHRyaWJ1dGVJZF1dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1thdHRyaWJ1dGVJZF0gPSB7IHZhbHVlOiBjdXJyZW50R3JvdXAuZmllbGRzLmRhdGFbZ3JvdXAuYXR0cmlidXRlc1thdHRyaWJ1dGVJZF1dLCBpZDogZ3JvdXAuYXR0cmlidXRlc1thdHRyaWJ1dGVJZF0gfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVBY3Rpb24obnVsbCwgdGhpcy5kYXRhLmFjdGlvbnMuc2F2ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdmaWVsZHMnLCBmaWVsZHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmllbGRzO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGF0dHJpYnV0ZVZhbHVlKGdyb3VwLCBhdHRyaWJ1dGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2F0dHJpYnV0ZVZhbHVlJywgZ3JvdXAsIGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSB0aGlzLmN1cnJlbnRHcm91cChncm91cCk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50R3JvdXAuZmllbGRzICYmIGN1cnJlbnRHcm91cC5maWVsZHMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVWYWx1ZScsIGN1cnJlbnRHcm91cC5maWVsZHMudmFsdWVbYXR0cmlidXRlLm5hbWVdKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7ICd2YWx1ZSc6IGN1cnJlbnRHcm91cC5maWVsZHMudmFsdWVbYXR0cmlidXRlLm5hbWVdIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7ICd2YWx1ZSc6IG51bGwgfTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgc2hvd0F0dHJpYnV0ZShncm91cCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwLmF0dHJpYnV0ZXMuaW5jbHVkZXMoTnVtYmVyKGluZGV4KSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXR0cmlidXRlT3JkZXJMaXN0KGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGxldCBvcmRlckxpc3QgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlSWQgaW4gZ3JvdXAuYXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuZGF0YS5maWVsZHMuZ3JvdXBzLmNob2ljZXNbZ3JvdXAuYXR0cmlidXRlc1thdHRyaWJ1dGVJZF1dO1xyXG4gICAgICAgICAgICAgICAgbGV0IG9yZGVyID0geyAnbmFtZSc6IGF0dHJpYnV0ZS5sYWJlbCwgJ2lkJzogYXR0cmlidXRlLnZhbHVlIH07XHJcbiAgICAgICAgICAgICAgICBvcmRlckxpc3QucHVzaChvcmRlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG9yZGVyTGlzdDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvcmRlclVwZGF0ZSh7IHZhbHVlLCBjdXN0b21SZXR1cm5WYWx1ZSB9KSB7XHJcbiAgICAgICAgICAgIDtcclxuXHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSB0aGlzLmN1cnJlbnRHcm91cChjdXN0b21SZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50T3JkZXIgPSBbXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnRHcm91cCcsIGN1cnJlbnRHcm91cCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG9yZGVyIGluIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3JkZXJbb3JkZXJdID0gdmFsdWVbb3JkZXJdLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRHcm91cC5hdHRyaWJ1dGVzID0gY3VycmVudE9yZGVyO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudEdyb3VwJywgY3VycmVudEdyb3VwKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnRPcmRlcicsIGN1cnJlbnRPcmRlcik7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXR0cmlidXRlT3JkZXJVcGRhdGUoZ3JvdXBOYW1lKXtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRHcm91cCA9IHRoaXMuY3VycmVudEdyb3VwKGdyb3VwTmFtZSk7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50T3JkZXIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgb3JkZXIgaW4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMub3JkZXIpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcmRlcltvcmRlcl0gPSB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5vcmRlcltvcmRlcl0uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEdyb3VwLmF0dHJpYnV0ZXMgPSBjdXJyZW50T3JkZXI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ3JvdXBJbmRleEJ5TmFtZShncm91cG5hbWUpe1xyXG4gICAgICAgICAgICBmb3IgKGxldCBncm91cElkIGluIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW2dyb3VwSWRdO1xyXG4gICAgICAgICAgICAgICAgaWYoZ3JvdXAuaWQgPT0gZ3JvdXBuYW1lKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZ3JvdXBJZCcsIGdyb3VwSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cElkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGF0dHJpYnV0ZVVwZGF0ZSh7IG5hbWUsIHZhbHVlLCBjdXN0b21SZXR1cm5WYWx1ZSB9KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVVcGRhdGUnLCBuYW1lLCB2YWx1ZSwgY3VzdG9tUmV0dXJuVmFsdWUpO1xyXG4gICAgICAgICAgICBsZXQgY3VycmVudEdyb3VwID0gdGhpcy5jdXJyZW50R3JvdXAoY3VzdG9tUmV0dXJuVmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC5maWVsZHMpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cC5maWVsZHMgPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC5maWVsZHMudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cC5maWVsZHMudmFsdWUgPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudEdyb3VwJywgY3VycmVudEdyb3VwKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2dyb3VwSW5kZXhCeU5hbWUnLCB0aGlzLmdyb3VwSW5kZXhCeU5hbWUoY3VycmVudEdyb3VwLmlkKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVVcGRhdGVWYWx1ZScsIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1t0aGlzLmdyb3VwSW5kZXhCeU5hbWUoY3VycmVudEdyb3VwLmlkKV0uZmllbGRzLnZhbHVlW25hbWVdICk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1t0aGlzLmdyb3VwSW5kZXhCeU5hbWUoY3VycmVudEdyb3VwLmlkKV0uZmllbGRzLnZhbHVlW25hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVVcGRhdGVWYWx1ZScsIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1t0aGlzLmdyb3VwSW5kZXhCeU5hbWUoY3VycmVudEdyb3VwLmlkKV0uZmllbGRzLnZhbHVlW25hbWVdICk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ2V0Q3VzdG9tVmFsdWUoZ3JvdXAsIGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW3RoaXMuZ3JvdXBJbmRleEJ5TmFtZShncm91cC5uYW1lKV0uZmllbGRzLnZhbHVlW2F0dHJpYnV0ZS5pZF07XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGdyb3VwRmllbGQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZGlzcGxheSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZGlzcGxheTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjcmVhdGVHcm91cEFjdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5hY3Rpb25zLmNyZWF0ZUdyb3VwO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGN1cnJlbnRFbGVtZW50KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBncm91cEZpZWxkRGF0YSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWVsZHMuZ3JvdXBzO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIG9yZGVyRmllbGREYXRhKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpZWxkcy5vcmRlcjtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvcmRlclZhbHVlKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMub3JkZXI7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZ3JvdXBWYWx1ZSgpIHtcclxuICAgICAgICAgICAgbGV0IGdyb3VwVmFsdWUgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXBJZCBpbiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBncm91cCA9IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1tncm91cElkXTtcclxuICAgICAgICAgICAgICAgIGdyb3VwVmFsdWUucHVzaChncm91cC5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ncm91cEluZGV4RGF0YVt0aGlzLmN1cnJlbnRFbGVtZW50LmlkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJbmRleERhdGFbdGhpcy5jdXJyZW50RWxlbWVudC5pZF0gPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJbmRleERhdGFbdGhpcy5jdXJyZW50RWxlbWVudC5pZF1bZ3JvdXBWYWx1ZS5sZW5ndGhdID0gZ3JvdXBJZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBWYWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBncm91cENvbmZpZygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaXN0JyxcclxuICAgICAgICAgICAgICAgIGxpc3RUeXBlOiAnYXJyYXknLFxyXG4gICAgICAgICAgICAgICAgY3NzOiAnY29sLWxhcmdlICcsXHJcbiAgICAgICAgICAgICAgICBhZGQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhZGRMYWJlbDogdGhpcy5kYXRhLmZpZWxkcy5ncm91cHMub3B0aW9ucy5hZGRMYWJlbCxcclxuICAgICAgICAgICAgICAgIGN1c3RvbUFkZEFjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbURlbGV0ZUFjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21DaGFuZ2VBY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tRHJhZ2dhYmxlQWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFycmF5TGlzdExhYmVsRmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgfSxcclxuXHJcblxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCIndnVlLWRvY3VtZW50LWNvbnRhaW5lciB2dWUtc3BsaXQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcblxyXG4gICAgICAgIDxWdWVJbmRleCAgOnN0YXRlPVwic3RhdGVcIiA6ZGF0YT1cImRhdGFcIiA6ZW50aXR5PVwiZW50aXR5XCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiIEBnbG9iYWxBY3Rpb25DbGljaz1cIm9uR2xvYmFsQWN0aW9uQ2xpY2tcIlxyXG4gICAgICAgICAgICByZWY9XCJpbmRleFwiIDpjdXJyZW50RWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCIgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYWdiYXIgbmV3LWRyYWdiYXJcIiBAbW91c2Vkb3duPVwiZHJhZygkZXZlbnQpXCIgQG1vdXNldXA9XCJzdG9wRHJhZygkZXZlbnQpXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDxWdWVEZXRhaWxzIDpkYXRhPVwiZGF0YVwiIDplbnRpdHk9XCJlbnRpdHlcIiA6c3RhdGU9XCJzdGF0ZVwiIHYtc2hvdz1cInRoaXMuc3RhdGUudmlldyA9PT0gJ2RldGFpbHMnXCJcclxuICAgICAgICAgICAgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIiByZWY9XCJkZXRhaWxzXCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiIDpjdXN0b21ncm91cHM9XCJjdXN0b21Hcm91cHMoKVwiPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmV4dHJhQnV0dG9ucz5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdi1pZj1cImZhbHNlXCIgY2xhc3M9XCJuZXctYXR0cmlidXRlLWdyb3VwIGdyb3VwLWJ0blwiIEBjbGljaz1cImF0dHJpYnV0ZVNldE5ld0dyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB2LXNob3c9XCJjcmVhdGVHcm91cEFjdGlvbiAmJiAhY3VycmVudEVsZW1lbnQubmV3ICYmICFjdXJyZW50RWxlbWVudC5maWVsZHMuZ3JvdXBzW2N1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHMubGVuZ3RoIC0gMV0ubmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1zLUljb24gbXMtSWNvbi0tQWRkXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3LWF0dHJpYnV0ZVwiPnt7IGNyZWF0ZUdyb3VwQWN0aW9uLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Y3VzdG9tRmllbGRzR2VuZXJhbD5cclxuICAgICAgICAgICAgICAgIDxWdWVGaWVsZCA6a2V5PVwiJ2dyb3VwcydcIiA6ZWxlbWVudD1cInN0YXRlLmN1cnJlbnRFbGVtZW50XCIgOmRhdGE9XCJkYXRhXCIgOmZpZWxkPVwiZ3JvdXBGaWVsZERhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgIEBjaGFuZ2UtdmFsdWU9XCJncm91cFVwZGF0ZVwiIDpjdXN0b21WYWx1ZT1cIm51bGxcIiA6Y29uZmlnPVwiZ3JvdXBDb25maWdcIiBAY3VzdG9tLWFkZD1cImdyb3VwQWRkXCJcclxuICAgICAgICAgICAgICAgICAgICBAY3VzdG9tLWRlbGV0ZT1cImdyb3VwRGVsZXRlXCIgQGN1c3RvbS1jaGFuZ2U9XCJncm91cFVwZGF0ZVwiIEBjdXN0b20tZHJhZ2dhYmxlPVwiZ3JvdXBSZWFycmFuZ2VcIj5cclxuICAgICAgICAgICAgICAgIDwvVnVlRmllbGQ+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Y3VzdG9tRmllbGRzPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInZm9ybS1zZWN0aW9uICcgKyBjbGFzc0V4cGFuZGVkKGdyb3VwLm5hbWUpXCIgdi1mb3I9XCIoZ3JvdXAsIGluZGV4KSBpbiBjdXN0b21Hcm91cHModHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCB2dWUtZmllbGQtdGV4dCBgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCBgXCIgOmZvcj1cIidncm91cC0nICsgaW5kZXhcIj5Hcm91cCBuYW1lOjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidmb3JtLWNvbnRlbnQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiIDp2YWx1ZT1cImdyb3VwLmxhYmVsXCIgY2xhc3M9XCJ2dWUtZm9ybS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppZD1cIidncm91cC0nICsgaW5kZXhcIiBAY2hhbmdlPVwiY2hhbmdlR3JvdXBOYW1lKCRldmVudCwgaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXIgY29sLWxhcmdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxWdWVNdWx0aVNlbGVjdCA6cmVmPVwiJ211bHRpJyArIGluZGV4XCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiIDpsYWJlbD1cIidBZGQgQXR0cmlidXRlcycgKyAnOidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlzUmVxdWlyZWQ9XCJmYWxzZVwiIDppbml0aWFsLXZhbHVlPVwiZ3JvdXAuYXR0cmlidXRlc1wiIDpvcHRpb25zPVwiYXR0cmlidXRlT3B0aW9ucyhpbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbmZpZz1cInsgc2luZ2xlOiBmYWxzZSwgaGlkZVJlc3VsdDogdHJ1ZSwgcmV0dXJuRGF0YTogaW5kZXggfVwiIDp2dWUtZGlzYWJsZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwic2VsZWN0QXR0cmlidXRlc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxWdWVGaWVsZCA6a2V5PVwiJ29yZGVyJyArIGluZGV4XCIgOmVsZW1lbnQ9XCJzdGF0ZS5jdXJyZW50RWxlbWVudFwiIDpkYXRhPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDpmaWVsZD1cIm9yZGVyRmllbGREYXRhXCIgOmN1c3RvbS12YWx1ZT1cInsgdmFsdWU6IGF0dHJpYnV0ZU9yZGVyTGlzdChncm91cCkgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2UtdmFsdWU9XCJvcmRlclVwZGF0ZVwiIDpjdXN0b20tcmV0dXJuLXZhbHVlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWwgbWFpbi1sYWJlbGBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBvcmRlckZpZWxkRGF0YS5uYW1lXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyRmllbGREYXRhLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1pZj1cInN0YXRlLmN1cnJlbnRFbGVtZW50ICYmIHN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHNbZ3JvdXBJbmRleEJ5TmFtZShncm91cC5uYW1lKV0gJiYgc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmdyb3Vwc1tncm91cEluZGV4QnlOYW1lKGdyb3VwLm5hbWUpXS5hdHRyaWJ1dGVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5ncm91cHNbZ3JvdXBJbmRleEJ5TmFtZShncm91cC5uYW1lKV0uYXR0cmlidXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ1ZS1saXN0LWNvbnRhaW5lciBkaXNwbGF5LWxpc3QgZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VnVlRmllbGQgdi1zaG93PVwic2hvd0F0dHJpYnV0ZShncm91cCwgYXR0cmlidXRlLmlkKVwiIDprZXk9XCInYXR0cmlidXRlJyArIGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudD1cInN0YXRlLmN1cnJlbnRFbGVtZW50XCIgOmRhdGE9XCJkYXRhXCIgOmZpZWxkPVwiYXR0cmlidXRlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VzdG9tLXZhbHVlPVwieyd2YWx1ZSc6IGdldEN1c3RvbVZhbHVlKGdyb3VwLCBhdHRyaWJ1dGUpfVwiIEBjaGFuZ2UtdmFsdWU9XCJhdHRyaWJ1dGVVcGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXN0b20tcmV0dXJuLXZhbHVlPVwiZ3JvdXBcIiB2LWZvcj1cIihhdHRyaWJ1dGUsIGluZGV4KSBpbiBhdHRyaWJ1dGVGaWVsZHMoZ3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Z1ZUZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Z1ZURyYWdnYWJsZU5leHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9WdWVGaWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmN1c3RvbS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9WdWVEZXRhaWxzPlxyXG5cclxuXHJcbiAgICAgICAgPFZ1ZU1lc3NhZ2VzIDpkYXRhPVwiZGF0YVwiIDplbnRpdHk9XCJlbnRpdHlcIiA6ZWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCIgQGNhbmNlbE1vZGFsQ2xpY2s9XCJvbkNhbmNlbE1vZGFsQ2xpY2tcIiA6c3RhdGU9XCJzdGF0ZVwiIFxyXG4gICAgICAgICAgICBAYWN0aW9uTW9kYWxDbGljaz1cIm9uQWN0aW9uTW9kYWxDbGlja1wiIDptZXNzYWdlc1Zpc2liaWxpdHk9XCJtZXNzYWdlc1Zpc2liaWxpdHlcIiBAY2hhbmdlQ29uZmlndXJhdGlvbj1cIm9uQ2hhbmdlQ29uZmlndXJhdGlvblwiPlxyXG4gICAgICAgIDwvVnVlTWVzc2FnZXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmx1cmVkXCIgdi1pZj1cIiFkYXRhLmNvbmZpZy5zcGxpdCAmJiB0aGlzLnN0YXRlLnZpZXcgPT09ICdkZXRhaWxzJ1wiIEBjbGljaz1cImluZGV4TW9kZSgpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4ubmV3LWF0dHJpYnV0ZSB7XHJcbiAgICBjb2xvcjogcmdiKDAsIDEwOCwgMTkwKTtcclxufVxyXG5cclxuLm5ldy1hdHRyaWJ1dGUtZ3JvdXAgaSB7XHJcbiAgICBib3R0b206IC0ycHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcblxyXG4uZGVsZXRlIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGRhdGE6IE9iamVjdCxcclxuICAgIH0sXHJcbiAgICBkYXRhKCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRpc3BsYXk6IHtcclxuICAgICAgICAgIGdlbmVyYWw6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICBjbGFzc0V4cGFuZGVkKGNsYXNzTmFtZSkge1xyXG4gICAgICBpZiAodGhpcy5pc1NlY3Rpb25FeHBhbmRlZChjbGFzc05hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiZXhwYW5kZWRcIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH0sXHJcblxyXG4gICAgaXNTZWN0aW9uRXhwYW5kZWQoY2xhc3NOYW1lKSB7XHJcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlbY2xhc3NOYW1lXSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcbiAgICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGZvcm0gY2xhc3M9XCJ2dWUtZm9ybVwiPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCIndGV4dCBmb3JtLXNlY3Rpb24gZ2VuZXJhbC1zZWN0aW9uICcgKyBjbGFzc0V4cGFuZGVkKCdnZW5lcmFsJylcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XHJcbiAgICAgICAgPGgzPkdlbmVyYWw8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgVGV4dFxyXG4gICAgICA8aHIgY2xhc3M9XCJzZWN0aW9uLWVuZFwiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlPlxyXG4gIC5mb3JtLXZ1ZSBpbnB1dCB7XHJcbiAgICBkaXNwbGF5OiBibG9ja1xyXG4gIH1cclxuICAuZm9ybS12dWUgYnV0dG9uIHtcclxuICAgIG1hcmdpbi10b3A6IDMwcHg7XHJcbiAgfVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBwcm9wczoge1xyXG4gICAgZGF0YTogT2JqZWN0LFxyXG4gICAgdHJhbnM6IE9iamVjdCxcclxuICAgIHdvcmtmbG93RW50aXRpZXM6IE9iamVjdCxcclxuICAgIGV2ZW50R3JvdXBzOiBPYmplY3QsXHJcbiAgICBlbnRpdHlUaXRsZTogU3RyaW5nLFxyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRvY3VtZW50VHlwZTogXCJcIixcclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuXHJcbiAgICBjcmVhdGVXb3JrZmxvdyhldmVudCkge1xyXG4gICAgICBpZihldmVudC5lbnRpdHkpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLiRlbWl0KCdjcmVhdGUtd29ya2Zsb3cnICwgZXZlbnQpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZWxlY3RXb3JrZmxvdyh3b3JrZmxvdyl7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdC13b3JrZmxvdycgLCB3b3JrZmxvdyk7XHJcbiAgICB9LFxyXG5cclxuICAgIHNlbGVjdFdvcmtmbG93RW50aXR5KGVudGl0eSl7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3NlbGVjdC13b3JrZmxvdy1lbnRpdHknICwgZW50aXR5KTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0QWN0aXZlKGUgLCB3b3JrZmxvdyl7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgd29ya2Zsb3cuaXNBY3RpdmUgPSBlLnRhcmdldC5jaGVja2VkO1xyXG4gICAgICB0aGlzLnVwZGF0ZVdvcmtmbG93KHdvcmtmbG93ICk7XHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZVdvcmtmbG93KHdvcmtmbG93ICl7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZS13b3JrZmxvdycgLCB3b3JrZmxvdyApO1xyXG4gICAgfSxcclxuXHJcbiAgICBkZWxldGVXb3JrZmxvdyh3b3JrZmxvdyl7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ2RlbGV0ZS13b3JrZmxvdycgLCB3b3JrZmxvdyk7XHJcbiAgICB9LFxyXG5cclxuICAgIEV2ZW50VGl0bGUoZXZlbnQpe1xyXG4gICAgICBpZihldmVudC5lbnRpdHkpe1xyXG4gICAgICAgIHJldHVybiBldmVudC50aXRsZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKGV2ZW50Lm1vZHVsZSkgPyB0aGlzLnRyYW5zW3RoaXMuZW50aXR5VGl0bGVdICsgXCIgXCIgKyAgdGhpcy50cmFuc1tldmVudC50aXRsZV0gOiB0aGlzLnRyYW5zW2V2ZW50LnRpdGxlXTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIndvcmtmbG93LWluZGV4IHZ1ZS1zcGxpdC1pbmRleFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZGV4LWNvbnRhaW5lclwiPlxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0aXRsZVwiPiBcclxuICAgICAgICAgICAgICBXb3JrZmxvd1xyXG4gICAgICAgICAgPC9oMT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW50aXRpZXNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidnVlLWJ0blwiIEBjbGljaz1cInNlbGVjdFdvcmtmbG93RW50aXR5KGtleSlcIiB2LWZvcj1cInZhbHVlICwga2V5IGluIHdvcmtmbG93RW50aXRpZXNcIj57e3RyYW5zW3ZhbHVlXX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJ2dWUtdGFibGUgd29ya2Zsb3ctdGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ0aXRsZVwiPnt7dHJhbnMudGl0bGV9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD57eyB0cmFucy5pZCB9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD57eyB0cmFucy5hY3RpdmUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgdHJhbnMuYWN0aW9ucyB9fTwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImV2ZW50LWdyb3VwXCIgdi1mb3I9XCJldmVudCBpbiBldmVudEdyb3Vwc1wiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0aXRsZVwiPiBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2thYmxlIGhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLXN1YnRhc2tzIHN1YnRhc2tzLWljb25cIiBAY2xpY2suc3RvcD1cIlwiIHYtaWY9XCJmYWxzZVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjFlbVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjwhLS0hIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPVwiTTIzMy40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjU2IDMzOC43IDg2LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6XCIvPjwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1zdWJ0YXNrcyBzdWJ0YXNrcy1pY29uXCIgQGNsaWNrLnN0b3A9XCJcIiB2LWlmPVwiZmFsc2VcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIxZW1cIiB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjQuMiBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZSAoQ29tbWVyY2lhbCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMyBGb250aWNvbnMsIEluYy4gLS0+PHBhdGggZD1cIk0zMTAuNiAyMzMuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjQyLjcgMjU2IDczLjQgODYuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyelwiLz48L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj57e0V2ZW50VGl0bGUoZXZlbnQpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD4ge3sgZXZlbnQuZW50aXR5ID8gZXZlbnQubmFtZSA6IG51bGwgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkIGNsaWNrYWJsZSBhY3Rpb25cIiAgQGNsaWNrLnN0b3A9XCJjcmVhdGVXb3JrZmxvdyhldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjFlbVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjwhLS0hIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPVwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMzIgMzQ0VjI4MEgxNjhjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwiLz48L3N2Zz5cclxuICAgICAgICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwid29ya2Zsb3dcIiB2LWZvcj1cIndvcmtmbG93IGluIGV2ZW50LndvcmtmbG93c1wiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0aXRsZSBzdWJoZWFkZXJcIj4gXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZSBoZWFkZXJcIiBAY2xpY2suc3RvcD1cInNlbGVjdFdvcmtmbG93KHdvcmtmbG93KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3t3b3JrZmxvdy50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+IHt7IHdvcmtmbG93LndvcmtmbG93SWQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+ICBcclxuICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiYWN0aXZlXCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGFjdGl2ZS1pbmRleFwiIGlkPVwiYWN0aXZlXCIgQGNsaWNrLnN0b3A9XCJcIiAgQGNoYW5nZT1cInNldEFjdGl2ZSgkZXZlbnQgLCB3b3JrZmxvdylcIiA6Y2hlY2tlZD1cIndvcmtmbG93LmlzQWN0aXZlXCIgPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJ3b3JrZmxvdy53b3JrZmxvd0lkXCIgY2xhc3M9XCJyZW1vdmUgY2xpY2thYmxlIGFjdGlvblwiIEBjbGljay5zdG9wPVwiZGVsZXRlV29ya2Zsb3cod29ya2Zsb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMWVtXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PCEtLSEgRm9udCBBd2Vzb21lIEZyZWUgNi40LjIgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjMgRm9udGljb25zLCBJbmMuIC0tPjxwYXRoIGQ9XCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCIvPjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGU+XHJcbiAgLndvcmtmbG93LWVudGl0aWVzIGJ1dHRvbiB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgfVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHByb3BzOiBbJ21vZGVsVmFsdWUnICwgJ29wdGlvbnMnICwgJ2xhYmVsJywgJ3ZhbHVlVHlwZScgLCAndnVlRGlzYWJsZWQnXSxcclxuICAgIGVtaXRzOiBbJ3VwZGF0ZTptb2RlbFZhbHVlJ10sXHJcbiAgICBkYXRhKCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRvY3VtZW50VHlwZTogXCJcIixcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGV4cGFuZGVkOiBmYWxzZSxcclxuICAgICAgICBjdXJyZW50T3B0aW9uczoge31cclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIGNvbnN0IGFwcCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnN9O1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbihlKXtcclxuICAgICAgICAgICAgaWYoYXBwLmV4cGFuZGVkKXtcclxuICAgICAgICAgICAgICAgIGFwcC5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgc2VsZWN0T3B0aW9uKG9wdGlvbikge1xyXG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihPYmplY3Qua2V5cyh0aGlzLmF2YWxpYWJsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLnZhbHVlVHlwZSA9PSBcInZhbHVlc1wiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCB0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZW1vdmVPcHRpb24ob3B0aW9uKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZih0aGlzLnZhbHVlVHlwZSA9PSBcInZhbHVlc1wiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6bW9kZWxWYWx1ZScsIHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCB0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVPcHRpb25zKCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV0gPSB0aGlzLm1vZGVsVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVWYWx1ZSgpe1xyXG4gICAgICAgICAgICBpZighdGhpcy5tb2RlbFZhbHVlICB8fCBPYmplY3Qua2V5cyh0aGlzLm1vZGVsVmFsdWUpID09PSAwKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW9kZWxWYWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1trZXldLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9uc1trZXldLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBleHBhbmQoKXtcclxuICAgICAgICAgICAgaWYoIXRoaXMudnVlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICBhY3RpdmVDbGFzcygpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImlucHV0LWFjdGl2ZVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGF2YWxpYWJsZU9wdGlvbnMoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF2YWxpYWJsZU9wdGlvbnMgPSB7fTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYoIW9wdGlvbi5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF2YWxpYWJsZU9wdGlvbnNba2V5XSA9IG9wdGlvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYXZhbGlhYmxlT3B0aW9ucztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmN1cnJlbnRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnNba2V5XSA9IG9wdGlvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWVzKCkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmN1cnJlbnRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmN1cnJlbnRPcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlc1trZXldID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkaXNhYmxlZENsYXNzKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudnVlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRpc2FibGVkXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfSxcclxuICAgIH0sXHJcblxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBtb2RlbFZhbHVlKGN1cnJlbnQgLCBvbGQpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnZhbHVlVHlwZSA9PSBcInZhbHVlc1wiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZihjdXJyZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmN1cnJlbnRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jdXJyZW50T3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jdXJyZW50T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY3VycmVudE9wdGlvbnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vZGVsVmFsdWVba2V5XSAhPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9kZWxWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMubW9kZWxWYWx1ZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE9wdGlvbnNba2V5XSA9IHRoaXMubW9kZWxWYWx1ZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICAgIDxkaXYgOmNsYXNzPVwiYHZ1ZS1tdWx0aXNlbGVjdCBmaWVsZC1zZWxlY3QgZm9ybS1ncm91cCBjdXN0b20tZm9ybS1ncm91cCAke2Rpc2FibGVkQ2xhc3N9YFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICB7eyBsYWJlbCB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0td2lkZ2V0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ3RzLXdyYXBwZXIgZm9ybS1zZWxlY3QgbXVsdGkgcGx1Z2luLWRyb3Bkb3duX2lucHV0IHBsdWdpbi1jbGVhcl9idXR0b24gcGx1Z2luLXJlbW92ZV9idXR0b24gJyArIGFjdGl2ZUNsYXNzXCJcclxuICAgICAgICAgICAgICAgIEBtb3VzZW92ZXI9XCJ0aGlzLmFjdGl2ZSA9IHRydWVcIiBAbW91c2VsZWF2ZT1cInRoaXMuYWN0aXZlID0gZmFsc2VcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHMtY29udHJvbFwiIHJvbGU9XCJjb21ib2JveFwiIEBjbGljay5zdG9wPVwiZXhwYW5kKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiIGRhdGEtdHMtaXRlbT1cIlwiIHYtZm9yPVwib3B0aW9uIGluIHNlbGVjdGVkT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiB2LWlmPVwiIXZ1ZURpc2FibGVkXCIgQGNsaWNrLnN0b3A9XCJyZW1vdmVPcHRpb24ob3B0aW9uKVwiIGNsYXNzPVwicmVtb3ZlXCIgdGFiaW5kZXg9XCItMVwiIHRpdGxlPVwiXCI+w5c8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHYtaWY9XCJPYmplY3Qua2V5cyhzZWxlY3RlZE9wdGlvbnMpLmxlbmd0aCA9PSAwICYmICAhdnVlRGlzYWJsZWRcIiBjbGFzcz1cIml0ZW1zLXBsYWNlaG9sZGVyXCIgdGFiaW5kZXg9XCItMVwiIHBsYWNlaG9sZGVyPVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInRoaXMuZXhwYW5kZWRcIiBjbGFzcz1cInRzLWRyb3Bkb3duIG11bHRpIHBsdWdpbi1kcm9wZG93bl9pbnB1dCBwbHVnaW4tY2xlYXJfYnV0dG9uIHBsdWdpbi1yZW1vdmVfYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwidGhpcy5leHBhbmRlZCA9IHRoaXMuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvbGU9XCJsaXN0Ym94XCIgdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwidHMtZHJvcGRvd24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtc2VsZWN0YWJsZT1cIlwiIGNsYXNzPVwib3B0aW9uXCIgQGNsaWNrPVwic2VsZWN0T3B0aW9uKG9wdGlvbilcIiB2LWZvcj1cIm9wdGlvbiBpbiBhdmFsaWFibGVPcHRpb25zXCIgPnt7b3B0aW9uLmxhYmVsfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiT2JqZWN0LmtleXMoYXZhbGlhYmxlT3B0aW9ucykubGVuZ3RoID09IDBcIiBjbGFzcz1cIm9wdGlvblwiPkFsbCBvcHRpb25zIHNlbGVjdGVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwiZmFsc2VcIiBjbGFzcz1cIm9wdGdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0Z3JvdXAtaGVhZGVyXCI+cmVzcG9uc2FiaWxpdHlEZXBhcnRtZW50PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtc2VsZWN0YWJsZT1cIlwiIGNsYXNzPVwib3B0aW9uXCIgPmFmPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4gICAgLnNlYXJjaC1pbnB1dHtcclxuICAgICAgICBtYXJnaW4tdG9wOiA2cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgVnVlVXBsb2FkIGZyb20gJy4uLy4uLy4uL2Zvcm0vVnVlVXBsb2FkJztcclxuaW1wb3J0IFZ1ZU11bHRpU2VsZWN0IGZyb20gJy4uLy4uLy4uL2Zvcm0vVnVlTXVsdGlTZWxlY3QudnVlJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGNvbXBvbmVudHM6e1xyXG4gICAgVnVlVXBsb2FkLFxyXG4gICAgVnVlTXVsdGlTZWxlY3RcclxuICB9LFxyXG4gIHByb3BzOiB7XHJcbiAgICBhY3Rpb246IE9iamVjdCxcclxuICAgIHdvcmtmbG93OiBPYmplY3QsXHJcbiAgICBoYW5kbGVyOiBPYmplY3QsXHJcbiAgICB0cmFuczogT2JqZWN0XHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3VycmVudEZpbGU6IG51bGwsXHJcbiAgICAgIGNjUGVyc29uOiBudWxsLFxyXG4gICAgICByYXdUZW1wbGF0ZTogbnVsbCxcclxuICAgIH1cclxuICB9LFxyXG4gIG1vdW50ZWQoKXtcclxuICAgIGlmKHRoaXMuYWN0aW9uLnRlbXBsYXRlVXJsICE9IG51bGwpe1xyXG4gICAgICB0aGlzLmZldGNoUmF3VGVtcGxhdGUoKTtcclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNldFJlY2lwaWVudChlKXtcclxuICAgICAgdGhpcy5hY3Rpb24ucmVjaXBpZW50ID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRSZWNpcGllbnRDaG9pY2UoZSl7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnJlY2lwaWVudENob2ljZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG4gICAgc2V0UmVjaXBpZW50UGVyc29uKGUpe1xyXG4gICAgICB0aGlzLmFjdGlvbi5yZWNpcGllbnRQZXJzb24gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldENDTWFudWFsKGUpe1xyXG4gICAgICB0aGlzLmFjdGlvbi5jY01hbnVhbCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG4gICAgc2V0U3ViamVjdChlKXtcclxuICAgICAgdGhpcy5hY3Rpb24uc3ViamVjdCA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG4gICAgc2V0VGVtcGxhdGUoZSl7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnRlbXBsYXRlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnRlbXBsYXRlVXJsID0gdGhpcy5oYW5kbGVyLmNvbmZpZy50ZW1wbGF0ZS5vcHRpb25zW3RoaXMuYWN0aW9uLnRlbXBsYXRlXS5sYWJlbDtcclxuICAgICAgdGhpcy5mZXRjaFJhd1RlbXBsYXRlKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgdXBkYXRlQWN0aW9uKGFjdGlvbil7XHJcbiAgICAgICAgdGhpcy4kZW1pdChcInVwZGF0ZS1hY3Rpb25cIiAsIGFjdGlvbik7XHJcbiAgICB9LFxyXG5cclxuICAgIGZldGNoUmF3VGVtcGxhdGUoKXtcclxuICAgICAgbGV0IGFwcCA9IHRoaXM7XHJcbiAgICAgIGF4aW9zLnBvc3QoJy93b3JrZmxvdy9nZXRSYXdUZW1wbGF0ZScsIHt0ZW1wbGF0ZTogdGhpcy5hY3Rpb24udGVtcGxhdGVVcmx9KVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgYXBwLnJhd1RlbXBsYXRlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyByYXcgY29udGVudDonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgd2F0Y2g6IHtcclxuICAgIGNjUGVyc29uKGN1cnJlbnQgLCBvbGQpe1xyXG4gICAgICBpZihvbGQgPT0gbnVsbCB8fCAob2xkID09IGN1cnJlbnQpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3Rpb24uY2NQZXJzb24gPSBjdXJyZW50O1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG4gIH1cclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uIHNlbmQtbWFpbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJyZWNpcGllbnQtY2hvaWNlXCI+e3t0cmFucy5yZWNpcGllbnRDaG9pY2V9fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi5yZWNpcGllbnRDaG9pY2VcIiBuYW1lPVwicmVjaXBpZW50LWNob2ljZVwiIGlkPVwicmVjaXBpZW50LWNob2ljZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgcmVjaXBpZW50LWNob2ljZVwiIEBjaGFuZ2U9XCJzZXRSZWNpcGllbnRDaG9pY2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiA6dmFsdWU9XCJvcHRpb24udmFsdWVcIiB2LWZvcj1cIm9wdGlvbiBpbiBoYW5kbGVyLmNvbmZpZy5yZWNpcGllbnRDaG9pY2Uub3B0aW9uc1wiPnt7dHJhbnNbb3B0aW9uLmxhYmVsXX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImFjdGlvbi5yZWNpcGllbnRDaG9pY2UgPT0gaGFuZGxlci5jb25maWcucmVjaXBpZW50Q2hvaWNlLm9wdGlvbnMubWFudWFsLnZhbHVlXCIgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgPGxhYmVsICBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInJlY2lwaWVudC1tYW51YWxcIj57eyB0cmFucy5yZWNpcGllbnR9fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgbmFtZT1cInJlY2lwaWVudC1tYW51YWxcIiA6dmFsdWU9XCJhY3Rpb24ucmVjaXBpZW50XCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJyZWNpcGllbnQtbWFudWFsXCIgQGNoYW5nZT1cInNldFJlY2lwaWVudCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiB2LWlmPVwiYWN0aW9uLnJlY2lwaWVudENob2ljZSA9PSBoYW5kbGVyLmNvbmZpZy5yZWNpcGllbnRDaG9pY2Uub3B0aW9ucy5wZXJzb24udmFsdWVcIiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInJlY2lwaWVudC1wZXJzb25cIj57e3RyYW5zLnJlY2lwaWVudH19OjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgOnZhbHVlPVwiYWN0aW9uLnJlY2lwaWVudFBlcnNvblwiIG5hbWU9XCJyZWNpcGllbnQtcGVyc29uXCIgaWQ9XCJyZWNpcGllbnQtcGVyc29uXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCByZWNpcGllbnQtY2hvaWNlXCIgQGNoYW5nZT1cInNldFJlY2lwaWVudFBlcnNvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGhhbmRsZXIuY29uZmlnLnJlY2lwaWVudFBlcnNvbi5vcHRpb25zXCI+e3tvcHRpb24ubGFiZWx9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJjYy1tYW51YWxcIj57eyB0cmFucy5jY01hbnVhbCB9fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY2MtbWFudWFsXCIgOnZhbHVlPVwiYWN0aW9uLmNjTWFudWFsXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJjYy1tYW51YWxcIiBAY2hhbmdlPVwic2V0Q0NNYW51YWwoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxWdWVNdWx0aVNlbGVjdCA6bGFiZWw9XCJ0cmFucy5jY1BlcnNvbiArJzonXCIgdi1tb2RlbD1cImNjUGVyc29uXCIgdmFsdWVUeXBlPVwidmFsdWVzXCIgOm9wdGlvbnM9XCJoYW5kbGVyLmNvbmZpZy5jY1BlcnNvbi5vcHRpb25zXCIvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgPGxhYmVsICBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInN1YmplY3RcIj57e3RyYW5zLnN1YmplY3R9fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3ViamVjdFwiIDp2YWx1ZT1cImFjdGlvbi5zdWJqZWN0XCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJzdWJqZWN0XCIgQGNoYW5nZT1cInNldFN1YmplY3QoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ0ZW1wbGF0ZVwiPnt7dHJhbnMudGVtcGxhdGV9fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi50ZW1wbGF0ZVwiIG5hbWU9XCJ0ZW1wbGF0ZVwiIGlkPVwidGVtcGxhdGVcIiBjbGFzcz1cImZvcm0tc2VsZWN0IHRlbXBsYXRlXCIgQGNoYW5nZT1cInNldFRlbXBsYXRlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gOnZhbHVlPVwib3B0aW9uLnZhbHVlXCIgdi1mb3I9XCJvcHRpb24gaW4gaGFuZGxlci5jb25maWcudGVtcGxhdGUub3B0aW9uc1wiPnt7b3B0aW9uLmxhYmVsfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPFZ1ZVVwbG9hZCB2LWlmPVwiZmFsc2VcIiA6dGl0bGU9XCInQXR0YWNobWVudHMnXCIgOnZ1ZS1wbGFjZWhvbGRlcj1cIidmaWxlIFVwbG9hZCdcIiB2LW1vZGVsPVwiY3VycmVudEZpbGVcIj48L1Z1ZVVwbG9hZD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBzYXZlLWZpbGVcIiB2LWlmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG5cIiBAY2xpY2s9XCJ1cGxvYWRGaWxlKCRldmVudClcIj57e3RyYW5zLnNhdmV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYXdUZW1wbGF0ZVwiIHYtaWY9XCJyYXdUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHByZT57eyByYXdUZW1wbGF0ZSAgfX08L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlPlxyXG4gIC5yYXdUZW1wbGF0ZXtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICB9XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cclxuaW1wb3J0IFZ1ZVVwbG9hZCBmcm9tICcuLi8uLi8uLi9mb3JtL1Z1ZVVwbG9hZCc7XHJcbmltcG9ydCBWdWVNdWx0aVNlbGVjdE5ldyBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2ZpZWxkcy9WdWVNdWx0aVNlbGVjdEZpZWxkJztcclxuaW1wb3J0IFZ1ZU11bHRpU2VsZWN0IGZyb20gJy4uLy4uLy4uL2Zvcm0vVnVlTXVsdGlTZWxlY3QudnVlJztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGNvbXBvbmVudHM6IHtcclxuICAgIFZ1ZVVwbG9hZCxcclxuICAgIFZ1ZU11bHRpU2VsZWN0TmV3LFxyXG4gICAgVnVlTXVsdGlTZWxlY3RcclxuICB9LFxyXG4gIHByb3BzOiB7XHJcbiAgICBkYXRhOiBPYmplY3QsXHJcbiAgICBhY3Rpb246IE9iamVjdCxcclxuICAgIHdvcmtmbG93OiBPYmplY3QsXHJcbiAgICBoYW5kbGVyOiBPYmplY3QsXHJcbiAgICB0cmFuczogT2JqZWN0XHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3VycmVudEZpbGU6IG51bGwsXHJcbiAgICAgIHByb2Nlc3NlczogbnVsbCxcclxuICAgIH1cclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5hY3Rpb24ucHJvY2Vzc2VzKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VzID0gdGhpcy5hY3Rpb24ucHJvY2Vzc2VzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9jZXNzZXMgPSBbXTtcclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNldE5hbWUoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5uYW1lID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRTdWJ0aXRsZShlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnN1YnRpdGxlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRUYXNrbGlzdChlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnRhc2tsaXN0ID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRHcm91cEFzc2lnbm1lbnQoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5ncm91cEFzc2lnbm1lbnQgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldFBlcnNvbmFsQXNzaWdubWVudFR5cGUoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5wZXJzb25hbEFzc2lnbm1lbnRUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRQZXJzb25hbEFzc2lnbm1lbnRQZXJzb24oZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5wZXJzb25hbEFzc2lnbm1lbnRQZXJzb24gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldFBlcnNvbmFsQXNzaWdubWVudERlcGFydG1lbnRMZWFkZXIoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5wZXJzb25hbEFzc2lnbm1lbnREZXBhcnRtZW50TGVhZGVyID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRTdXBlcnZpc29yVHlwZShlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnN1cGVydmlzb3JUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRTdXBlcnZpc29yVHlwZVBlcnNvbihlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLnN1cGVydmlzb3JUeXBlUGVyc29uID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRTdXBlcnZpc29yVHlwZURlcGFydG1lbnRMZWFkZXIoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5zdXBlcnZpc29yVHlwZURlcGFydG1lbnRMZWFkZXIgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldEVuZERhdGUoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5lbmREYXRlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRTdGFydERhdGUoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5zdGFydERhdGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldEltcG9ydGFudChlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmltcG9ydGFudCA9IGUudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRFeHRlcm5hbERlc2NyaXB0aW9uKGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb24uaXNFeHRlcm5hbERlc2NyaXB0aW9uID0gZS50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldExpbmtlZChlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmxpbmtlZCA9IGUudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRDYXRlZ29yeShlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmNhdGVnb3J5ID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXREZXNjcmlwdGlvbihlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmRlc2NyaXB0aW9uID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRDYXRlZ29yeU1vZGUoZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5jYXRlZ29yeU1vZGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICAgIHNldERhdGVzTW9kZShlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmRhdGVzTW9kZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG4gICAgc2V0VGltZWZyYW1lKGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb24udGltZWZyYW1lID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgdXBkYXRlQWN0aW9uKGFjdGlvbikge1xyXG4gICAgICB0aGlzLiRlbWl0KFwidXBkYXRlLWFjdGlvblwiLCBhY3Rpb24pO1xyXG4gICAgfSxcclxuXHJcbiAgICBncm91cEFjY291bnRhYmxlcyhvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwZWQgPSB7fTtcclxuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKCFncm91cGVkW29wdGlvbi5ncm91cF0pIHtcclxuICAgICAgICAgIGdyb3VwZWRbb3B0aW9uLmdyb3VwXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBncm91cGVkW29wdGlvbi5ncm91cF0ucHVzaChvcHRpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGdyb3VwZWQ7XHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZUFjY291bnRhYmxlcyh2YWx1ZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSlcclxuICAgICAgdGhpcy5hY3Rpb24uYWNjb3VudGFibGVzID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQWN0aW9uKHRoaXMuYWN0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0QXNzaWduZWRQZXJzb24oZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbi5hc3NpZ25lZFBlcnNvbiA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9LFxyXG5cclxuICAgIHNldEFjY291bnRhYmxlc1NvdXJjZShlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLmFjY291bnRhYmxlc1NvdXJjZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbih0aGlzLmFjdGlvbik7XHJcbiAgICB9XHJcbiAgfSxcclxuICB3YXRjaDoge1xyXG4gICAgcHJvY2Vzc2VzKGN1cnJlbnQsIG9sZCkge1xyXG4gICAgICBpZiAob2xkID09PSBudWxsIHx8IChvbGQgPT0gY3VycmVudCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3Rpb24ucHJvY2Vzc2VzID0gY3VycmVudDtcclxuICAgICAgdGhpcy51cGRhdGVBY3Rpb24odGhpcy5hY3Rpb24pO1xyXG4gICAgfSxcclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvbiB0YXNrLWhhbmRsZXIgbmV3LXN0eWxlXCI+XHJcbiAgICA8ZGl2IHYtaWY9XCJoYW5kbGVyLmNvbmZpZy5saW5rZWRcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsIGFsaWduLWNlbnRlclwiPnt7IHRyYW5zLmxpbmtlZCB9fTo8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgbmFtZT1cImxpbmtlZFwiIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIGlkPVwibGlua2VkXCIgQGNoYW5nZT1cInNldExpbmtlZCgkZXZlbnQpXCJcclxuICAgICAgICA6Y2hlY2tlZD1cImFjdGlvbi5saW5rZWRcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPnt7IHRyYW5zLmltcG9ydGFudCB9fTo8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgbmFtZT1cImltcG9ydGFudFwiIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIGlkPVwiaW1wb3J0YW50XCIgQGNoYW5nZT1cInNldEltcG9ydGFudCgkZXZlbnQpXCJcclxuICAgICAgICA6Y2hlY2tlZD1cImFjdGlvbi5pbXBvcnRhbnRcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtdGV4dFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJuYW1lXCI+e3sgdHJhbnMubmFtZSB9fTo8L2xhYmVsPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwibmFtZVwiIDp2YWx1ZT1cImFjdGlvbi5uYW1lXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJuYW1lXCIgQGNoYW5nZT1cInNldE5hbWUoJGV2ZW50KVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0XCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInN1YnRpdGxlXCI+e3sgdHJhbnMuc3VidGl0bGUgfX06PC9sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInN1YnRpdGxlXCIgOnZhbHVlPVwiYWN0aW9uLnN1YnRpdGxlXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJzdWJ0aXRsZVwiXHJcbiAgICAgICAgQGNoYW5nZT1cInNldFN1YnRpdGxlKCRldmVudClcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtc2VsZWN0XCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImFjY291bnRhYmxlc1NvdXJjZVwiPnt7IHRyYW5zLmFjY291bnRhYmxlc1NvdXJjZSB9fTo8L2xhYmVsPlxyXG4gICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi5hY2NvdW50YWJsZXNTb3VyY2VcIiBuYW1lPVwiYWNjb3VudGFibGVzU291cmNlXCIgaWQ9XCJhY2NvdW50YWJsZXNTb3VyY2VcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgYXNzaWduZWQtY2hvaWNlXCIgQGNoYW5nZT1cInNldEFjY291bnRhYmxlc1NvdXJjZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPG9wdGlvbiA6dmFsdWU9XCJvcHRpb24udmFsdWVcIiB2LWZvcj1cIm9wdGlvbiBpbiBoYW5kbGVyLmNvbmZpZy5hY2NvdW50YWJsZXNTb3VyY2Uub3B0aW9uc1wiPnt7IHRyYW5zW29wdGlvbi5sYWJlbF1cclxuICAgICAgICB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiB2LWlmPVwiYWN0aW9uLmFjY291bnRhYmxlc1NvdXJjZSA9PT0gJ21hbnVhbCdcIiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtc2VsZWN0ICB2dWUtbXVsdGlzZWxlY3RcIlxyXG4gICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2tcIj5cclxuICAgICAgPFZ1ZU11bHRpU2VsZWN0TmV3IDpyZWY9XCInYWNjb3VudGFibGVzJ1wiIDpsYWJlbD1cInRyYW5zLmFjY291bnRhYmxlcyArICc6J1wiXHJcbiAgICAgICAgOmluaXRpYWxWYWx1ZT1cImFjdGlvbi5hY2NvdW50YWJsZXMgPz8gbnVsbFwiIEBjaGFuZ2UtdmFsdWU9XCJ1cGRhdGVBY2NvdW50YWJsZXNcIlxyXG4gICAgICAgIDpvcHRpb25zPVwiaGFuZGxlci5jb25maWcuYWNjb3VudGFibGVzLm9wdGlvbnNcIiA6Y29uZmlnPVwieyBncm91cHM6IGRhdGEuY29uZmlnLmFjY291bnRhYmxlR3JvdXBzIH1cIiAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtc2VsZWN0XCIgdi1pZj1cImZhbHNlXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImFzc2lnbmVkLXBlcnNvblwiPnt7IHRyYW5zLmFzc2lnbmVkUGVyc29uIH19OjwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3QgOnZhbHVlPVwiYWN0aW9uLmFzc2lnbmVkUGVyc29uXCIgbmFtZT1cImFzc2lnbmVkLXBlcnNvblwiIGlkPVwiYXNzaWduZWQtcGVyc29uXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGFzc2lnbmVkLWNob2ljZVwiIEBjaGFuZ2U9XCJzZXRBc3NpZ25lZFBlcnNvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgPG9wdGlvbiA6dmFsdWU9XCJvcHRpb24udmFsdWVcIiB2LWZvcj1cIm9wdGlvbiBpbiBoYW5kbGVyLmNvbmZpZy5hc3NpZ25lZFBlcnNvbi5vcHRpb25zXCI+e3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0XCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImRhdGVzbW9kZVwiPnt7IHRyYW5zLmRhdGVzTW9kZSB9fTo8L2xhYmVsPlxyXG4gICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi5kYXRlc01vZGVcIiBuYW1lPVwiZGF0ZXNNb2RlXCIgaWQ9XCJkYXRlc01vZGVcIiBjbGFzcz1cImZvcm0tc2VsZWN0IHRhc2tsaXN0XCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0RGF0ZXNNb2RlKCRldmVudClcIj5cclxuICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGhhbmRsZXIuY29uZmlnLmRhdGVzTW9kZS5vcHRpb25zXCI+e3sgdHJhbnNbb3B0aW9uLmxhYmVsXSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtZGF0ZVwiIHYtaWY9XCJhY3Rpb24uZGF0ZXNNb2RlID09ICdzZXREYXRlJ1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJzdGFydC1kYXRlXCI+e3sgdHJhbnMuc3RhcnREYXRlIH19OjwvbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRhdGUtaW5wdXRcIiBpZD1cInN0YXJ0LWRhdGVcIiA6dmFsdWU9XCJhY3Rpb24uc3RhcnREYXRlXCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0U3RhcnREYXRlKCRldmVudClcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtZGF0ZVwiIHYtaWY9XCJhY3Rpb24uZGF0ZXNNb2RlID09ICdzZXREYXRlJ1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJkZWFkbGluZVwiPnt7IHRyYW5zLmVuZERhdGUgfX06PC9sYWJlbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZGF0ZS1pbnB1dFwiIGlkPVwiZGVhZGxpbmVcIiA6dmFsdWU9XCJhY3Rpb24uZW5kRGF0ZVwiXHJcbiAgICAgICAgQGNoYW5nZT1cInNldEVuZERhdGUoJGV2ZW50KVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0XCIgdi1pZj1cImFjdGlvbi5kYXRlc01vZGUgPT0gJ3RpbWVmcmFtZSdcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCIgZm9yPVwidGltZWZyYW1lXCI+e3sgdHJhbnMudGltZWZyYW1lIH19OjwvbGFiZWw+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aW1lZnJhbWVcIiA6dmFsdWU9XCJhY3Rpb24udGltZWZyYW1lXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJuYW1lXCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0VGltZWZyYW1lKCRldmVudClcIiBwbGFjZWhvbGRlcj1cImhvdXJzXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0XCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImNhdGVnb3J5bW9kZVwiPnt7IHRyYW5zLmNhdGVnb3J5TW9kZSB9fTo8L2xhYmVsPlxyXG4gICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi5jYXRlZ29yeU1vZGVcIiBuYW1lPVwiY2F0ZWdvcnltb2RlXCIgaWQ9XCJjYXRlZ29yeW1vZGVcIiBjbGFzcz1cImZvcm0tc2VsZWN0IHRhc2tsaXN0XCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0Q2F0ZWdvcnlNb2RlKCRldmVudClcIj5cclxuICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGhhbmRsZXIuY29uZmlnLmNhdGVnb3J5TW9kZS5vcHRpb25zXCI+e3sgdHJhbnNbb3B0aW9uLmxhYmVsXSB9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdFwiIHYtaWY9XCJhY3Rpb24uY2F0ZWdvcnlNb2RlID09ICdzZXRDYXRlZ29yeSdcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCIgZm9yPVwiY2F0ZWdvcnlcIj57eyB0cmFucy5jYXRlZ29yeSB9fTo8L2xhYmVsPlxyXG4gICAgICA8c2VsZWN0IDp2YWx1ZT1cImFjdGlvbi5jYXRlZ29yeVwiIG5hbWU9XCJjYXRlZ29yeVwiIGlkPVwiY2F0ZWdvcnlcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGNhdGVnb3J5XCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0Q2F0ZWdvcnkoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxvcHRpb24gOnZhbHVlPVwib3B0aW9uLnZhbHVlXCIgdi1mb3I9XCJvcHRpb24gaW4gaGFuZGxlci5jb25maWcuY2F0ZWdvcnkub3B0aW9uc1wiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYWxpZ24tY2VudGVyXCIgdi1pZj1cImhhbmRsZXIuY29uZmlnLmlzRXh0ZXJuYWxEZXNjcmlwdGlvblwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj57eyB0cmFucy5pc0V4dGVybmFsRGVzY3JpcHRpb24gfX06PC9sYWJlbD5cclxuICAgICAgPGlucHV0IG5hbWU9XCJpbXBvcnRhbnRcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cImlzRXh0ZXJuYWxEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgQGNoYW5nZT1cInNldEV4dGVybmFsRGVzY3JpcHRpb24oJGV2ZW50KVwiIDpjaGVja2VkPVwiYWN0aW9uLmlzRXh0ZXJuYWxEZXNjcmlwdGlvblwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC10ZXh0YXJlYVwiIHYtaWY9XCIhYWN0aW9uLmlzRXh0ZXJuYWxEZXNjcmlwdGlvblwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJkZXNjcmlwdGlvblwiPnt7IHRyYW5zLmRlc2NyaXB0aW9uIH19OjwvbGFiZWw+XHJcbiAgICAgIDx0ZXh0YXJlYSA6dmFsdWU9XCJhY3Rpb24uZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0taW5wdXRcIiBpZD1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICBAY2hhbmdlPVwic2V0RGVzY3JpcHRpb24oJGV2ZW50KVwiPnt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fTwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxWdWVNdWx0aVNlbGVjdCA6bGFiZWw9XCJ0cmFucy5wcm9jZXNzZXMgKyAnOidcIiB2LW1vZGVsPVwicHJvY2Vzc2VzXCIgdmFsdWVUeXBlPVwidmFsdWVzXCJcclxuICAgICAgOm9wdGlvbnM9XCJoYW5kbGVyLmNvbmZpZy5wcm9jZXNzZXMub3B0aW9uc1wiIC8+XHJcblxyXG4gICAgPFZ1ZVVwbG9hZCA6dGl0bGU9XCInQXR0YWNobWVudHMnXCIgOnZ1ZS1wbGFjZWhvbGRlcj1cIidmaWxlIFVwbG9hZCdcIiB2LW1vZGVsPVwiY3VycmVudEZpbGVcIiB2LWlmPVwiZmFsc2VcIj48L1Z1ZVVwbG9hZD5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHNhdmUtZmlsZVwiIHYtaWY9XCJmYWxzZVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidnVlLWJ0blwiIEBjbGljaz1cInVwbG9hZEZpbGUoJGV2ZW50KVwiPnt7IHRyYW5zLnNhdmUgfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlPlxyXG5sYWJlbCB7XHJcbiAgbWF4LXdpZHRoOiAxMjBweDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBwcm9wczoge1xyXG4gICAgdHJhbnM6IE9iamVjdCxcclxuICAgIGNvbmRpdGlvbjogT2JqZWN0LFxyXG4gICAgd29ya2Zsb3c6IE9iamVjdCxcclxuICAgIGNvbmZpZzogT2JqZWN0XHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZG9jdW1lbnRUeXBlOiBcIlwiLFxyXG4gICAgICBkb2N1bWVudFJlcXVlc3RNb2RlT3B0aW9uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBcIkJvdGhcIixcclxuICAgICAgICAgIHZhbHVlOiBcImJvdGhcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IFwiQ3JlYXRlXCIsXHJcbiAgICAgICAgICB2YWx1ZTogXCJjcmVhdGVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IFwiQ3JlYXRlIEFuZCBBcHByb3ZlXCIsXHJcbiAgICAgICAgICB2YWx1ZTogXCJjcmVhdGVBbmRBcHByb3ZlXCJcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNldFR5cGUoZSkge1xyXG4gICAgICBsZXQgY29uZGl0aW9uID0gdGhpcy5jb25kaXRpb247XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uLnR5cGUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVDb25kaXRpb24oY29uZGl0aW9uKTtcclxuICAgIH0sXHJcbiAgICBzZXRGaWVsZChmaWVsZCwgZSkge1xyXG4gICAgICB0aGlzLmNvbmRpdGlvbltmaWVsZF0gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVDb25kaXRpb24odGhpcy5jb25kaXRpb24pO1xyXG4gICAgfSxcclxuICAgIHNldEltcG9ydGFudChlKSB7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uLmltcG9ydGFudCA9IGUudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0VGltZWxpbmVGcm9tKGUpIHtcclxuICAgICAgdGhpcy5jb25kaXRpb24udGltZWxpbmVGcm9tID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0VGFza0NvbW1lbnRUeXBlKGUpIHtcclxuICAgICAgdGhpcy5jb25kaXRpb24udGFza0NvbW1lbnRUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29uZGl0aW9uKHRoaXMuY29uZGl0aW9uKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0VGltZWxpbmVUbyhlKSB7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uLnRpbWVsaW5lVG8gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVDb25kaXRpb24odGhpcy5jb25kaXRpb24pO1xyXG4gICAgfSxcclxuXHJcbiAgICB1cGRhdGVDb25kaXRpb24oY29uZGl0aW9uKSB7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZS1jb25kaXRpb24nLCBjb25kaXRpb24pO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVDb25kaXRpb24oY29uZGl0aW9uKSB7XHJcbiAgICAgIHRoaXMuJGVtaXQoJ3JlbW92ZS1jb25kaXRpb24nLCBjb25kaXRpb24pO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIHR5cGVPcHRpb25zKCkge1xyXG4gICAgICBjb25zdCB0eXBlT3B0aW9ucyA9IHtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuY29uZmlnLmNvbmRpdGlvbnMpIHtcclxuICAgICAgICBsZXQgY29uZGl0aW9uID0gdGhpcy5jb25maWcuY29uZGl0aW9uc1trZXldO1xyXG4gICAgICAgIHR5cGVPcHRpb25zW2NvbmRpdGlvbi5pZF0gPSB7XHJcbiAgICAgICAgICBpZDogY29uZGl0aW9uLmlkLFxyXG4gICAgICAgICAgbGFiZWw6IGNvbmRpdGlvbi5pZCArIFwiVGl0bGVcIixcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY29uZGl0aW9uLm9wdGlvbnMpe1xyXG4gICAgICAgICAgdHlwZU9wdGlvbnNbY29uZGl0aW9uLmlkXS5vcHRpb25zID0gey4uLmNvbmRpdGlvbi5vcHRpb25zfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHR5cGVPcHRpb25zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIndvcmtmbG93LWNvbmRpdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvbiB0eXBlLXNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtc2VsZWN0XCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCIgZm9yPVwiaGFuZGxlclwiPnt7IHRyYW5zLnNlbGVjdENvbmRpdGlvblR5cGUgfX06PC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IDp2YWx1ZT1cImNvbmRpdGlvbi50eXBlXCIgbmFtZT1cImhhbmRsZXJcIiBpZD1cImhhbmRsZXJcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGhhbmRsZXJcIiBAY2hhbmdlPVwic2V0VHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi5pZFwiIHYtZm9yPVwib3B0aW9uIGluIHR5cGVPcHRpb25zXCI+e3sgdHJhbnNbb3B0aW9uLmxhYmVsXSB9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHN2ZyBAY2xpY2s9XCJyZW1vdmVDb25kaXRpb24oY29uZGl0aW9uKVwiIGNsYXNzPVwicmVtb3ZlLWNvbmRpdGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIxZW1cIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjwhLS0hIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgdi1pZj1cImNvbmRpdGlvbi50eXBlID09ICd0YXNrSW1wb3J0YW50J1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uIGltcG9ydGFudC1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+e3sgdHJhbnNbY29uZGl0aW9uLnR5cGUgKyBcIlRpdGxlXCJdIH19OjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG5hbWU9XCJpbXBvcnRhbnRcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cImltcG9ydGFudFwiIEBjaGFuZ2U9XCJzZXRJbXBvcnRhbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA6Y2hlY2tlZD1cImNvbmRpdGlvbi5pbXBvcnRhbnRcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHYtaWY9XCJjb25kaXRpb24udHlwZSA9PSAnZG9jdW1lbnRSZXF1ZXN0TW9kZSdcIiBjbGFzcz1cImZvcm0tc2VjdGlvbiBpbXBvcnRhbnQtc2VjdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC1zZWxlY3RcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj57eyB0cmFuc1tjb25kaXRpb24udHlwZSArIFwiVGl0bGVcIl0gfX06PC9sYWJlbD5cclxuICAgICAgICA8c2VsZWN0IDp2YWx1ZT1cImNvbmRpdGlvbi5kb2N1bWVudFJlcXVlc3RNb2RlXCIgbmFtZT1cImRvY3VtZW50UmVxdWVzdE1vZGVcIiBpZD1cImRvY3VtZW50UmVxdWVzdE1vZGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBtb2RlXCIgQGNoYW5nZT1cInNldEZpZWxkKCdkb2N1bWVudFJlcXVlc3RNb2RlJywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiA6dmFsdWU9XCJvcHRpb24udmFsdWVcIiB2LWZvcj1cIm9wdGlvbiBpbiBkb2N1bWVudFJlcXVlc3RNb2RlT3B0aW9uc1wiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgdi1pZj1cImNvbmRpdGlvbi50eXBlID09ICd0aW1lbGluZSdcIiBjbGFzcz1cImZvcm0tc2VjdGlvbiB0aW1lbGluZS1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLWRhdGVcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ0aW1lbGluZS1mcm9tXCI+RnJvbTo8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRhdGUtaW5wdXRcIiBpZD1cInRpbWVsaW5lLWZyb21cIiA6dmFsdWU9XCJjb25kaXRpb24udGltZWxpbmVGcm9tXCJcclxuICAgICAgICAgIEBjaGFuZ2U9XCJzZXRUaW1lbGluZUZyb20oJGV2ZW50KVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtZGF0ZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInRpbWVsaW5lLXRvXCI+VG86PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkYXRlLWlucHV0XCIgaWQ9XCJ0aW1lbGluZS10b1wiIDp2YWx1ZT1cImNvbmRpdGlvbi50aW1lbGluZVRvXCJcclxuICAgICAgICAgIEBjaGFuZ2U9XCJzZXRUaW1lbGluZVRvKCRldmVudClcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHYtaWY9XCJjb25kaXRpb24udHlwZSA9PSAndGFza0NvbW1lbnRUeXBlJ1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uIHR5cGUtc2VjdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC1zZWxlY3RcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJoYW5kbGVyXCI+e3sgdHJhbnNbY29uZGl0aW9uLnR5cGUgKyBcIlRpdGxlXCJdIH19OjwvbGFiZWw+XHJcbiAgICAgICAgPHNlbGVjdCA6dmFsdWU9XCJjb25kaXRpb24udGFza0NvbW1lbnRUeXBlXCIgbmFtZT1cImhhbmRsZXJcIiBpZD1cImhhbmRsZXJcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGhhbmRsZXJcIlxyXG4gICAgICAgICAgQGNoYW5nZT1cInNldFRhc2tDb21tZW50VHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIHR5cGVPcHRpb25zW2NvbmRpdGlvbi50eXBlXS5vcHRpb25zXCI+e3sgdHJhbnNbY29uZGl0aW9uLnR5cGUgKyBvcHRpb24udmFsdWUgKyBcIlRpdGxlXCJdIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3ZnIEBjbGljaz1cInJlbW92ZUNvbmRpdGlvbihjb25kaXRpb24pXCIgY2xhc3M9XCJyZW1vdmUtY29uZGl0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjFlbVwiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PCEtLSEgRm9udCBBd2Vzb21lIEZyZWUgNi40LjIgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjMgRm9udGljb25zLCBJbmMuIC0tPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgZD1cIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIiAvPlxyXG4gICAgPC9zdmc+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD4jaW1wb3J0YW50IHtcclxuICBtYXJnaW4tdG9wOiA2cHg7XHJcbn08L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHJlZiwgdG9IYW5kbGVycyB9IGZyb20gJ3Z1ZSc7XHJcbmltcG9ydCBXb3JrZmxvd0luZGV4IGZyb20gJy4vV29ya2Zsb3dJbmRleCc7XHJcbmltcG9ydCBXb3JrZmxvd0RldGFpbHMgZnJvbSAnLi9Xb3JrZmxvd0RldGFpbHMnO1xyXG5pbXBvcnQgeyB1c2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL05vdGlmaWNhdGlvblV0aWxpdHkuanMnO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ3VzZW1vZGFsLXZ1ZTMnO1xyXG5pbXBvcnQgeyBkYXRhIH0gZnJvbSAnanF1ZXJ5JztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBwcm9wczoge1xyXG4gICAgZGF0YVN0cmluZzogU3RyaW5nLFxyXG4gICAgdHJhbnM6IFN0cmluZyxcclxuICAgIGVudGl0aWVzOiBTdHJpbmcsXHJcbiAgfSxcclxuXHJcbiAgY29tcG9uZW50czoge1xyXG4gICAgTW9kYWwsXHJcbiAgICBXb3JrZmxvd0luZGV4LFxyXG4gICAgV29ya2Zsb3dEZXRhaWxzXHJcbiAgfSxcclxuXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgIHdvcmtmbG93RW50aXRpZXM6IG51bGwsXHJcbiAgICAgIHRyYW5zbGF0ZWQ6IG51bGwsXHJcbiAgICAgIHNwbGl0Q29udGFpbmVyOiBudWxsLFxyXG4gICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcclxuICAgICAgZXZlbnRHcm91cHM6IG51bGwsXHJcbiAgICAgIHNlbGVjdGVkRW50aXR5OiBudWxsLFxyXG4gICAgICBzZWxlY3RlZFdvcmtmbG93OiBudWxsLFxyXG4gICAgICBsb2FkZWRFbnRpdGllczogW10sXHJcbiAgICAgIG5vdGlmaWNhdGlvblV0aWw6IG51bGwsXHJcbiAgICAgIG5vdGlmaWNhdGlvbjogJycsXHJcbiAgICAgIG5vdGlmaWNhdGlvbkNvbnRlbnRJZDogJycsXHJcbiAgICAgIGlzRGVsZXRlVmlzaWJsZTogcmVmKGZhbHNlKSxcclxuICAgICAgdXNlckF2YXRhckVsZW1lbnQ6IG51bGwsXHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgY3JlYXRlZCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UodGhpcy5kYXRhU3RyaW5nKTtcclxuICAgIHRoaXMud29ya2Zsb3dFbnRpdGllcyA9IEpTT04ucGFyc2UodGhpcy5lbnRpdGllcyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZWQgPSBKU09OLnBhcnNlKHRoaXMudHJhbnMpO1xyXG4gICAgdGhpcy5wcmVwYXJlRGF0YSh0aGlzLmRhdGEpO1xyXG4gIH0sXHJcblxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICB0aGlzLnByZXBhcmVET01FdmVudHMoKTtcclxuICAgIHRoaXMuZGVmYXVsdFZpZXcoKTtcclxuICAgIHRoaXMudXNlckF2YXRhckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudXNlci1hdmF0YXInKTtcclxuICB9LFxyXG5cclxuICBtZXRob2RzOiB7XHJcbiAgICBwcmVwYXJlRGF0YShkYXRhKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbCA9IHVzZU5vdGlmaWNhdGlvbigpO1xyXG4gICAgICB0aGlzLmV2ZW50R3JvdXBzID0gZGF0YS5jb25maWcudGFzay5ldmVudHM7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbnRpdHkgPSBkYXRhLmNvbmZpZy50YXNrLmlkO1xyXG4gICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5zZWxlY3RlZEVudGl0eSk7XHJcbiAgICAgIHRoaXMuYXNzaWduV29ya2Zsb3dzKGRhdGEud29ya2Zsb3dzKTtcclxuICAgIH0sXHJcblxyXG4gICAgYXNzaWduV29ya2Zsb3dzKHdvcmtmbG93cykge1xyXG4gICAgICB3b3JrZmxvd3MuZm9yRWFjaCh3b3JrZmxvdyA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmV2ZW50R3JvdXBzW3dvcmtmbG93LmV2ZW50SWRdO1xyXG4gICAgICAgIGlmICghZXZlbnQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFldmVudC53b3JrZmxvd3MpIHtcclxuICAgICAgICAgIGV2ZW50LndvcmtmbG93cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3b3JrZmxvdy5pZCA9IGV2ZW50LndvcmtmbG93cy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5ldmVudEdyb3Vwc1t3b3JrZmxvdy5ldmVudElkXS53b3JrZmxvd3MucHVzaCh3b3JrZmxvdyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVXb3JrZmxvdyhldmVudCkge1xyXG4gICAgICBpZiAoIWV2ZW50LndvcmtmbG93cykge1xyXG4gICAgICAgIGV2ZW50LndvcmtmbG93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LndvcmtmbG93cy5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCJOZXcgRXZlbnRcIixcclxuICAgICAgICBldmVudElkOiBldmVudC5pZCxcclxuICAgICAgICBldmVudE5hbWU6IGV2ZW50Lm5hbWUsXHJcbiAgICAgICAgZW50aXR5OiB0aGlzLnNlbGVjdGVkRW50aXR5LFxyXG4gICAgICAgIGVudGl0eUNsYXNzOiB0aGlzLmRhdGEuY29uZmlnW3RoaXMuc2VsZWN0ZWRFbnRpdHldLmNsYXNzLFxyXG4gICAgICAgIGlkOiBldmVudC53b3JrZmxvd3MubGVuZ3RoLFxyXG4gICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgIGFjdGlvbnM6IFtdLFxyXG4gICAgICAgIGNvbmRpdGlvbnM6IFtdLFxyXG4gICAgICAgIHdvcmtmbG93SWQ6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdFdvcmtmbG93KGV2ZW50LndvcmtmbG93c1tldmVudC53b3JrZmxvd3MubGVuZ3RoIC0gMV0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBvbkNyZWF0ZVBlcm1hbmVudFdvcmtmbG93KHdvcmtmbG93KSB7XHJcbiAgICAgIGxldCBhcHAgPSB0aGlzO1xyXG4gICAgICBheGlvc1xyXG4gICAgICAgIC5wb3N0KHRoaXMuZGF0YS5jcmVhdGVVcmwsIHtcclxuICAgICAgICAgIHdvcmtmbG93XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIGNvbnN0IHdvcmtmbG93ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIGFwcC5zZWxlY3RlZFdvcmtmbG93ID0gd29ya2Zsb3c7XHJcbiAgICAgICAgICBhcHAuc2F2ZVdvcmtmbG93Tm90aWZpY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgIH0sXHJcblxyXG4gICAgb25VcGRhdGVXb3JrZmxvdyh3b3JrZmxvdykge1xyXG4gICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgYXhpb3NcclxuICAgICAgICAucG9zdCh0aGlzLmRhdGEudXBkYXRlVXJsLCB7XHJcbiAgICAgICAgICB3b3JrZmxvd1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBjb25zdCB3b3JrZmxvdyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBpZiAoYXBwLnNlbGVjdGVkV29ya2Zsb3cgJiYgYXBwLnNlbGVjdGVkV29ya2Zsb3cud29ya2Zsb3dJZCA9PSB3b3JrZmxvdy53b3JrZmxvd0lkKSB7XHJcbiAgICAgICAgICAgIGFwcC5zZWxlY3RlZFdvcmtmbG93ID0gd29ya2Zsb3c7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhcHAuZXZlbnRHcm91cHNbd29ya2Zsb3cuZXZlbnRJZF0ud29ya2Zsb3dzW3dvcmtmbG93LmlkXSA9IHdvcmtmbG93O1xyXG4gICAgICAgICAgYXBwLnNhdmVXb3JrZmxvd05vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9LFxyXG5cclxuICAgIHNhdmVXb3JrZmxvd05vdGlmaWNhdGlvbigpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcInNhdmVkXCI7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKHRoaXMudXNlckF2YXRhckVsZW1lbnQpO1xyXG4gICAgfSxcclxuXHJcbiAgICBvbkRlbGV0ZVdvcmtmbG93KHdvcmtmbG93KSB7XHJcbiAgICAgIHRoaXMuaXNEZWxldGVWaXNpYmxlID0gcmVmKHRydWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkZWxldGVXb3JrZmxvdyh3b3JrZmxvdykge1xyXG4gICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgYXhpb3NcclxuICAgICAgICAucG9zdCh0aGlzLmRhdGEuZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICB3b3JrZmxvd1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBjb25zdCB3b3JrZmxvdyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBhcHAuZXZlbnRHcm91cHNbd29ya2Zsb3cuZXZlbnRJZF0ud29ya2Zsb3dzLnNwbGljZSh3b3JrZmxvdy5pZCwgMSk7XHJcbiAgICAgICAgICBpZiAoYXBwLnNlbGVjdGVkV29ya2Zsb3cgJiYgYXBwLnNlbGVjdGVkV29ya2Zsb3cud29ya2Zsb3dJZCA9PSB3b3JrZmxvdy53b3JrZmxvd0lkKSB7XHJcbiAgICAgICAgICAgIGFwcC5zZWxlY3RlZFdvcmtmbG93ID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICBhcHAuaXNEZWxldGVWaXNpYmxlID0gcmVmKGZhbHNlKTtcclxuICAgIH0sXHJcblxyXG4gICAgZGVzZWxlY3RXb3JrZmxvdygpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyAmJiAhdGhpcy5zZWxlY3RlZFdvcmtmbG93LndvcmtmbG93SWQpIHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZlbnRHcm91cHNbdGhpcy5zZWxlY3RlZFdvcmtmbG93LmV2ZW50SWRdO1xyXG4gICAgICAgIGV2ZW50LndvcmtmbG93cy5zcGxpY2UoZXZlbnQud29ya2Zsb3dzLmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIHNlbGVjdFdvcmtmbG93KHdvcmtmbG93KSB7XHJcbiAgICAgIHRoaXMuZGVzZWxlY3RXb3JrZmxvdygpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSB3b3JrZmxvdztcclxuICAgIH0sXHJcblxyXG4gICAgc2VsZWN0V29ya2Zsb3dFbnRpdHkoZW50aXR5KSB7XHJcbiAgICAgIHRoaXMuZGVzZWxlY3RXb3JrZmxvdygpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW50aXR5ID0gdGhpcy5kYXRhLmNvbmZpZ1tlbnRpdHldLmlkO1xyXG4gICAgICB0aGlzLmV2ZW50R3JvdXBzID0gdGhpcy5kYXRhLmNvbmZpZ1tlbnRpdHldLmV2ZW50cztcclxuICAgICAgaWYgKHRoaXMubG9hZGVkRW50aXRpZXMuaW5jbHVkZXMoZW50aXR5KSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBldmVudElkIGluIHRoaXMuZXZlbnRHcm91cHMpIHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZlbnRHcm91cHNbZXZlbnRJZF07XHJcbiAgICAgICAgZXZlbnQud29ya2Zsb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFwcCA9IHRoaXM7XHJcbiAgICAgIGF4aW9zXHJcbiAgICAgICAgLnBvc3QodGhpcy5kYXRhLmVudGl0eVVybCwge1xyXG4gICAgICAgICAgZW50aXR5OiBhcHAuZGF0YS5jb25maWdbYXBwLnNlbGVjdGVkRW50aXR5XS5jbGFzc1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBhcHAubG9hZGVkRW50aXRpZXMucHVzaChhcHAuc2VsZWN0ZWRFbnRpdHkpO1xyXG4gICAgICAgICAgY29uc3Qgd29ya2Zsb3dzID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIGFwcC5hc3NpZ25Xb3JrZmxvd3Mod29ya2Zsb3dzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfSxcclxuXHJcbiAgICBwcmVwYXJlRE9NRXZlbnRzKCkge1xyXG4gICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgdGhpcy5zcGxpdENvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy52dWUtc3BsaXQtY29udGFpbmVyJyk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgYXBwLmlzRHJhZ2dpbmcgPyBhcHAuY2xlYXJKU0V2ZW50cygpIDogJyc7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnZ1ZS1zcGxpdC1pbmRleCcpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGFwcC5kZXNlbGVjdFdvcmtmbG93KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBjbGVhckpTRXZlbnRzKCkge1xyXG4gICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zcGxpdENvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMucmVzaXplKTtcclxuICAgICAgdGhpcy5zcGxpdENvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdyZXNpemluZycpO1xyXG4gICAgfSxcclxuXHJcbiAgICByZXNpemUoZSwgc2V0VmFsdWUgPSBudWxsKSB7XHJcbiAgICAgIGxldCBzdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuc3BsaXRDb250YWluZXIpO1xyXG4gICAgICBsZXQgcmVzcG9uc2l2ZUdhcCA9IHBhcnNlSW50KHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXJlc3BvbnNpdmUtZ2FwJykpO1xyXG4gICAgICBsZXQgbWluV2lkdGggPSBwYXJzZUludChzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1kZXRhaWwtbWluLXdpdGgnKSk7XHJcbiAgICAgIGxldCBmaW5hbFZhbHVlID0gcGFyc2VJbnQoZS5wYWdlWCAtIHJlc3BvbnNpdmVHYXApO1xyXG4gICAgICBsZXQgd2lkdGggPSBwYXJzZUludChzdHlsZXMud2lkdGgubWF0Y2goLyhcXGQrKS8pWzBdKTtcclxuICAgICAgZmluYWxWYWx1ZSA9IChmaW5hbFZhbHVlID4gbWluV2lkdGgpID8gZmluYWxWYWx1ZSA6IG1pbldpZHRoO1xyXG4gICAgICBmaW5hbFZhbHVlID0gKGZpbmFsVmFsdWUgPiB3aWR0aCAtIG1pbldpZHRoKSA/IHdpZHRoIC0gbWluV2lkdGggOiBmaW5hbFZhbHVlO1xyXG4gICAgICB0aGlzLnNwbGl0Q29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KFwiLS1kZXRhaWwtd2lkdGhcIiwgZmluYWxWYWx1ZSArICdweCcpO1xyXG4gICAgfSxcclxuXHJcbiAgICBkZWZhdWx0VmlldygpIHtcclxuICAgICAgbGV0IHRhYmxlU3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNwbGl0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIud29ya2Zsb3ctdGFibGVcIikpO1xyXG4gICAgICBsZXQgdGFibGVXaWR0aCA9IHBhcnNlSW50KHRhYmxlU3R5bGVzLndpZHRoLm1hdGNoKC8oXFxkKykvKVswXSk7XHJcbiAgICAgIGxldCBzdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuc3BsaXRDb250YWluZXIpO1xyXG4gICAgICBsZXQgd2lkdGggPSBwYXJzZUludChzdHlsZXMud2lkdGgubWF0Y2goLyhcXGQrKS8pWzBdKTtcclxuICAgICAgbGV0IG1pbldpZHRoID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJy0tZGV0YWlsLW1pbi13aXRoJyk7XHJcbiAgICAgIGxldCBvcmlnaW4gPSB3aWR0aCAvIDI7XHJcbiAgICAgIGxldCBmaW5hbFZhbHVlID0gdGFibGVXaWR0aDtcclxuICAgICAgZmluYWxWYWx1ZSA9IChmaW5hbFZhbHVlIDwgb3JpZ2luKSA/IG9yaWdpbiA6IGZpbmFsVmFsdWU7XHJcbiAgICAgIGZpbmFsVmFsdWUgPSAoZmluYWxWYWx1ZSA+IG1pbldpZHRoKSA/IGZpbmFsVmFsdWUgOiBtaW5XaWR0aDtcclxuICAgICAgZmluYWxWYWx1ZSA9IChmaW5hbFZhbHVlID4gd2lkdGggLSBtaW5XaWR0aCkgPyB3aWR0aCAtIG1pbldpZHRoIDogZmluYWxWYWx1ZTtcclxuICAgICAgdGhpcy5zcGxpdENvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tZGV0YWlsLXdpZHRoXCIsIGZpbmFsVmFsdWUgKyAncHgnKTtcclxuICAgIH0sXHJcblxyXG4gICAgZHJhZyhlKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zcGxpdENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLnJlc2l6ZSk7XHJcbiAgICAgIHRoaXMuc3BsaXRDb250YWluZXIuY2xhc3NMaXN0LmFkZCgncmVzaXppbmcnKTtcclxuICAgIH0sXHJcbiAgfSxcclxuXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIGlzRXhwYW5kZWQoKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3cpIHtcclxuICAgICAgICByZXR1cm4gXCJleHBhbmRlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfSxcclxuXHJcbiAgICBldmVudENvbmZpZygpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5jb25maWdbdGhpcy5zZWxlY3RlZEVudGl0eV0uZXZlbnRzW3RoaXMuc2VsZWN0ZWRXb3JrZmxvdy5ldmVudElkXTtcclxuICAgIH1cclxuICB9LFxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgOmNsYXNzPVwiJ3Z1ZS13b3JrZmxvdy1jb250YWluZXIgdnVlLXNwbGl0LWNvbnRhaW5lciAnICsgaXNFeHBhbmRlZFwiPlxyXG4gICAgPFdvcmtmbG93SW5kZXggcmVmPVwid29ya2Zsb3dJbmRleFwiIDpjb25maWc9XCJkYXRhLmNvbmZpZ1wiIDp0cmFucz1cInRyYW5zbGF0ZWRcIiA6ZXZlbnQtZ3JvdXBzPVwiZXZlbnRHcm91cHNcIlxyXG4gICAgICA6ZW50aXR5LXRpdGxlPVwid29ya2Zsb3dFbnRpdGllc1tzZWxlY3RlZEVudGl0eV1cIiA6d29ya2Zsb3ctZW50aXRpZXM9XCJ3b3JrZmxvd0VudGl0aWVzXCJcclxuICAgICAgQGNyZWF0ZS13b3JrZmxvdz1cImNyZWF0ZVdvcmtmbG93XCIgQHNlbGVjdC13b3JrZmxvdz1cInNlbGVjdFdvcmtmbG93XCIgQHNlbGVjdC13b3JrZmxvdy1lbnRpdHk9XCJzZWxlY3RXb3JrZmxvd0VudGl0eVwiXHJcbiAgICAgIEB1cGRhdGUtd29ya2Zsb3c9XCJvblVwZGF0ZVdvcmtmbG93XCIgQGRlbGV0ZS13b3JrZmxvdz1cIm9uRGVsZXRlV29ya2Zsb3dcIj5cclxuICAgIDwvV29ya2Zsb3dJbmRleD5cclxuICAgIDxkaXYgY2xhc3M9XCJkcmFnYmFyXCIgQG1vdXNlZG93bj1cImRyYWcoJGV2ZW50KVwiPjwvZGl2PlxyXG4gICAgPFdvcmtmbG93RGV0YWlscyByZWY9XCJ3b3JrZmxvd0RldGFpbHNcIiA6ZGF0YT1cImRhdGFcIiA6Y29uZmlnPVwiZXZlbnRDb25maWdcIiA6dHJhbnM9XCJ0cmFuc2xhdGVkXCIgOndvcmtmbG93PVwic2VsZWN0ZWRXb3JrZmxvd1wiXHJcbiAgICAgIHYtaWY9XCJzZWxlY3RlZFdvcmtmbG93XCIgQGNyZWF0ZS1wZXJtYW5lbnQtd29ya2Zsb3c9XCJvbkNyZWF0ZVBlcm1hbmVudFdvcmtmbG93XCIgQHVwZGF0ZS13b3JrZmxvdz1cIm9uVXBkYXRlV29ya2Zsb3dcIlxyXG4gICAgICBAZGVsZXRlLXdvcmtmbG93PVwib25EZWxldGVXb3JrZmxvd1wiPlxyXG4gICAgPC9Xb3JrZmxvd0RldGFpbHM+XHJcbiAgICA8ZGl2IGlkPVwibm90aWZpY2F0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWNjZXNzXCIgdi1pZj1cIm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9PSAnc2F2ZWQnXCI+XHJcbiAgICAgICAgWW91ciBjb25maWd1cmF0aW9uIHdhcyBzYXZlZCBzdWNjZXNzZnVsbHkhXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdkZWxldGVkJ1wiPlxyXG4gICAgICAgIFlvdXIgY29uZmlndXJhdGlvbiB3YXMgZGVsZXRlZCBzdWNjZXNzZnVsbHkhXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdlcnJvcidcIj5cclxuICAgICAgICBUaGVyZSBoYXMgYmVlbiBhbiBpbnRlcm5hbCBpc3N1ZS5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxNb2RhbCB2LW1vZGVsOnZpc2libGU9XCJpc0RlbGV0ZVZpc2libGVcIiA6dGl0bGU9XCJ0cmFuc2xhdGVkLndhcm5pbmdcIiA6d2lkdGg9XCI4MDBcIlxyXG4gICAgICA6b2stYnV0dG9uPVwieyB0ZXh0OiB0cmFuc2xhdGVkLm9rLCBvbmNsaWNrOiAoKSA9PiB7IHRoaXMuZGVsZXRlV29ya2Zsb3codGhpcy5zZWxlY3RlZFdvcmtmbG93KSB9LCBsb2FkaW5nOiBmYWxzZSB9XCJcclxuICAgICAgOmNhbmNlbC1idXR0b249XCJ7IHRleHQ6IHRyYW5zbGF0ZWQuY2FuY2VsLCBsb2FkaW5nOiBmYWxzZSB9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtdGFzay1tb2RhbFwiPlxyXG4gICAgICAgIDxwPkRlbGV0aW5nIHRoaXMgd29ya2Zsb3cgd2lsbCBwZXJtYW5lbnRseSByZW1vdmUgaXQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIGNhbm5vdCBiZSB1bmRvbmUuIEFyZSB5b3Ugc3VyZSB5b3VcclxuICAgICAgICAgIHdhbnRcclxuICAgICAgICAgIHRvIHByb2NlZWQgd2l0aCB0aGUgZGVsZXRpb24/PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvTW9kYWw+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGU+XHJcbi5pZnJhbWUtY29udGFpbmVyIC5tb2RhbC12dWUzLWNvbnRlbnQge1xyXG4gIHdpZHRoOiA1MCU7XHJcbiAgaGVpZ2h0OiA4MCU7XHJcbiAgcmVzaXplOiBib3RoO1xyXG4gIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgbWluLWhlaWdodDogMjAwcHg7XHJcbn1cclxuXHJcbi5pZnJhbWUtY29udGFpbmVyIC5tb2RhbC12dWUzLWJvZHkge1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmlmcmFtZS1jb250YWluZXIgLm1vZGFsLXZ1ZTMtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uaWZyYW1lLWNvbnRhaW5lciAubW9kYWwtdnVlMy1mb290ZXIge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuI25vdGlmaWNhdGlvbiB7XHJcbiAgcmlnaHQ6IDIwcHggIWltcG9ydGFudDtcclxuICB0b3A6IDIwcHggIWltcG9ydGFudDtcclxuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgei1pbmRleDogMTAwMDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVJbmRleCBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZUluZGV4LnZ1ZSc7XHJcbmltcG9ydCBWdWVEZXRhaWxzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRGV0YWlscy52dWUnO1xyXG5pbXBvcnQgVnVlRmlsdGVyIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRmlsdGVyLnZ1ZSc7XHJcbmltcG9ydCBWdWVFbGVtZW50TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL1Z1ZUVsZW1lbnRNaXhpbic7XHJcbmltcG9ydCBWdWVNZXNzYWdlcyBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZU1lc3NhZ2VzLnZ1ZSc7XHJcbmltcG9ydCB7IHVzZU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uVXRpbGl0eS5qcydcclxuaW1wb3J0IHsgbWFwRXh0ZW5zaW9uVG9GaWxlVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdXRpbGl0eS9tYXBGaWxlRXh0ZW5zaW9uLmpzJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgVnVlSW5kZXgsXHJcbiAgICAgICAgVnVlRGV0YWlscyxcclxuICAgICAgICBWdWVGaWx0ZXIsXHJcbiAgICAgICAgVnVlTWVzc2FnZXNcclxuICAgIH0sXHJcbiAgICBtaXhpbnM6IFtWdWVFbGVtZW50TWl4aW5dLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBkYXRhU3RyaW5nOiBTdHJpbmcsXHJcbiAgICAgICAgZW50aXR5OiBTdHJpbmdcclxuICAgIH0sXHJcblxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjaGFuZ2VMb2dWaXNpYmxlOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGRvY3VtZW50KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkb2N1bWVudEV4cGFuZGVkQ2xhc3MoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUxvZ1Zpc2libGUgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCc7XHJcbiAgICAgICAgfSxcclxuXHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgZm9ybWF0Q2hhbmdlbG9nKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgbWFwRXh0ZW5zaW9uVG9GaWxlVHlwZShlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGxldCBleHRlbnNpb24gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maWVsZHMuZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gZWxlbWVudC5maWVsZHMuZmlsZS5zcGxpdCgnLicpLnBvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBtYXBFeHRlbnNpb25Ub0ZpbGVUeXBlKGV4dGVuc2lvbik7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY2hpbGRyZW5DbGFzcyhlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNoaWxkcmVuID8gJ2NoaWxkcmVuJyA6ICcnO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGV4cGFuZEVsZW1lbnQoZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50Lm9wdGlvbnMuZXhwYW5kZWQgPSAhZWxlbWVudC5vcHRpb25zLmV4cGFuZGVkO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDaGlsZEVsZW1lbnRzKGVsZW1lbnQpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGxvYWRDaGlsZEVsZW1lbnRzKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQub3B0aW9ucy5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZENoaWxkcmVuQWN0aW9uKGV2ZW50LCB0aGlzLmRhdGEuYWN0aW9ucy5sb2FkQ2hpbGRyZW4sIGVsZW1lbnQpO1xyXG4gICAgICAgIH0sXHJcbiAgICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgICA8ZGl2IDpjbGFzcz1cIid2dWUtZG9jdW1lbnQtY29udGFpbmVyIHZ1ZS1zcGxpdC1jb250YWluZXIgJyArIGV4cGFuZGVkQ2xhc3NcIj5cclxuICAgICAgICA8VnVlSW5kZXggOnN0YXRlPVwic3RhdGVcIiA6ZGF0YT1cImRhdGFcIiA6ZW50aXR5PVwiZW50aXR5XCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiXHJcbiAgICAgICAgICAgIEBnbG9iYWxBY3Rpb25DbGljaz1cIm9uR2xvYmFsQWN0aW9uQ2xpY2tcIiByZWY9XCJpbmRleFwiIDpjdXJyZW50RWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCI+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6dGFibGUtY2VsbD1cInsgZmllbGQsIGVsZW1lbnQgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZmlsZS1pY29uIGNlbGwgYCArIGNoaWxkcmVuQ2xhc3MoZWxlbWVudClcIiB2LWlmPVwiZmllbGQubmFtZSA9PSAnaWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuZFwiIHYtaWY9XCJlbGVtZW50LmNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIDpjbGFzcz1cImBtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIHN1Ym1lbnUtdG9nZ2xlLWljb25gICsgKGVsZW1lbnQub3B0aW9ucy5leHBhbmRlZCA/ICcgZXhwYW5kZWQnIDogJycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwiZXhwYW5kRWxlbWVudChlbGVtZW50KTtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwtY29udGVudCBpY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIDpjbGFzcz1cImAke21hcEV4dGVuc2lvblRvRmlsZVR5cGUoZWxlbWVudCl9YFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OnRhYmxlLWNlbGwtY2hpbGQ9XCJ7IGZpZWxkLCBlbGVtZW50IH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWljb24gY2VsbFwiIHYtaWY9XCJmaWVsZC5uYW1lID09ICdpZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbC1jb250ZW50IGljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgOmNsYXNzPVwiYCR7bWFwRXh0ZW5zaW9uVG9GaWxlVHlwZShlbGVtZW50KX1gXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9WdWVJbmRleD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJhZ2JhciBuZXctZHJhZ2JhclwiIEBtb3VzZWRvd249XCJkcmFnKCRldmVudClcIiBAbW91c2V1cD1cInN0b3BEcmFnKCRldmVudClcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgPFZ1ZURldGFpbHMgOmRhdGE9XCJkYXRhXCIgOnN0YXRlPVwic3RhdGVcIiA6ZW50aXR5PVwiZW50aXR5XCIgdi1zaG93PVwidGhpcy5zdGF0ZS52aWV3ID09PSAnZGV0YWlscydcIlxyXG4gICAgICAgICAgICBAY3VzdG9tQWN0aW9uPVwib25DdXN0b21BY3Rpb25cIiBAY2hhbmdlLXZhbHVlPVwib25DaGFuZ2VWYWx1ZVwiIHJlZj1cImRldGFpbHNcIiBAdXBsb2FkLWZpbGU9XCJvbkZpbGVVcGxvYWRcIlxyXG4gICAgICAgICAgICBAYWN0aW9uQ2xpY2s9XCJvbkFjdGlvbkNsaWNrXCI+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6cHJlU3VidGl0bGU9XCJ7IGVsZW1lbnQgfVwiPlxyXG4gICAgICAgICAgICAgICAgPHA+e3sgdGhpcy5kYXRhLmZpZWxkcy5kb2N1bWVudE5yLmxhYmVsIH19IDoge3sgZWxlbWVudC5maWVsZHMuZG9jdW1lbnROciB9fTwvcD5cclxuICAgICAgICAgICAgICAgIDxwPlZlcnNpb24gOiB7eyBlbGVtZW50LmZpZWxkcy52ZXJzaW9uID8gZWxlbWVudC5maWVsZHMudmVyc2lvbi50b0ZpeGVkKDIpIDogJzEuMDAnIH19LCBSZXZpc2lvbjoge3tcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpZWxkcy5yZXZpc2lvbiA/IGVsZW1lbnQuZmllbGRzLnJldmlzaW9uLnRvRml4ZWQoMikgOiAnMS4wMCcgfX08L3A+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Y3VzdG9tRmllbGRzR2VuZXJhbD1cInsgZ3JvdXBOYW1lIH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGQtY29udGFpbmVyIGNvbC1sYXJnZSBmaXJzdCBzaW5nbGVcIiB2LWlmPVwiZ3JvdXBOYW1lID09ICdkb2N1bWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5saW5rXCIgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC1sYWJlbCBidG4tbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG4gc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cInRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aGlzLmRhdGEudHJhbnMudmlld0VudGl0eSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiIXRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmludGVybmFsVHlwZSAmJiBmYWxzZVwiIGNsYXNzPVwiZm9ybS1ncm91cCB2dWUtZmllbGQtbGFiZWwgYnRuLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2dWUtYnRuIHNlY29uZGFyeVwiIEBjbGljaz1cIm9uQWN0aW9uQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5maWxlVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGhpcy5kYXRhLnRyYW5zLnZpZXdFbnRpdHkgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXIgY29sLWxhcmdlXCIgdi1pZj1cImdyb3VwTmFtZSA9PSAnZG9jdW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY2hhbmdlbG9nc1wiIHYtaWY9XCJkb2N1bWVudC5maWVsZHMuY2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJyArIGRvY3VtZW50RXhwYW5kZWRDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWxgXCIgOmZvcj1cIidsYWJlbC0nICsgZGF0YS5maWVsZHMuY2hhbmdlbG9nLm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmllbGRzLmNoYW5nZWxvZy5sYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIEBjbGljaz1cImNoYW5nZUxvZ1Zpc2libGUgPSAhY2hhbmdlTG9nVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duIGxhYmVsLWV4cGFuZC1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYW5nZWxvZ3MtY29udGVudFwiIHYtaWY9XCJjaGFuZ2VMb2dWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwiKGNoYW5nZWxvZywgaW5kZXgpIGluIGRvY3VtZW50LmZpZWxkcy5jaGFuZ2Vsb2dcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDY+e3sgZGF0YS5maWVsZHMudmVyc2lvbi5sYWJlbCArICcgJyArIGNoYW5nZWxvZy52ZXJzaW9uICsgJywgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmllbGRzLnJldmlzaW9uLmxhYmVsICsgJyAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlbG9nLnJldmlzaW9uIH19PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCB2LWh0bWw9XCJmb3JtYXRDaGFuZ2Vsb2coY2hhbmdlbG9nLmNvbnRlbnQpXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwvVnVlRGV0YWlscz5cclxuXHJcbiAgICAgICAgPFZ1ZU1lc3NhZ2VzIDpkYXRhPVwiZGF0YVwiIDplbnRpdHk9XCJlbnRpdHlcIiA6c3RhdGU9XCJzdGF0ZVwiIDplbGVtZW50PVwiY3VycmVudEVsZW1lbnRcIiBAY2FuY2VsTW9kYWxDbGljaz1cIm9uQ2FuY2VsTW9kYWxDbGlja1wiXHJcbiAgICAgICAgICAgIEBhY3Rpb25Nb2RhbENsaWNrPVwib25BY3Rpb25Nb2RhbENsaWNrXCIgOm1lc3NhZ2VzVmlzaWJpbGl0eT1cIm1lc3NhZ2VzVmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgIEBjaGFuZ2VDb25maWd1cmF0aW9uPVwib25DaGFuZ2VDb25maWd1cmF0aW9uXCI+XHJcbiAgICAgICAgPC9WdWVNZXNzYWdlcz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmx1cmVkXCIgdi1pZj1cIiFkYXRhLmNvbmZpZy5zcGxpdCAmJiB0aGlzLnN0YXRlLnZpZXcgPT09ICdkZXRhaWxzJ1wiIEBjbGljaz1cImluZGV4TW9kZSgpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuLmNoYW5nZWxvZ3MtY29udGVudCB7XHJcbiAgICBtYXJnaW4tdG9wOiAzNnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG59XHJcblxyXG4uY2hhbmdlbG9ncyBoNiB7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuPC9zdHlsZT4iLCI8c2NyaXB0PlxyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xyXG5pbXBvcnQgeyB1c2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL05vdGlmaWNhdGlvblV0aWxpdHkuanMnO1xyXG5pbXBvcnQgVnVlTXVsdGlTZWxlY3QgZnJvbSAnLi4vLi4vZm9ybS9WdWVNdWx0aVNlbGVjdFNlYXJjaCc7XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBjb21wb25lbnRzOiB7XHJcbiAgICBWdWVNdWx0aVNlbGVjdFxyXG4gIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIGRhdGFTdHJpbmc6IFN0cmluZyxcclxuICAgIHRyYW5zbGF0YWJsZXM6IFN0cmluZyxcclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBcIlwiLFxyXG4gICAgICB0cmFuczogbnVsbCxcclxuICAgICAgcmVxdWlyZWQ6IHt9LFxyXG4gICAgICByZXF1aXJlZENvbXBsZXRlZDogdHJ1ZSxcclxuICAgICAgbm90aWZpY2F0aW9uVXRpbDogbnVsbCxcclxuICAgICAgbm90aWZpY2F0aW9uOiAnJyxcclxuICAgICAgbm90aWZpY2F0aW9uQ29udGVudElkOiAnJ1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgY3JlYXRlZCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UodGhpcy5kYXRhU3RyaW5nKTtcclxuICAgIHRoaXMudHJhbnMgPSBKU09OLnBhcnNlKHRoaXMudHJhbnNsYXRhYmxlcyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGEuY29uZmlnKSB7XHJcbiAgICAgIHRoaXMucmVxdWlyZWRba2V5XSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIGxldCBhcHAgPSB0aGlzO1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25VdGlsID0gdXNlTm90aWZpY2F0aW9uKCk7IC8vIEluaXRpYWxpemUgbm90aWZpY2F0aW9uVXRpbFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NhdmUtY29uZmlndXJhdGlvbicpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBhcHAuc2F2ZUNvbmZpZ3VyYXRpb24oZSk7XHJcbiAgICB9KTtcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIHNhdmVDb25maWd1cmF0aW9uKGUpIHtcclxuICAgICAgdGhpcy5jaGVja1JlcXVpcmVkRmllbGRzKCk7XHJcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkQ29tcGxldGVkKSB7XHJcbiAgICAgICAgdGhpcy5heGlvc1NhdmVDb25maWd1cmF0aW9uKGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ29udGVudElkID0gXCJyZXF1aXJlZFwiO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGF4aW9zU2F2ZUNvbmZpZ3VyYXRpb24oZSkge1xyXG4gICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZGF0YS5jb25maWc7XHJcbiAgICAgIGF4aW9zXHJcbiAgICAgICAgLnBvc3QodGhpcy5kYXRhLnVybCwge1xyXG4gICAgICAgICAgY29uZmlnXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIGFwcC5kYXRhLmNvbmZpZyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uQ29udGVudElkID0gXCJzYXZlZFwiO1xyXG4gICAgICAgICAgYXBwLm5vdGlmaWNhdGlvblV0aWwuc2hvd05vdGlmaWNhdGlvbihlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIGFwcC5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcImVycm9yXCI7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIGNoZWNrUmVxdWlyZWRGaWVsZHMoKSB7XHJcbiAgICAgIHRoaXMucmVxdWlyZWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGEuY29uZmlnKSB7XHJcbiAgICAgICAgbGV0IGZpZWxkID0gdGhpcy5kYXRhLmNvbmZpZ1trZXldO1xyXG4gICAgICAgIGlmICghZmllbGQgJiYga2V5ICE9IFwiZGlzcGF0Y2hlZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVpcmVkW2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZXF1aXJlZENvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVpcmVkW2tleV0gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgaXNSZXF1aXJlZChmaWVsZCkge1xyXG4gICAgICBpZiAodGhpcy5yZXF1aXJlZFtmaWVsZF0pIHtcclxuICAgICAgICByZXR1cm4gXCJyZXF1aXJlZFwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHNldENyZWF0aW9uQWNjb3VudGFibGUodmFsdWUpIHtcclxuICAgICAgdGhpcy5kYXRhLmNvbmZpZy5hY2NvdW50YWJsZXMuY3JlYXRpb24gPSB2YWx1ZTtcclxuICAgIH0sXHJcbiAgICBzZXRBcHByb3ZhbEFjY291bnRhYmxlKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5jb25maWcuYWNjb3VudGFibGVzLmFwcHJvdmFsID0gdmFsdWU7XHJcbiAgICB9LFxyXG4gICAgc2V0UHVibGlzaGluZ0FjY291bnRhYmxlKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5jb25maWcuYWNjb3VudGFibGVzLnB1Ymxpc2hpbmcgPSB2YWx1ZTtcclxuICAgIH0sXHJcblxyXG4gICAgY2xvc2VNdWx0aVNlbGVjdHMoY3VycmVudCA9IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHJlZnMgPSBbXCJjcmVhdGlvblwiLCBcImFwcHJvdmFsXCIsIFwicHVibGlzaGluZ1wiXTtcclxuICAgICAgY29uc29sZS5sb2coY3VycmVudCk7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHJlZnMpIHtcclxuICAgICAgICBjb25zdCByZWYgPSByZWZzW2tleV07XHJcbiAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSByZWYpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiRyZWZzW3JlZl0uY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibm9ybWF0aXZlLXJlZmVyZW5jZS1jb25maWd1cmF0aW9uIHZ1ZS1kZXRhaWxcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY29udGVudC1oZWFkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaGVhZGVyLXRpdGxlXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgIE5vcm1hdGl2ZSBSZWZlcmVuY2UgQ29uZmlndXJhdGlvblxyXG4gICAgICAgIDwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPGZvcm0gOmNsYXNzPVwiJ25vcm1hdGl2ZS1yZWZlcmVuY2UtY29uZmlndXJhdGlvbi1mb3JtIHZ1ZS1mb3JtJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uIGdlbmVyYWwgZXhwYW5kZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIiBkYXRhLXYtZmY1OWQ3OTA9XCJcIj48aDMgZGF0YS12LWZmNTlkNzkwPVwiXCI+R2VuZXJhbDwvaDM+PHNwYW4gY2xhc3M9XCJoaWRlLXNlY3Rpb24gY29sbHBhc2UtaWNvblwiIGRhdGEtdi1mZjU5ZDc5MD1cIlwiIHYtaWY9XCJmYWxzZVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjFlbVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIGRhdGEtdi1mZjU5ZDc5MD1cIlwiPjwhLS0hIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPVwiTTIzMy40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjU2IDMzOC43IDg2LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6XCIgZGF0YS12LWZmNTlkNzkwPVwiXCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdCAke2lzUmVxdWlyZWQoJ2RvY3VtZW50Jyl9YFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsIHJlcXVpcmVkXCIgZm9yPVwiZG9jdW1lbnRcIj5Eb2N1bWVudDo8L2xhYmVsPlxyXG4gICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwiZGF0YS5jb25maWcuZG9jdW1lbnRcIiBuYW1lPVwiZG9jdW1lbnRcIiBpZD1cImRvY3VtZW50XCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBkb2N1bWVudFwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGRhdGEub3B0aW9ucy5kb2N1bWVudFwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWVsZC1zZWxlY3QgJHtpc1JlcXVpcmVkKCd0aW1lZnJhbWUnKX1gXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWwgcmVxdWlyZWRcIiBmb3I9XCJ0aW1lZnJhbWVcIj5UaW1lZnJhbWU6PC9sYWJlbD5cclxuICAgICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImRhdGEuY29uZmlnLnRpbWVmcmFtZVwiIG5hbWU9XCJ0aW1lZnJhbWVcIiBpZD1cInRpbWVmcmFtZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgdGltZWZyYW1lXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gOnZhbHVlPVwib3B0aW9uLnZhbHVlXCIgdi1mb3I9XCJvcHRpb24gaW4gZGF0YS5vcHRpb25zLnRpbWVmcmFtZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWVsZC1zZWxlY3QgJHtpc1JlcXVpcmVkKCdtYW5hZ2VyJyl9YFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsIHJlcXVpcmVkXCIgZm9yPVwibWFuYWdlclwiPk1hbmFnZXI6PC9sYWJlbD5cclxuICAgICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImRhdGEuY29uZmlnLm1hbmFnZXJcIiBuYW1lPVwibWFuYWdlclwiIGlkPVwibWFuYWdlclwiIGNsYXNzPVwiZm9ybS1zZWxlY3QgbWFuYWdlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGRhdGEub3B0aW9ucy5tYW5hZ2VyXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdCAke2lzUmVxdWlyZWQoJ3RlbXBsYXRlJyl9YFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsIHJlcXVpcmVkXCIgZm9yPVwidGVtcGxhdGVcIj5UZW1wbGF0ZTo8L2xhYmVsPlxyXG4gICAgICAgICAgPHNlbGVjdCB2LW1vZGVsPVwiZGF0YS5jb25maWcudGVtcGxhdGVcIiBuYW1lPVwidGVtcGxhdGVcIiBpZD1cInRlbXBsYXRlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCB0ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGRhdGEub3B0aW9ucy50ZW1wbGF0ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWVsZC10ZXh0ICR7aXNSZXF1aXJlZCgnZmlsZScpfWBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbCByZXF1aXJlZFwiIGZvcj1cInRpdGxlXCI+RG9jdW1lbnQ8YnI+Rm9sZGVyOjwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwidGl0bGVcIiBwbGFjZWhvbGRlcj1cIm5vcm1hdGl2ZV9yZWZlcmVuY2VzXCIgdi1tb2RlbD1cImRhdGEuY29uZmlnLmZpbGVcIiBjbGFzcz1cImZvcm0taW5wdXRcIlxyXG4gICAgICAgICAgICBpZD1cInRpdGxlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPFZ1ZU11bHRpU2VsZWN0IHJlZj1cImNyZWF0aW9uXCIgOmxhYmVsPVwidHJhbnMuY3JlYXRpb25BY2NvdW50YWJsZSArICc6J1wiXHJcbiAgICAgICAgICA6aW5pdGlhbC12YWx1ZT1cImRhdGEuY29uZmlnLmFjY291bnRhYmxlcy5jcmVhdGlvblwiIEBvbi1jbGljaz1cIigpID0+IGNsb3NlTXVsdGlTZWxlY3RzKCdjcmVhdGlvbicpXCJcclxuICAgICAgICAgIDpvcHRpb25zPVwiZGF0YS5vcHRpb25zLmFjY291bnRhYmxlT3B0aW9uc1wiIDp2dWUtZGlzYWJsZWQ9XCJmYWxzZVwiIEBjaGFuZ2UtdmFsdWU9XCJzZXRDcmVhdGlvbkFjY291bnRhYmxlXCJcclxuICAgICAgICAgIDpjb25maWc9XCJ7IGdyb3VwczogZGF0YS5vcHRpb25zLmFjY291bnRhYmxlR3JvdXBzIH1cIiAvPlxyXG4gICAgICAgIDxWdWVNdWx0aVNlbGVjdCByZWY9XCJhcHByb3ZhbFwiIDpsYWJlbD1cInRyYW5zLmFwcHJvdmFsQWNjb3VudGFibGUgKyAnOidcIlxyXG4gICAgICAgICAgOmluaXRpYWwtdmFsdWU9XCJkYXRhLmNvbmZpZy5hY2NvdW50YWJsZXMuYXBwcm92YWxcIiBAb24tY2xpY2s9XCIoKSA9PiBjbG9zZU11bHRpU2VsZWN0cygnYXBwcm92YWwnKVwiXHJcbiAgICAgICAgICA6b3B0aW9ucz1cImRhdGEub3B0aW9ucy5hY2NvdW50YWJsZU9wdGlvbnNcIiA6dnVlLWRpc2FibGVkPVwiZmFsc2VcIiBAY2hhbmdlLXZhbHVlPVwic2V0QXBwcm92YWxBY2NvdW50YWJsZVwiXHJcbiAgICAgICAgICA6Y29uZmlnPVwieyBncm91cHM6IGRhdGEub3B0aW9ucy5hY2NvdW50YWJsZUdyb3VwcyB9XCIgLz5cclxuICAgICAgICA8VnVlTXVsdGlTZWxlY3QgcmVmPVwicHVibGlzaGluZ1wiIDpsYWJlbD1cInRyYW5zLnB1Ymxpc2hpbmdBY2NvdW50YWJsZSArICc6J1wiXHJcbiAgICAgICAgICA6aW5pdGlhbC12YWx1ZT1cImRhdGEuY29uZmlnLmFjY291bnRhYmxlcy5wdWJsaXNoaW5nXCIgQG9uLWNsaWNrPVwiKCkgPT4gY2xvc2VNdWx0aVNlbGVjdHMoJ3B1Ymxpc2hpbmcnKVwiXHJcbiAgICAgICAgICA6b3B0aW9ucz1cImRhdGEub3B0aW9ucy5hY2NvdW50YWJsZU9wdGlvbnNcIiA6dnVlLWRpc2FibGVkPVwiZmFsc2VcIiBAY2hhbmdlLXZhbHVlPVwic2V0UHVibGlzaGluZ0FjY291bnRhYmxlXCJcclxuICAgICAgICAgIDpjb25maWc9XCJ7IGdyb3VwczogZGF0YS5vcHRpb25zLmFjY291bnRhYmxlR3JvdXBzIH1cIiAvPlxyXG5cclxuICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIGZpZWxkLWRhdGUgJHtpc1JlcXVpcmVkKCdsYXN0RGF0ZScpfWBcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbCByZXF1aXJlZFwiIGZvcj1cImxhc3QtZGF0ZVwiPkxhc3QgRGF0ZSAoVGVzdCk6PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRhdGUtaW5wdXRcIiBpZD1cImxhc3QtZGF0ZVwiIHYtbW9kZWw9XCJkYXRhLmNvbmZpZy5sYXN0RGF0ZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5FdmVudCBEaXNwYXRjaGVkIChUZXN0KTo8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG5hbWU9XCJpbXBvcnRhbnRcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cImltcG9ydGFudFwiXHJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJkYXRhLmNvbmZpZy5kaXNwYXRjaGVkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uIGZpbGVzIGV4cGFuZGVkIHNlY3Rpb24tc3BhY2VcIiBkYXRhLXYtZmY1OWQ3OTA9XCJcIj48ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIiBkYXRhLXYtZmY1OWQ3OTA9XCJcIj48aDMgZGF0YS12LWZmNTlkNzkwPVwiXCI+e3t0cmFucy50YXNrfX08L2gzPjxzcGFuIHYtaWY9XCJmYWxzZVwiIGNsYXNzPVwiaGlkZS1zZWN0aW9uIGNvbGxwYXNlLWljb25cIiBkYXRhLXYtZmY1OWQ3OTA9XCJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIxZW1cIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiBkYXRhLXYtZmY1OWQ3OTA9XCJcIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjQuMiBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZSAoQ29tbWVyY2lhbCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMyBGb250aWNvbnMsIEluYy4gLS0+PHBhdGggZD1cIk0yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyelwiIGRhdGEtdi1mZjU5ZDc5MD1cIlwiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZpZWxkLXNlbGVjdFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cInRhc2tDYXRlZ29yeVwiPnt7IHRyYW5zLnRhc2tDYXRlZ29yeSB9fTo8L2xhYmVsPlxyXG4gICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImRhdGEuY29uZmlnLnRhc2tDYXRlZ29yeVwiIGlkPVwidGFza0NhdGVnb3J5XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgdGFza0NhdGVnb3J5XCI+XHJcbiAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGRhdGEub3B0aW9ucy50YXNrQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmaWVsZC1zZWxlY3RcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ0YXNrVGltZWZyYW1lXCI+e3sgdHJhbnMudGFza1RpbWVmcmFtZSB9fTo8L2xhYmVsPlxyXG4gICAgICAgIDxzZWxlY3Qgdi1tb2RlbD1cImRhdGEuY29uZmlnLnRhc2tUaW1lZnJhbWVcIiBpZD1cInRhc2tUaW1lZnJhbWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCB0YXNrQ2F0ZWdvcnlcIiA+XHJcbiAgICAgICAgICA8b3B0aW9uIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiIHYtZm9yPVwib3B0aW9uIGluIGRhdGEub3B0aW9ucy50aW1lZnJhbWVcIj5cclxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgaWQ9XCJub3RpZmljYXRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgdi1pZj1cIm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9PSAncmVxdWlyZWQnXCI+XHJcbiAgICAgICAgUGxlYXNlIGNvbXBsZXRlIGFsbCB0aGUgcmVxdWlyZWQgZmllbGRzLlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1Y2Nlc3NcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdzYXZlZCdcIj5cclxuICAgICAgICBZb3VyIGNvbmZpZ3VyYXRpb24gd2FzIHNhdmVkIHN1Y2Nlc3NmdWxseSFcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiIHYtaWY9XCJub3RpZmljYXRpb25Db250ZW50SWQgPT0gJ2Vycm9yJ1wiPlxyXG4gICAgICAgIFRoZXJlIGhhcyBiZWVuIGFuIGludGVybmFsIGlzc3VlLlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuI2ltcG9ydGFudCB7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuaDQge1xyXG4gIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxufVxyXG5cclxuLnNlY3Rpb24tc3BhY2V7XHJcbiAgbWFyZ2luLXRvcDogMjBweDtcclxufVxyXG5cclxuLnZ1ZS1mb3Jte1xyXG4gIG1hcmdpbi1ib3R0b206IDEwMHB4O1xyXG59XHJcblxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIHBsYWNlaG9sZGVyUHJvcDogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb21tZW50OiBcIlwiLFxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICBzdWJtaXRDb21tZW50KCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuY29tbWVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNsYXJpZnktdGFzay1tb2RhbFwiPlxyXG4gICAgICAgIDx0ZXh0YXJlYSAgcmVmPVwiY29tbWVudFwiIHYtbW9kZWw9XCJjb21tZW50XCIgOnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJQcm9wXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJxdWVzdGlvblwiPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuICB0ZXh0YXJlYXtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWluLWhlaWdodDogMTIwcHg7XHJcbiAgfVxyXG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cclxuICAgIDxkaXYgcmVmPVwicGRmQ29udGFpbmVyXCIgY2xhc3M9XCJwZGYtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGNhbnZhcyByZWY9XCJwZGZDYW52YXNcIj48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHsgZ2V0RG9jdW1lbnQsIEdsb2JhbFdvcmtlck9wdGlvbnMsIFBERldvcmtlciB9IGZyb20gJ3BkZmpzLWRpc3QvYnVpbGQvcGRmJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgcGRmVXJsOiBTdHJpbmcsXHJcbiAgICB9LFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXNpemU6IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIEdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3BkZmpzLWRpc3RANC4wLjM3OS9idWlsZC9wZGYud29ya2VyLm1qc1wiO1xyXG4gICAgICAgIHRoaXMubG9hZFBkZigpO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBhc3luYyBsb2FkUGRmKCkge1xyXG4gICAgICAgICAgICBjb25zdCBhcHAgPSB0aGlzXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nVGFzayA9IGdldERvY3VtZW50KHRoaXMucGRmVXJsKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBkZiA9IGF3YWl0IGxvYWRpbmdUYXNrLnByb21pc2U7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgcGRmLmdldFBhZ2UoMSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gMS41ICogZGV2aWNlUGl4ZWxSYXRpbzsgLy8gQWRqdXN0IHNjYWxlIGJhc2VkIG9uIGRldmljZSBwaXhlbCByYXRpb1xyXG4gICAgICAgICAgICAgICAgbGV0IHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh7IHNjYWxlIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuJHJlZnMucGRmQ2FudmFzO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy4kcmVmcy5wZGZDb250YWluZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2FudmFzRGltZW5zaW9ucygpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IHBhZ2UuZ2V0Vmlld3BvcnQoeyBzY2FsZTogY29udGFpbmVyV2lkdGggLyB2aWV3cG9ydC53aWR0aCAqIHNjYWxlIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt2aWV3cG9ydC53aWR0aCAvIGRldmljZVBpeGVsUmF0aW99cHhgO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBgJHt2aWV3cG9ydC5oZWlnaHQgLyBkZXZpY2VQaXhlbFJhdGlvfXB4YDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDYW52YXNEaW1lbnNpb25zKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjYW52YXNDb250ZXh0OiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSxcclxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogdmlld3BvcnRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLiByZW5kZXIgPSBhd2FpdCBwYWdlLnJlbmRlcihyZW5kZXJDb250ZXh0KS5wcm9taXNlO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvYWRpbmcgUERGOiBcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB6b29tSW4oKSB7XHJcbiAgICAgICAgICAgIC8vIEltcGxlbWVudCB6b29tIGluIGZ1bmN0aW9uYWxpdHlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb21PdXQoKSB7XHJcbiAgICAgICAgICAgIC8vIEltcGxlbWVudCB6b29tIG91dCBmdW5jdGlvbmFsaXR5XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25SZXNpemUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4vKiBBZGQgc3R5bGVzIGZvciB5b3VyIFBERiB2aWV3ZXIgaGVyZSAqL1xyXG5cclxuLmFjdGlvbi1iYXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLnBkZi1jb250YWluZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHNjcmlwdD5cclxuaW1wb3J0IHsgdXNlTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Ob3RpZmljYXRpb25VdGlsaXR5LmpzJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICd1c2Vtb2RhbC12dWUzJztcclxuaW1wb3J0IFJlcXVlc3REb2N1bWVudE1vZGFsIGZyb20gJy4vUmVxdWVzdERvY3VtZW50TW9kYWwnO1xyXG5pbXBvcnQgVnVlUGRmIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlUGRmLnZ1ZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgY29tcG9uZW50czoge1xyXG4gICAgUmVxdWVzdERvY3VtZW50TW9kYWwsXHJcbiAgICBNb2RhbCxcclxuICAgIFZ1ZVBkZlxyXG4gIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIGRhdGFTdHJpbmc6IFN0cmluZyxcclxuICAgIHRyYW5zbGF0YWJsZXM6IFN0cmluZyxcclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBudWxsLFxyXG4gICAgICB0cmFuczpudWxsLFxyXG4gICAgICBub3RpZmljYXRpb25VdGlsOiBudWxsLFxyXG4gICAgICBub3RpZmljYXRpb246ICcnLFxyXG4gICAgICBub3RpZmljYXRpb25Db250ZW50SWQ6ICcnLFxyXG4gICAgICBwcmV2aWV3RmlsZVVybDogXCJcIixcclxuICAgICAgaXNSZXF1ZXN0VmlzaWJsZTogZmFsc2UsXHJcbiAgICAgIGlzRGVueVZpc2libGU6IGZhbHNlLFxyXG4gICAgICBsYXN0RXZlbnQ6IG51bGwsXHJcbiAgICAgIHJlcXVlc3RBY3Rpb246IG51bGwsXHJcbiAgICAgIGFwcHJvdmVBY3Rpb246IG51bGwsXHJcbiAgICAgIGRlbnlBY3Rpb246IG51bGwsXHJcbiAgICAgIHJlbGF0ZWRBY3Rpb246IG51bGwsXHJcbiAgICB9XHJcbiAgfSxcclxuICBjcmVhdGVkKCl7XHJcbiAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YVN0cmluZyk7XHJcbiAgICB0aGlzLmRhdGEucmVzZXQgPSB0aGlzLmRhdGEudmVyc2lvbjtcclxuICAgIGlmKHRoaXMuZGF0YS5sb2NrRnV0dXJlKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5yZXNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zID0gSlNPTi5wYXJzZSh0aGlzLnRyYW5zbGF0YWJsZXMpO1xyXG4gIH0sXHJcblxyXG4gIG1vdW50ZWQoKXtcclxuICAgIGxldCBhcHAgPSB0aGlzO1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25VdGlsID0gdXNlTm90aWZpY2F0aW9uKCk7XHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcmV0dXJuLXRvLWxpc3QnKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSl7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXBwLmRhdGEucmV0dXJuVXJsO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlcXVlc3RBY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVxdWVzdC1kb2N1bWVudCcpO1xyXG4gICAgdGhpcy5hcHByb3ZlQWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcHJvdmUtZG9jdW1lbnQnKTtcclxuICAgIHRoaXMuZGVueUFjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZW55LWRvY3VtZW50Jyk7XHJcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcmVhdGUtZG9jdW1lbnQnKTtcclxuICAgIHRoaXMucmVsYXRlZEFjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXR1cm4tdG8tZW50aXR5Jyk7XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5kYXRhLm1vZGUpO1xyXG4gXHJcbiAgICB0aGlzLnByZXBhcmVEb21FdmVudHMoKTtcclxuICAgIGlmKHRoaXMuZGF0YS5tb2RlID09IFwiYXBwcm92ZVwiKSB7XHJcbiAgICAgIHRoaXMuYXBwcm92ZU1vZGUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZGF0YS5tb2RlID09IFwicmVxdWVzdFwiKSB7XHJcbiAgICAgIHRoaXMucmVxdWVzdE1vZGUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZGF0YS5tb2RlID09IFwiZG9uZVwiKSB7XHJcbiAgICAgIHRoaXMuZG9uZU1vZGUoKTtcclxuICAgICAgdGhpcy5nZW5lcmF0ZURyYWZ0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgaWYoIXRoaXMuZGF0YS5yZWxhdGVkVXJsKSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZEFjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIG1ldGhvZHM6IHtcclxuICAgIHByZXBhcmVEb21FdmVudHMoKXtcclxuICAgICAgbGV0IGFwcCA9IHRoaXM7XHJcbiAgICAgIHRoaXMucmVxdWVzdEFjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSl7XHJcbiAgICAgICAgYXBwLnNob3dSZXF1ZXN0TW9kYWwoZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmFwcHJvdmVBY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpe1xyXG4gICAgICAgIGFwcC5jcmVhdGVOb3JtYXRpdmVSZWZlcmVuY2VEb2N1bWVudChlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGVueUFjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSl7XHJcbiAgICAgICAgYXBwLnNob3dEZW55TW9kYWwoZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSl7XHJcbiAgICAgICAgYXBwLmNyZWF0ZU5vcm1hdGl2ZVJlZmVyZW5jZURvY3VtZW50KGUgLCB0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucmVsYXRlZEFjdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSl7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhcHAuZGF0YS5yZWxhdGVkVXJsO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICByZXF1ZXN0TW9kZSgpe1xyXG4gICAgICBpZih0aGlzLmRhdGEucm9sZSA9PSBcImFwcHJvdmVcIikge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kZW55QWN0aW9uLnN0eWxlLmRpc3BsYXkgPSdub25lJztcclxuICAgICAgdGhpcy5yZXF1ZXN0QWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICB0aGlzLmFwcHJvdmVBY3Rpb24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH0sXHJcbiAgICBhcHByb3ZlTW9kZSgpe1xyXG4gICAgICBpZih0aGlzLmRhdGEucm9sZSA9PSBcInJlcXVlc3RcIikge1xyXG4gICAgICAgIHRoaXMuZG9uZU1vZGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEFjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZUFjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgICB0aGlzLmRlbnlBY3Rpb24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZW5lcmF0ZURyYWZ0KG51bGwpO1xyXG4gICAgfSxcclxuICAgIGRvbmVNb2RlKCl7XHJcbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgIHRoaXMucmVxdWVzdEFjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICB0aGlzLmFwcHJvdmVBY3Rpb24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgdGhpcy5kZW55QWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9LFxyXG4gICAgc2V0UmVzZXQoZSl7XHJcbiAgICAgIHRoaXMuZGF0YS5yZXNldCA9IGUudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB9LFxyXG5cclxuICAgIHNob3dSZXF1ZXN0TW9kYWwoZSl7XHJcbiAgICAgIHRoaXMubGFzdEV2ZW50ID0gZTtcclxuICAgICAgdGhpcy5pc1JlcXVlc3RWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH0sXHJcblxyXG4gICAgc2hvd0RlbnlNb2RhbChlKXtcclxuICAgICAgdGhpcy5sYXN0RXZlbnQgPSBlO1xyXG4gICAgICB0aGlzLmlzRGVueVZpc2libGUgPSB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICByZXF1ZXN0Tm9ybWF0aXZlUmVyZW5jZURvY3VtZW50KCl7XHJcbiAgICAgIHRoaXMuaXNSZXF1ZXN0VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRhdGEuY29tbWVudCA9IHRoaXMuJHJlZnMuY29tbWVudC5zdWJtaXRDb21tZW50KCk7XHJcbiAgICAgICBjb25zdCBlID0gdGhpcy5sYXN0RXZlbnQ7XHJcbiAgICAgICAgY29uc3QgYXBwID0gdGhpcztcclxuICAgICAgICBheGlvc1xyXG4gICAgICAgIC5wb3N0KHRoaXMuZGF0YS5yZXF1ZXN0RG9jdW1lbnRVcmwsIHtcclxuICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBhcHAuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uQ29udGVudElkID0gXCJkb2N1bWVudFJlcXVlc3RlZFwiO1xyXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhcHAuZGF0YS5yZXR1cm5Vcmw7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICAgICAgYXBwLmFwcHJvdmVNb2RlKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgYXBwLm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9IFwiZXJyb3JcIjtcclxuICAgICAgICAgIGFwcC5ub3RpZmljYXRpb25VdGlsLnNob3dOb3RpZmljYXRpb24oZSApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfSxcclxuXHJcblxyXG4gICAgICBkZW55Tm9ybWF0aXZlUmVyZW5jZURvY3VtZW50KCl7XHJcbiAgICAgIHRoaXMuaXNEZW55VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRhdGEuY29tbWVudCA9IHRoaXMuJHJlZnMuY29tbWVudC5zdWJtaXRDb21tZW50KCk7XHJcbiAgICAgICBjb25zdCBlID0gdGhpcy5sYXN0RXZlbnQ7XHJcbiAgICAgICAgY29uc3QgYXBwID0gdGhpcztcclxuICAgICAgICBheGlvc1xyXG4gICAgICAgIC5wb3N0KHRoaXMuZGF0YS5yZW1vdmVEb2N1bWVudFVybCwge1xyXG4gICAgICAgICAgZGF0YTogdGhpcy5kYXRhXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIGFwcC5kYXRhID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXBwLmRhdGEucmV0dXJuVXJsO1xyXG4gICAgICAgICAgYXBwLm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9IFwiZG9jdW1lbnREZW55XCI7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICAgICAgYXBwLmRvbmVNb2RlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIGFwcC5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcImVycm9yXCI7XHJcbiAgICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH0sXHJcblxyXG4gICAgY3JlYXRlTm9ybWF0aXZlUmVmZXJlbmNlRG9jdW1lbnQoZSAsIGFkbWluID0gZmFsc2Upe1xyXG4gICAgICBjb25zdCBhcHAgPSB0aGlzO1xyXG4gICAgICBjb25zdCB1cmwgPSAoYWRtaW4pID8gdGhpcy5kYXRhLmFkbWluRG9jdW1lbnRVcmwgOiB0aGlzLmRhdGEuY3JlYXRlRG9jdW1lbnRVcmw7XHJcbiAgICAgIGF4aW9zXHJcbiAgICAgIC5wb3N0KHVybCwge1xyXG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YVxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICBhcHAuaXNEb2N1bWVudENyZWF0aW9uVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXBwLmRhdGEucmV0dXJuVXJsO1xyXG4gICAgICAgIGFwcC5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcImRvY3VtZW50Q3JlYXRlZFwiO1xyXG4gICAgICAgIGFwcC5ub3RpZmljYXRpb25VdGlsLnNob3dOb3RpZmljYXRpb24oZSk7XHJcbiAgICAgICAgYXBwLmRhdGEubW9kZSA9IFwiZG9uZVwiO1xyXG4gICAgICAgIGFwcC5kb25lTW9kZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgICAgYXBwLm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9IFwiZXJyb3JcIjtcclxuICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZURyYWZ0KGUpe1xyXG4gICAgICBjb25zdCBhcHAgPSB0aGlzO1xyXG4gICAgICBheGlvc1xyXG4gICAgICAucG9zdCh0aGlzLmRhdGEuZHJhZnREb2N1bWVudFVybCwge1xyXG4gICAgICAgIFwiZGF0YVwiIDogdGhpcy5kYXRhLFxyXG4gICAgICB9LHtcclxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICBjb25zdCBmaWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlUmVzcG9uc2UgPSByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXTtcclxuICAgICAgICAgIHZhciByZWFkZXIgID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgIGxldCBjb250ZW50VHlwZSA9IFwiXCI7XHJcbiAgICAgICAgICBpZihjb250ZW50VHlwZVJlc3BvbnNlID09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKXtcclxuICAgICAgICAgICAgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vcGRmJ1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGVudFR5cGUgPSBjb250ZW50VHlwZVJlc3BvbnNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGVudFR5cGUgPSBjb250ZW50VHlwZVJlc3BvbnNlO1xyXG4gICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZmlsZV0sIHsndHlwZSc6IGNvbnRlbnRUeXBlfSk7XHJcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcclxuICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGFwcC5wcmV2aWV3RmlsZVVybCA9IHJlYWRlci5yZXN1bHQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApLmNhdGNoKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZihlKSB7XHJcbiAgICAgICAgICAgICAgYXBwLm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9IFwiZXJyb3JcIjtcclxuICAgICAgICAgICAgICBhcHAubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfSwgXHJcbiAgICBmb3JtYXQodGV4dCl7XHJcbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBleHBpcmF0aW9uSW5mbygpe1xyXG4gICAgICBpZih0aGlzLmRhdGEucmVzZXQpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZnV0dXJlRXhwaXJhdGlvbjtcclxuICAgICAgfSBcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5leHBpcmF0aW9uO1xyXG4gICAgfSxcclxuICAgIHZlcnNpb25TeWxlKCl7XHJcbiAgICAgIGlmKHRoaXMuZGF0YS52ZXJzaW9uKXtcclxuICAgICAgICByZXR1cm4gXCJoZWlnaHQ6MjM2cHhcIlxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgd2F0Y2g6IHtcclxuICAnZGF0YS5tb2RlJzogZnVuY3Rpb24obmV3TW9kZSwgb2xkTW9kZSkge1xyXG4gICAgLy8gUGVyZm9ybSBhY3Rpb25zIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgZGF0YS5tb2RlXHJcbiAgICBpZiAobmV3TW9kZSA9PT0gJ2RvbmUnKSB7XHJcbiAgICAgIHRoaXMuZG9uZU1vZGUoKTtcclxuICAgIH1cclxuICB9XHJcbn0sXHJcbn1cclxuXHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtcmVxdWVzdFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAgPGgxIHYtaWY9XCJkYXRhLm1vZGUgPT0gJ3JlcXVlc3QnXCIgY2xhc3M9XCJ0aXRsZVwiID4gXHJcbiAgICAgICAgICAgICAge3sgdHJhbnMudGl0bGVSZXF1ZXN0IH19XHJcbiAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgPGgxIHYtaWY9XCJkYXRhLm1vZGUgPT0gJ2FwcHJvdmUnXCIgY2xhc3M9XCJ0aXRsZVwiPiBcclxuICAgICAgICAgICAge3sgKGRhdGEucm9sZSA9PSBcImFwcHJvdmVcIikgPyB0cmFucy50aXRsZUFwcHJvdmUgICA6IHRyYW5zLnRpdGxlV2FpdCAgfX1cclxuICAgICAgICAgIDwvaDE+IFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXJlcXVlc3QtZm9ybSB2dWUtZm9ybVwiID5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvbiBleHBhbmRlZFwiPlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImRhdGEubW9kZSA9PSAncmVxdWVzdCdcIiBjbGFzcz1cImZvcm0tZ3JvdXAgZmllbGQtdGV4dGFyZWFcIj5cclxuICAgICAgICAgICAgPGxhYmVsICBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImNoYW5nZWxvZ1wiPnt7dHJhbnMuY2hhbmdlbG9nfX06PC9sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIDpzdHlsZT1cInZlcnNpb25TeWxlXCIgdi1tb2RlbD1cImRhdGEuY2hhbmdlbG9nXCIgY2xhc3M9XCJmb3JtLWlucHV0XCIgaWQ9XCJjaGFuZ2Vsb2dcIiByZWY9XCJjaGFuZ2Vsb2dcIj57eyBkYXRhLmNoYW5nZWxvZyB9fTwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiB2LWlmPVwiZGF0YS5tb2RlID09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiZm9ybS1ncm91cCByZXNldC1kYXRlLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5SZXNldCBEYXRlOjwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbmFtZT1cInJlc2V0XCIgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgaWQ9XCJyZXNldFwiICBAY2hhbmdlPVwic2V0UmVzZXQoJGV2ZW50KVwiIDpjaGVja2VkPVwiZGF0YS52ZXJzaW9uIHx8IGRhdGEubG9ja0Z1dHVyZVwiIDpkaXNhYmxlZD1cImRhdGEubG9ja0Z1dHVyZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInJlc2V0XCI+KHt7IHRyYW5zLmV4cGlyZXMgfX06IHt7ZXhwaXJhdGlvbkluZm99fSk8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImRhdGEubW9kZSAhPSAncmVxdWVzdCcgXCIgY2xhc3M9XCJjaGFuZ2Vsb2dcIj5cclxuICAgICAgICAgICAgPGg1Pnt7dHJhbnMuY2hhbmdlbG9nfX06PC9oNT5cclxuICAgICAgICAgICAgPHAgdi1odG1sPVwiZm9ybWF0KGRhdGEuY2hhbmdlbG9nKVwiPiA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiB2LWlmPVwiZGF0YS5tb2RlICE9ICdyZXF1ZXN0JyBcIiBjbGFzcz1cImV4cGlyYXRpb25cIj5cclxuICAgICAgICAgICAgPGg1PiB7eyB0cmFucy5leHBpcmVzIH19OjwvaDU+XHJcbiAgICAgICAgICAgIDxwPiB7e3RoaXMuZGF0YS5leHBpcmF0aW9ufX0gPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImRhdGEuY29tbWVudHNcIiBjbGFzcz1cImNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgIDxoNT4ge3sgdHJhbnMuY29tbWVudHMgfX06PC9oNT5cclxuICAgICAgICAgICAgPGxpIHYtZm9yPVwiY29tbWVudCBpbiBkYXRhLmNvbW1lbnRzXCI+ICAgIFxyXG4gICAgICAgICAgICAgIHt7Y29tbWVudC5wZXJzb24gfX0ge3tjb21tZW50LmRhdGV9fTogPGJyPlxyXG4gICAgICAgICAgICAgIHt7Y29tbWVudC5tZXNzYWdlIH19XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiB2LWlmPVwiZGF0YS5tb2RlID09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiZ2VuZXJhdGUtZHJhZnQgdnVlLWJ0biBwcmltYXJ5XCIgIEBjbGljaz1cImdlbmVyYXRlRHJhZnQoJGV2ZW50KVwiPnt7dHJhbnMuZ2VuZXJhdGVEcmFmdH19PC9idXR0b24+XHJcbiAgICAgICAgPGRpdiAgY2xhc3M9XCJmaWxlXCIgdi1pZj1cInByZXZpZXdGaWxlVXJsXCI+XHJcbiAgICAgICAgICA8aDU+IHt7IHRyYW5zLmRvY3VtZW50UHJldmlldyB9fTo8L2g1PlxyXG4gICAgICAgICAgPGlmcmFtZVxyXG4gICAgICAgICAgICB2LWlmPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICA6c3JjPVwiYCR7cHJldmlld0ZpbGVVcmx9YFwiXHJcbiAgICAgICAgICAgIGZyYW1lQm9yZGVyPVwiMFwiXHJcbiAgICAgICAgICAgIHNjcm9sbGluZz1cImF1dG9cIlxyXG4gICAgICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcclxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcclxuICAgICAgICAgID48L2lmcmFtZT5cclxuICAgICAgICAgIDxWdWVQZGYgOnBkZi11cmw9XCJwcmV2aWV3RmlsZVVybFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IFxyXG4gICAgPGRpdiBpZD1cIm5vdGlmaWNhdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VjY2Vzc1wiIHYtaWY9XCJub3RpZmljYXRpb25Db250ZW50SWQgPT0gJ2RvY3VtZW50UmVxdWVzdGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgVGhlIHJlcXVlc3Qgd2FzIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Y2Nlc3NcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdkb2N1bWVudENyZWF0ZWQnXCI+XHJcbiAgICAgICAgICAgICAgICBUaGUgRG9jdW1lbnQgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5ISBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWNjZXNzXCIgdi1pZj1cIm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9PSAnZG9jdW1lbnREZW55J1wiPlxyXG4gICAgICAgICAgICAgICAgVGhlIGZlZWRiYWNrIHdhcyBzYXZlZCEgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdlcnJvcidcIj5cclxuICAgICAgICAgICAgICAgIFRoZXJlIGhhcyBiZWVuIGFuIGludGVybmFsIGlzc3VlLlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gICBcclxuICAgPC9kaXY+XHJcbiAgIDxNb2RhbCB2LW1vZGVsOnZpc2libGU9XCJpc1JlcXVlc3RWaXNpYmxlXCIgOnRpdGxlPVwiKGRhdGEudmVyc2lvbikgPyB0cmFucy5yZXF1ZXN0VGl0bGVWZXJzaW9uIDogdHJhbnMucmVxdWVzdFRpdGxlUmV2aXNpb25cIiA6d2lkdGg9XCI4MDBcIlxyXG4gICAgOm9rLWJ1dHRvbj1cInt0ZXh0OiB0cmFucy5vaywgb25jbGljazogKCkgPT4ge3RoaXMucmVxdWVzdE5vcm1hdGl2ZVJlcmVuY2VEb2N1bWVudCgpfSwgbG9hZGluZzogZmFsc2V9XCJcclxuICAgIDpjYW5jZWwtYnV0dG9uPVwie3RleHQ6IHRyYW5zLmNhbmNlbCwgbG9hZGluZzogZmFsc2V9XCI+XHJcbiAgICAgIDxSZXF1ZXN0RG9jdW1lbnRNb2RhbCByZWY9XCJjb21tZW50XCIgOnBsYWNlaG9sZGVyLXByb3A9XCIoZGF0YS52ZXJzaW9uKSA/IHRyYW5zLnJlcXVlc3RQbGFjZWhvbGRlclZlcnNpb24gOiB0cmFucy5yZXF1ZXN0UGxhY2Vob2xkZXJSZXZpc2lvblwiLz5cclxuICAgIDwvTW9kYWw+XHJcbiAgICA8TW9kYWwgdi1tb2RlbDp2aXNpYmxlPVwiaXNEZW55VmlzaWJsZVwiIDp0aXRsZT1cInRyYW5zLmRlbnlSZXF1ZXN0VGl0bGVcIiA6d2lkdGg9XCI4MDBcIlxyXG4gICAgOm9rLWJ1dHRvbj1cInt0ZXh0OiB0cmFucy5vaywgb25jbGljazogKCkgPT4ge3RoaXMuZGVueU5vcm1hdGl2ZVJlcmVuY2VEb2N1bWVudCgpfSwgbG9hZGluZzogZmFsc2V9XCJcclxuICAgIDpjYW5jZWwtYnV0dG9uPVwie3RleHQ6IHRyYW5zLmNhbmNlbCwgbG9hZGluZzogZmFsc2V9XCI+XHJcbiAgICAgIDxSZXF1ZXN0RG9jdW1lbnRNb2RhbCByZWY9XCJjb21tZW50XCIgOnBsYWNlaG9sZGVyLXByb3A9XCJ0cmFucy5kZW55UmVxdWVzdE1lc3NhZ2VcIi8+XHJcbiAgICA8L01vZGFsPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuICAuZ2VuZXJhdGUtZHJhZnR7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICB9XHJcbiAgIGlmcmFtZXtcclxuICAgIGRpc3BsYXk6IGJsb2NrOyAgICAgICAvKiBpZnJhbWVzIGFyZSBpbmxpbmUgYnkgZGVmYXVsdCAqL1xyXG4gICAgYm9yZGVyOiBub25lOyAgICAgICAgIC8qIFJlc2V0IGRlZmF1bHQgYm9yZGVyICovXHJcbiAgICBoZWlnaHQ6IDU3dnc7ICAgICAgICAvKiBWaWV3cG9ydC1yZWxhdGl2ZSB1bml0cyAqL1xyXG4gICAgd2lkdGg6IDgwdnc7XHJcbiAgfVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBwcm9wczoge1xyXG4gICAgZGF0YVN0cmluZzogU3RyaW5nLFxyXG4gICAgdHJhbnNsYXRhYmxlczogU3RyaW5nLFxyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgIHRyYW5zOiBudWxsLFxyXG4gICAgICBsaXN0czoge1xyXG4gICAgICAgIG1hbmFnZXJBY3RpdmVMaXN0OiB7XHJcbiAgICAgICAgICBsYWJlbDogJ1Jlc3BvbnNpYmxlJyxcclxuICAgICAgICAgIGxpc3Q6ICdtYW5hZ2VyQWN0aXZlTGlzdCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFjdGl2ZUxpc3Q6IHtcclxuICAgICAgICAgIGxhYmVsOiAnQWN0aXZlJyxcclxuICAgICAgICAgIGxpc3Q6ICdhY3RpdmVMaXN0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVqZWN0ZWRMaXN0OiB7XHJcbiAgICAgICAgICBsYWJlbDogJ1JlamVjdGVkJyxcclxuICAgICAgICAgIGxpc3Q6ICdyZWplY3RlZExpc3QnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZWRMaXN0OiB7XHJcbiAgICAgICAgICBsYWJlbDogJ0NvbXBsZXRlZCcsXHJcbiAgICAgICAgICBsaXN0OiAnZG9uZUxpc3QnXHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgY3JlYXRlZCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UodGhpcy5kYXRhU3RyaW5nKTtcclxuICAgIHRoaXMudHJhbnMgPSBKU09OLnBhcnNlKHRoaXMudHJhbnNsYXRhYmxlcyk7XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBvbkNsaWNrKHJlcXVlc3QpIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXF1ZXN0LnVybDtcclxuICAgIH0sXHJcblxyXG4gICAgcmV2ZXJzZShvYmopIHtcclxuICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhvYmopO1xyXG4gICAgICAgIGNvbnN0IHJldmVyc2VkRW50cmllcyA9IGVudHJpZXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIHJldHVybiByZXZlcnNlZEVudHJpZXMubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXJlcXVlc3QtbGlzdFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1oZWFkZXItdGl0bGVcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgRG9jdW1lbnQgUmVxdWVzdHNcclxuICAgICAgICA8L2gxPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8ZGl2ICB2LWZvcj1cImxpc3QgaW4gbGlzdHNcIj5cclxuICAgICAgPGg2Pnt7bGlzdC5sYWJlbCB9fTwvaDY+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInZ1ZS10YWJsZSBkb2N1bWVudC1yZXF1ZXN0cy10YWJsZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwidGl0bGVcIj5UaXRsZTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImlkXCI+SUQ8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ0eXBlXCI+VHlwZTwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5IGNsYXNzPVwiZXZlbnQtZ3JvdXBcIj5cclxuICAgICAgICAgIDx0ciB2LWZvcj1cInJlcXVlc3QgaW4gcmV2ZXJzZShkYXRhW2xpc3QubGlzdF0pXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZSBoZWFkZXJcIiBAY2xpY2s9XCJvbkNsaWNrKHJlcXVlc3QudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj57e3JlcXVlc3QudmFsdWUudGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZSBoZWFkZXJcIiBAY2xpY2s9XCJvbkNsaWNrKHJlcXVlc3QudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByZXF1ZXN0LnZhbHVlLmlkfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidHlwZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUgaGVhZGVyXCIgQGNsaWNrPVwib25DbGljayhyZXF1ZXN0LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgdHJhbnNbcmVxdWVzdC52YWx1ZS50eXBlXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8cCB2LWlmPVwiIWRhdGFbbGlzdC5saXN0XSB8fCBkYXRhW2xpc3QubGlzdF0ubGVuZ3RoID09PSAwXCI+Tm8gcmVxdWVzdHM8L3A+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuaDYge1xyXG4gIHBhZGRpbmctbGVmdDogdmFyKC0tbGctY29udGVudC1wYWRkaW5nLWxlZnQpO1xyXG4gICAgbWFyZ2luLXRvcDogMzBweDtcclxufVxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHVzZU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uVXRpbGl0eS5qcyc7XHJcbmltcG9ydCBWdWVNdWx0aVNlbGVjdCBmcm9tICcuLi8uLi9mb3JtL1Z1ZU11bHRpU2VsZWN0U2VhcmNoJztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZU11bHRpU2VsZWN0XHJcbiAgICB9LFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBkYXRhU3RyaW5nOiBTdHJpbmcsXHJcbiAgICAgICAgdHJhbnNsYXRhYmxlczogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZGF0YTogXCJcIixcclxuICAgICAgICAgICAgdHJhbnM6IG51bGwsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiB7fSxcclxuICAgICAgICAgICAgcmVxdWlyZWRDb21wbGV0ZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvblV0aWw6IG51bGwsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbjogJycsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkNvbnRlbnRJZDogJydcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YVN0cmluZyk7XHJcbiAgICAgICAgdGhpcy50cmFucyA9IEpTT04ucGFyc2UodGhpcy50cmFuc2xhdGFibGVzKTtcclxuICAgIH0sXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIGxldCBhcHAgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbCA9IHVzZU5vdGlmaWNhdGlvbigpO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzYXZlLWNvbmZpZ3VyYXRpb24nKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgYXBwLnNhdmVDb25maWd1cmF0aW9uKGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBzYXZlQ29uZmlndXJhdGlvbihlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZXF1aXJlZEZpZWxkcygpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlZENvbXBsZXRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5heGlvc1NhdmVDb25maWd1cmF0aW9uKGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcInJlcXVpcmVkXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblV0aWwuc2hvd05vdGlmaWNhdGlvbihlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGF4aW9zU2F2ZUNvbmZpZ3VyYXRpb24oZSkge1xyXG4gICAgICAgICAgICBsZXQgYXBwID0gdGhpcztcclxuICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZGF0YS5jb25maWc7XHJcbiAgICAgICAgICAgIGF4aW9zXHJcbiAgICAgICAgICAgICAgICAucG9zdCh0aGlzLmRhdGEudXBkYXRlVXJsLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9hcHAuZGF0YS5jb25maWcgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcC5ub3RpZmljYXRpb25Db250ZW50SWQgPSBcInNhdmVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwLm5vdGlmaWNhdGlvblV0aWwuc2hvd05vdGlmaWNhdGlvbihlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcHAubm90aWZpY2F0aW9uQ29udGVudElkID0gXCJlcnJvclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcC5ub3RpZmljYXRpb25VdGlsLnNob3dOb3RpZmljYXRpb24oZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNoZWNrUmVxdWlyZWRGaWVsZHMoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGlzUmVxdWlyZWQoZmllbGQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZWRbZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZXF1aXJlZFwiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRNYW5hZ2VyR3JvdXAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmNvbmZpZy5tYW5hZ2VyR3JvdXAgPSB2YWx1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldEFkbWluUm9sZSh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuY29uZmlnLmFkbWluUm9sZSA9IHZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNsb3NlTXVsdGlTZWxlY3RzKGN1cnJlbnQgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBjb25zdCByZWZzID0gW1wiYWRtaW5Sb2xlXCIsIFwibWFuYWdlckdyb3VwXCJdO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLiRyZWZzKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVmcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gcmVmc1trZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSByZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuJHJlZnNbcmVmXS5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vcm1hdGl2ZS1yZWZlcmVuY2UtY29uZmlndXJhdGlvbiB2dWUtZGV0YWlsXCI+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1oZWFkZXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdHJhbnMudGl0bGUgfX1cclxuICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8Zm9ybSA6Y2xhc3M9XCInbm9ybWF0aXZlLXJlZmVyZW5jZS1jb25maWd1cmF0aW9uLWZvcm0gdnVlLWZvcm0nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlY3Rpb24gZ2VuZXJhbCBleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPFZ1ZU11bHRpU2VsZWN0IHJlZj1cImFkbWluUm9sZVwiIDpsYWJlbD1cInRyYW5zLmFkbWluUm9sZSArICc6J1wiIDppbml0aWFsLXZhbHVlPVwiZGF0YS5jb25maWcuYWRtaW5Sb2xlXCJcclxuICAgICAgICAgICAgICAgICAgICBAb24tY2xpY2s9XCIoKSA9PiBjbG9zZU11bHRpU2VsZWN0cygnYWRtaW5Sb2xlJylcIiA6b3B0aW9ucz1cImRhdGEub3B0aW9ucy5yb2xlXCIgOnZ1ZS1kaXNhYmxlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwic2V0QWRtaW5Sb2xlXCIgOmNvbmZpZz1cInsgc2luZ2xlOiB0cnVlIH1cIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxWdWVNdWx0aVNlbGVjdCByZWY9XCJtYW5hZ2VyR3JvdXBcIiA6bGFiZWw9XCJ0cmFucy5tYW5hZ2VyR3JvdXAgKyAnOidcIiA6aW5pdGlhbC12YWx1ZT1cImRhdGEuY29uZmlnLm1hbmFnZXJHcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgQG9uLWNsaWNrPVwiKCkgPT4gY2xvc2VNdWx0aVNlbGVjdHMoJ21hbmFnZXJHcm91cCcpXCIgOm9wdGlvbnM9XCJkYXRhLm9wdGlvbnMuZ3JvdXBcIiA6dnVlLWRpc2FibGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIEBjaGFuZ2UtdmFsdWU9XCJzZXRNYW5hZ2VyR3JvdXBcIiA6Y29uZmlnPVwieyBzaW5nbGU6IHRydWUgfVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGlkPVwibm90aWZpY2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiIHYtaWY9XCJub3RpZmljYXRpb25Db250ZW50SWQgPT0gJ3JlcXVpcmVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgUGxlYXNlIGNvbXBsZXRlIGFsbCB0aGUgcmVxdWlyZWQgZmllbGRzLlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Y2Nlc3NcIiB2LWlmPVwibm90aWZpY2F0aW9uQ29udGVudElkID09ICdzYXZlZCdcIj5cclxuICAgICAgICAgICAgICAgIFlvdXIgY29uZmlndXJhdGlvbiB3YXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5IVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgdi1pZj1cIm5vdGlmaWNhdGlvbkNvbnRlbnRJZCA9PSAnZXJyb3InXCI+XHJcbiAgICAgICAgICAgICAgICBUaGVyZSBoYXMgYmVlbiBhbiBpbnRlcm5hbCBpc3N1ZS5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbiNpbXBvcnRhbnQge1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLnZ1ZS1kZXRhaWwgZm9ybSB7XHJcbiAgICBtaW4taGVpZ2h0OiA2MHZoO1xyXG59XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cclxuaW1wb3J0IFZ1ZUluZGV4IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlSW5kZXgudnVlJztcclxuaW1wb3J0IFZ1ZURldGFpbHMgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVEZXRhaWxzLnZ1ZSc7XHJcbmltcG9ydCBWdWVGaWx0ZXIgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVGaWx0ZXIudnVlJztcclxuaW1wb3J0IFZ1ZUVsZW1lbnRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvVnVlRWxlbWVudE1peGluJztcclxuaW1wb3J0IHsgVnVlRHJhZ2dhYmxlTmV4dCB9IGZyb20gJ3Z1ZS1kcmFnZ2FibGUtbmV4dCc7XHJcbmltcG9ydCBWdWVNZXNzYWdlcyBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZU1lc3NhZ2VzLnZ1ZSc7XHJcbmltcG9ydCB7IHVzZU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uVXRpbGl0eS5qcyc7XHJcbmltcG9ydCBWdWVGaWVsZCBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZUZpZWxkLnZ1ZSc7XHJcbmltcG9ydCBWdWVVcGxvYWQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9maWVsZHMvVnVlVXBsb2FkLnZ1ZSc7XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAndXNlbW9kYWwtdnVlMyc7XHJcbmltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBjb21wb25lbnRzOiB7XHJcbiAgICAgICAgVnVlSW5kZXgsXHJcbiAgICAgICAgVnVlRGV0YWlscyxcclxuICAgICAgICBWdWVGaWx0ZXIsXHJcbiAgICAgICAgVnVlTWVzc2FnZXMsXHJcbiAgICAgICAgVnVlRmllbGQsXHJcbiAgICAgICAgVnVlRHJhZ2dhYmxlTmV4dCxcclxuICAgICAgICBWdWVVcGxvYWQsXHJcbiAgICAgICAgTW9kYWxcclxuICAgIH0sXHJcblxyXG4gICAgbWl4aW5zOiBbVnVlRWxlbWVudE1peGluXSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgZGF0YVN0cmluZzogU3RyaW5nLFxyXG4gICAgICAgIGVudGl0eTogU3RyaW5nXHJcbiAgICB9LFxyXG5cclxuICAgIGRhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHJhaW5pbmdEb2N1bWVudE5hbWU6IG51bGwsXHJcbiAgICAgICAgICAgIHRyYWluaW5nRG9jdW1lbnRGaWxlOiBudWxsLFxyXG4gICAgICAgICAgICB0cmFpbmluZ0RvY3VtZW50TmFtZVJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgdHJhaW5pbmdEb2N1bWVudEZpbGVSZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHRyYWluaW5nRG9jdW1lbnREZXNjcmlwdGlvbjogbnVsbCxcclxuICAgICAgICAgICAgdHJhaW5pbmdWaWRlb0Rlc2NyaXB0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICB0cmFpbmluZ0xpbmtEZXNjcmlwdGlvbjogbnVsbCxcclxuICAgICAgICAgICAgdHJhaW5pbmdWaWRlb05hbWU6IG51bGwsXHJcbiAgICAgICAgICAgIHRyYWluaW5nVmlkZW9GaWxlOiBudWxsLFxyXG4gICAgICAgICAgICB0cmFpbmluZ1ZpZGVvTmFtZVJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgdHJhaW5pbmdWaWRlb0ZpbGVSZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHRyYWluaW5nTGlua05hbWU6IG51bGwsXHJcbiAgICAgICAgICAgIHRyYWluaW5nTGlua1VybDogbnVsbCxcclxuICAgICAgICAgICAgdHJhaW5pbmdMaW5rTmFtZVJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgdHJhaW5pbmdMaW5rVXJsUmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBjdXJyZW50VHJhaW5pbmdGaWxlOiB7IGZpbGU6IG51bGwsIG9yaWdpbjogbnVsbCB9LFxyXG4gICAgICAgICAgICB2aXNpYmxlOiByZWYodHJ1ZSksXHJcbiAgICAgICAgICAgIHRyYWluaW5nVmlkZW9VcGxvYWRDb21wbGV0ZTogdHJ1ZSxcclxuICAgICAgICAgICAgdHJhaW5pbmdEb2N1bWVudFVwbG9hZENvbXBsZXRlOiB0cnVlLFxyXG4gICAgICAgICAgICB1cGRhdGVEb2N1bWVudENvbmZpcm1hdGlvbkRhdGE6IG51bGwsXHJcblxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBtb3VudGVkKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbCA9IHVzZU5vdGlmaWNhdGlvbigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgY3JlYXRlRG9jdW1lbnQoZSwgZG9jdW1lbnRUeXBlID0gJ2Rlc2NyaXB0aW9uJykge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbTogJ2NyZWF0ZURvY3VtZW50JyxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IGRvY3VtZW50VHlwZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICdjcmVhdGVEb2N1bWVudENhbGxiYWNrJywgJ2NyZWF0ZURvY3VtZW50RXJyb3InKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVWZXJzaW9uQWN0aW9uQ2FsbGJhY2socmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlRWxlbWVudChyZXNwb25zZS5kYXRhLmVsZW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW5BY3Rpb25DYWxsYmFjayhyZXNwb25zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RWxlbWVudC5vcHRpb25zLnJldmlzaW9uc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURvY3VtZW50V2l0aG91dFJlZGlyZWN0KG51bGwpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZURvY3VtZW50V2l0aG91dFJlZGlyZWN0KGRvY3VtZW50VHlwZSA9ICdkZXNjcmlwdGlvbicpIHtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tOiAndXBkYXRlRG9jdW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogZG9jdW1lbnRUeXBlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmRhdGEuZmllbGRzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICdyZWxvYWRDYWxsYmFjaycpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmFjdGlvbldhaXQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHJlbG9hZENhbGxiYWNrKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuYWN0aW9uV2FpdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShyZXNwb25zZS5kYXRhLm1lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZURvY3VtZW50KGUsIGRvY3VtZW50VHlwZSA9ICdhbGwnKSB7XHJcbiAgICAgICAgICAgIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbTogJ3VwZGF0ZURvY3VtZW50JyxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IGRvY3VtZW50VHlwZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5kYXRhLmZpZWxkcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy52dWVBeGlvcyhkYXRhLCAnY3JlYXRlRG9jdW1lbnRDYWxsYmFjaycsICdjcmVhdGVEb2N1bWVudEVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlUHJvZ3Jlc3NEb2N1bWVudEFjdGlvbihlLCBhY3Rpb24pIHtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnVwZGF0ZUNvbmZpcm1hdGlvbkRhdGE7XHJcbiAgICAgICAgICAgIGRhdGEuZG9jdW1lbnRDaGFuZ2Vsb2cgPSB0aGlzLm1lc3NhZ2VzWyd1cGRhdGVEb2N1bWVudENvbmZpcm1hdGlvbiddWydkYXRhJ11bJ2RvY3VtZW50Q2hhbmdlbG9nJ107XHJcbiAgICAgICAgICAgIGRhdGEuZG9jdW1lbnRJc05ld1ZlcnNpb24gPSB0aGlzLm1lc3NhZ2VzWyd1cGRhdGVEb2N1bWVudENvbmZpcm1hdGlvbiddWydkYXRhJ11bJ2RvY3VtZW50SXNOZXdWZXJzaW9uJ107XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICdjcmVhdGVEb2N1bWVudENhbGxiYWNrJywgJ2NyZWF0ZURvY3VtZW50RXJyb3InKTtcclxuICAgICAgICB9LFxyXG5cclxuXHJcbiAgICAgICAgdmlld0RvY3VtZW50KGUsIGRvY3VtZW50VHlwZSA9ICdkZXNjcmlwdGlvbicpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHksXHJcbiAgICAgICAgICAgICAgICBjdXN0b206ICd2aWV3RG9jdW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogZG9jdW1lbnRUeXBlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ2NyZWF0ZURvY3VtZW50Q2FsbGJhY2snLCAnY3JlYXRlRG9jdW1lbnRFcnJvcicpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHZpZXdEb2N1bWVudFBkZihlLCBkb2N1bWVudFR5cGUgPSAnZGVzY3JpcHRpb24nKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tOiAndmlld0RvY3VtZW50UGRmJyxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IGRvY3VtZW50VHlwZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICd2aWV3RG9jdW1lbnRQZGZDYWxsYmFjaycsICdjcmVhdGVEb2N1bWVudEVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdmlld0RvY3VtZW50UGRmQ2FsbGJhY2socmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgbGV0IGZpbGUgPSByZXNwb25zZS5kYXRhLmRvY3VtZW50RmlsZVVybDtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEFjdGlvbignZGlyZWN0JywgZmlsZSwgJ3ZpZXdEb2N1bWVudFBkZk1vZGFsJywgcmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHZpZXdEb2N1bWVudFBkZk1vZGFsKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgdGhpcy52aWV3RmlsZShmaWxlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjcmVhdGVEb2N1bWVudEVycm9yKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvck5vdGlmaWNhdGlvbiA9IGVycm9yLnJlc3BvbnNlLmRhdGEubWVzc2FnZTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5lcnJvck5vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ29udGVudElkID0gXCJkb2N1bWVudEVycm9yXCI7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uVXRpbC5zaG93Tm90aWZpY2F0aW9uKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy51c2VyLW5hbWUtaWNvbicpKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjcmVhdGVEb2N1bWVudENhbGxiYWNrKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UuZGF0YS5kb2N1bWVudFVybDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVUcmFpbmluZ1ZpZGVvRmlsZShmaWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbGUpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nVmlkZW9GaWxlUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ1ZpZGVvRmlsZSA9IGZpbGU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlVHJhaW5pbmdWaWRlb05hbWUoZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nVmlkZW9OYW1lUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ1ZpZGVvTmFtZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVRyYWluaW5nRG9jdW1lbnRGaWxlKGZpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ0RvY3VtZW50RmlsZVJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdEb2N1bWVudEZpbGUgPSBmaWxlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVRyYWluaW5nRG9jdW1lbnROYW1lKGUpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ0RvY3VtZW50TmFtZVJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdEb2N1bWVudE5hbWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB1cGRhdGVUcmFpbmluZ0RvY3VtZW50RGVzY3JpcHRpb24oZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nRG9jdW1lbnREZXNjcmlwdGlvbiA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVRyYWluaW5nVmlkZW9EZXNjcmlwdGlvbihlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdWaWRlb0Rlc2NyaXB0aW9uID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlVHJhaW5pbmdMaW5rRGVzY3JpcHRpb24oZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nTGlua0Rlc2NyaXB0aW9uID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlVHJhaW5pbmdMaW5rTmFtZShlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdMaW5rTmFtZVJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdMaW5rTmFtZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZVRyYWluaW5nTGlua1VybChlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdMaW5rVXJsUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ0xpbmtVcmwgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBhZGROZXdUcmFpbmluZ1ZpZGVvKGUpIHtcclxuICAgICAgICAgICAgbGV0IGNvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnRyYWluaW5nVmlkZW9OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWluaW5nVmlkZW9OYW1lUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMudHJhaW5pbmdWaWRlb0ZpbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhaW5pbmdWaWRlb0ZpbGVSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFpbmluZ1ZpZGVvVXBsb2FkQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUcmFuaW5nRGF0YSgndmlkZW9zJywgdGhpcy50cmFpbmluZ1ZpZGVvTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IHRoaXMudHJhaW5pbmdWaWRlb0ZpbGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF4aW9zVXBsb2FkKGZpbGUsIGRhdGEsICd0cmFpbmluZ1ZpZGVvQ2FsbGJhY2snKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGFkZE5ld1RyYWluaW5nRG9jdW1lbnQoZSkge1xyXG4gICAgICAgICAgICBsZXQgY29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudHJhaW5pbmdEb2N1bWVudE5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhaW5pbmdEb2N1bWVudE5hbWVSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGhpcy50cmFpbmluZ0RvY3VtZW50RmlsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFpbmluZ0RvY3VtZW50RmlsZVJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbXBsZXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWluaW5nRG9jdW1lbnRVcGxvYWRDb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldFRyYW5pbmdEYXRhKCdkb2N1bWVudHMnLCB0aGlzLnRyYWluaW5nRG9jdW1lbnROYW1lKTtcclxuICAgICAgICAgICAgICAgIGxldCBmaWxlID0gdGhpcy50cmFpbmluZ0RvY3VtZW50RmlsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXhpb3NVcGxvYWQoZmlsZSwgZGF0YSwgJ3RyYWluaW5nRG9jdW1lbnRDYWxsYmFjaycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYWRkTmV3VHJhaW5pbmdMaW5rKGUpIHtcclxuICAgICAgICAgICAgbGV0IGNvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnRyYWluaW5nTGlua05hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhaW5pbmdMaW5rTmFtZVJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnRyYWluaW5nTGlua1VybCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFpbmluZ0xpbmtVcmxSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tUmVxdWVzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b206ICdhZGRUcmFpbmluZ0ZpbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2xpbmtzJyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnRyYWluaW5nTGlua05hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhaW5pbmdMaW5rRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnRyYWluaW5nTGlua1VybCxcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmN1cnJlbnRQcm9jZXNzLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy52dWVBeGlvcyhkYXRhLCAndHJhaW5pbmdMaW5rQ2FsbGJhY2snLCBudWxsLCAnbGlua3MnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRyYWluaW5nVmlkZW9DYWxsYmFjayhyZXNwb25zZSwgZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuY3VycmVudENoaWxkLmZpZWxkcy50cmFpbmluZ1ZpZGVvcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdWaWRlb3M7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy50cmFpbmluZ1ZpZGVvcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdWaWRlb3M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ1ZpZGVvVXBsb2FkQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nVmlkZW9OYW1lID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50cmFpbmluZ1ZpZGVvRmlsZSA9IG51bGw7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJhaW5pbmdEb2N1bWVudENhbGxiYWNrKHJlc3BvbnNlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmN1cnJlbnRDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQuZmllbGRzLnRyYWluaW5nRG9jdW1lbnRzID0gcmVzcG9uc2UuZGF0YS5lbGVtZW50LmZpZWxkcy50cmFpbmluZ0RvY3VtZW50cztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLnRyYWluaW5nRG9jdW1lbnRzID0gcmVzcG9uc2UuZGF0YS5lbGVtZW50LmZpZWxkcy50cmFpbmluZ0RvY3VtZW50cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nRG9jdW1lbnRVcGxvYWRDb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdEb2N1bWVudE5hbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nRG9jdW1lbnRGaWxlID0gbnVsbDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmFpbmluZ0xpbmtDYWxsYmFjayhyZXNwb25zZSwgZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuY3VycmVudENoaWxkLmZpZWxkcy50cmFpbmluZ0xpbmtzID0gcmVzcG9uc2UuZGF0YS5lbGVtZW50LmZpZWxkcy50cmFpbmluZ0xpbmtzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMudHJhaW5pbmdMaW5rcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdMaW5rcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nTGlua05hbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nTGlua1VybCA9IG51bGw7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVxdWlyZWRDbGFzcyh2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAncmVxdWlyZWQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBnZXRUcmFuaW5nRGF0YShrZXksIG5hbWUpIHtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBjdXN0b21SZXF1ZXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tOiAnYWRkVHJhaW5pbmdGaWxlJyxcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRyYWluaW5nVmlkZW9EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuY3VycmVudFByb2Nlc3MsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgLy9hY3Rpb25zXHJcbiAgICAgICAgdmlld1RyYWluaW5nVmlkZW8odmlkZW8pIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuaW5nRG93bmxvYWQodmlkZW8sICd0cmFpbmluZ1ZpZGVvRG93bmxvYWRDYWxsYmFjaycpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHZpZXdUcmFpbmluZ0RvY3VtZW50KGRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbmluZ0Rvd25sb2FkKGRvY3VtZW50LCAndHJhaW5pbmdEb2N1bWVudERvd25sb2FkQ2FsbGJhY2snKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkb3dubG9hZFRyYW5pbmdGaWxlKGZpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuaW5nRG93bmxvYWQoZmlsZSwgJ2Jyb3dzZXJUcmFpbmluZ0Rvd25sb2FkJywgZmlsZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZGVsZXRlVHJhaW5pbmdGaWxlKGZpbGUsIGtleSkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b206ICdkZWxldGVUcmFpbmluZ0ZpbGUnLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5jdXJyZW50UHJvY2VzcyxcclxuICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICAgICAgICBrZXk6IGtleVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ2RlbGV0ZVRyYWluaW5nRmlsZUNhbGxiYWNrJywgbnVsbCwga2V5KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZWxldGVUcmFpbmluZ0ZpbGVDYWxsYmFjayhyZXNwb25zZSwga2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09ICd2aWRlb3MnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmN1cnJlbnRDaGlsZC5maWVsZHMudHJhaW5pbmdWaWRlb3MgPSByZXNwb25zZS5kYXRhLmVsZW1lbnQuZmllbGRzLnRyYWluaW5nVmlkZW9zO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy50cmFpbmluZ1ZpZGVvcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdWaWRlb3M7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICdkb2N1bWVudHMnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmN1cnJlbnRDaGlsZC5maWVsZHMudHJhaW5pbmdEb2N1bWVudHMgPSByZXNwb25zZS5kYXRhLmVsZW1lbnQuZmllbGRzLnRyYWluaW5nRG9jdW1lbnRzO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy50cmFpbmluZ0RvY3VtZW50cyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdEb2N1bWVudHM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5jdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmN1cnJlbnRDaGlsZC5maWVsZHMudHJhaW5pbmdMaW5rcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdMaW5rcztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMudHJhaW5pbmdMaW5rcyA9IHJlc3BvbnNlLmRhdGEuZWxlbWVudC5maWVsZHMudHJhaW5pbmdMaW5rcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIC8vZmlsZSBtYW5hZ2VtZW50ICAgXHJcblxyXG4gICAgICAgIHRyYW5pbmdEb3dubG9hZChvcmlnaW4sIGNhbGxiYWNrLCBjYWxsYmFja0RhdGEgPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFpbmluZ0ZpbGUub3JpZ2luICE9IG9yaWdpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEFjdGlvbignZGlyZWN0Jywgb3JpZ2luLnVybCwgY2FsbGJhY2ssIGNhbGxiYWNrRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmFpbmluZ1ZpZGVvRG93bmxvYWRDYWxsYmFjayhyZXNwb25zZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nRG93bmxvYWRDYWxsYmFjayhyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmlld1ZpZGVvKHRoaXMuY3VycmVudFRyYWluaW5nRmlsZS5maWxlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmFpbmluZ0RvY3VtZW50RG93bmxvYWRDYWxsYmFjayhyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndHJhaW5pbmdEb2N1bWVudERvd25sb2FkQ2FsbGJhY2snLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdEb3dubG9hZENhbGxiYWNrKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3RmlsZSh0aGlzLmN1cnJlbnRUcmFpbmluZ0ZpbGUuZmlsZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJhaW5pbmdEb3dubG9hZENhbGxiYWNrKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRyYWluaW5nRmlsZS5vcmlnaW4gPSBvcmlnaW47XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRyYWluaW5nRmlsZS5maWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBicm93c2VyVHJhaW5pbmdEb3dubG9hZChyZXNwb25zZSwgZGF0YSkge1xyXG4gICAgICAgICAgICBsZXQgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXTtcclxuICAgICAgICAgICAgbGV0IGV4dGVuc2lvbiA9IGRhdGEudXJsLnNwbGl0KCcuJykucG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYnJvd3NlckRvd25sb2FkKGRhdGEubmFtZSArICcuJyArIGV4dGVuc2lvbiwgcmVzcG9uc2UuZGF0YSwgY29udGVudFR5cGUpO1xyXG4gICAgICAgIH0sXHJcblxyXG5cclxuICAgICAgICBvblZpZXdGaWxlKHsgbmFtZSwgZmlsZSB9KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0ZpbGVBY3Rpb24oeyBuYW1lOiBuYW1lLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIG9uRG93bmxvYWRGaWxlKHsgbmFtZSwgZmlsZSB9KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnJvd3NlckRvd25sb2FkRmlsZUFjdGlvbih7IG5hbWU6IG5hbWUsIGZpbGVOYW1lOiBmaWxlIH0pO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRvY3VtZW50TW9kZShtb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQcm9jZXNzLm9wdGlvbnMuZG9jdW1lbnRNb2RlID09IG1vZGU7XHJcblxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRvY3VtZW50U3RlcE1vZGUobW9kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UHJvY2Vzcy5vcHRpb25zLnN0ZXBNb2RlID09IG1vZGU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgbWFuYWdlRG9jdW1lbnRBcHByb3ZhbCgpIHtcclxuICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMuY3VycmVudFByb2Nlc3Mub3B0aW9ucy5kb2N1bWVudEFwcHJvdmFsVXJsO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBtYW5hZ2VTdGVwQXBwcm92YWwoKSB7XHJcbiAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmN1cnJlbnRQcm9jZXNzLm9wdGlvbnMuc3RlcEFwcHJvdmFsVXJsO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGNvbXB1dGVkOiB7XHJcblxyXG4gICAgICAgIHRyYWluaW5nRG9jdW1lbnRzRmllbGQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzLnRyYWluaW5nRG9jdW1lbnRzO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRyYW5pbmluZ1ZpZGVvc0ZpZWxkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpZWxkcy50cmFpbmluZ1ZpZGVvcztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmFpbmluZ0xpbmtzRmllbGQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzLnRyYWluaW5nTGlua3M7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJhbmluZ1ZpZGVvcygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLnRyYWluaW5nVmlkZW9zO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRyYWluaW5nRG9jdW1lbnRzKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UHJvY2Vzcy5maWVsZHMudHJhaW5pbmdEb2N1bWVudHM7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJhaW5pbmdMaW5rcygpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLnRyYWluaW5nTGlua3M7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY3VycmVudFByb2Nlc3MoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmN1cnJlbnRDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuY3VycmVudENoaWxkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50O1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHByb2Nlc3NPcHRpb25zKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5vcHRpb25zO1xyXG4gICAgICAgIH0sXHJcbiAgICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgICA8ZGl2IDpjbGFzcz1cIid2dWUtZG9jdW1lbnQtY29udGFpbmVyIHZ1ZS1zcGxpdC1jb250YWluZXIgJyArIGV4cGFuZGVkQ2xhc3NcIj5cclxuICAgICAgICA8VnVlSW5kZXggOnN0YXRlPVwic3RhdGVcIiA6ZGF0YT1cImRhdGFcIiA6ZW50aXR5PVwiZW50aXR5XCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiXHJcbiAgICAgICAgICAgIEBnbG9iYWxBY3Rpb25DbGljaz1cIm9uR2xvYmFsQWN0aW9uQ2xpY2tcIiByZWY9XCJpbmRleFwiIDpjdXJyZW50RWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCIgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYWdiYXIgbmV3LWRyYWdiYXJcIiBAbW91c2Vkb3duPVwiZHJhZygkZXZlbnQpXCIgQG1vdXNldXA9XCJzdG9wRHJhZygkZXZlbnQpXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDxWdWVEZXRhaWxzIDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCIgOmVudGl0eT1cImVudGl0eVwiIHYtc2hvdz1cInRoaXMuc3RhdGUudmlldyA9PT0gJ2RldGFpbHMnXCJcclxuICAgICAgICAgICAgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIiByZWY9XCJkZXRhaWxzXCIgQHVwbG9hZC1maWxlPVwib25GaWxlVXBsb2FkXCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiXHJcbiAgICAgICAgICAgIEBjdXN0b21BY3Rpb249XCJvbkN1c3RvbUFjdGlvblwiPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmN1c3RvbUZpZWxkc0dlbmVyYWw9XCJ7IGdyb3VwTmFtZSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciBjb2wtbGFyZ2VcIiB2LWlmPVwiZ3JvdXBOYW1lID09ICdkb2N1bWVudHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLWxhYmVsXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxOHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCIoIXRoaXMuY3VycmVudFByb2Nlc3Mub3B0aW9ucy5kb2N1bWVudFJlZnJlc2ggfHwgIXRoaXMuY3VycmVudFByb2Nlc3Mub3B0aW9ucy5zdGVwUmVmcmVzaCkgJiYgdGhpcy5jdXJyZW50UHJvY2Vzcy5maWVsZHMuc3RhdHVzICE9ICdkcmFmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImFwcHJvdmFsXCI+e3sgZGF0YS50cmFucy5hY3Rpb25zIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gOmRpc2FibGVkPVwidGhpcy5zdGF0ZS5hY3Rpb25XYWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIhdGhpcy5kYXRhLmNvbmZpZy5yZWZyZXNoRG9jdW1lbnQgPyAndnVlLWJ0biB3YXJuaW5nJyA6ICd2dWUtYnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLmRvY3VtZW50XCIgQGNsaWNrPVwidXBkYXRlRG9jdW1lbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRoaXMuZGF0YS50cmFucy51cGRhdGVUb0xhdGVzdFZlcnNpb24gfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIDpkaXNhYmxlZD1cInRoaXMuc3RhdGUuYWN0aW9uV2FpdFwiIDpjbGFzcz1cIid2dWUtYnRuIHdhcm5pbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiIXRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLmRvY3VtZW50XCIgQGNsaWNrPVwidXBkYXRlRG9jdW1lbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRoaXMuZGF0YS5hY3Rpb25zLmNyZWF0ZURvY3VtZW50LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxWdWVGaWVsZCBrZXk9XCJkb2N1bWVudFwiIDplbGVtZW50PVwidGhpcy5jdXJyZW50UHJvY2Vzc1wiIDpkYXRhPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDpmaWVsZD1cInRoaXMuZGF0YS5maWVsZHMuZG9jdW1lbnRQcmV2aWV3XCIgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZG93bmxvYWRGaWxlPVwib25Eb3dubG9hZEZpbGVcIiBAdmlld0ZpbGU9XCJvblZpZXdGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZmlsZVByZUNvbnRlbnQ9XCJ7IGV4cGFuZGVkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC1sYWJlbFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMThweDtcIiB2LWlmPVwiZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1pc3NpbmctZG9jdW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiIXRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLmRvY3VtZW50IHx8ICF0aGlzLmRhdGEuY3VycmVudERvd25sb2Fkc1t0aGlzLmRhdGEuZmllbGRzLmRvY3VtZW50UHJldmlldy5uYW1lXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aGlzLmRhdGEudHJhbnNbJ2RvY3VtZW50RmlsZU5vdEZvdW5kJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiA6ZGlzYWJsZWQ9XCJ0aGlzLnN0YXRlLmFjdGlvbldhaXRcIiA6Y2xhc3M9XCIndnVlLWJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLmRvY3VtZW50XCIgQGNsaWNrPVwidmlld0RvY3VtZW50KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRoaXMuZGF0YS5hY3Rpb25zLnZpZXdEb2N1bWVudC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gOmRpc2FibGVkPVwidGhpcy5zdGF0ZS5hY3Rpb25XYWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIiF0aGlzLmRhdGEuY29uZmlnLnJlZnJlc2hEb2N1bWVudCA/ICd2dWUtYnRuIHdhcm5pbmcnIDogJ3Z1ZS1idG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmZpZWxkcy5kb2N1bWVudCAmJiB0aGlzLmN1cnJlbnRQcm9jZXNzLm9wdGlvbnMuZG9jdW1lbnRSZWZyZXNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInVwZGF0ZURvY3VtZW50KCRldmVudCwgJ2Rlc2NyaXB0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRoaXMuZGF0YS50cmFucy5yZWZyZXNoRG9jdW1lbnQgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVnVlRmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPFZ1ZUZpZWxkIGtleT1cInN0ZXBEb2N1bWVudFwiIDplbGVtZW50PVwidGhpcy5jdXJyZW50UHJvY2Vzc1wiIDpkYXRhPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDpmaWVsZD1cInRoaXMuZGF0YS5maWVsZHMuc3RlcERvY3VtZW50UHJldmlld1wiIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGRvd25sb2FkRmlsZT1cIm9uRG93bmxvYWRGaWxlXCIgQHZpZXdGaWxlPVwib25WaWV3RmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OmZpbGVQcmVDb250ZW50PVwieyBleHBhbmRlZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB2dWUtZmllbGQtbGFiZWxcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDE4cHg7XCIgdi1pZj1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtaXNzaW5nLWRvY3VtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIiF0aGlzLmN1cnJlbnRQcm9jZXNzLmZpZWxkcy5zdGVwRG9jdW1lbnQgfHwgIXRoaXMuZGF0YS5jdXJyZW50RG93bmxvYWRzW3RoaXMuZGF0YS5maWVsZHMuc3RlcERvY3VtZW50UHJldmlldy5uYW1lXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aGlzLmRhdGEudHJhbnNbJ2RvY3VtZW50RmlsZU5vdEZvdW5kJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiA6ZGlzYWJsZWQ9XCJ0aGlzLnN0YXRlLmFjdGlvbldhaXRcIiA6Y2xhc3M9XCIndnVlLWJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLnN0ZXBEb2N1bWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJ2aWV3RG9jdW1lbnQoJGV2ZW50LCAnc3RlcHMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdGhpcy5kYXRhLmFjdGlvbnMudmlld0RvY3VtZW50LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiA6ZGlzYWJsZWQ9XCJ0aGlzLnN0YXRlLmFjdGlvbldhaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiIXRoaXMuZGF0YS5jb25maWcucmVmcmVzaERvY3VtZW50ID8gJ3Z1ZS1idG4gIHdhcm5pbmcnIDogJ3Z1ZS1idG4gJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwidGhpcy5jdXJyZW50UHJvY2Vzcy5maWVsZHMuc3RlcERvY3VtZW50ICYmIHRoaXMuY3VycmVudFByb2Nlc3Mub3B0aW9ucy5zdGVwUmVmcmVzaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJ1cGRhdGVEb2N1bWVudCgkZXZlbnQsICdzdGVwcycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0aGlzLmRhdGEudHJhbnMucmVmcmVzaERvY3VtZW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVnVlRmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPFZ1ZUZpZWxkIGtleT1cImluZm9ybWF0aW9uRG9jdW1lbnRcIiA6ZWxlbWVudD1cInRoaXMuY3VycmVudFByb2Nlc3NcIiA6ZGF0YT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ZmllbGQ9XCJ0aGlzLmRhdGEuZmllbGRzLmluZm9ybWF0aW9uRG9jdW1lbnRQcmV2aWV3XCIgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZG93bmxvYWRGaWxlPVwib25Eb3dubG9hZEZpbGVcIiBAdmlld0ZpbGU9XCJvblZpZXdGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6ZmlsZVByZUNvbnRlbnQ9XCJ7IGV4cGFuZGVkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC1sYWJlbFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMThweDtcIiB2LWlmPVwiZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1pc3NpbmctZG9jdW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiIXRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLmluZm9ybWF0aW9uRG9jdW1lbnQgfHwgIXRoaXMuZGF0YS5jdXJyZW50RG93bmxvYWRzW3RoaXMuZGF0YS5maWVsZHMuaW5mb3JtYXRpb25Eb2N1bWVudFByZXZpZXcubmFtZV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGhpcy5kYXRhLnRyYW5zWydkb2N1bWVudEZpbGVOb3RGb3VuZCddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gOmRpc2FibGVkPVwidGhpcy5zdGF0ZS5hY3Rpb25XYWl0XCIgOmNsYXNzPVwiJ3Z1ZS1idG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmZpZWxkcy5pbmZvcm1hdGlvbkRvY3VtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInZpZXdEb2N1bWVudCgkZXZlbnQsICdpbmZvcm1hdGlvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0aGlzLmRhdGEuYWN0aW9ucy52aWV3RG9jdW1lbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIDpkaXNhYmxlZD1cInRoaXMuc3RhdGUuYWN0aW9uV2FpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCIhdGhpcy5kYXRhLmNvbmZpZy5yZWZyZXNoRG9jdW1lbnQgPyAndnVlLWJ0biAgd2FybmluZycgOiAndnVlLWJ0biAnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmZpZWxkcy5pbmZvcm1hdGlvbkRvY3VtZW50ICYmIHRoaXMuY3VycmVudFByb2Nlc3Mub3B0aW9ucy5zdGVwUmVmcmVzaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJ1cGRhdGVEb2N1bWVudCgkZXZlbnQsICdpbmZvcm1hdGlvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0aGlzLmRhdGEudHJhbnMucmVmcmVzaERvY3VtZW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVnVlRmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LWlmPVwiZ3JvdXBOYW1lID09ICd0cmFpbmluZycgJiYgdGhpcy5jdXJyZW50UHJvY2Vzc1wiIGtleT1cInRyYW5pbmluZ1ZpZGVvc0ZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudD1cInRoaXMuY3VycmVudFByb2Nlc3NcIiA6ZGF0YT1cImRhdGFcIiA6ZmllbGQ9XCJ0cmFuaW5pbmdWaWRlb3NGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Omxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxWdWVEcmFnZ2FibGVOZXh0IHYtbW9kZWw9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmZpZWxkcy50cmFpbmluZ1ZpZGVvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ1ZS1saXN0LWNvbnRhaW5lciBmaWVsZEdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIGZpbGUgYFwiIHYtZm9yPVwiKHZpZGVvLCBrZXkpIGluIHRyYW5pbmdWaWRlb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZXk9XCJ2aWRlby5uYW1lICsga2V5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInbGFiZWwtZXhwYW5kLWNvbnRhaW5lciAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsIHRpdGxlYFwiIDpmb3I9XCInbGFiZWwtJyArIHZpZGVvLm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLm5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCBkZXNjcmlwdGlvbmBcIiA6Zm9yPVwiJ2xhYmVsLScgKyB2aWRlby5uYW1lXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlby5kZXNjcmlwdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZXllXCIgQGNsaWNrPVwidmlld1RyYWluaW5nVmlkZW8odmlkZW8pXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZG93bmxvYWRcIiBAY2xpY2s9XCJkb3dubG9hZFRyYW5pbmdGaWxlKHZpZGVvKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIHYtaWY9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmNydWQuZGVsZXRlXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZGVsZXRlVHJhaW5pbmdGaWxlKHZpZGVvLCAndmlkZW9zJylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXRyYWluaW5nLXZpZGVvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidsYWJlbC1leHBhbmQtY29udGFpbmVyICdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYWluaW5nLWlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZ1ZVVwbG9hZCA6dGl0bGU9XCJ0aGlzLmRhdGEudHJhbnMuZmlsZVwiIDp2dWUtcGxhY2Vob2xkZXI9XCInc2VsZWN0IGZpbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cInRyYWluaW5nVmlkZW9GaWxlXCIgQHVwZGF0ZS12YWx1ZT1cInVwZGF0ZVRyYWluaW5nVmlkZW9GaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkYXRhSWQ9XCIncHJvY2Vzc1ZpZGVvVXBsb2FkJ1wiIEBjbGVhci11cGxvYWQ9XCJ1cGRhdGVUcmFpbmluZ1ZpZGVvRmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dnVlLXJlcXVpcmVkPVwidHJhaW5pbmdWaWRlb0ZpbGVSZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Z1ZVVwbG9hZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIG5hbWUgYCArIHJlcXVpcmVkQ2xhc3ModHJhaW5pbmdWaWRlb05hbWVSZXF1aXJlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImZpbGVVcGxvYWRcIj57eyB0aGlzLmRhdGEudHJhbnMubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRlbnQgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInRoaXMuZGF0YS50cmFucy5uYW1lXCIgOnZhbHVlPVwidHJhaW5pbmdWaWRlb05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlVHJhaW5pbmdWaWRlb05hbWUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGQtY29udGFpbmVyIHRleHRhcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiYGZvcm0tZ3JvdXAgbmFtZSBgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJmaWxlVXBsb2FkXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInZ1ZS1mb3JtLWlucHV0XCIgdHlwZT1cInRleHRcIiBuYW1lPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJ0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJ0cmFpbmluZ1ZpZGVvRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlVHJhaW5pbmdWaWRlb0Rlc2NyaXB0aW9uKCRldmVudClcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0eXBlPVwiYnV0dG9uXCIgdi1pZj1cInRoaXMudHJhaW5pbmdWaWRlb1VwbG9hZENvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2suc3RvcD1cImFkZE5ld1RyYWluaW5nVmlkZW8oJGV2ZW50KVwiIGNsYXNzPVwidnVlLWJ0bi1hY3Rpb25cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBtcy1JY29uIG1zLUljb24tLUFkZFwiPjwvaT48c3Bhbj4ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbmluaW5nVmlkZW9zRmllbGQub3B0aW9ucy5hZGRMYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nIHZ1ZS1maWVsZC1jb250YWluZXJcIiB2LWlmPVwiIXRoaXMudHJhaW5pbmdWaWRlb1VwbG9hZENvbXBsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3NcIj57eyB0aGlzLnN0YXRlLmN1cnJlbnRQcm9ncmVzc0JhciArICclJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9WdWVGaWVsZD5cclxuICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LWlmPVwiZ3JvdXBOYW1lID09ICd0cmFpbmluZycgJiYgdGhpcy5jdXJyZW50UHJvY2Vzc1wiIGtleT1cInRyYWluaW5nRG9jdW1lbnRzRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIDplbGVtZW50PVwidGhpcy5jdXJyZW50UHJvY2Vzc1wiIDpkYXRhPVwiZGF0YVwiIDpmaWVsZD1cInRyYWluaW5nRG9jdW1lbnRzRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtc2xvdDpsaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VnVlRHJhZ2dhYmxlTmV4dCB2LW1vZGVsPVwidGhpcy5jdXJyZW50UHJvY2Vzcy5maWVsZHMudHJhaW5pbmdEb2N1bWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2dWUtbGlzdC1jb250YWluZXIgZmllbGRHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWxlIGBcIiB2LWZvcj1cImRvY3VtZW50IGluIHRyYWluaW5nRG9jdW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInbGFiZWwtZXhwYW5kLWNvbnRhaW5lciAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsIHRpdGxlYFwiIDpmb3I9XCInbGFiZWwtJyArIGRvY3VtZW50Lm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCBkZXNjcmlwdGlvbmBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmb3I9XCInbGFiZWwtJyArIGRvY3VtZW50Lm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kZXNjcmlwdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZXllXCIgQGNsaWNrPVwidmlld1RyYWluaW5nRG9jdW1lbnQoZG9jdW1lbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZG93bmxvYWRcIiBAY2xpY2s9XCJkb3dubG9hZFRyYW5pbmdGaWxlKGRvY3VtZW50KVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIHYtaWY9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzLmNydWQuZGVsZXRlXCIgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZGVsZXRlVHJhaW5pbmdGaWxlKGRvY3VtZW50LCAnZG9jdW1lbnRzJylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXRyYWluaW5nLWRvY3VtZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIidsYWJlbC1leHBhbmQtY29udGFpbmVyICdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYWluaW5nLWlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZ1ZVVwbG9hZCA6dGl0bGU9XCJ0aGlzLmRhdGEudHJhbnMuZmlsZVwiIDp2dWUtcGxhY2Vob2xkZXI9XCInc2VsZWN0IGZpbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cInRyYWluaW5nRG9jdW1lbnRGaWxlXCIgQHVwZGF0ZS12YWx1ZT1cInVwZGF0ZVRyYWluaW5nRG9jdW1lbnRGaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGVhci11cGxvYWQ9XCJ1cGRhdGVUcmFpbmluZ1ZpZGVvRmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dnVlLXJlcXVpcmVkPVwidHJhaW5pbmdEb2N1bWVudEZpbGVSZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Z1ZVVwbG9hZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIG5hbWUgYCArIHJlcXVpcmVkQ2xhc3ModHJhaW5pbmdEb2N1bWVudE5hbWVSZXF1aXJlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiIGZvcj1cImZpbGVVcGxvYWRcIj57eyB0aGlzLmRhdGEudHJhbnMubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRlbnQgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidnVlLWZvcm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInRoaXMuZGF0YS50cmFucy5uYW1lXCIgOnZhbHVlPVwidHJhaW5pbmdEb2N1bWVudE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlVHJhaW5pbmdEb2N1bWVudE5hbWUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGQtY29udGFpbmVyIHRleHRhcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiYGZvcm0tZ3JvdXAgbmFtZSBgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJmaWxlVXBsb2FkXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInZ1ZS1mb3JtLWlucHV0XCIgdHlwZT1cInRleHRcIiBuYW1lPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJ0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJ0cmFpbmluZ0RvY3VtZW50RGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlVHJhaW5pbmdEb2N1bWVudERlc2NyaXB0aW9uKCRldmVudClcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHR5cGU9XCJidXR0b25cIiB2LWlmPVwidGhpcy50cmFpbmluZ0RvY3VtZW50VXBsb2FkQ29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljay5zdG9wPVwiYWRkTmV3VHJhaW5pbmdEb2N1bWVudCgkZXZlbnQpXCIgY2xhc3M9XCJ2dWUtYnRuLWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gbXMtSWNvbiBtcy1JY29uLS1BZGRcIj48L2k+PHNwYW4+IHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWluaW5nRG9jdW1lbnRzRmllbGQub3B0aW9ucy5hZGRMYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nIHZ1ZS1maWVsZC1jb250YWluZXJcIiB2LWlmPVwiIXRoaXMudHJhaW5pbmdEb2N1bWVudFVwbG9hZENvbXBsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3NcIj57eyB0aGlzLnN0YXRlLmN1cnJlbnRQcm9ncmVzc0JhciArICclJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9WdWVGaWVsZD5cclxuICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LWlmPVwiZ3JvdXBOYW1lID09ICd0cmFpbmluZycgJiYgdGhpcy5jdXJyZW50UHJvY2Vzc1wiIGtleT1cInRyYWluaW5nTGlua3NGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgOmVsZW1lbnQ9XCJ0aGlzLmN1cnJlbnRQcm9jZXNzXCIgOmRhdGE9XCJkYXRhXCIgOmZpZWxkPVwidHJhaW5pbmdMaW5rc0ZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwib25DaGFuZ2VWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6bGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFZ1ZURyYWdnYWJsZU5leHQgdi1tb2RlbD1cInRoaXMuY3VycmVudFByb2Nlc3MuZmllbGRzLnRyYWluaW5nTGlua3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2dWUtbGlzdC1jb250YWluZXIgZmllbGRHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBmaWxlIGBcIiB2LWZvcj1cImxpbmsgaW4gdHJhaW5pbmdMaW5rc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbCB0aXRsZWBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBsaW5rLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cImxpbmsudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgbGluay5uYW1lIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wtbGFiZWwgZGVzY3JpcHRpb25gXCIgOmZvcj1cIidsYWJlbC0nICsgbGluay5uYW1lXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmRlc2NyaXB0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgdi1pZj1cInRoaXMuY3VycmVudFByb2Nlc3MuY3J1ZC5kZWxldGVcIiBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJkZWxldGVUcmFpbmluZ0ZpbGUobGluaywgJ2xpbmtzJylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVnVlRHJhZ2dhYmxlTmV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6YWRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXRyYWluaW5nLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhaW5pbmctaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciBjb2wtbGFyZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJgZm9ybS1ncm91cCBuYW1lIGAgKyByZXF1aXJlZENsYXNzKHRyYWluaW5nTGlua1VybFJlcXVpcmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCIgZm9yPVwiZmlsZVVwbG9hZFwiPnt7IHRoaXMuZGF0YS50cmFucy5saW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ2dWUtZm9ybS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwidGhpcy5kYXRhLnRyYW5zLmxpbmtcIiA6dmFsdWU9XCJ0cmFpbmluZ0xpbmtVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwidXBkYXRlVHJhaW5pbmdMaW5rVXJsKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIG5hbWUgYCArIHJlcXVpcmVkQ2xhc3ModHJhaW5pbmdMaW5rTmFtZVJlcXVpcmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCIgZm9yPVwiZmlsZVVwbG9hZFwiPnt7IHRoaXMuZGF0YS50cmFucy5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ2dWUtZm9ybS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwidGhpcy5kYXRhLnRyYW5zLm5hbWVcIiA6dmFsdWU9XCJ0cmFpbmluZ0xpbmtOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cInVwZGF0ZVRyYWluaW5nTGlua05hbWUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGQtY29udGFpbmVyIHRleHRhcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgOmNsYXNzPVwiYGZvcm0tZ3JvdXAgbmFtZSBgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIiBmb3I9XCJmaWxlVXBsb2FkXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInZ1ZS1mb3JtLWlucHV0XCIgdHlwZT1cInRleHRcIiBuYW1lPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJ0aGlzLmRhdGEudHJhbnMuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJ0cmFpbmluZ0xpbmtEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJ1cGRhdGVUcmFpbmluZ0xpbmtEZXNjcmlwdGlvbigkZXZlbnQpXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0eXBlPVwiYnV0dG9uXCIgdi1pZj1cInRydWVcIiBAY2xpY2suc3RvcD1cImFkZE5ld1RyYWluaW5nTGluaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ1ZS1idG4tYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBtcy1JY29uIG1zLUljb24tLUFkZFwiPjwvaT48c3Bhbj4ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaW5pbmdMaW5rc0ZpZWxkLm9wdGlvbnMuYWRkTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L1Z1ZUZpZWxkPlxyXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDwvVnVlRGV0YWlscz5cclxuXHJcbiAgICAgICAgPFZ1ZU1lc3NhZ2VzIDpkYXRhPVwiZGF0YVwiIDplbnRpdHk9XCJlbnRpdHlcIiA6c3RhdGU9XCJzdGF0ZVwiIDplbGVtZW50PVwiY3VycmVudEVsZW1lbnRcIiBAY2FuY2VsTW9kYWxDbGljaz1cIm9uQ2FuY2VsTW9kYWxDbGlja1wiXHJcbiAgICAgICAgICAgIEBhY3Rpb25Nb2RhbENsaWNrPVwib25BY3Rpb25Nb2RhbENsaWNrXCIgOm1lc3NhZ2VzVmlzaWJpbGl0eT1cIm1lc3NhZ2VzVmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgIEBjaGFuZ2VDb25maWd1cmF0aW9uPVwib25DaGFuZ2VDb25maWd1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6bm90aWZpY2F0aW9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgdi1zaG93PVwidGhpcy5ub3RpZmljYXRpb25Db250ZW50SWQgPT0gJ2RvY3VtZW50RXJyb3InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdGhpcy5lcnJvck5vdGlmaWNhdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9WdWVNZXNzYWdlcz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmx1cmVkXCIgdi1pZj1cIiFkYXRhLmNvbmZpZy5zcGxpdCAmJiB0aGlzLnN0YXRlLnZpZXcgPT09ICdkZXRhaWxzJ1wiIEBjbGljaz1cImluZGV4TW9kZSgpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGU+XHJcbi5mdWxsLWxhYmVsIHtcclxuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi52dWUtZmllbGQtbGFiZWwgYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4uZmlsZSAubGFiZWwtZXhwYW5kLWNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbn1cclxuXHJcbi5maWxlIC5mYXMge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZmlsZSAuZmEtZG93bmxvYWQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn1cclxuXHJcbi5maWxlIC5tcy1JY29uLS1EZWxldGUge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn1cclxuXHJcbi5mdWxsLWxhYmVsIGkge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi52dWUtZmllbGQtbGFiZWwgYSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcblxyXG4udnVlLWZpZWxkLWNvbnRhaW5lci50ZXh0YXJlYSB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi52dWUtZmllbGQtbGlzdD4ubGFiZWwtZXhwYW5kLWNvbnRhaW5lcjpmaXJzdC1jaGlsZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VhZWFlYTtcclxuICAgIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbn1cclxuXHJcbi52dWUtZmllbGQtY29udGFpbmVyLnRleHRhcmVhIC5mb3JtLWNvbnRlbnQge1xyXG4gICAgaGVpZ2h0OiBmaXQtY29udGVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubG9hZGluZy1pY29uIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLmZvcm0tY29udHJvbC1sYWJlbC50aXRsZSB7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2wtbGFiZWwuZGVzY3JpcHRpb24ge1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xyXG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnZ1ZS1saXN0LWNvbnRhaW5lci50ZXh0LWxpc3Qge1xyXG4gICAgbWluLWhlaWdodDogMzZweDtcclxufVxyXG5cclxuLnByb2dyZXNzIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5taXNzaW5nLWRvY3VtZW50IHtcclxuICAgIGNvbG9yOiAjZDMyZjJmO1xyXG4gICAgLyogTWF0ZXJpYWwgRGVzaWduIGRhbmdlciBjb2xvciAqL1xyXG59XHJcblxyXG4udnVlLWJ0bi53YXJuaW5nIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtO1xyXG59XHJcblxyXG48L3N0eWxlPiIsIjxzY3JpcHQ+XHJcbmltcG9ydCBWdWVJbmRleCBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZUluZGV4LnZ1ZSc7XHJcbmltcG9ydCBWdWVEZXRhaWxzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRGV0YWlscy52dWUnO1xyXG5pbXBvcnQgVnVlRmlsdGVyIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlRmlsdGVyLnZ1ZSc7XHJcbmltcG9ydCBWdWVFbGVtZW50TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL1Z1ZUVsZW1lbnRNaXhpbic7XHJcbmltcG9ydCBWdWVNZXNzYWdlcyBmcm9tICcuLi8uLi9jb21wb25lbnRzL1Z1ZU1lc3NhZ2VzLnZ1ZSdcclxuaW1wb3J0IE15VXBsb2FkQWRhcHRlclBsdWdpbiBmcm9tICcuLi8uLi8uLi9ja2VkaXRvci9NeVVwbG9hZEFkYXB0ZXJQbHVnaW4nO1xyXG5pbXBvcnQgeyB1c2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL05vdGlmaWNhdGlvblV0aWxpdHkuanMnXHJcbmltcG9ydCB7IFZ1ZURyYWdnYWJsZU5leHQgfSBmcm9tICd2dWUtZHJhZ2dhYmxlLW5leHQnO1xyXG5pbXBvcnQgVnVlRmllbGQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVGaWVsZC52dWUnO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ3VzZW1vZGFsLXZ1ZTMnO1xyXG5pbXBvcnQgQ0tFZGl0b3IgZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS12dWUnO1xyXG5pbXBvcnQgeyBkYXRhIH0gZnJvbSAnanF1ZXJ5JztcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY29tcG9uZW50czoge1xyXG4gICAgICAgIFZ1ZUluZGV4LFxyXG4gICAgICAgIFZ1ZURldGFpbHMsXHJcbiAgICAgICAgVnVlRmlsdGVyLFxyXG4gICAgICAgIFZ1ZU1lc3NhZ2VzLFxyXG4gICAgICAgIFZ1ZURyYWdnYWJsZU5leHQsXHJcbiAgICAgICAgVnVlRmllbGQsXHJcbiAgICAgICAgTXlVcGxvYWRBZGFwdGVyUGx1Z2luLFxyXG4gICAgICAgIGNrZWRpdG9yOiBDS0VkaXRvci5jb21wb25lbnQsXHJcbiAgICB9LFxyXG4gICAgbWl4aW5zOiBbVnVlRWxlbWVudE1peGluXSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgZGF0YVN0cmluZzogU3RyaW5nLFxyXG4gICAgICAgIGVudGl0eTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgZGF0YSgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjaGFuZ2VMb2dWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBleHBhbmRlZEFwcHJvdmFsQ2xhc3M6IHt9LFxyXG4gICAgICAgICAgICB0aW1lcjogbnVsbCxcclxuICAgICAgICAgICAgYXBwcm92YWxNZXNzYWdlOiB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICBkb2N1bWVudEV4cGFuZGVkQ2xhc3MoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUxvZ1Zpc2libGUgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCc7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXBwcm92YWxMYWJlbCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLm5hbWU7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXBwcm92YWxFbnRpdHlMYWJlbCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmVudGl0eTtcclxuICAgICAgICB9LFxyXG5cclxuICAgIH0sXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgZXhwYW5kZWRDbGFzc0J5S2V5KGVsZW1lbnQsIGtleSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWRBcHByb3ZhbENsYXNzW2VsZW1lbnRdKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2V4cGFuZGVkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWRBcHByb3ZhbENsYXNzW2VsZW1lbnRdW2tleV0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnY29sbGFwc2VkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRlZEFwcHJvdmFsQ2xhc3NbZWxlbWVudF1ba2V5XSA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBleHBhbmRBcHByb3ZhbChlbGVtZW50LCBrZXkpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkQXBwcm92YWxDbGFzc1tlbGVtZW50XSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZEFwcHJvdmFsQ2xhc3NbZWxlbWVudF0gPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWRBcHByb3ZhbENsYXNzW2VsZW1lbnRdW2tleV0gJiYgdGhpcy5leHBhbmRlZEFwcHJvdmFsQ2xhc3NbZWxlbWVudF1ba2V5XSAhPT0gZmFsc2UgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkQXBwcm92YWxDbGFzc1tlbGVtZW50XVtrZXldID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkQXBwcm92YWxDbGFzc1tlbGVtZW50XVtrZXldID0gIXRoaXMuZXhwYW5kZWRBcHByb3ZhbENsYXNzW2VsZW1lbnRdW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBpc0V4cGFuZGVkQXBwcm92YWwoZWxlbWVudCwga2V5KSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRlZEFwcHJvdmFsQ2xhc3NbZWxlbWVudF0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRlZEFwcHJvdmFsQ2xhc3NbZWxlbWVudF1ba2V5XSAmJiB0aGlzLmV4cGFuZGVkQXBwcm92YWxDbGFzc1tlbGVtZW50XVtrZXldICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRBcHByb3ZhbENsYXNzW2VsZW1lbnRdW2tleV07XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZm9ybWF0Q2hhbmdlbG9nKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdmlld0RvY3VtZW50KGUpIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHksXHJcbiAgICAgICAgICAgICAgICBjdXN0b206ICd2aWV3RG9jdW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy52dWVBeGlvcyhkYXRhLCAndmlld0RvY3VtZW50Q2FsbGJhY2snLCAndmlld0RvY3VtZW50RXJyb3InKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB2aWV3RG9jdW1lbnRDYWxsYmFjayhyZXNwb25zZSkge1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlc3BvbnNlLmRhdGEuZG9jdW1lbnRVcmw7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdmlld0RvY3VtZW50RXJyb3IoZXJyb3IpIHtcclxuICAgICAgICAgICAgdXNlTm90aWZpY2F0aW9uKCdlcnJvcicsIGVycm9yLnJlc3BvbnNlLmRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYXBwcm92ZUFjdGlvbihlLCBhY3Rpb24pIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21SZXF1ZXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tOiBhY3Rpb24ubWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmRhdGEuZmllbGRzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ3JlbG9hZEFjdGlvblVwZGF0ZUNhbGxiYWNrJywgJ3JlbG9hZEFjdGlvbkVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVxdWVzdFJldmlld0FjdGlvbihlLCBhY3Rpb24pIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHRoaXMuZGF0YS5maWVsZHMsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21SZXF1ZXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tOiBhY3Rpb24ubWV0aG9kXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy52dWVBeGlvcyhkYXRhLCAncmVsb2FkQWN0aW9uVXBkYXRlQ2FsbGJhY2snLCAncmVsb2FkQWN0aW9uRXJyb3InKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZW1vdmVSZXF1ZXN0QWN0aW9uKGUsIGFjdGlvbikge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5kYXRhLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b206IGFjdGlvbi5tZXRob2RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICdyZWxvYWRBY3Rpb25DYWxsYmFjaycsICdyZWxvYWRBY3Rpb25FcnJvcicpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNhbmNlbFJlcXVlc3RBY3Rpb24oZSwgYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tUmVxdWVzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5kYXRhLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIGN1c3RvbTogYWN0aW9uLm1ldGhvZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ3JlbG9hZEFjdGlvbkNhbGxiYWNrJywgJ3JlbG9hZEFjdGlvbkVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVqZWN0QWN0aW9uKGUsIGFjdGlvbikge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5kYXRhLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b206IGFjdGlvbi5tZXRob2RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmFsTWVzc2FnZS5kYXRhID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5tZXNzYWdlc1Zpc2liaWxpdHlbJ3JlamVjdFJlcXVlc3QnXSA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vdGhpcy52dWVBeGlvcyhkYXRhLCAncmVsb2FkQWN0aW9uQ2FsbGJhY2snLCAncmVsb2FkQWN0aW9uRXJyb3InKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZWplY3RNZXNzYWdlQWN0aW9uKGUsIGFjdGlvbikge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuYXBwcm92YWxNZXNzYWdlLmRhdGE7XHJcbiAgICAgICAgICAgIGRhdGEucmVqZWN0TWVzc2FnZSA9IHRoaXMuYXBwcm92YWxNZXNzYWdlLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ3JlbG9hZEFjdGlvbkNhbGxiYWNrJywgJ3JlbG9hZEFjdGlvbkVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVxdWVzdEFwcHJvdmFsQWN0aW9uKGUsIGFjdGlvbikge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5kYXRhLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b206IGFjdGlvbi5tZXRob2RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEsICdyZWxvYWRBY3Rpb25VcGRhdGVDYWxsYmFjaycsICdyZWxvYWRBY3Rpb25FcnJvcicpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHJlcXVlc3RVcGRhdGVBY3Rpb24oZSwgYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmRhdGEuZmllbGRzLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tUmVxdWVzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbTogYWN0aW9uLm1ldGhvZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ3JlbG9hZEFjdGlvbkNhbGxiYWNrJywgJ3JlbG9hZEFjdGlvbkVycm9yJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVsb2FkQWN0aW9uQ2FsbGJhY2socmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5lbnRpdHlVcmwpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZGF0YS5lbnRpdHlVcmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSByZXNwb25zZS5kYXRhLmVsZW1lbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUFjdGlvbkNhbGxiYWNrKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZWxvYWRBY3Rpb25VcGRhdGVDYWxsYmFjayhyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlbG9hZEFjdGlvblVQZGF0ZVwiLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMudnVlQXhpb3ModGhpcy5leHRlcm5hbEFwcHJvdmFsVXBkYXRlRGF0YSgpLCAnZXh0ZXJuYWxBcHByb3ZhbFVwZGF0ZUNhbGxiYWNrJywgJ2V4dGVybmFsQXBwcm92YWxVcGRhdGVFcnJvcicsIG51bGwsIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQub3B0aW9ucy5hcHByb3ZhbF91cGRhdGVfdXJsKTtcclxuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aW9uQ2FsbGJhY2socmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcblxyXG5cclxuXHJcbiAgICAgICAgcmVsb2FkQWN0aW9uRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB1c2VOb3RpZmljYXRpb24oJ2Vycm9yJywgZXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlID8/ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHlvdXIgcmVxdWVzdC4nKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvbkNoYW5nZUFwcHJvdmFsRG9jdW1lbnRzKHZhbHVlKSB7XHJcblxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRyYW5pbmdEb3dubG9hZChvcmlnaW4sIGNhbGxiYWNrLCBjYWxsYmFja0RhdGEgPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFpbmluZ0ZpbGUub3JpZ2luICE9IG9yaWdpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEFjdGlvbignZGlyZWN0Jywgb3JpZ2luLnVybCwgY2FsbGJhY2ssIGNhbGxiYWNrRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkb2N1bWVudEZpZWxkKGVsZW1lbnQsIGZpZWxkLCB0eXBlID0gJycpIHtcclxuICAgICAgICAgICAgdmFyIHRlbXBsYXRlRmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YS5maWVsZHMuZmlsZVRlbXBsYXRlKSk7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRmllbGQubmFtZSA9IHRlbXBsYXRlRmllbGQubmFtZSArIHR5cGUgKyAnXycgKyBmaWVsZC5pZDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmRvd25sb2Fkc1tlbGVtZW50LmlkXVt0ZW1wbGF0ZUZpZWxkLm5hbWVdID0gZmllbGRbJ2RvY3VtZW50JyArIHR5cGVdO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuZWxlbWVudHNbZWxlbWVudC5pZF0uZmllbGRzW3RlbXBsYXRlRmllbGQubmFtZV0gPSB0ZW1wbGF0ZUZpZWxkLm5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzW3RlbXBsYXRlRmllbGQubmFtZV0gPSB0ZW1wbGF0ZUZpZWxkLm5hbWU7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRmllbGQubGFiZWwgPSBmaWVsZFsnZG9jdW1lbnRMYWJlbCcgKyB0eXBlXSA/IGZpZWxkWydkb2N1bWVudExhYmVsJyArIHR5cGVdIDogZmllbGQubGFiZWw7XHJcbiAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZUZpZWxkO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRldGFpbE1vZGUoZWxlbWVudCwgY2hpbGQgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBWdWVFbGVtZW50TWl4aW4ubWV0aG9kcy5kZXRhaWxNb2RlLmNhbGwodGhpcywgZWxlbWVudCwgY2hpbGQpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmFsTWVzc2FnZS50ZXh0ID0gZWxlbWVudC5maWVsZHMucmVtYXJrcztcclxuICAgICAgICAgICAgZm9yIChsZXQgb3B0aW9uSWQgaW4gZWxlbWVudC5vcHRpb25zLmRvY3VtZW50cykge1xyXG4gICAgICAgICAgICAgICAgdmFyIG9wdGlvbiA9IGVsZW1lbnQub3B0aW9ucy5kb2N1bWVudHNbb3B0aW9uSWRdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5kb2N1bWVudEZpZWxkKGVsZW1lbnQsIG9wdGlvbik7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTogdGhpcy5kYXRhLmRvd25sb2Fkc1tlbGVtZW50LmlkXVtmaWVsZC5uYW1lXSxcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZUFjdGlvbihkYXRhKTtcclxuICAgICAgICAgICAgICAgIHZhciBzdGVwRmllbGQgPSB0aGlzLmRvY3VtZW50RmllbGQoZWxlbWVudCwgb3B0aW9uLCAnU3RlcCcpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0ZXBEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmRhdGEuZG93bmxvYWRzW2VsZW1lbnQuaWRdW3N0ZXBGaWVsZC5uYW1lXSxcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHN0ZXBGaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGVBY3Rpb24oc3RlcERhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25Eb3dubG9hZEZpbGUoeyBuYW1lLCBmaWxlIH0pIHtcclxuICAgICAgICAgICAgdGhpcy5icm93c2VyRG93bmxvYWRGaWxlQWN0aW9uKHsgbmFtZTogbmFtZSwgZmlsZU5hbWU6IGZpbGUgfSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25WaWV3RmlsZSh7IG5hbWUsIGZpbGUgfSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdGaWxlQWN0aW9uKHsgbmFtZTogbmFtZSwgZmlsZU5hbWU6IGZpbGUgfSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb25SZW1hcmtzQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgICAgICAgICAgdGhpcy5hcHByb3ZhbE1lc3NhZ2UudGV4dCA9IHZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVSZW1hcmtDaGFuZ2UodmFsdWUpO1xyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzYXZlUmVtYXJrQ2hhbmdlKGZpZWxkVmFsdWUpIHtcclxuICAgICAgICAgICAgdmFyIGFjdGlvbiA9IHRoaXMuZGF0YS5hY3Rpb25zLnNhdmVSZW1hcms7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLnJlbWFya3MgPSBmaWVsZFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEuZWxlbWVudHNbdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5pZF0uZmllbGRzLnJlbWFya3MgPSBmaWVsZFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmRhdGEuZmllbGRzLnJlbWFya3MsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGRWYWx1ZS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b206IGFjdGlvbi5tZXRob2RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnZ1ZUF4aW9zKGRhdGEpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIG9uU2F2ZUNsaWNrKGUsIGFjdGlvbikge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy4kZW1pdCgnYWN0aW9uQ2xpY2snLCB7IGFjdGlvbjogYWN0aW9uLCBlbGVtZW50OiBlbGVtZW50LCBldmVudDogZSB9KTtcclxuICAgICAgICB9LFxyXG4gICAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHRlbXBsYXRlPlxyXG4gICAgPGRpdiA6Y2xhc3M9XCIndnVlLWRvY3VtZW50LWNvbnRhaW5lciB2dWUtc3BsaXQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcbiAgICAgICAgPFZ1ZUluZGV4IDpkYXRhPVwiZGF0YVwiIDpzdGF0ZT1cInN0YXRlXCIgOmVudGl0eT1cImVudGl0eVwiIEBhY3Rpb25DbGljaz1cIm9uQWN0aW9uQ2xpY2tcIlxyXG4gICAgICAgICAgICBAZ2xvYmFsQWN0aW9uQ2xpY2s9XCJvbkdsb2JhbEFjdGlvbkNsaWNrXCIgcmVmPVwiaW5kZXhcIiA6Y3VycmVudEVsZW1lbnQ9XCJjdXJyZW50RWxlbWVudFwiIC8+XHJcblxyXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiJ2RyYWdiYXIgbmV3LWRyYWdiYXIgJyArIGRyYWdiYXJDbGFzc1wiIEBtb3VzZWRvd249XCJkcmFnKCRldmVudClcIiBAbW91c2V1cD1cInN0b3BEcmFnKCRldmVudClcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgPFZ1ZURldGFpbHMgOmRhdGE9XCJkYXRhXCIgOnN0YXRlPVwic3RhdGVcIiA6ZW50aXR5PVwiZW50aXR5XCIgdi1zaG93PVwidGhpcy5zdGF0ZS52aWV3ID09PSAnZGV0YWlscydcIlxyXG4gICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwib25DaGFuZ2VWYWx1ZVwiIHJlZj1cImRldGFpbHNcIiBAdXBsb2FkLWZpbGU9XCJvbkZpbGVVcGxvYWRcIiBAYWN0aW9uQ2xpY2s9XCJvbkFjdGlvbkNsaWNrXCJcclxuICAgICAgICAgICAgQGN1c3RvbUFjdGlvbj1cIm9uQ3VzdG9tQWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6dGl0bGU9XCJ7IGxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0aXRsZVwiPnt7IGxhYmVsIH19IDxzcGFuIGNsYXNzPVwiYXBwcm92YWxMYWJlbFwiPnt7IGFwcHJvdmFsTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwcm92YWwtZW50aXR5XCI+KHt7IGFwcHJvdmFsRW50aXR5TGFiZWwgfX0ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmVudGl0eUlkIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Y3VzdG9tRmllbGRzR2VuZXJhbD1cInsgZ3JvdXBOYW1lIH1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2dWUtZmllbGQtY29udGFpbmVyIGNvbC1sYXJnZSBmaXJzdCBzaW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJncm91cE5hbWUgPT0gJ2VudGl0eScgJiYgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuY2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwidGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMubGlua1wiIGNsYXNzPVwiZm9ybS1ncm91cCB2dWUtZmllbGQtbGFiZWwgYnRuLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidnVlLWJ0biBzZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwidGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMubGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRoaXMuZGF0YS50cmFucy52aWV3RW50aXR5IH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ1ZS1maWVsZC1jb250YWluZXIgY29sLWxhcmdlIGZpcnN0IHNpbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdyb3VwTmFtZSA9PSAnZW50aXR5JyAmJiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5jaGFuZ2Vsb2dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5kb2N1bWVudExpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgdnVlLWZpZWxkLWxhYmVsIGJ0bi1saW5rXCIgc3R5bGU9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG4gc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cInRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmRvY3VtZW50TGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRoaXMuZGF0YS50cmFucy52aWV3RG9jdW1lbnQgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciBjb2wtbGFyZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJncm91cE5hbWUgPT0gJ2VudGl0eScgJiYgdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuY2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY2hhbmdlbG9nc1wiIHYtaWY9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5jaGFuZ2Vsb2dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCInbGFiZWwtZXhwYW5kLWNvbnRhaW5lciAnICsgZG9jdW1lbnRFeHBhbmRlZENsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgOmNsYXNzPVwiYGZvcm0tY29udHJvbC1sYWJlbGBcIiA6Zm9yPVwiJ2xhYmVsLScgKyBkYXRhLmZpZWxkcy5jaGFuZ2Vsb2cubmFtZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5maWVsZHMuY2hhbmdlbG9nLmxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgQGNsaWNrPVwiY2hhbmdlTG9nVmlzaWJsZSA9ICFjaGFuZ2VMb2dWaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tQ2hldnJvbkRvd24gbGFiZWwtZXhwYW5kLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhbmdlbG9ncy1jb250ZW50XCIgdi1pZj1cImNoYW5nZUxvZ1Zpc2libGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIoY2hhbmdlbG9nLCBpbmRleCkgaW4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5maWVsZHMuY2hhbmdlbG9nXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg2Pnt7IGRhdGEuZmllbGRzLnZlcnNpb24ubGFiZWwgKyAnICcgKyBjaGFuZ2Vsb2cudmVyc2lvbiArICcsICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5yZXZpc2lvbi5sYWJlbCArICcgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWxvZy5yZXZpc2lvbiB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgdi1odG1sPVwiZm9ybWF0Q2hhbmdlbG9nKGNoYW5nZWxvZy5jb250ZW50KVwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LWlmPVwiZ3JvdXBOYW1lID09ICdkb2N1bWVudHMnXCIga2V5PVwiZG9jdW1lbnRzXCIgOmVsZW1lbnQ9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICA6ZGF0YT1cImRhdGFcIiA6ZmllbGQ9XCJ0aGlzLmRhdGEuZmllbGRzLmFwcHJvdmFsRG9jdW1lbnRzXCIgQGNoYW5nZS12YWx1ZT1cIm9uQ2hhbmdlQXBwcm92YWxEb2N1bWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj1cImRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90Omxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxWdWVEcmFnZ2FibGVOZXh0IHYtbW9kZWw9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5hcHByb3ZhbERvY3VtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ1ZS1saXN0LWNvbnRhaW5lciBmaWVsZEdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IDpjbGFzcz1cImBmb3JtLWdyb3VwIGZpbGUgZmlsZVRlbXBsYXRlYFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCIoZG9jdW1lbnQsIGtleSkgaW4gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudC5vcHRpb25zLmRvY3VtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIidsaXN0JyArIGtleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiJ2xhYmVsLWV4cGFuZC1jb250YWluZXIgJyArIGV4cGFuZGVkQ2xhc3NCeUtleSh0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LCBrZXkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCA6Y2xhc3M9XCJgZm9ybS1jb250cm9sLWxhYmVsYFwiIDpmb3I9XCInbGFiZWwtJyArIGRvY3VtZW50Lm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBAY2xpY2s9XCJleHBhbmRBcHByb3ZhbCh0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LCBrZXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtSWNvbiBtcy1JY29uLS1DaGV2cm9uRG93biBsYWJlbC1leHBhbmQtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS10ZW1wbGF0ZS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LXNob3c9XCJpc0V4cGFuZGVkQXBwcm92YWwodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCwga2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudD1cInRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnRcIiA6ZGF0YT1cImRhdGFcIiBAZG93bmxvYWRGaWxlPVwib25Eb3dubG9hZEZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHZpZXdGaWxlPVwib25WaWV3RmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmllbGQ9XCJkb2N1bWVudEZpZWxkKHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQsIGRvY3VtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5kZXg9XCInZG9jdW1lbnQnICsga2V5IC0gMVwiIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCIgcmVmPVwiZGV0YWlsc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWdWVGaWVsZCB2LXNob3c9XCJpc0V4cGFuZGVkQXBwcm92YWwodGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudCwga2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudD1cInRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnRcIiA6ZGF0YT1cImRhdGFcIiBAZG93bmxvYWRGaWxlPVwib25Eb3dubG9hZEZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHZpZXdGaWxlPVwib25WaWV3RmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmllbGQ9XCJkb2N1bWVudEZpZWxkKHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQsIGRvY3VtZW50LCAnU3RlcCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppbmRleD1cIidkb2N1bWVudFN0ZXAnICsga2V5IC0gMVwiIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCIgcmVmPVwiZGV0YWlsc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9WdWVEcmFnZ2FibGVOZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L1Z1ZUZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWFya3MtY29udGFpbmVyXCIgIHYtaWY9XCIoZ3JvdXBOYW1lID09ICdkb2N1bWVudHMnIHx8IGdyb3VwTmFtZSA9PSAnZG9jdW1lbnQnKSBcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50Lm9wdGlvbnMucmVqZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFZ1ZUZpZWxkIDplbGVtZW50PVwidGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudFwiIDpkYXRhPVwiZGF0YVwiIDpmaWVsZD1cImRhdGEuZmllbGRzLnJlbWFya3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlLXZhbHVlPVwib25SZW1hcmtzQ2hhbmdlXCIgcmVmPVwiZGV0YWlsc1wiIDpzdGF0ZT1cInN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9WdWVGaWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L1Z1ZURldGFpbHM+XHJcblxyXG4gICAgICAgIDxWdWVNZXNzYWdlcyA6ZGF0YT1cImRhdGFcIiA6ZW50aXR5PVwiZW50aXR5XCIgOnN0YXRlPVwic3RhdGVcIiA6ZWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCJcclxuICAgICAgICAgICAgQGNhbmNlbE1vZGFsQ2xpY2s9XCJvbkNhbmNlbE1vZGFsQ2xpY2tcIiBAYWN0aW9uTW9kYWxDbGljaz1cIm9uQWN0aW9uTW9kYWxDbGlja1wiXHJcbiAgICAgICAgICAgIDptZXNzYWdlc1Zpc2liaWxpdHk9XCJtZXNzYWdlc1Zpc2liaWxpdHlcIiBAY2hhbmdlQ29uZmlndXJhdGlvbj1cIm9uQ2hhbmdlQ29uZmlndXJhdGlvblwiPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1zbG90OnNpbXBsZU1vZGFsQm9keT1cInsgbWVzc2FnZSwgZWRpdG9yLCBlZGl0b3JDb25maWcgfVwiPlxyXG4gICAgICAgICAgICAgICAgPHA+e3sgdGhpcy5kYXRhLnRyYW5zLnJlamVjdEZlZWRiYWNrIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPGNrZWRpdG9yIGNsYXNzPVwiY2stZWRpdG9yXCIgOmVkaXRvcj1cImVkaXRvclwiIHYtbW9kZWw9XCJhcHByb3ZhbE1lc3NhZ2UudGV4dFwiIDpjb25maWc9XCJlZGl0b3JDb25maWdcIj5cclxuICAgICAgICAgICAgICAgIDwvY2tlZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L1Z1ZU1lc3NhZ2VzPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1ibHVyZWRcIiB2LWlmPVwiIWRhdGEuY29uZmlnLnNwbGl0ICYmIHRoaXMuc3RhdGUudmlldyA9PT0gJ2RldGFpbHMnXCIgQGNsaWNrPVwiaW5kZXhNb2RlKClcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmFwcHJvdmFsTGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5cclxuLmFwcHJvdmFsLWVudGl0eSB7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG59XHJcblxyXG4uZmlsZVRlbXBsYXRlIC52dWUtZmllbGQtY29udGFpbmVyIHtcclxuICAgIG1heC13aWR0aDogNDUlICFpbXBvcnRhbnQ7XHJcbiAgICB3aWR0aDogNDUlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5maWxlLXRlbXBsYXRlLWNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxufVxyXG5cclxuLnJlbWFya3MtY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxuICAgIG9yZGVyOiAxMTtcclxufVxyXG48L3N0eWxlPlxyXG48c3R5bGU+XHJcbi5maWxlVGVtcGxhdGUgLnZ1ZS1maWVsZC1jb250YWluZXIgY2FudmFzIHtcclxuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udnVlLW11bHRpc2VsZWN0LmRpc2FibGVkIHtcclxuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcclxuICAgIGdhcDogMTVweDtcclxufVxyXG5cclxuLm1lc3NhZ2UuZmVlZGJhY2sgLm1lc3NhZ2UtaGVhZGVyIHtcclxuICAgIGNvbG9yOiAjRkY4ODAwO1xyXG59XHJcblxyXG4udnVlLWZvcm0gLmZvcm0tc2VjdGlvbiAuZm9ybS1ncm91cCBsYWJlbCB7XHJcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xyXG59XHJcbjwvc3R5bGU+IiwiPHNjcmlwdD5cclxuaW1wb3J0IFZ1ZUluZGV4IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlSW5kZXgudnVlJztcclxuaW1wb3J0IFZ1ZURldGFpbHMgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVEZXRhaWxzLnZ1ZSc7XHJcbmltcG9ydCBWdWVGaWx0ZXIgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9WdWVGaWx0ZXIudnVlJztcclxuaW1wb3J0IFZ1ZUVsZW1lbnRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvVnVlRWxlbWVudE1peGluJztcclxuaW1wb3J0IFZ1ZU1lc3NhZ2VzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVnVlTWVzc2FnZXMudnVlJztcclxuaW1wb3J0IHsgdXNlTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Ob3RpZmljYXRpb25VdGlsaXR5LmpzJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgY29tcG9uZW50czoge1xyXG4gICAgVnVlSW5kZXgsXHJcbiAgICBWdWVEZXRhaWxzLFxyXG4gICAgVnVlRmlsdGVyLFxyXG4gICAgVnVlTWVzc2FnZXNcclxuICB9LFxyXG4gIG1peGluczogW1Z1ZUVsZW1lbnRNaXhpbl0sXHJcbiAgcHJvcHM6IHtcclxuICAgIGRhdGFTdHJpbmc6IFN0cmluZyxcclxuICAgIGVudGl0eTogU3RyaW5nXHJcbiAgfSxcclxuICBtb3VudGVkKCkge1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25VdGlsID0gdXNlTm90aWZpY2F0aW9uKCk7XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBjb21wbGV0ZVRhc2tBY3Rpb24oZSwgYWN0aW9uKSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQsXHJcbiAgICAgICAgY3VzdG9tUmVxdWVzdDogdHJ1ZSxcclxuICAgICAgICBmaWVsZHM6IHRoaXMuZGF0YS5maWVsZHMsXHJcbiAgICAgICAgY3VzdG9tOiBhY3Rpb24ubWV0aG9kXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52dWVBeGlvcyhkYXRhLCAnY29tcGxldGVUYXNrQWN0aW9uQ2FsbGJhY2snLCAnY29tcGxldGVUYXNrQWN0aW9uRXJyb3InKTtcclxuICAgIH0sXHJcblxyXG4gICAgY29tcGxldGVUYXNrQWN0aW9uQ2FsbGJhY2socmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5zYXZlRWxlbWVudChyZXNwb25zZS5kYXRhLmVsZW1lbnQpO1xyXG4gICAgfSxcclxuXHJcbiAgICBjb21wbGV0ZVRhc2tBY3Rpb25FcnJvcihlcnJvcikge1xyXG4gICAgICAvL3RoaXMubm90aWZpY2F0aW9uVXRpbC5lcnJvcihlcnJvci5yZXNwb25zZS5kYXRhLm1lc3NhZ2UpO1xyXG4gICAgfSxcclxuXHJcbiAgICBvcGVuVGFza0FjdGlvbihlLCBhY3Rpb24pIHtcclxuICAgICAgO1xyXG4gICAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICBlbGVtZW50OiB0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LFxyXG4gICAgICAgIGN1c3RvbVJlcXVlc3Q6IHRydWUsXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmRhdGEuZmllbGRzLFxyXG4gICAgICAgIGN1c3RvbTogYWN0aW9uLm1ldGhvZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudnVlQXhpb3MoZGF0YSwgJ2NvbXBsZXRlVGFza0FjdGlvbkNhbGxiYWNrJywgJ2NvbXBsZXRlVGFza0FjdGlvbkVycm9yJyk7XHJcbiAgICB9LFxyXG5cclxuICAgIHRha2VUYXNrQWN0aW9uKGUsIGFjdGlvbikge1xyXG4gICAgICB2YXIgdGFzayA9IHRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQ7XHJcbiAgICAgIHRhc2suZmllbGRzLmFzc2lnbmVkID0gdGhpcy5kYXRhLmNvbmZpZy51c2VySWQ7XHJcbiAgICAgIHZhciBzYXZlQWN0aW9uID0gdGhpcy5kYXRhLmFjdGlvbnMuc2F2ZTtcclxuICAgICAgdGhpcy5zYXZlQWN0aW9uKGUsIHNhdmVBY3Rpb24pO1xyXG4gICAgfSxcclxuXHJcbiAgICBsZWF2ZVRhc2tBY3Rpb24oZSwgYWN0aW9uKSB7XHJcbiAgICAgIHZhciB0YXNrID0gdGhpcy5zdGF0ZS5jdXJyZW50RWxlbWVudDtcclxuICAgICAgdGFzay5maWVsZHMuYXNzaWduZWQgPSBudWxsO1xyXG4gICAgICB2YXIgc2F2ZUFjdGlvbiA9IHRoaXMuZGF0YS5hY3Rpb25zLnNhdmU7XHJcbiAgICAgIHRoaXMuc2F2ZUFjdGlvbihlLCBzYXZlQWN0aW9uKTtcclxuICAgIH0sXHJcblxyXG5cclxuICB9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48dGVtcGxhdGU+XHJcbiAgPGRpdiA6Y2xhc3M9XCIndnVlLWRvY3VtZW50LWNvbnRhaW5lciB2dWUtc3BsaXQtY29udGFpbmVyICcgKyBleHBhbmRlZENsYXNzXCI+XHJcbiAgICA8VnVlSW5kZXggOmRhdGE9XCJkYXRhXCIgOnN0YXRlPVwic3RhdGVcIiA6ZW50aXR5PVwiZW50aXR5XCIgQGFjdGlvbkNsaWNrPVwib25BY3Rpb25DbGlja1wiXHJcbiAgICAgIEBnbG9iYWxBY3Rpb25DbGljaz1cIm9uR2xvYmFsQWN0aW9uQ2xpY2tcIiByZWY9XCJpbmRleFwiIDpjdXJyZW50RWxlbWVudD1cImN1cnJlbnRFbGVtZW50XCIgLz5cclxuICAgIDxkaXYgOmNsYXNzPVwiJ2RyYWdiYXIgbmV3LWRyYWdiYXIgJyArIGRyYWdiYXJDbGFzc1wiIEBtb3VzZWRvd249XCJkcmFnKCRldmVudClcIiBAbW91c2V1cD1cInN0b3BEcmFnKCRldmVudClcIj48L2Rpdj5cclxuXHJcbiAgICA8VnVlRGV0YWlscyA6ZGF0YT1cImRhdGFcIiA6c3RhdGU9XCJzdGF0ZVwiIDplbnRpdHk9XCJlbnRpdHlcIiB2LXNob3c9XCJ0aGlzLnN0YXRlLnZpZXcgPT09ICdkZXRhaWxzJ1wiXHJcbiAgICAgIEBjaGFuZ2UtdmFsdWU9XCJvbkNoYW5nZVZhbHVlXCIgcmVmPVwiZGV0YWlsc1wiIEB1cGxvYWQtZmlsZT1cIm9uRmlsZVVwbG9hZFwiIEBhY3Rpb25DbGljaz1cIm9uQWN0aW9uQ2xpY2tcIlxyXG4gICAgICBAY3VzdG9tQWN0aW9uPVwib25DdXN0b21BY3Rpb25cIj5cclxuICAgICAgPHRlbXBsYXRlIHYtc2xvdDp0aXRsZT5cclxuICAgICAgICA8aDIgOmNsYXNzPVwiJ3RpdGxlICdcIiB2LWlmPVwiY3VycmVudEVsZW1lbnQubmV3XCI+e3sgZGF0YS50cmFucy5uZXdcclxuICAgICAgICB9fSB7e1xyXG4gICAgICAgICAgICBkYXRhLmNvbmZpZy50aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhc2stdGl0bGUgc3RhdHVzIGNob2ljZVwiIHYtZWxzZT5cclxuICAgICAgICAgIDxoMiA6Y2xhc3M9XCIndGl0bGUgdGFzay1tYWluLXRpdGxlIHN0YXR1cy0nICsgY3VycmVudEVsZW1lbnQuZmllbGRzLnN0YXR1c1wiPnt7IGVsZW1lbnRMYWJlbCB9fSA8L2gyPlxyXG4gICAgICAgICAgPHAgOmNsYXNzPVwiJ3N0YXR1cyAnICsgY3VycmVudEVsZW1lbnQuZmllbGRzLnN0YXR1c1wiIHYtaWY9XCJjdXJyZW50RWxlbWVudC5maWVsZHMuc3RhdHVzXCI+e3tcclxuICAgICAgICAgICAgZGF0YS5maWVsZHMuc3RhdHVzLmNob2ljZXNbY3VycmVudEVsZW1lbnQuZmllbGRzLnN0YXR1c10ubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICA8dGVtcGxhdGUgdi1zbG90OmN1c3RvbUZpZWxkc0dlbmVyYWw9XCJ7IGdyb3VwTmFtZSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidnVlLWZpZWxkLWNvbnRhaW5lciBjb2wtbGFyZ2UgZmlyc3Qgc2luZ2xlXCIgdi1pZj1cImdyb3VwTmFtZSA9PSAnZ2VuZXJhbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJ0aGlzLnN0YXRlLmN1cnJlbnRFbGVtZW50LmZpZWxkcy5saW5rXCIgY2xhc3M9XCJmb3JtLWdyb3VwIHZ1ZS1maWVsZC1sYWJlbCBidG4tbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ1ZS1idG4gc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cInRoaXMuc3RhdGUuY3VycmVudEVsZW1lbnQuZmllbGRzLmxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aGlzLmRhdGEudHJhbnMudmlld0VudGl0eSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvVnVlRGV0YWlscz5cclxuXHJcbiAgICA8VnVlTWVzc2FnZXMgOmRhdGE9XCJkYXRhXCIgOmVudGl0eT1cImVudGl0eVwiIDpzdGF0ZT1cInN0YXRlXCIgOmVsZW1lbnQ9XCJjdXJyZW50RWxlbWVudFwiIEBjYW5jZWxNb2RhbENsaWNrPVwib25DYW5jZWxNb2RhbENsaWNrXCJcclxuICAgICAgQGFjdGlvbk1vZGFsQ2xpY2s9XCJvbkFjdGlvbk1vZGFsQ2xpY2tcIiA6bWVzc2FnZXNWaXNpYmlsaXR5PVwibWVzc2FnZXNWaXNpYmlsaXR5XCJcclxuICAgICAgQGNoYW5nZUNvbmZpZ3VyYXRpb249XCJvbkNoYW5nZUNvbmZpZ3VyYXRpb25cIj5cclxuICAgIDwvVnVlTWVzc2FnZXM+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmx1cmVkXCIgdi1pZj1cIiFkYXRhLmNvbmZpZy5zcGxpdCAmJiB0aGlzLnN0YXRlLnZpZXcgPT09ICdkZXRhaWxzJ1wiIEBjbGljaz1cImluZGV4TW9kZSgpXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzdHlsZT5cclxuLnRhc2stdGl0bGUge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnRhc2stdGl0bGUgaDIge1xyXG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XHJcblxyXG59XHJcblxyXG4udGFzay10aXRsZSBwIHtcclxuICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMTRweDtcclxufVxyXG48L3N0eWxlPlxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/